Version 1.13.0-dev.4.0

Merge commit 'e28e578731bcc88f0c287b59900c07d24494a759' into dev
diff --git a/DEPS b/DEPS
index 948d24c..3c294e4 100644
--- a/DEPS
+++ b/DEPS
@@ -32,7 +32,7 @@
       "https://chromium.googlesource.com/external/github.com/dart-lang/%s.git",
 
   "gyp_rev": "@6ee91ad8659871916f9aa840d42e1513befdf638",
-  "co19_rev": "@f95f109fea67127a220958794ef5200a63cb454c",
+  "co19_rev": "@fad777939a2b891c0a79b69a4d79c914049c69b0",
   "chromium_url": "http://src.chromium.org/svn",
   "chromium_git": "https://chromium.googlesource.com",
 
@@ -41,7 +41,7 @@
   "analyzer_cli_rev" : "@0b89a16c0566f36676fa8f2016eb2c332178f616",
   "args_tag": "@0.13.0",
   "async_tag": "@1.2.0",
-  "barback_tag" : "@0.15.2+6",
+  "barback_tag" : "@0.15.2+7",
   "boringssl_rev" : "@daeafc22c66ad48f6b32fc8d3362eb9ba31b774e",
   "charcode_tag": "@1.1.0",
   "chrome_rev" : "@19997",
@@ -51,10 +51,10 @@
   "crypto_rev" : "@2df57a1e26dd88e8d0614207d4b062c73209917d",
   "csslib_tag" : "@0.12.0",
   "dart2js_info_rev" : "@bad01369f1f605ab688d505c135db54de927318f",
-  "dartdoc_rev" : "@ae12ca7aa2ea15535fac9e262cab65e3c2b66a04",
+  "dartdoc_rev" : "@786426c4bbea96729d5eab2add744def41a5a690",
   "dart_services_rev" : "@7aea2574e6f3924bf409a80afb8ad52aa2be4f97",
   "dart_style_tag": "@0.2.0",
-  "dev_compiler_rev": "@0.1.7",
+  "dev_compiler_rev": "@0.1.8",
   "fake_async_rev" : "@38614",
   "firefox_jsshell_rev" : "@45554",
   "glob_rev": "@704cf75e4f26b417505c5c611bdaacd8808467dd",
@@ -68,9 +68,9 @@
   "intl_rev": "@32047558bd220a53c1f4d93a26d54b83533b1475",
   "jinja2_rev": "@2222b31554f03e62600cd7e383376a7c187967a1",
   "json_rpc_2_tag": "@1.1.1",
-  "linter_rev": "@140ee2d1d7a255cf1265e990e528c6575ab2d5bb",
+  "linter_rev": "@1df9178fbb475c77658531b3d702ac9e615f9714",
   "logging_rev": "@85d83e002670545e9039ad3985f0018ab640e597",
-  "markdown_rev": "@9a1071a859df9c9edd4f556e948f898f70bf1e5e",
+  "markdown_rev": "@4aaadf3d940bb172e1f6285af4d2b1710d309982",
   "matcher_tag": "@0.12.0",
   "metatest_rev": "@e5aa8e4e19fc4188ac2f6d38368a47d8f07c3df1",
   "mime_rev": "@75890811d4af5af080351ba8a2853ad4c8df98dd",
diff --git a/README.dart-sdk b/README.dart-sdk
index 1a59eb2..47e3040 100644
--- a/README.dart-sdk
+++ b/README.dart-sdk
@@ -8,7 +8,7 @@
   dart           Dart virtual machine
   dart2js        Dart-to-JavaScript compiler
   dartanalyzer   Dart static analyzer
-  docgen         Dart documentation generator
+  dartdoc        Dart documentation generator
   pub            Pub, the Dart package manager
   dartfmt        Dart code formatter
 
diff --git a/dart.gyp b/dart.gyp
index fb973e1..81a8f05 100644
--- a/dart.gyp
+++ b/dart.gyp
@@ -94,13 +94,6 @@
       ],
     },
     {
-      'target_name': 'api_docs',
-      'type': 'none',
-      'dependencies': [
-        'utils/apidoc/docgen.gyp:dartdocgen',
-      ],
-    },
-    {
       'target_name': 'samples',
       'type': 'none',
       'dependencies': [],
diff --git a/pkg/analysis_server/doc/api.html b/pkg/analysis_server/doc/api.html
index feaa424..8fcb597 100644
--- a/pkg/analysis_server/doc/api.html
+++ b/pkg/analysis_server/doc/api.html
@@ -1,4 +1,4 @@
-<html><head>
+<!DOCTYPE html><html><head>
     <meta charset="UTF-8">
     <title>Analysis Server API Specification</title>
   <style>body {
@@ -4135,4 +4135,7 @@
       TBD
     </p>
     <h2 class="domain"><a name="index">Index</a></h2>
-    <h3>Domains</h3><h4>server (<a href="#domain_server">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_server.getVersion">getVersion</a></li><li><a href="#request_server.shutdown">shutdown</a></li><li><a href="#request_server.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_server.connected">connected</a></li><li><a href="#notification_server.error">error</a></li><li><a href="#notification_server.status">status</a></li></ul></div></div><h4>analysis (<a href="#domain_analysis">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_analysis.getErrors">getErrors</a></li><li><a href="#request_analysis.getHover">getHover</a></li><li><a href="#request_analysis.getLibraryDependencies">getLibraryDependencies</a></li><li><a href="#request_analysis.getNavigation">getNavigation</a></li><li><a href="#request_analysis.reanalyze">reanalyze</a></li><li><a href="#request_analysis.setAnalysisRoots">setAnalysisRoots</a></li><li><a href="#request_analysis.setGeneralSubscriptions">setGeneralSubscriptions</a></li><li><a href="#request_analysis.setPriorityFiles">setPriorityFiles</a></li><li><a href="#request_analysis.setSubscriptions">setSubscriptions</a></li><li><a href="#request_analysis.updateContent">updateContent</a></li><li><a href="#request_analysis.updateOptions">updateOptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_analysis.analyzedFiles">analyzedFiles</a></li><li><a href="#notification_analysis.errors">errors</a></li><li><a href="#notification_analysis.flushResults">flushResults</a></li><li><a href="#notification_analysis.folding">folding</a></li><li><a href="#notification_analysis.highlights">highlights</a></li><li><a href="#notification_analysis.invalidate">invalidate</a></li><li><a href="#notification_analysis.navigation">navigation</a></li><li><a href="#notification_analysis.occurrences">occurrences</a></li><li><a href="#notification_analysis.outline">outline</a></li><li><a href="#notification_analysis.overrides">overrides</a></li></ul></div></div><h4>completion (<a href="#domain_completion">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_completion.getSuggestions">getSuggestions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_completion.results">results</a></li></ul></div></div><h4>search (<a href="#domain_search">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_search.findElementReferences">findElementReferences</a></li><li><a href="#request_search.findMemberDeclarations">findMemberDeclarations</a></li><li><a href="#request_search.findMemberReferences">findMemberReferences</a></li><li><a href="#request_search.findTopLevelDeclarations">findTopLevelDeclarations</a></li><li><a href="#request_search.getTypeHierarchy">getTypeHierarchy</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_search.results">results</a></li></ul></div></div><h4>edit (<a href="#domain_edit">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_edit.format">format</a></li><li><a href="#request_edit.getAssists">getAssists</a></li><li><a href="#request_edit.getAvailableRefactorings">getAvailableRefactorings</a></li><li><a href="#request_edit.getFixes">getFixes</a></li><li><a href="#request_edit.getRefactoring">getRefactoring</a></li><li><a href="#request_edit.sortMembers">sortMembers</a></li><li><a href="#request_edit.organizeDirectives">organizeDirectives</a></li></ul></div><h4>execution (<a href="#domain_execution">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_execution.createContext">createContext</a></li><li><a href="#request_execution.deleteContext">deleteContext</a></li><li><a href="#request_execution.mapUri">mapUri</a></li><li><a href="#request_execution.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_execution.launchData">launchData</a></li></ul></div></div><h3>Types (<a href="#types">↑</a>)</h3><div class="subindex"><ul><li><a href="#type_AddContentOverlay">AddContentOverlay</a></li><li><a href="#type_AnalysisError">AnalysisError</a></li><li><a href="#type_AnalysisErrorFixes">AnalysisErrorFixes</a></li><li><a href="#type_AnalysisErrorSeverity">AnalysisErrorSeverity</a></li><li><a href="#type_AnalysisErrorType">AnalysisErrorType</a></li><li><a href="#type_AnalysisOptions">AnalysisOptions</a></li><li><a href="#type_AnalysisService">AnalysisService</a></li><li><a href="#type_AnalysisStatus">AnalysisStatus</a></li><li><a href="#type_ChangeContentOverlay">ChangeContentOverlay</a></li><li><a href="#type_CompletionId">CompletionId</a></li><li><a href="#type_CompletionSuggestion">CompletionSuggestion</a></li><li><a href="#type_CompletionSuggestionKind">CompletionSuggestionKind</a></li><li><a href="#type_Element">Element</a></li><li><a href="#type_ElementKind">ElementKind</a></li><li><a href="#type_ExecutableFile">ExecutableFile</a></li><li><a href="#type_ExecutableKind">ExecutableKind</a></li><li><a href="#type_ExecutionContextId">ExecutionContextId</a></li><li><a href="#type_ExecutionService">ExecutionService</a></li><li><a href="#type_FilePath">FilePath</a></li><li><a href="#type_FoldingKind">FoldingKind</a></li><li><a href="#type_FoldingRegion">FoldingRegion</a></li><li><a href="#type_GeneralAnalysisService">GeneralAnalysisService</a></li><li><a href="#type_HighlightRegion">HighlightRegion</a></li><li><a href="#type_HighlightRegionType">HighlightRegionType</a></li><li><a href="#type_HoverInformation">HoverInformation</a></li><li><a href="#type_LinkedEditGroup">LinkedEditGroup</a></li><li><a href="#type_LinkedEditSuggestion">LinkedEditSuggestion</a></li><li><a href="#type_LinkedEditSuggestionKind">LinkedEditSuggestionKind</a></li><li><a href="#type_Location">Location</a></li><li><a href="#type_NavigationRegion">NavigationRegion</a></li><li><a href="#type_NavigationTarget">NavigationTarget</a></li><li><a href="#type_Occurrences">Occurrences</a></li><li><a href="#type_Outline">Outline</a></li><li><a href="#type_Override">Override</a></li><li><a href="#type_OverriddenMember">OverriddenMember</a></li><li><a href="#type_Position">Position</a></li><li><a href="#type_PubStatus">PubStatus</a></li><li><a href="#type_RefactoringKind">RefactoringKind</a></li><li><a href="#type_RefactoringMethodParameter">RefactoringMethodParameter</a></li><li><a href="#type_RefactoringFeedback">RefactoringFeedback</a></li><li><a href="#type_RefactoringOptions">RefactoringOptions</a></li><li><a href="#type_RefactoringMethodParameterKind">RefactoringMethodParameterKind</a></li><li><a href="#type_RefactoringProblem">RefactoringProblem</a></li><li><a href="#type_RefactoringProblemSeverity">RefactoringProblemSeverity</a></li><li><a href="#type_RemoveContentOverlay">RemoveContentOverlay</a></li><li><a href="#type_RequestError">RequestError</a></li><li><a href="#type_RequestErrorCode">RequestErrorCode</a></li><li><a href="#type_SearchId">SearchId</a></li><li><a href="#type_SearchResult">SearchResult</a></li><li><a href="#type_SearchResultKind">SearchResultKind</a></li><li><a href="#type_ServerService">ServerService</a></li><li><a href="#type_SourceChange">SourceChange</a></li><li><a href="#type_SourceEdit">SourceEdit</a></li><li><a href="#type_SourceFileEdit">SourceFileEdit</a></li><li><a href="#type_TypeHierarchyItem">TypeHierarchyItem</a></li></ul></div><h3>Refactorings (<a href="#refactorings">↑</a>)</h3><div class="subindex"><ul><li><a href="#refactoring_CONVERT_GETTER_TO_METHOD">CONVERT_GETTER_TO_METHOD</a></li><li><a href="#refactoring_CONVERT_METHOD_TO_GETTER">CONVERT_METHOD_TO_GETTER</a></li><li><a href="#refactoring_EXTRACT_LOCAL_VARIABLE">EXTRACT_LOCAL_VARIABLE</a></li><li><a href="#refactoring_EXTRACT_METHOD">EXTRACT_METHOD</a></li><li><a href="#refactoring_INLINE_LOCAL_VARIABLE">INLINE_LOCAL_VARIABLE</a></li><li><a href="#refactoring_INLINE_METHOD">INLINE_METHOD</a></li><li><a href="#refactoring_MOVE_FILE">MOVE_FILE</a></li><li><a href="#refactoring_RENAME">RENAME</a></li></ul></div></body></html>
\ No newline at end of file
+    <h3>Domains</h3><h4>server (<a href="#domain_server">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_server.getVersion">getVersion</a></li><li><a href="#request_server.shutdown">shutdown</a></li><li><a href="#request_server.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_server.connected">connected</a></li><li><a href="#notification_server.error">error</a></li><li><a href="#notification_server.status">status</a></li></ul></div></div><h4>analysis (<a href="#domain_analysis">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_analysis.getErrors">getErrors</a></li><li><a href="#request_analysis.getHover">getHover</a></li><li><a href="#request_analysis.getLibraryDependencies">getLibraryDependencies</a></li><li><a href="#request_analysis.getNavigation">getNavigation</a></li><li><a href="#request_analysis.reanalyze">reanalyze</a></li><li><a href="#request_analysis.setAnalysisRoots">setAnalysisRoots</a></li><li><a href="#request_analysis.setGeneralSubscriptions">setGeneralSubscriptions</a></li><li><a href="#request_analysis.setPriorityFiles">setPriorityFiles</a></li><li><a href="#request_analysis.setSubscriptions">setSubscriptions</a></li><li><a href="#request_analysis.updateContent">updateContent</a></li><li><a href="#request_analysis.updateOptions">updateOptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_analysis.analyzedFiles">analyzedFiles</a></li><li><a href="#notification_analysis.errors">errors</a></li><li><a href="#notification_analysis.flushResults">flushResults</a></li><li><a href="#notification_analysis.folding">folding</a></li><li><a href="#notification_analysis.highlights">highlights</a></li><li><a href="#notification_analysis.invalidate">invalidate</a></li><li><a href="#notification_analysis.navigation">navigation</a></li><li><a href="#notification_analysis.occurrences">occurrences</a></li><li><a href="#notification_analysis.outline">outline</a></li><li><a href="#notification_analysis.overrides">overrides</a></li></ul></div></div><h4>completion (<a href="#domain_completion">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_completion.getSuggestions">getSuggestions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_completion.results">results</a></li></ul></div></div><h4>search (<a href="#domain_search">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_search.findElementReferences">findElementReferences</a></li><li><a href="#request_search.findMemberDeclarations">findMemberDeclarations</a></li><li><a href="#request_search.findMemberReferences">findMemberReferences</a></li><li><a href="#request_search.findTopLevelDeclarations">findTopLevelDeclarations</a></li><li><a href="#request_search.getTypeHierarchy">getTypeHierarchy</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_search.results">results</a></li></ul></div></div><h4>edit (<a href="#domain_edit">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_edit.format">format</a></li><li><a href="#request_edit.getAssists">getAssists</a></li><li><a href="#request_edit.getAvailableRefactorings">getAvailableRefactorings</a></li><li><a href="#request_edit.getFixes">getFixes</a></li><li><a href="#request_edit.getRefactoring">getRefactoring</a></li><li><a href="#request_edit.sortMembers">sortMembers</a></li><li><a href="#request_edit.organizeDirectives">organizeDirectives</a></li></ul></div><h4>execution (<a href="#domain_execution">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_execution.createContext">createContext</a></li><li><a href="#request_execution.deleteContext">deleteContext</a></li><li><a href="#request_execution.mapUri">mapUri</a></li><li><a href="#request_execution.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_execution.launchData">launchData</a></li></ul></div></div><h3>Types (<a href="#types">↑</a>)</h3><div class="subindex"><ul><li><a href="#type_AddContentOverlay">AddContentOverlay</a></li><li><a href="#type_AnalysisError">AnalysisError</a></li><li><a href="#type_AnalysisErrorFixes">AnalysisErrorFixes</a></li><li><a href="#type_AnalysisErrorSeverity">AnalysisErrorSeverity</a></li><li><a href="#type_AnalysisErrorType">AnalysisErrorType</a></li><li><a href="#type_AnalysisOptions">AnalysisOptions</a></li><li><a href="#type_AnalysisService">AnalysisService</a></li><li><a href="#type_AnalysisStatus">AnalysisStatus</a></li><li><a href="#type_ChangeContentOverlay">ChangeContentOverlay</a></li><li><a href="#type_CompletionId">CompletionId</a></li><li><a href="#type_CompletionSuggestion">CompletionSuggestion</a></li><li><a href="#type_CompletionSuggestionKind">CompletionSuggestionKind</a></li><li><a href="#type_Element">Element</a></li><li><a href="#type_ElementKind">ElementKind</a></li><li><a href="#type_ExecutableFile">ExecutableFile</a></li><li><a href="#type_ExecutableKind">ExecutableKind</a></li><li><a href="#type_ExecutionContextId">ExecutionContextId</a></li><li><a href="#type_ExecutionService">ExecutionService</a></li><li><a href="#type_FilePath">FilePath</a></li><li><a href="#type_FoldingKind">FoldingKind</a></li><li><a href="#type_FoldingRegion">FoldingRegion</a></li><li><a href="#type_GeneralAnalysisService">GeneralAnalysisService</a></li><li><a href="#type_HighlightRegion">HighlightRegion</a></li><li><a href="#type_HighlightRegionType">HighlightRegionType</a></li><li><a href="#type_HoverInformation">HoverInformation</a></li><li><a href="#type_LinkedEditGroup">LinkedEditGroup</a></li><li><a href="#type_LinkedEditSuggestion">LinkedEditSuggestion</a></li><li><a href="#type_LinkedEditSuggestionKind">LinkedEditSuggestionKind</a></li><li><a href="#type_Location">Location</a></li><li><a href="#type_NavigationRegion">NavigationRegion</a></li><li><a href="#type_NavigationTarget">NavigationTarget</a></li><li><a href="#type_Occurrences">Occurrences</a></li><li><a href="#type_Outline">Outline</a></li><li><a href="#type_Override">Override</a></li><li><a href="#type_OverriddenMember">OverriddenMember</a></li><li><a href="#type_Position">Position</a></li><li><a href="#type_PubStatus">PubStatus</a></li><li><a href="#type_RefactoringKind">RefactoringKind</a></li><li><a href="#type_RefactoringMethodParameter">RefactoringMethodParameter</a></li><li><a href="#type_RefactoringFeedback">RefactoringFeedback</a></li><li><a href="#type_RefactoringOptions">RefactoringOptions</a></li><li><a href="#type_RefactoringMethodParameterKind">RefactoringMethodParameterKind</a></li><li><a href="#type_RefactoringProblem">RefactoringProblem</a></li><li><a href="#type_RefactoringProblemSeverity">RefactoringProblemSeverity</a></li><li><a href="#type_RemoveContentOverlay">RemoveContentOverlay</a></li><li><a href="#type_RequestError">RequestError</a></li><li><a href="#type_RequestErrorCode">RequestErrorCode</a></li><li><a href="#type_SearchId">SearchId</a></li><li><a href="#type_SearchResult">SearchResult</a></li><li><a href="#type_SearchResultKind">SearchResultKind</a></li><li><a href="#type_ServerService">ServerService</a></li><li><a href="#type_SourceChange">SourceChange</a></li><li><a href="#type_SourceEdit">SourceEdit</a></li><li><a href="#type_SourceFileEdit">SourceFileEdit</a></li><li><a href="#type_TypeHierarchyItem">TypeHierarchyItem</a></li></ul></div><h3>Refactorings (<a href="#refactorings">↑</a>)</h3><div class="subindex"><ul><li><a href="#refactoring_CONVERT_GETTER_TO_METHOD">CONVERT_GETTER_TO_METHOD</a></li><li><a href="#refactoring_CONVERT_METHOD_TO_GETTER">CONVERT_METHOD_TO_GETTER</a></li><li><a href="#refactoring_EXTRACT_LOCAL_VARIABLE">EXTRACT_LOCAL_VARIABLE</a></li><li><a href="#refactoring_EXTRACT_METHOD">EXTRACT_METHOD</a></li><li><a href="#refactoring_INLINE_LOCAL_VARIABLE">INLINE_LOCAL_VARIABLE</a></li><li><a href="#refactoring_INLINE_METHOD">INLINE_METHOD</a></li><li><a href="#refactoring_MOVE_FILE">MOVE_FILE</a></li><li><a href="#refactoring_RENAME">RENAME</a></li></ul></div>
+  
+
+</body></html>
\ No newline at end of file
diff --git a/pkg/analysis_server/lib/completion/completion_dart.dart b/pkg/analysis_server/lib/completion/completion_dart.dart
index 669b2ef..1ddd5a0 100644
--- a/pkg/analysis_server/lib/completion/completion_dart.dart
+++ b/pkg/analysis_server/lib/completion/completion_dart.dart
@@ -9,6 +9,7 @@
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analysis_server/completion/dart/completion_target.dart';
 
 /**
  * An object used to produce completions for a specific error within a Dart
@@ -78,7 +79,7 @@
    * Return the completion target.  This determines what part of the parse tree
    * will receive the newly inserted text.
    */
-  //CompletionTarget get target;
+  CompletionTarget get target;
 
   /**
    * Information about the types of suggestions that should be included.
diff --git a/pkg/analysis_server/lib/src/services/completion/completion_target.dart b/pkg/analysis_server/lib/completion/dart/completion_target.dart
similarity index 100%
rename from pkg/analysis_server/lib/src/services/completion/completion_target.dart
rename to pkg/analysis_server/lib/completion/dart/completion_target.dart
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 1df76ad..c8108b8 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -951,9 +951,23 @@
         if (context == null) {
           continue;
         }
+        Source source = contextSource.source;
+        // Ensure that if the AST is flushed / not ready, it will be
+        // computed eventually.
+        if (AnalysisEngine.isDartFileName(file)) {
+          (context as InternalAnalysisContext).ensureResolvedDartUnits(source);
+        }
+        // Send notifications that don't directly take an AST.
+        switch (service) {
+          case AnalysisService.NAVIGATION:
+            sendAnalysisNotificationNavigation(this, context, source);
+            continue;
+          case AnalysisService.OCCURRENCES:
+            sendAnalysisNotificationOccurrences(this, context, source);
+            continue;
+        }
         // Dart unit notifications.
         if (AnalysisEngine.isDartFileName(file)) {
-          Source source = contextSource.source;
           // TODO(scheglov) This way to get resolved information is very Dart
           // specific. OTOH as it is planned now Angular results are not
           // flushable.
@@ -964,12 +978,6 @@
               case AnalysisService.HIGHLIGHTS:
                 sendAnalysisNotificationHighlights(this, file, dartUnit);
                 break;
-              case AnalysisService.NAVIGATION:
-                sendAnalysisNotificationNavigation(this, context, source);
-                break;
-              case AnalysisService.OCCURRENCES:
-                sendAnalysisNotificationOccurrences(this, context, source);
-                break;
               case AnalysisService.OUTLINE:
                 AnalysisContext context = dartUnit.element.context;
                 LineInfo lineInfo = context.getLineInfo(source);
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights2.dart b/pkg/analysis_server/lib/src/computer/computer_highlights2.dart
index f89d278..c847670 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights2.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights2.dart
@@ -63,15 +63,15 @@
     if (_addIdentifierRegion_constructor(node)) {
       return;
     }
-    if (_addIdentifierRegion_dynamicLocal(node)) {
-      return;
-    }
     if (_addIdentifierRegion_getterSetterDeclaration(node)) {
       return;
     }
     if (_addIdentifierRegion_field(node)) {
       return;
     }
+    if (_addIdentifierRegion_dynamicLocal(node)) {
+      return;
+    }
     if (_addIdentifierRegion_function(node)) {
       return;
     }
@@ -96,6 +96,9 @@
     if (_addIdentifierRegion_typeParameter(node)) {
       return;
     }
+    if (_addIdentifierRegion_unresolvedInstanceMemberReference(node)) {
+      return;
+    }
     _addRegion_node(node, HighlightRegionType.IDENTIFIER_DEFAULT);
   }
 
@@ -352,6 +355,38 @@
     return _addRegion_node(node, HighlightRegionType.TYPE_PARAMETER);
   }
 
+  bool _addIdentifierRegion_unresolvedInstanceMemberReference(
+      SimpleIdentifier node) {
+    // unresolved
+    Element element = node.bestElement;
+    if (element != null) {
+      return false;
+    }
+    // invoke / get / set
+    bool decorate = false;
+    AstNode parent = node.parent;
+    if (parent is MethodInvocation) {
+      Expression target = parent.realTarget;
+      if (parent.methodName == node &&
+          target != null &&
+          _isDynamicExpression(target)) {
+        decorate = true;
+      }
+    } else if (node.inGetterContext() || node.inSetterContext()) {
+      if (parent is PrefixedIdentifier) {
+        decorate = parent.identifier == node;
+      } else if (parent is PropertyAccess) {
+        decorate = parent.propertyName == node;
+      }
+    }
+    if (decorate) {
+      _addRegion_node(
+          node, HighlightRegionType.UNRESOLVED_INSTANCE_MEMBER_REFERENCE);
+      return true;
+    }
+    return false;
+  }
+
   void _addRegion(int offset, int length, HighlightRegionType type) {
     _regions.add(new HighlightRegion(type, offset, length));
   }
@@ -384,6 +419,13 @@
     int end = b.end;
     _addRegion(offset, end - offset, type);
   }
+
+  static bool _isDynamicExpression(Expression e) {
+    if (e is SimpleIdentifier && e.staticElement is PrefixElement) {
+      return false;
+    }
+    return e.bestType.isDynamic;
+  }
 }
 
 /**
@@ -598,6 +640,12 @@
   }
 
   @override
+  Object visitLibraryIdentifier(LibraryIdentifier node) {
+    computer._addRegion_node(node, HighlightRegionType.LIBRARY_NAME);
+    return null;
+  }
+
+  @override
   Object visitListLiteral(ListLiteral node) {
     computer._addRegion_node(node, HighlightRegionType.LITERAL_LIST);
     computer._addRegion_token(node.constKeyword, HighlightRegionType.KEYWORD);
diff --git a/pkg/analysis_server/lib/src/server/http_server.dart b/pkg/analysis_server/lib/src/server/http_server.dart
index 3372933..c047d1f 100644
--- a/pkg/analysis_server/lib/src/server/http_server.dart
+++ b/pkg/analysis_server/lib/src/server/http_server.dart
@@ -76,8 +76,13 @@
    * Begin serving HTTP requests over the given port.
    */
   void serveHttp(int port) {
-    _server = HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, port);
-    _server.then(_handleServer);
+    try {
+      _server = HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, port);
+      _server.then(_handleServer);
+    } catch (exception) {
+      // We were unable to start the server, and there's nothing we can do about
+      // it.
+    }
   }
 
   /**
diff --git a/pkg/analysis_server/lib/src/services/completion/common_usage_computer.dart b/pkg/analysis_server/lib/src/services/completion/common_usage_computer.dart
index 11b4f1b..2b391ca 100644
--- a/pkg/analysis_server/lib/src/services/completion/common_usage_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/common_usage_computer.dart
@@ -4,10 +4,13 @@
 
 library services.completion.computer.dart.relevance;
 
+import 'package:analysis_server/completion/completion_dart.dart';
 import 'package:analysis_server/src/protocol_server.dart' as protocol;
 import 'package:analysis_server/src/protocol_server.dart'
     show CompletionSuggestion, CompletionSuggestionKind;
-import 'package:analysis_server/src/services/completion/dart_completion_manager.dart';
+import 'package:analysis_server/src/services/completion/contribution_sorter.dart';
+import 'package:analysis_server/src/services/completion/dart_completion_manager.dart'
+    show DART_RELEVANCE_COMMON_USAGE;
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/element.dart';
 
@@ -15,9 +18,10 @@
 
 /**
  * A computer for adjusting the relevance of completions computed by others
- * based upon common Dart usage patterns.
+ * based upon common Dart usage patterns. This is a long-lived object
+ * that should not maintain state between calls to it's [sort] method.
  */
-class CommonUsageComputer {
+class CommonUsageComputer implements ContributionSorter {
   /**
    * A map of <library>.<classname> to an ordered list of method names,
    * field names, getter names, and named constructors.
@@ -28,23 +32,10 @@
 
   CommonUsageComputer([this.selectorRelevance = defaultSelectorRelevance]);
 
-  /**
-   * Adjusts the relevance based on the given completion context.
-   * The compilation unit and completion node
-   * in the given completion context may not be resolved.
-   * This method should execute quickly and not block waiting for any analysis.
-   */
-  void computeFast(DartCompletionRequest request) {
-    _update(request);
-  }
-
-  /**
-   * Adjusts the relevance based on the given completion context.
-   * The compilation unit and completion node
-   * in the given completion context are resolved.
-   */
-  void computeFull(DartCompletionRequest request) {
-    _update(request);
+  @override
+  void sort(DartCompletionRequest request,
+      Iterable<CompletionSuggestion> suggestions) {
+    _update(request, suggestions);
   }
 
   /**
@@ -52,7 +43,8 @@
    * The compilation unit and completion node
    * in the given completion context may not be resolved.
    */
-  void _update(DartCompletionRequest request) {
+  void _update(DartCompletionRequest request,
+      Iterable<CompletionSuggestion> suggestions) {
     var visitor = new _BestTypeVisitor(request.target.entity);
     DartType type = request.target.containingNode.accept(visitor);
     if (type != null) {
@@ -60,7 +52,7 @@
       if (typeElem != null) {
         LibraryElement libElem = typeElem.library;
         if (libElem != null) {
-          _updateInvocationRelevance(request, type, libElem);
+          _updateInvocationRelevance(request, type, libElem, suggestions);
         }
       }
     }
@@ -70,12 +62,12 @@
    * Adjusts the relevance of all method suggestions based upon the given
    * target type and library.
    */
-  void _updateInvocationRelevance(
-      DartCompletionRequest request, DartType type, LibraryElement libElem) {
+  void _updateInvocationRelevance(DartCompletionRequest request, DartType type,
+      LibraryElement libElem, Iterable<CompletionSuggestion> suggestions) {
     String typeName = type.name;
     List<String> selectors = selectorRelevance['${libElem.name}.${typeName}'];
     if (selectors != null) {
-      for (CompletionSuggestion suggestion in request.suggestions) {
+      for (CompletionSuggestion suggestion in suggestions) {
         protocol.Element element = suggestion.element;
         if (element != null &&
             (element.kind == protocol.ElementKind.CONSTRUCTOR ||
diff --git a/pkg/analysis_server/lib/src/services/completion/completion_dart.dart b/pkg/analysis_server/lib/src/services/completion/completion_dart.dart
index 526d69d..4304295 100644
--- a/pkg/analysis_server/lib/src/services/completion/completion_dart.dart
+++ b/pkg/analysis_server/lib/src/services/completion/completion_dart.dart
@@ -6,6 +6,7 @@
 
 import 'package:analysis_server/completion/completion_core.dart';
 import 'package:analysis_server/completion/completion_dart.dart';
+import 'package:analysis_server/completion/dart/completion_target.dart';
 import 'package:analysis_server/src/services/completion/completion_core.dart';
 import 'package:analyzer/src/generated/ast.dart';
 
@@ -25,10 +26,16 @@
   final bool isResolved;
 
   /**
+   * The completion target.  This determines what part of the parse tree
+   * will receive the newly inserted text.
+   */
+  final CompletionTarget target;
+
+  /**
    * Initialize a newly created completion request based on the given arguments.
    */
   DartCompletionRequestImpl(
-      CompletionRequest request, this.unit, this.isResolved)
+      CompletionRequest request, this.unit, this.isResolved, this.target)
       : super(request.context, request.resourceProvider, request.source,
             request.offset);
 }
diff --git a/pkg/analysis_server/lib/src/services/completion/contribution_sorter.dart b/pkg/analysis_server/lib/src/services/completion/contribution_sorter.dart
new file mode 100644
index 0000000..737a837
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/completion/contribution_sorter.dart
@@ -0,0 +1,26 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library services.completion.sorter;
+
+import 'package:analysis_server/completion/completion_dart.dart';
+import 'package:analysis_server/src/protocol.dart';
+
+/**
+ * The abstract class `ContributionSorter` defines the behavior of objects
+ * that are used to adjust the relevance of an existing list of suggestions.
+ * This is a long-lived object that should not maintain state between
+ * calls to it's [sort] method.
+ */
+abstract class ContributionSorter {
+  /**
+   * After [CompletionSuggestion]s have been computed,
+   * this method is called to adjust the relevance of those suggestions.
+   * The compilation unit and completion node
+   * in the given completion context may not be resolved.
+   * This method should execute quickly and not block.
+   */
+  void sort(DartCompletionRequest request,
+      Iterable<CompletionSuggestion> suggestions);
+}
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 06c3c6a..ae177f2 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
@@ -8,21 +8,24 @@
 
 import 'package:analysis_server/completion/completion_core.dart'
     show CompletionRequest;
+import 'package:analysis_server/completion/completion_dart.dart' as newApi;
+import 'package:analysis_server/completion/dart/completion_target.dart';
 import 'package:analysis_server/src/analysis_server.dart';
 import 'package:analysis_server/src/protocol.dart';
 import 'package:analysis_server/src/services/completion/arglist_contributor.dart';
 import 'package:analysis_server/src/services/completion/combinator_contributor.dart';
 import 'package:analysis_server/src/services/completion/common_usage_computer.dart';
 import 'package:analysis_server/src/services/completion/completion_manager.dart';
-import 'package:analysis_server/src/services/completion/completion_target.dart';
+import 'package:analysis_server/src/services/completion/contribution_sorter.dart';
 import 'package:analysis_server/src/services/completion/dart_completion_cache.dart';
-import 'package:analysis_server/src/services/completion/uri_contributor.dart';
 import 'package:analysis_server/src/services/completion/imported_reference_contributor.dart';
 import 'package:analysis_server/src/services/completion/keyword_contributor.dart';
 import 'package:analysis_server/src/services/completion/local_reference_contributor.dart';
 import 'package:analysis_server/src/services/completion/optype.dart';
 import 'package:analysis_server/src/services/completion/prefixed_element_contributor.dart';
+import 'package:analysis_server/src/services/completion/uri_contributor.dart';
 import 'package:analysis_server/src/services/search/search_engine.dart';
+import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/scanner.dart';
@@ -72,14 +75,21 @@
  * Manages code completion for a given Dart file completion request.
  */
 class DartCompletionManager extends CompletionManager {
+  /**
+   * The [defaultContributionSorter] is a long-lived object that isn't allowed
+   * to maintain state between calls to [ContributionSorter#sort(...)].
+   */
+  static ContributionSorter defaultContributionSorter =
+      new CommonUsageComputer();
+
   final SearchEngine searchEngine;
   final DartCompletionCache cache;
   List<DartCompletionContributor> contributors;
-  CommonUsageComputer commonUsageComputer;
+  ContributionSorter contributionSorter;
 
   DartCompletionManager(
       AnalysisContext context, this.searchEngine, Source source, this.cache,
-      [this.contributors, this.commonUsageComputer])
+      [this.contributors, this.contributionSorter])
       : super(context, source) {
     if (contributors == null) {
       contributors = [
@@ -93,10 +103,13 @@
         new CombinatorContributor(),
         new PrefixedElementContributor(),
         new UriContributor(),
+        // TODO(brianwilkerson) Use the completion contributor extension point
+        // to add the contributor below (and eventually, all the contributors).
+//        new NewCompletionWrapper(new InheritedContributor())
       ];
     }
-    if (commonUsageComputer == null) {
-      commonUsageComputer = new CommonUsageComputer();
+    if (contributionSorter == null) {
+      contributionSorter = defaultContributionSorter;
     }
   }
 
@@ -167,7 +180,8 @@
           return c.computeFast(request);
         });
       });
-      commonUsageComputer.computeFast(request);
+      contributionSorter.sort(
+          new OldRequestWrapper(request), request.suggestions);
       sendResults(request, todo.isEmpty);
       return todo;
     });
@@ -205,7 +219,8 @@
               performance.logElapseTime(completeTag);
               bool last = --count == 0;
               if (changed || last) {
-                commonUsageComputer.computeFull(request);
+                contributionSorter.sort(
+                    new OldRequestWrapper(request), request.suggestions);
                 sendResults(request, last);
               }
             });
@@ -399,3 +414,82 @@
     }
   }
 }
+
+/**
+ * A wrapper around a new dart completion contributor that makes it usable where
+ * an old dart completion contributor is expected.
+ */
+class NewCompletionWrapper implements DartCompletionContributor {
+  /**
+   * The new-style contributor that is being wrapped.
+   */
+  final newApi.DartCompletionContributor contributor;
+
+  /**
+   * Initialize a newly created wrapper for the given [contributor].
+   */
+  NewCompletionWrapper(this.contributor);
+
+  @override
+  bool computeFast(DartCompletionRequest request) {
+    List<CompletionSuggestion> suggestions =
+        contributor.computeSuggestions(new OldRequestWrapper(request));
+    if (suggestions == null) {
+      return false;
+    }
+    for (CompletionSuggestion suggestion in suggestions) {
+      request.addSuggestion(suggestion);
+    }
+    return true;
+  }
+
+  @override
+  Future<bool> computeFull(DartCompletionRequest request) async {
+    List<CompletionSuggestion> suggestions =
+        contributor.computeSuggestions(new OldRequestWrapper(request));
+    if (suggestions != null) {
+      for (CompletionSuggestion suggestion in suggestions) {
+        request.addSuggestion(suggestion);
+      }
+      return true;
+    }
+    return false;
+  }
+
+  @override
+  String toString() => 'wrapped $contributor';
+}
+
+/**
+ * A wrapper around an old dart completion request that makes it usable where a
+ * new dart completion request is expected.
+ */
+class OldRequestWrapper implements newApi.DartCompletionRequest {
+  final DartCompletionRequest request;
+
+  OldRequestWrapper(this.request);
+
+  @override
+  AnalysisContext get context => request.context;
+
+  @override
+  bool get isResolved => request.unit.element != null;
+
+  @override
+  int get offset => request.offset;
+
+  @override
+  ResourceProvider get resourceProvider => request.resourceProvider;
+
+  @override
+  Source get source => request.source;
+
+  @override
+  CompletionTarget get target => request.target;
+
+  @override
+  CompilationUnit get unit => request.unit;
+
+  @override
+  String toString() => 'wrapped $request';
+}
diff --git a/pkg/analysis_server/lib/src/services/completion/inherited_contributor.dart b/pkg/analysis_server/lib/src/services/completion/inherited_contributor.dart
new file mode 100644
index 0000000..11d0631
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/completion/inherited_contributor.dart
@@ -0,0 +1,160 @@
+// 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 services.completion.computer.dart.invocation;
+
+import 'package:analysis_server/completion/completion_dart.dart';
+import 'package:analysis_server/src/protocol_server.dart'
+    show CompletionSuggestion, CompletionSuggestionKind, SourceChange;
+import 'package:analysis_server/src/protocol_server.dart' as protocol
+    hide CompletionSuggestion, CompletionSuggestionKind;
+import 'package:analysis_server/src/services/completion/dart_completion_manager.dart'
+    show DART_RELEVANCE_HIGH;
+import 'package:analysis_server/utilities/change_builder_dart.dart';
+import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/element.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/resolver.dart';
+import 'package:analyzer/src/generated/source.dart';
+
+/**
+ * A completion contributor used to suggest replacing partial identifiers inside
+ * a class declaration with templates for inherited members.
+ */
+class InheritedContributor extends DartCompletionContributor {
+  @override
+  List<CompletionSuggestion> internalComputeSuggestions(
+      DartCompletionRequest request) {
+    if (!request.isResolved) {
+      return null;
+    }
+    AstNode node = new NodeLocator(request.offset).searchWithin(request.unit);
+    if (node == null || !_isMemberLevelIdentifier(node)) {
+      return null;
+    }
+    ClassDeclaration classDeclaration =
+        node.getAncestor((AstNode node) => node is ClassDeclaration);
+    if (classDeclaration != null) {
+      ClassElement element = classDeclaration.element;
+      if (element == null) {
+        return null;
+      }
+      return _suggestInheritedMembers(request, node, element);
+    }
+    return null;
+  }
+
+  /**
+   * Return a template for an override of the given [element] in the given
+   * [source]. If selected, the template will replace the given [identifier].
+   */
+  String _buildRepacementText(
+      Source source, SimpleIdentifier identifier, Element element) {
+    AnalysisContext context = element.context;
+    DartChangeBuilder builder = new DartChangeBuilder(context);
+    builder.addFileEdit(source, context.getModificationStamp(source),
+        (DartFileEditBuilder builder) {
+      builder.addReplacement(identifier.offset, identifier.length,
+          (DartEditBuilder builder) {
+        builder.writeOverrideOfInheritedMember(element);
+      });
+    });
+    return builder.sourceChange.edits[0].edits[0].replacement.trim();
+  }
+
+  /**
+   * Build a suggestion to replace the partial [identifier] in the given
+   * [source] with an override of the given [element].
+   */
+  CompletionSuggestion _buildSuggestion(
+      Source source, SimpleIdentifier identifier, Element element) {
+    String completion = _buildRepacementText(source, identifier, element);
+    CompletionSuggestion suggestion = new CompletionSuggestion(
+        CompletionSuggestionKind.IDENTIFIER,
+        DART_RELEVANCE_HIGH,
+        completion,
+        identifier.offset,
+        0,
+        element.isDeprecated,
+        false);
+    suggestion.element = protocol.newElement_fromEngine(element);
+    return suggestion;
+  }
+
+  /**
+   * Return a list containing the names of all of the inherited by not
+   * implemented members of the class represented by the given [element] that
+   * start with the given [prefix]. The [map] is used to find all of the members
+   * that are inherited.
+   */
+  List<String> _computeMemberNames(
+      MemberMap map, ClassElement element, String prefix) {
+    List<String> memberNames = <String>[];
+    int count = map.size;
+    for (int i = 0; i < count; i++) {
+      String memberName = map.getKey(i);
+      if (memberName.startsWith(prefix) && !_hasMember(element, memberName)) {
+        memberNames.add(memberName);
+      }
+    }
+    return memberNames;
+  }
+
+  /**
+   * Return `true` if the given [classElement] directly declares a member with
+   * the given [memberName].
+   */
+  bool _hasMember(ClassElement classElement, String memberName) {
+    return classElement.getField(memberName) != null ||
+        classElement.getGetter(memberName) != null ||
+        classElement.getMethod(memberName) != null ||
+        classElement.getSetter(memberName) != null;
+  }
+
+  /**
+   * Return `true` if the given [node] looks like a partial identifier inside a
+   * class declaration.
+   */
+  bool _isMemberLevelIdentifier(AstNode node) {
+    if (node is SimpleIdentifier) {
+      AstNode parent1 = node.parent;
+      if (parent1 is TypeName) {
+        AstNode parent2 = parent1.parent;
+        if (parent2 is VariableDeclarationList) {
+          AstNode parent3 = parent2.parent;
+          if (parent3 is FieldDeclaration) {
+            NodeList<VariableDeclaration> variables = parent2.variables;
+            return variables.length == 1 && variables[0].name.name.isEmpty;
+          }
+        }
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Add any suggestions that are appropriate to the given [request], using the
+   * given [element] to find inherited members whose name has the given
+   * [identifier] as a prefix.
+   */
+  List<CompletionSuggestion> _suggestInheritedMembers(
+      DartCompletionRequest request,
+      SimpleIdentifier identifier,
+      ClassElement element) {
+    String name = identifier.name;
+    InheritanceManager manager = new InheritanceManager(element.library);
+    MemberMap map = manager.getMapOfMembersInheritedFromInterfaces(element);
+    List<String> memberNames = _computeMemberNames(map, element, name);
+    memberNames.sort();
+    List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
+    for (String memberName in memberNames) {
+      CompletionSuggestion suggestion =
+          _buildSuggestion(request.source, identifier, map.get(memberName));
+      if (suggestion != null) {
+        suggestions.add(suggestion);
+      }
+    }
+    return suggestions;
+  }
+}
diff --git a/pkg/analysis_server/lib/src/services/completion/optype.dart b/pkg/analysis_server/lib/src/services/completion/optype.dart
index 02c89bf..5a04322 100644
--- a/pkg/analysis_server/lib/src/services/completion/optype.dart
+++ b/pkg/analysis_server/lib/src/services/completion/optype.dart
@@ -4,7 +4,7 @@
 
 library services.completion.dart.optype;
 
-import 'package:analysis_server/src/services/completion/completion_target.dart';
+import 'package:analysis_server/completion/dart/completion_target.dart';
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/scanner.dart';
 
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index eca515b..a2dd729 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -35,7 +35,6 @@
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
 import 'package:path/path.dart';
-import 'package:path/path.dart' as ppp;
 
 /**
  * A predicate is a one-argument function that returns a boolean value.
diff --git a/pkg/analysis_server/lib/src/services/generated/completion.dart.unused b/pkg/analysis_server/lib/src/services/generated/completion.dart.unused
deleted file mode 100644
index fad936f..0000000
--- a/pkg/analysis_server/lib/src/services/generated/completion.dart.unused
+++ /dev/null
@@ -1,3700 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// This code was auto-generated, is not intended to be edited, and is subject to
-// significant change. Please see the README file for more information.
-
-library services.completion;
-
-import 'dart:collection';
-import "dart:math" as math;
-
-import 'package:analysis_server/src/protocol.dart'
-    show CompletionSuggestionKind;
-import 'package:analyzer/src/generated/java_core.dart' hide StringUtils;
-import 'package:analyzer/src/generated/java_engine.dart';
-import 'package:analyzer/src/generated/java_io.dart';
-import 'package:analyzer/src/generated/ast.dart';
-import 'package:analyzer/src/generated/element.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/error.dart';
-import 'package:analyzer/src/generated/resolver.dart';
-import 'package:analyzer/src/generated/scanner.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/generated/source_io.dart';
-import 'package:analyzer/src/generated/utilities_dart.dart';
-
-import 'stubs.dart';
-import 'util.dart';
-
-class AstNodeClassifier_CompletionEngine_typeOf extends CompletionEngine_AstNodeClassifier {
-  final CompletionEngine CompletionEngine_this;
-
-  DartType result = null;
-
-  AstNodeClassifier_CompletionEngine_typeOf(this.CompletionEngine_this);
-
-  @override
-  Object visitPrefixedIdentifier(PrefixedIdentifier node) => visitSimpleIdentifier(node.identifier);
-
-  @override
-  Object visitSimpleIdentifier(SimpleIdentifier node) {
-    Element elem = node.bestElement;
-    if (elem != null && elem.kind == ElementKind.GETTER) {
-      PropertyAccessorElement accessor = elem as PropertyAccessorElement;
-      if (accessor.isSynthetic) {
-        PropertyInducingElement var2 = accessor.variable;
-        result = CompletionEngine_this._typeSearch(var2);
-      }
-    }
-    return null;
-  }
-}
-
-/**
- * The analysis engine for code completion.
- *
- * Note: During development package-private methods are used to group element-specific completion
- * utilities.
- *
- * TODO: Recognize when completion is requested in the middle of a multi-character operator.
- * Re-write the AST as it would be if an identifier were present at the completion point then
- * restart the analysis.
- */
-class CompletionEngine {
-  static String _C_DYNAMIC = "dynamic";
-
-  static String _C_FALSE = "false";
-
-  static String _C_NULL = "null";
-
-  static String _C_PARAMNAME = "arg";
-
-  static String _C_TRUE = "true";
-
-  static String _C_VAR = "var";
-
-  static String _C_VOID = "void";
-
-  static bool _isPrivate(Element element) {
-    String name = element.displayName;
-    return Identifier.isPrivateName(name);
-  }
-
-  static bool _isSyntheticIdentifier(Expression expression) => expression is SimpleIdentifier && expression.isSynthetic;
-
-  CompletionRequestor _requestor;
-
-  final CompletionFactory _factory;
-
-  AssistContext _context;
-
-  Filter _filter;
-
-  CompletionState _state;
-
-  List<LibraryElement> _libraries;
-
-  CompletionEngine(CompletionRequestor requestor, this._factory) {
-    this._requestor = requestor;
-    this._state = new CompletionState();
-  }
-
-  /**
-   * Analyze the source unit in the given context to determine completion proposals at the selection
-   * offset of the context.
-   *
-   * @throws Exception
-   */
-  void complete(AssistContext context) {
-    this._context = context;
-    _requestor.beginReporting();
-    AstNode completionNode = context.coveredNode;
-    if (completionNode != null) {
-      _state.context = completionNode;
-      CompletionEngine_TerminalNodeCompleter visitor = new CompletionEngine_TerminalNodeCompleter(this);
-      completionNode.accept(visitor);
-    }
-    _requestor.endReporting();
-  }
-
-  void _analyzeAnnotationName(SimpleIdentifier identifier) {
-    _filter = _createFilter(identifier);
-    CompletionEngine_NameCollector names = _collectTopLevelElementVisibleAt(identifier);
-    for (Element element in names.uniqueElements) {
-      if (element is PropertyAccessorElement) {
-        element = (element as PropertyAccessorElement).variable;
-      }
-      if (element is TopLevelVariableElement) {
-        TopLevelVariableElement variable = element as TopLevelVariableElement;
-        if (_state._isCompileTimeConstantRequired && !variable.isConst) {
-          continue;
-        }
-        _proposeName(element, identifier, names);
-      }
-      if (element is ClassElement) {
-        ClassElement classElement = element as ClassElement;
-        for (ConstructorElement constructor in classElement.constructors) {
-          _pNamedConstructor(classElement, constructor, identifier);
-        }
-      }
-    }
-  }
-
-  void _analyzeConstructorTypeName(SimpleIdentifier identifier) {
-    _filter = _createFilter(identifier);
-    List<Element> types = _findAllTypes(currentLibrary, TopLevelNamesKind.DECLARED_AND_IMPORTS);
-    for (Element type in types) {
-      if (type is ClassElement) {
-        _namedConstructorReference(type, identifier);
-      }
-    }
-    List<Element> prefixes = _findAllPrefixes();
-    for (Element prefix in prefixes) {
-      _pName(prefix, identifier);
-    }
-  }
-
-  void _analyzeDeclarationName(VariableDeclaration varDecl) {
-    // We might want to propose multiple names for a declaration based on types someday.
-    // For now, just use whatever is already there.
-    SimpleIdentifier identifier = varDecl.name;
-    _filter = _createFilter(identifier);
-    VariableDeclarationList varList = varDecl.parent as VariableDeclarationList;
-    TypeName type = varList.type;
-    if (identifier.length > 0) {
-      _pName3(identifier.name, CompletionSuggestionKind.LOCAL_VARIABLE);
-    }
-    if (type == null) {
-      if (varList.keyword == null) {
-        // Interpret as the type name of a typed variable declaration { DivE!; }
-        _analyzeLocalName(identifier);
-      }
-    } else {
-      _pParamName(type.name.name.toLowerCase());
-    }
-  }
-
-  void _analyzeDirectAccess(DartType receiverType, SimpleIdentifier completionNode) {
-    if (receiverType != null) {
-      // Complete this.!y where this is absent
-      Element rcvrTypeElem = receiverType.element;
-      if (receiverType.isDynamic) {
-        rcvrTypeElem = objectClassElement;
-      }
-      if (rcvrTypeElem is ClassElement) {
-        _directAccess(rcvrTypeElem as ClassElement, completionNode);
-      }
-    }
-  }
-
-  void _analyzeImmediateField(SimpleIdentifier fieldName) {
-    _filter = _createFilter(fieldName);
-    ClassDeclaration classDecl = fieldName.getAncestor((node) => node is ClassDeclaration);
-    ClassElement classElement = classDecl.element;
-    for (FieldElement field in classElement.fields) {
-      _pName3(field.displayName, CompletionSuggestionKind.FIELD);
-    }
-  }
-
-  void _analyzeLiteralReference(BooleanLiteral literal) {
-    //    state.setContext(literal);
-    Ident ident = _createIdent(literal.parent);
-    ident.token = literal.literal;
-    _filter = _createFilter(ident);
-    _analyzeLocalName(ident);
-  }
-
-  void _analyzeLocalName(SimpleIdentifier identifier) {
-    // Completion x!
-    _filter = _createFilter(identifier);
-    // TODO Filter out types that have no static members.
-    CompletionEngine_NameCollector names = _collectIdentifiersVisibleAt(identifier);
-    for (Element element in names.uniqueElements) {
-      if (_state._isSourceDeclarationStatic) {
-        if (element is FieldElement) {
-          if (!element.isStatic) {
-            continue;
-          }
-        } else if (element is PropertyAccessorElement) {
-          if (!element.isStatic) {
-            continue;
-          }
-        }
-      }
-      if (_state._isOptionalArgumentRequired) {
-        if (element is! ParameterElement) {
-          continue;
-        }
-        ParameterElement param = element as ParameterElement;
-        if (!param.parameterKind.isOptional) {
-          continue;
-        }
-      }
-      _proposeName(element, identifier, names);
-    }
-    if (_state._areLiteralsAllowed) {
-      _pNull();
-      _pTrue();
-      _pFalse();
-    }
-  }
-
-  void _analyzeNamedParameter(ArgumentList args, SimpleIdentifier identifier) {
-    // Completion x!
-    _filter = _createFilter(identifier);
-    // prepare parameters
-    List<ParameterElement> parameters = _getParameterElements(args);
-    if (parameters == null) {
-      return;
-    }
-    // remember already used names
-    Set<String> usedNames = new Set();
-    for (Expression arg in args.arguments) {
-      if (arg is NamedExpression) {
-        NamedExpression namedExpr = arg;
-        String name = namedExpr.name.label.name;
-        usedNames.add(name);
-      }
-    }
-    // propose named parameters
-    for (ParameterElement parameterElement in parameters) {
-      // should be named
-      if (parameterElement.parameterKind != ParameterKind.NAMED) {
-        continue;
-      }
-      // filter by name
-      if (_filterDisallows(parameterElement)) {
-        continue;
-      }
-      // may be already used
-      String parameterName = parameterElement.name;
-      if (usedNames.contains(parameterName)) {
-        continue;
-      }
-      // OK, add proposal
-      CompletionProposal prop = _createProposal4(CompletionSuggestionKind.NAMED_ARGUMENT);
-      prop.setCompletion(parameterName);
-      prop.setParameterName(parameterName);
-      prop.setParameterType(parameterElement.type.displayName);
-      prop.setLocation(identifier.offset);
-      prop.setReplacementLength(identifier.length);
-      prop.setRelevance(CompletionProposal.RELEVANCE_HIGH);
-      _requestor.accept(prop);
-    }
-  }
-
-  void _analyzeNewParameterName(List<FormalParameter> params, SimpleIdentifier typeIdent, String identifierName) {
-    String typeName = typeIdent.name;
-    _filter = _createFilter(_createIdent(typeIdent));
-    List<String> names = new List<String>();
-    for (FormalParameter node in params) {
-      names.add(node.identifier.name);
-    }
-    // Find name similar to typeName not in names, ditto for identifierName.
-    if (identifierName == null || identifierName.isEmpty) {
-      String candidate = typeName == null || typeName.isEmpty ? _C_PARAMNAME : typeName.toLowerCase();
-      _pParamName(_makeNonconflictingName(candidate, names));
-    } else {
-      _pParamName(_makeNonconflictingName(identifierName, names));
-      if (typeName != null && !typeName.isEmpty) {
-        _pParamName(_makeNonconflictingName(typeName.toLowerCase(), names));
-      }
-    }
-  }
-
-  void _analyzePositionalArgument(ArgumentList args, SimpleIdentifier identifier) {
-    // Show parameter name only if there is nothing to complete, so that if there is only
-    // one match, we won't to force user to choose.
-    if (!StringUtils.isEmpty(identifier.name)) {
-      return;
-    }
-    // prepare parameters
-    List<ParameterElement> parameters = _getParameterElements(args);
-    if (parameters == null) {
-      return;
-    }
-    // show current parameter
-    int argIndex = args.arguments.indexOf(identifier);
-    if (argIndex == -1) {
-      argIndex = 0;
-    }
-    if (argIndex >= 0 && argIndex < parameters.length) {
-      ParameterElement parameter = parameters[argIndex];
-      if (parameter.parameterKind != ParameterKind.NAMED) {
-        String parameterName = parameter.displayName;
-        CompletionProposal prop = _createProposal4(CompletionSuggestionKind.OPTIONAL_ARGUMENT);
-        prop.setCompletion(parameterName);
-        prop.setParameterName(parameterName);
-        prop.setParameterType(parameter.type.displayName);
-        prop.setLocation(identifier.offset);
-        prop.setReplacementLength(identifier.length);
-        prop.setRelevance(CompletionProposal.RELEVANCE_HIGH);
-        _requestor.accept(prop);
-      }
-    }
-  }
-
-  void _analyzePrefixedAccess(Expression receiver, SimpleIdentifier completionNode) {
-    if (receiver is ThisExpression && !_state._isThisAllowed) {
-      return;
-    }
-    DartType receiverType = _typeOf2(receiver);
-    bool forSuper = receiver is SuperExpression;
-    _analyzePrefixedAccess2(receiverType, forSuper, completionNode);
-  }
-
-  void _analyzePrefixedAccess2(DartType receiverType, bool forSuper, SimpleIdentifier completionNode) {
-    if (receiverType != null) {
-      // Complete x.!y
-      Element rcvrTypeElem = receiverType.element;
-      if (receiverType.isBottom) {
-        receiverType = objectType;
-      }
-      if (receiverType.isDynamic) {
-        receiverType = objectType;
-      }
-      if (receiverType is InterfaceType) {
-        _prefixedAccess(receiverType, forSuper, completionNode);
-      } else if (rcvrTypeElem is TypeParameterElement) {
-        TypeParameterElement typeParamElem = rcvrTypeElem;
-        _analyzePrefixedAccess2(typeParamElem.bound, false, completionNode);
-      }
-    }
-  }
-
-  void _analyzeReceiver(SimpleIdentifier identifier) {
-    // Completion x!.y
-    _filter = _createFilter(identifier);
-    CompletionEngine_NameCollector names = _collectIdentifiersVisibleAt(identifier);
-    for (Element element in names.uniqueElements) {
-      _proposeName(element, identifier, names);
-    }
-  }
-
-  void _analyzeSuperConstructorInvocation(SuperConstructorInvocation node) {
-    ClassDeclaration enclosingClassNode = node.getAncestor((node) => node is ClassDeclaration);
-    if (enclosingClassNode != null) {
-      ClassElement enclosingClassElement = enclosingClassNode.element;
-      if (enclosingClassElement != null) {
-        ClassElement superClassElement = enclosingClassElement.supertype.element;
-        _constructorReference(superClassElement, node.constructorName);
-      }
-    }
-  }
-
-  void _analyzeTypeName(SimpleIdentifier identifier, SimpleIdentifier nameIdent) {
-    _filter = _createFilter(identifier);
-    String name = nameIdent == null ? "" : nameIdent.name;
-    List<Element> types = _findAllTypes(currentLibrary, TopLevelNamesKind.DECLARED_AND_IMPORTS);
-    for (Element type in types) {
-      if (_state._isForMixin) {
-        if (type is! ClassElement) {
-          continue;
-        }
-        ClassElement classElement = type as ClassElement;
-        if (!classElement.isValidMixin) {
-          continue;
-        }
-      }
-      if (type.displayName == name) {
-        continue;
-      }
-      _pName(type, nameIdent);
-    }
-    if (!_state._isForMixin) {
-      ClassDeclaration classDecl = identifier.getAncestor((node) => node is ClassDeclaration);
-      if (classDecl != null) {
-        ClassElement classElement = classDecl.element;
-        for (TypeParameterElement param in classElement.typeParameters) {
-          _pName(param, nameIdent);
-        }
-      }
-    }
-    List<Element> prefixes = _findAllPrefixes();
-    for (Element prefix in prefixes) {
-      _pName(prefix, nameIdent);
-    }
-    if (_state._isDynamicAllowed) {
-      _pDynamic();
-    }
-    if (_state._isVarAllowed) {
-      _pVar();
-    }
-    if (_state._isVoidAllowed) {
-      _pVoid();
-    }
-  }
-
-  void _constructorReference(ClassElement classElement, SimpleIdentifier identifier) {
-    // Complete identifier when it refers to a constructor defined in classElement.
-    _filter = _createFilter(identifier);
-    for (ConstructorElement cons in classElement.constructors) {
-      if (_state._isCompileTimeConstantRequired == cons.isConst && _filterAllows(cons)) {
-        _pExecutable2(cons, identifier, false);
-      }
-    }
-  }
-
-  void _directAccess(ClassElement classElement, SimpleIdentifier identifier) {
-    _filter = _createFilter(identifier);
-    CompletionEngine_NameCollector names = _createNameCollector();
-    names.addLocalNames(identifier);
-    names._addNamesDefinedByHierarchy(classElement, false);
-    names._addTopLevelNames2(currentLibrary, TopLevelNamesKind.DECLARED_AND_IMPORTS);
-    _proposeNames(names, identifier);
-  }
-
-  void _dispatchPrefixAnalysis(InstanceCreationExpression node) {
-    // prepare ClassElement
-    ClassElement classElement;
-    {
-      Element typeElement = _typeOf2(node).element;
-      if (typeElement is! ClassElement) {
-        return;
-      }
-      classElement = typeElement as ClassElement;
-    }
-    // prepare constructor name
-    Identifier typeName = node.constructorName.type.name;
-    SimpleIdentifier identifier = null;
-    if (typeName is SimpleIdentifier) {
-      identifier = typeName;
-    } else if (typeName is PrefixedIdentifier) {
-      identifier = typeName.identifier;
-    }
-    if (identifier == null) {
-      identifier = _createIdent(node);
-    }
-    // analyze constructor name
-    _analyzeConstructorTypeName(identifier);
-    _constructorReference(classElement, identifier);
-  }
-
-  void _dispatchPrefixAnalysis2(MethodInvocation node) {
-    // This might be a library prefix on a top-level function
-    Expression expr = node.realTarget;
-    if (expr is SimpleIdentifier) {
-      SimpleIdentifier ident = expr;
-      if (ident.bestElement is PrefixElement) {
-        _prefixedAccess2(ident, node.methodName);
-        return;
-      } else if (ident.bestElement is ClassElement) {
-        _state._areInstanceReferencesProhibited = true;
-        _state._areStaticReferencesProhibited = false;
-      } else {
-        _state._areInstanceReferencesProhibited = false;
-        _state._areStaticReferencesProhibited = true;
-      }
-    }
-    if (expr == null) {
-      _analyzeLocalName(_createIdent(node));
-    } else {
-      _analyzePrefixedAccess(expr, node.methodName);
-    }
-  }
-
-  void _dispatchPrefixAnalysis3(PrefixedIdentifier node, SimpleIdentifier identifier) {
-    SimpleIdentifier receiverName = node.prefix;
-    Element receiver = receiverName.bestElement;
-    if (receiver == null) {
-      _prefixedAccess2(receiverName, identifier);
-      return;
-    }
-    while (true) {
-      if (receiver.kind == ElementKind.PREFIX || receiver.kind == ElementKind.IMPORT) {
-        // Complete lib_prefix.name
-        _prefixedAccess2(receiverName, identifier);
-      } else {
-        {
-          DartType receiverType;
-          DartType propType = _typeOf2(receiverName);
-          if (propType == null || propType.isDynamic) {
-            receiverType = _typeOf(receiver);
-          } else {
-            DartType declType = _typeOf(receiver);
-            if (propType.isMoreSpecificThan(declType)) {
-              receiverType = propType;
-            } else {
-              receiverType = declType;
-            }
-          }
-          _analyzePrefixedAccess2(receiverType, false, identifier);
-          break;
-        }
-      }
-      break;
-    }
-  }
-
-  void _fieldReference(ClassElement classElement, SimpleIdentifier identifier) {
-    // Complete identifier when it refers to a constructor defined in classElement.
-    _filter = _createFilter(identifier);
-    for (FieldElement cons in classElement.fields) {
-      if (_filterAllows(cons)) {
-        _pField(cons, identifier, classElement);
-      }
-    }
-  }
-
-  void _namedConstructorReference(ClassElement classElement, SimpleIdentifier identifier) {
-    // Complete identifier when it refers to a named constructor defined in classElement.
-    if (_filter == null) {
-      _filter = _createFilter(identifier);
-    }
-    for (ConstructorElement cons in classElement.constructors) {
-      if (!_isVisible(cons)) {
-        continue;
-      }
-      if (_state._isCompileTimeConstantRequired && !cons.isConst) {
-        continue;
-      }
-      _pNamedConstructor(classElement, cons, identifier);
-    }
-  }
-
-  void _namespacePubReference(NamespaceDirective node, Set<String> packageUris) {
-    // no import URI or package:
-    String prefix = _filter._prefix;
-    List<String> prefixStrings = prefix.split(":");
-    if (!prefix.isEmpty && !"package:".startsWith(prefixStrings[0])) {
-      return;
-    }
-    // if no URI yet, propose package:
-    if (prefix.isEmpty) {
-      _pImportUriWithScheme(node, "package:");
-      return;
-    }
-    // check "packages" folder for package libraries that are not added to AnalysisContext
-    {
-      Source contextSource = _context.source;
-      if (contextSource is FileBasedSource) {
-        FileBasedSource contextFileSource = contextSource;
-        String contextFilePath = contextFileSource.fullName;
-        JavaFile contextFile = new JavaFile(contextFilePath);
-        JavaFile contextFolder = contextFile.getParentFile();
-        JavaFile contextPackages = new JavaFile.relative(contextFolder, "packages");
-        if (contextPackages.isDirectory()) {
-          for (JavaFile packageFolder in contextPackages.listFiles()) {
-            String packageName = packageFolder.getName();
-            String packageLibName = "${packageName}.dart";
-            JavaFile packageFile = new JavaFile.relative(packageFolder, packageLibName);
-            if (packageFile.exists() && packageFile.isFile()) {
-              packageUris.add("package:${packageName}/${packageLibName}");
-            }
-          }
-        }
-      }
-    }
-    // add known package: URIs
-    for (String uri in packageUris) {
-      if (_filterDisallows2(uri)) {
-        continue;
-      }
-      CompletionProposal prop = _createProposal4(CompletionSuggestionKind.IMPORT);
-      prop.setCompletion(uri);
-      // put "lib" before "lib/src"
-      if (!uri.contains("/src/")) {
-        prop.setRelevance(CompletionProposal.RELEVANCE_HIGH);
-      }
-      // done
-      _requestor.accept(prop);
-    }
-  }
-
-  void _namespaceReference(NamespaceDirective node, SimpleStringLiteral literal) {
-    String lit = literal.literal.lexeme;
-    if (!lit.isEmpty) {
-      lit = lit.substring(1, math.max(lit.length - 1, 0));
-    }
-    _filter = _createFilter(new Ident.con2(node, lit, literal.offset + 1));
-    Set<String> packageUris = new Set();
-    List<LibraryElement> libraries = new List<LibraryElement>();
-    List<LibraryElement> librariesInLib = new List<LibraryElement>();
-    String currentLibraryName = currentLibrary.source.fullName;
-    AnalysisContext ac = analysisContext;
-    List<Source> sources = ac.librarySources;
-    for (Source s in sources) {
-      String sName = s.fullName;
-      // skip current library
-      if (currentLibraryName == sName) {
-        continue;
-      }
-      // ".pub-cache/..../unittest-0.8.8/lib/unittest.dart" -> "package:unittest/unittest.dart"
-      {
-        Uri uri = ac.sourceFactory.restoreUri(s);
-        if (uri != null) {
-          String uriString = uri.toString();
-          if (uriString.startsWith("package:")) {
-            packageUris.add(uriString);
-          }
-        }
-      }
-      LibraryElement lib = ac.getLibraryElement(s);
-      if (lib == null) {
-        continue;
-      } else if (_isUnitInLibFolder(lib.definingCompilationUnit)) {
-        librariesInLib.add(lib);
-      } else {
-        libraries.add(lib);
-      }
-    }
-    _namespaceSdkReference(node);
-    _namespacePubReference(node, packageUris);
-  }
-
-  void _namespaceSdkReference(NamespaceDirective node) {
-    String prefix = _filter._prefix;
-    List<String> prefixStrings = prefix.split(":");
-    if (!prefix.isEmpty && !"dart:".startsWith(prefixStrings[0])) {
-      return;
-    }
-    if (prefix.isEmpty) {
-      _pImportUriWithScheme(node, "dart:");
-      return;
-    }
-    // add DartSdk libraries
-    DartSdk dartSdk = analysisContext.sourceFactory.dartSdk;
-    for (SdkLibrary library in dartSdk.sdkLibraries) {
-      String name = library.shortName;
-      // ignore internal
-      if (library.isInternal) {
-        continue;
-      }
-      // ignore implementation
-      if (library.isImplementation) {
-        continue;
-      }
-      // standard libraries name name starting with "dart:"
-      name = StringUtils.removeStart(name, "dart:");
-      // ignore private libraries
-      if (Identifier.isPrivateName(name)) {
-        continue;
-      }
-      // add with "dart:" prefix
-      _pName3("dart:${name}", CompletionSuggestionKind.IMPORT);
-    }
-  }
-
-  void _operatorAccess(Expression expr, SimpleIdentifier identifier) {
-    _state._requiresOperators();
-    _analyzePrefixedAccess(expr, identifier);
-  }
-
-  void _prefixedAccess(InterfaceType type, bool forSuper, SimpleIdentifier identifier) {
-    // Complete identifier when it refers to field or method in classElement.
-    _filter = _createFilter(identifier);
-    CompletionEngine_NameCollector names = _createNameCollector();
-    if (_state._areInstanceReferencesProhibited) {
-      names._addNamesDefinedByType2(type);
-    } else {
-      names._addNamesDefinedByHierarchy2(type, forSuper);
-    }
-    _proposeNames(names, identifier);
-  }
-
-  void _prefixedAccess2(SimpleIdentifier prefixName, SimpleIdentifier identifier) {
-    if (_filter == null) {
-      _filter = _createFilter(identifier);
-    }
-    CompletionEngine_NameCollector names = _createNameCollector();
-    List<ImportElement> prefixImports = _importsWithName(prefixName);
-    // Library prefixes do not have a unique AST representation so we need to fudge state vars.
-    bool litsAllowed = _state._areLiteralsAllowed;
-    _state._areLiteralsAllowed = false;
-    names._addTopLevelNames(prefixImports, TopLevelNamesKind.DECLARED_AND_EXPORTS);
-    _state._areLiteralsAllowed = litsAllowed;
-    _proposeNames(names, identifier);
-  }
-
-  List<InterfaceType> _allSubtypes(ClassElement classElement) {
-    // TODO(scheglov) translate it
-    return [];
-  }
-
-  CompletionEngine_NameCollector _collectIdentifiersVisibleAt(AstNode ident) {
-    CompletionEngine_NameCollector names = _createNameCollector();
-    ScopedNameFinder finder = new ScopedNameFinder(_completionLocation());
-    ident.accept(finder);
-    names.addAll(finder.locals.values);
-    Declaration decl = finder.declaration;
-    if (decl != null && decl.parent is ClassDeclaration) {
-      ClassElement classElement = (decl.parent as ClassDeclaration).element;
-      names._addNamesDefinedByHierarchy(classElement, false);
-    }
-    names._addTopLevelNames2(currentLibrary, TopLevelNamesKind.DECLARED_AND_IMPORTS);
-    return names;
-  }
-
-  CompletionEngine_NameCollector _collectTopLevelElementVisibleAt(AstNode ident) {
-    CompletionEngine_NameCollector names = _createNameCollector();
-    names._addTopLevelNames2(currentLibrary, TopLevelNamesKind.DECLARED_AND_IMPORTS);
-    return names;
-  }
-
-  int _completionLocation() => _context.selectionOffset;
-
-  int _completionTokenOffset() => _completionLocation() - _filter._prefix.length;
-
-  List<FormalParameter> _copyWithout(NodeList oldList, AstNode deletion) {
-    List<FormalParameter> newList = new List<FormalParameter>();
-    oldList.accept(new GeneralizingAstVisitor_CompletionEngine_copyWithout(deletion, newList));
-    return newList;
-  }
-
-  Filter _createFilter(SimpleIdentifier ident) => new Filter.con1(ident, _context.selectionOffset);
-
-  Ident _createIdent(AstNode node) => new Ident.con1(node, _completionLocation());
-
-  CompletionEngine_NameCollector _createNameCollector() => new CompletionEngine_NameCollector(this);
-
-  CompletionProposal _createProposal(Element element) {
-    String completion = element.displayName;
-    return _createProposal3(element, completion);
-  }
-
-  CompletionProposal _createProposal2(Element element, SimpleIdentifier identifier) {
-    // Create a completion proposal for the element: variable, field, class, function.
-    if (_filterDisallows(element)) {
-      return null;
-    }
-    CompletionProposal prop = _createProposal(element);
-    Element container = element.enclosingElement;
-    if (container != null) {
-      prop.setDeclaringType(container.displayName);
-    }
-    DartType type = _typeOf(element);
-    if (type != null) {
-      prop.setReturnType(type.name);
-    }
-    if (identifier != null) {
-      prop.setReplacementLengthIdentifier(identifier.length);
-    }
-    return prop;
-  }
-
-  CompletionProposal _createProposal3(Element element, String completion) {
-    CompletionSuggestionKind kind = _proposalKindOf(element);
-    CompletionProposal prop = _createProposal4(kind);
-    prop.setElement(element);
-    prop.setCompletion(completion);
-    prop.setDeprecated(_isDeprecated(element));
-    if (_isPrivate(element)) {
-      prop.setRelevance(CompletionProposal.RELEVANCE_LOW);
-    }
-    if (_filter._isSameCasePrefix(element.name)) {
-      prop.incRelevance();
-    }
-    return prop;
-  }
-
-  CompletionProposal _createProposal4(CompletionSuggestionKind kind) => _factory.createCompletionProposal(kind, _completionTokenOffset());
-
-  List<LibraryElement> _currentLibraryList() {
-    Set<LibraryElement> libraries = new Set<LibraryElement>();
-    LibraryElement curLib = currentLibrary;
-    libraries.add(curLib);
-    Queue<LibraryElement> queue = new Queue<LibraryElement>();
-    queue.addAll(curLib.importedLibraries);
-    _currentLibraryLister(queue, libraries);
-    return new List.from(libraries);
-  }
-
-  void _currentLibraryLister(Queue<LibraryElement> queue, Set<LibraryElement> libraries) {
-    while (!queue.isEmpty) {
-      LibraryElement sourceLib = queue.removeFirst();
-      libraries.add(sourceLib);
-      List<LibraryElement> expLibs = sourceLib.exportedLibraries;
-      for (LibraryElement lib in expLibs) {
-        if (!libraries.contains(lib)) {
-          queue.add(lib);
-        }
-      }
-    }
-  }
-
-  bool _filterAllows(Element element) => _filter._match(element);
-
-  bool _filterDisallows(Element element) => !_filter._match(element);
-
-  bool _filterDisallows2(String name) => !_filter._match2(name);
-
-  List<Element> _findAllNotTypes(List<Element> elements) {
-    return elements.where((Element element) {
-      ElementKind kind = element.kind;
-      return kind == ElementKind.FUNCTION
-          || kind == ElementKind.TOP_LEVEL_VARIABLE
-          || kind == ElementKind.GETTER
-          || kind == ElementKind.SETTER;
-      }).toList();
-  }
-
-  List<Element> _findAllPrefixes() {
-    LibraryElement lib = _context.compilationUnitElement.enclosingElement;
-    return lib.prefixes;
-  }
-
-  List<Element> _findAllTypes(LibraryElement library, TopLevelNamesKind topKind) {
-    List<Element> elements = _findTopLevelElements(library, topKind);
-    return _findAllTypes2(elements);
-  }
-
-  List<Element> _findAllTypes2(List<Element> elements) {
-    return elements.where((Element element) {
-      ElementKind kind = element.kind;
-      return kind == ElementKind.CLASS
-          || kind == ElementKind.FUNCTION_TYPE_ALIAS;
-      }).toList();
-  }
-
-  List<Element> _findTopLevelElements(LibraryElement library, TopLevelNamesKind topKind) {
-    List<Element> elements = [];
-    if (topKind == TopLevelNamesKind.DECLARED_AND_IMPORTS) {
-      elements.addAll(CorrectionUtils.getTopLevelElements(library));
-      for (ImportElement imp in library.imports) {
-        elements.addAll(CorrectionUtils.getImportNamespace(imp).values);
-      }
-      _removeNotMatchingFilter(elements);
-    }
-    if (topKind == TopLevelNamesKind.DECLARED_AND_EXPORTS) {
-      elements.addAll(CorrectionUtils.getExportNamespace2(library).values);
-      _removeNotMatchingFilter(elements);
-    }
-    return elements;
-  }
-
-  AnalysisContext get analysisContext => _context.compilationUnitElement.context;
-
-  LibraryElement get currentLibrary => _context.compilationUnitElement.enclosingElement;
-
-  FunctionType _getFunctionType(Element element) {
-    if (element is ExecutableElement) {
-      ExecutableElement executableElement = element;
-      return executableElement.type;
-    }
-    if (element is VariableElement) {
-      VariableElement variableElement = element;
-      DartType type = variableElement.type;
-      if (type is FunctionType) {
-        return type;
-      }
-    }
-    return null;
-  }
-
-  ClassElement get objectClassElement => typeProvider.objectType.element;
-
-  InterfaceType get objectType => typeProvider.objectType;
-
-  List<ParameterElement> _getParameterElements(ArgumentList args) {
-    List<ParameterElement> parameters = null;
-    AstNode argsParent = args.parent;
-    if (argsParent is MethodInvocation) {
-      MethodInvocation invocation = argsParent;
-      Element nameElement = invocation.methodName.staticElement;
-      FunctionType functionType = _getFunctionType(nameElement);
-      if (functionType != null) {
-        parameters = functionType.parameters;
-      }
-    }
-    if (argsParent is InstanceCreationExpression) {
-      InstanceCreationExpression creation = argsParent;
-      ConstructorElement element = creation.staticElement;
-      if (element != null) {
-        parameters = element.parameters;
-      }
-    }
-    if (argsParent is Annotation) {
-      Annotation annotation = argsParent;
-      Element element = annotation.element;
-      if (element is ConstructorElement) {
-        parameters = element.parameters;
-      }
-    }
-    return parameters;
-  }
-
-  TypeProvider get typeProvider {
-    AnalysisContext analysisContext = _context.compilationUnitElement.context;
-    try {
-      return (analysisContext as InternalAnalysisContext).typeProvider;
-    } on AnalysisException catch (exception) {
-      // TODO(brianwilkerson) Figure out the right thing to do if the core cannot be resolved.
-      return null;
-    }
-  }
-
-  bool get hasErrorBeforeCompletionLocation {
-    List<AnalysisError> errors = _context.errors;
-    if (errors == null || errors.length == 0) {
-      return false;
-    }
-    return errors[0].offset <= _completionLocation();
-  }
-
-  List<ImportElement> _importsWithName(SimpleIdentifier libName) {
-    String name = libName.name;
-    List<ImportElement> imports = <ImportElement>[];
-    for (ImportElement imp in currentLibrary.imports) {
-      PrefixElement prefix = imp.prefix;
-      if (prefix != null) {
-        String impName = prefix.displayName;
-        if (name == impName) {
-          imports.add(imp);
-        }
-      }
-    }
-    return imports;
-  }
-
-  bool _isCompletingKeyword(Token keyword) {
-    if (keyword == null) {
-      return false;
-    }
-    int completionLoc = _context.selectionOffset;
-    if (completionLoc >= keyword.offset && completionLoc <= keyword.end) {
-      return true;
-    }
-    return false;
-  }
-
-  bool _isCompletionAfter(int loc) => loc <= _completionLocation();
-
-  bool _isCompletionBefore(int loc) => _completionLocation() <= loc;
-
-  bool _isCompletionBetween(int firstLoc, int secondLoc) => _isCompletionAfter(firstLoc) && _isCompletionBefore(secondLoc);
-
-  bool _isDeprecated(Element element) => element != null && element.isDeprecated;
-
-  bool _isInCurrentLibrary(Element element) {
-    LibraryElement libElement = currentLibrary;
-    return identical(element.library, libElement);
-  }
-
-  bool _isUnitInLibFolder(CompilationUnitElement cu) {
-    String pathString = cu.source.fullName;
-    if (pathString.indexOf("/lib/") == -1) {
-      return false;
-    }
-    return true;
-  }
-
-  bool _isVisible(Element element) => !_isPrivate(element) || _isInCurrentLibrary(element);
-
-  String _makeNonconflictingName(String candidate, List<String> names) {
-    String possibility = candidate;
-    int count = 0;
-    loop: while (true) {
-      String name = count == 0 ? possibility : "${possibility}${count}";
-      for (String conflict in names) {
-        if (name == conflict) {
-          count += 1;
-          continue loop;
-        }
-      }
-      return name;
-    }
-  }
-
-  void _pArgumentList(CompletionProposal proposal, int offset, int len) {
-    // prepare parameters
-    List<String> parameterNames = proposal.parameterNames;
-    if (parameterNames.length == 0) {
-      return;
-    }
-    // fill arguments proposal
-    CompletionProposal prop = _createProposal4(CompletionSuggestionKind.ARGUMENT_LIST);
-    prop.setElement(proposal.element);
-    prop.setCompletion(proposal.completion).setReturnType(proposal.returnType);
-    prop.setParameterNames(parameterNames);
-    prop.setParameterTypes(proposal.parameterTypes);
-    prop.setParameterStyle(proposal.positionalParameterCount, proposal.hasNamed, proposal.hasPositional);
-    prop.setReplacementLength(0).setLocation(_completionLocation());
-    prop.setRelevance(CompletionProposal.RELEVANCE_HIGH);
-    _requestor.accept(prop);
-  }
-
-  void _pDynamic() {
-    _pWord(_C_DYNAMIC, CompletionSuggestionKind.LOCAL_VARIABLE);
-  }
-
-  void _pExecutable(Element element, FunctionType functionType, SimpleIdentifier identifier, bool isPotentialMatch) {
-    // Create a completion proposal for the element: function, method, getter, setter, constructor.
-    String name = element.displayName;
-    if (name.isEmpty) {
-      return;
-    }
-    if (_filterDisallows(element)) {
-      return;
-    }
-    if (!_isVisible(element)) {
-      return;
-    }
-    // May be we are in argument of function type parameter, propose function reference.
-    if (_state._targetParameter != null) {
-      DartType parameterType = _state._targetParameter.type;
-      if (parameterType is FunctionType) {
-        if (functionType.isAssignableTo(parameterType)) {
-          _pName2(name, element, CompletionProposal.RELEVANCE_HIGH, CompletionSuggestionKind.METHOD_NAME);
-        }
-      }
-    }
-    CompletionProposal prop = _createProposal(element);
-    prop.setPotentialMatch(isPotentialMatch);
-    if (isPotentialMatch) {
-      prop.setRelevance(CompletionProposal.RELEVANCE_LOW);
-    }
-    _setParameterInfo(functionType, prop);
-    prop.setCompletion(name).setReturnType(functionType.returnType.displayName);
-    // If there is already argument list, then update only method name.
-    if (identifier.parent is MethodInvocation && (identifier.parent as MethodInvocation).argumentList != null) {
-      prop.setKind(CompletionSuggestionKind.METHOD_NAME);
-    }
-    Element container = element.enclosingElement;
-    if (container != null) {
-      prop.setDeclaringType(container.displayName);
-    }
-    _requestor.accept(prop);
-  }
-
-  void _pExecutable2(ExecutableElement element, SimpleIdentifier identifier, bool isPotentialMatch) {
-    _pExecutable(element, element.type, identifier, isPotentialMatch);
-  }
-
-  void _pExecutable3(VariableElement element, SimpleIdentifier identifier) {
-    // Create a completion proposal for the element: top-level variable.
-    String name = element.displayName;
-    if (name.isEmpty || _filterDisallows(element)) {
-      return;
-    }
-    CompletionProposal prop = _createProposal(element);
-    if (element.type != null) {
-      prop.setReturnType(element.type.name);
-    }
-    Element container = element.enclosingElement;
-    if (container != null) {
-      prop.setDeclaringType(container.displayName);
-    }
-    if (identifier != null) {
-      prop.setReplacementLengthIdentifier(identifier.length);
-    }
-    _requestor.accept(prop);
-  }
-
-  void _pFalse() {
-    _pWord(_C_FALSE, CompletionSuggestionKind.LOCAL_VARIABLE);
-  }
-
-  void _pField(FieldElement element, SimpleIdentifier identifier, ClassElement classElement) {
-    // Create a completion proposal for the element: field only.
-    if (_filterDisallows(element)) {
-      return;
-    }
-    CompletionProposal prop = _createProposal(element);
-    Element container = element.enclosingElement;
-    prop.setDeclaringType(container.displayName);
-    _requestor.accept(prop);
-  }
-
-  /**
-   * Proposes URI with the given scheme for the given [NamespaceDirective].
-   */
-  void _pImportUriWithScheme(NamespaceDirective node, String uriScheme) {
-    String newUri = "${uriScheme}${new String.fromCharCode(CompletionProposal.CURSOR_MARKER)}";
-    if (node.uri.isSynthetic) {
-      newUri = "'${newUri}'";
-      if (node.semicolon == null || node.semicolon.isSynthetic) {
-        newUri += ";";
-      }
-    }
-    if (_context.selectionOffset == node.keyword.end) {
-      newUri = " ${newUri}";
-    }
-    _pName3(newUri, CompletionSuggestionKind.IMPORT);
-  }
-
-  void _pKeyword(Token keyword) {
-    _filter = new Filter.con2(keyword.lexeme, keyword.offset, _completionLocation());
-    // This isn't as useful as it might seem. It only works in the case that completion
-    // is requested on an existing recognizable keyword.
-    // TODO: Add keyword proposal kind
-    CompletionProposal prop = _createProposal4(CompletionSuggestionKind.LIBRARY_PREFIX);
-    prop.setCompletion(keyword.lexeme);
-    _requestor.accept(prop);
-  }
-
-  void _pName(Element element, SimpleIdentifier identifier) {
-    CompletionProposal prop = _createProposal2(element, identifier);
-    if (prop != null) {
-      _requestor.accept(prop);
-    }
-  }
-
-  void _pName2(String name, Element element, int relevance, CompletionSuggestionKind kind) {
-    if (_filterDisallows2(name)) {
-      return;
-    }
-    CompletionProposal prop = _createProposal4(kind);
-    prop.setRelevance(relevance);
-    prop.setCompletion(name);
-    prop.setElement(element);
-    _requestor.accept(prop);
-  }
-
-  void _pName3(String name, CompletionSuggestionKind kind) {
-    if (_filterDisallows2(name)) {
-      return;
-    }
-    CompletionProposal prop = _createProposal4(kind);
-    prop.setCompletion(name);
-    _requestor.accept(prop);
-  }
-
-  void _pNamedConstructor(ClassElement classElement, ConstructorElement element, SimpleIdentifier identifier) {
-    // Create a completion proposal for the named constructor.
-    String name = classElement.displayName;
-    if (!element.displayName.isEmpty) {
-      name += ".${element.displayName}";
-    }
-    if (_filterDisallows2(name)) {
-      return;
-    }
-    CompletionProposal prop = _createProposal3(element, name);
-    _setParameterInfo(element.type, prop);
-    prop.setReturnType(element.type.returnType.name);
-    Element container = element.enclosingElement;
-    prop.setDeclaringType(container.displayName);
-    if (identifier != null) {
-      prop.setReplacementLengthIdentifier(identifier.length);
-    }
-    _requestor.accept(prop);
-  }
-
-  void _pNull() {
-    _pWord(_C_NULL, CompletionSuggestionKind.LOCAL_VARIABLE);
-  }
-
-  void _pParamName(String name) {
-    if (_filterDisallows2(name)) {
-      return;
-    }
-    CompletionProposal prop = _createProposal4(CompletionSuggestionKind.PARAMETER);
-    prop.setCompletion(name);
-    _requestor.accept(prop);
-  }
-
-  CompletionSuggestionKind _proposalKindOf(Element element) {
-    CompletionSuggestionKind kind;
-    while (true) {
-      if (element.kind == ElementKind.CONSTRUCTOR) {
-        kind = CompletionSuggestionKind.CONSTRUCTOR;
-      } else if (element.kind == ElementKind.FUNCTION) {
-        kind = CompletionSuggestionKind.FUNCTION;
-      } else if (element.kind == ElementKind.METHOD) {
-        kind = CompletionSuggestionKind.METHOD;
-      } else if (element.kind == ElementKind.GETTER) {
-        kind = CompletionSuggestionKind.GETTER;
-      } else if (element.kind == ElementKind.SETTER) {
-        kind = CompletionSuggestionKind.SETTER;
-      } else if (element.kind == ElementKind.CLASS) {
-        kind = CompletionSuggestionKind.CLASS;
-      } else if (element.kind == ElementKind.FIELD) {
-        kind = CompletionSuggestionKind.FIELD;
-      } else if (element.kind == ElementKind.IMPORT) {
-        kind = CompletionSuggestionKind.IMPORT;
-      } else if (element.kind == ElementKind.PARAMETER) {
-        kind = CompletionSuggestionKind.PARAMETER;
-      } else if (element.kind == ElementKind.PREFIX) {
-        kind = CompletionSuggestionKind.LIBRARY_PREFIX;
-      } else if (element.kind == ElementKind.FUNCTION_TYPE_ALIAS) {
-        kind = CompletionSuggestionKind.CLASS_ALIAS;
-      } else if (element.kind == ElementKind.TYPE_PARAMETER) {
-        kind = CompletionSuggestionKind.TYPE_PARAMETER;
-      } else if (element.kind == ElementKind.LOCAL_VARIABLE || element.kind == ElementKind.TOP_LEVEL_VARIABLE) {
-        kind = CompletionSuggestionKind.LOCAL_VARIABLE;
-      } else {
-        throw new IllegalArgumentException();
-      }
-      break;
-    }
-    return kind;
-  }
-
-  void _proposeCombinator(Combinator node, SimpleIdentifier identifier) {
-    _filter = _createFilter(identifier);
-    NamespaceDirective directive = node.parent as NamespaceDirective;
-    LibraryElement libraryElement = directive.uriElement;
-    if (libraryElement != null) {
-      // prepare Elements with unique names
-      CompletionEngine_NameCollector nameCollector = _createNameCollector();
-      Iterable<Element> elements = CorrectionUtils.getExportNamespace2(libraryElement).values;
-      for (Element element in elements) {
-        if (_filterDisallows(element)) {
-          continue;
-        }
-        nameCollector._mergeName(element);
-      }
-      // propose each Element
-      for (Element element in nameCollector.uniqueElements) {
-        CompletionProposal proposal = _createProposal(element);
-        if (proposal.kind == CompletionSuggestionKind.FUNCTION) {
-          proposal.setKind(CompletionSuggestionKind.METHOD_NAME);
-        }
-        _requestor.accept(proposal);
-      }
-    }
-  }
-
-  void _proposeName(Element element, SimpleIdentifier identifier, CompletionEngine_NameCollector names) {
-    while (true) {
-      if (element.kind == ElementKind.FUNCTION || element.kind == ElementKind.GETTER || element.kind == ElementKind.METHOD || element.kind == ElementKind.SETTER) {
-        ExecutableElement candidate = element as ExecutableElement;
-        _pExecutable2(candidate, identifier, names._isPotentialMatch(candidate));
-      } else if (element.kind == ElementKind.LOCAL_VARIABLE || element.kind == ElementKind.PARAMETER || element.kind == ElementKind.TOP_LEVEL_VARIABLE) {
-        FunctionType functionType = _getFunctionType(element);
-        if (functionType != null) {
-          _pExecutable(element, functionType, identifier, names._isPotentialMatch(element));
-        } else {
-          VariableElement var2 = element as VariableElement;
-          _pExecutable3(var2, identifier);
-        }
-      } else if (element.kind == ElementKind.CLASS) {
-        _pName(element, identifier);
-      } else {
-      }
-      break;
-    }
-  }
-
-  void _proposeNames(CompletionEngine_NameCollector names, SimpleIdentifier identifier) {
-    for (Element element in names.uniqueElements) {
-      _proposeName(element, identifier, names);
-    }
-  }
-
-  void _pTrue() {
-    _pWord(_C_TRUE, CompletionSuggestionKind.LOCAL_VARIABLE);
-  }
-
-  void _pVar() {
-    _pWord(_C_VAR, CompletionSuggestionKind.LOCAL_VARIABLE);
-  }
-
-  void _pVoid() {
-    _pWord(_C_VOID, CompletionSuggestionKind.LOCAL_VARIABLE);
-  }
-
-  void _pWord(String word, CompletionSuggestionKind kind) {
-    if (_filterDisallows2(word)) {
-      return;
-    }
-    CompletionProposal prop = _createProposal4(kind);
-    prop.setCompletion(word);
-    _requestor.accept(prop);
-  }
-
-  void _removeNotMatchingFilter(List<Element> elements) {
-    if (_filter == null) {
-      return;
-    }
-    _filter._makePattern();
-    _filter._removeNotMatching(elements);
-  }
-
-  void _setParameterInfo(FunctionType functionType, CompletionProposal prop) {
-    List<String> params = new List<String>();
-    List<String> types = new List<String>();
-    bool named = false, positional = false;
-    int posCount = 0;
-    for (ParameterElement param in functionType.parameters) {
-      if (!param.isSynthetic) {
-        while (true) {
-          if (param.parameterKind == ParameterKind.REQUIRED) {
-            posCount += 1;
-          } else if (param.parameterKind == ParameterKind.NAMED) {
-            named = true;
-          } else if (param.parameterKind == ParameterKind.POSITIONAL) {
-            positional = true;
-          }
-          break;
-        }
-        params.add(param.displayName);
-        types.add(param.type.toString());
-      }
-    }
-    prop.setParameterNames(params);
-    prop.setParameterTypes(types);
-    prop.setParameterStyle(posCount, named, positional);
-  }
-
-  SimpleIdentifier _typeDeclarationName(AstNode node) {
-    AstNode parent = node;
-    while (parent != null) {
-      if (parent is ClassDeclaration) {
-        return (parent as ClassDeclaration).name;
-      }
-      if (parent is ClassTypeAlias) {
-        return (parent as ClassTypeAlias).name;
-      }
-      if (parent is FunctionTypeAlias) {
-        return (parent as FunctionTypeAlias).name;
-      }
-      parent = parent.parent;
-    }
-    return null;
-  }
-
-  DartType _typeOf(Element receiver) {
-    DartType receiverType;
-    while (true) {
-      if (receiver.kind == ElementKind.FIELD || receiver.kind == ElementKind.PARAMETER || receiver.kind == ElementKind.LOCAL_VARIABLE || receiver.kind == ElementKind.TOP_LEVEL_VARIABLE) {
-        {
-          VariableElement receiverElement = receiver as VariableElement;
-          receiverType = receiverElement.type;
-          break;
-        }
-      } else if (receiver.kind == ElementKind.GETTER) {
-        PropertyAccessorElement accessor = receiver as PropertyAccessorElement;
-        if (accessor.isSynthetic) {
-          PropertyInducingElement inducer = accessor.variable;
-          DartType inducerType = inducer.type;
-          if (inducerType == null || inducerType.isDynamic) {
-            receiverType = _typeSearch(inducer);
-            if (receiverType != null) {
-              break;
-            }
-          }
-        }
-        FunctionType accType = accessor.type;
-        receiverType = accType == null ? null : accType.returnType;
-      } else if (receiver.kind == ElementKind.CONSTRUCTOR || receiver.kind == ElementKind.FUNCTION || receiver.kind == ElementKind.METHOD || receiver.kind == ElementKind.SETTER) {
-        {
-          ExecutableElement receiverElement = receiver as ExecutableElement;
-          FunctionType funType = receiverElement.type;
-          receiverType = funType == null ? null : funType.returnType;
-          break;
-        }
-      } else if (receiver.kind == ElementKind.CLASS) {
-        {
-          ClassElement receiverElement = receiver as ClassElement;
-          receiverType = receiverElement.type;
-          break;
-        }
-      } else if (receiver.kind == ElementKind.DYNAMIC) {
-        {
-          receiverType = DynamicTypeImpl.instance;
-          break;
-        }
-      } else if (receiver.kind == ElementKind.FUNCTION_TYPE_ALIAS) {
-        {
-          FunctionTypeAliasElement receiverElement = receiver as FunctionTypeAliasElement;
-          FunctionType funType = receiverElement.type;
-          receiverType = funType == null ? null : funType.returnType;
-          break;
-        }
-      } else {
-        {
-          receiverType = null;
-          break;
-        }
-      }
-      break;
-    }
-    return receiverType;
-  }
-
-  DartType _typeOf2(Expression expr) {
-    DartType type = expr.bestType;
-    if (type.isDynamic) {
-      AstNodeClassifier_CompletionEngine_typeOf visitor
-          = new AstNodeClassifier_CompletionEngine_typeOf(this);
-      expr.accept(visitor);
-      DartType result = visitor.result;
-      if (result != null) {
-        return result;
-      }
-    }
-    return type;
-  }
-
-  DartType _typeOfContainingClass(AstNode node) {
-    AstNode parent = node;
-    while (parent != null) {
-      if (parent is ClassDeclaration) {
-        return (parent as ClassDeclaration).element.type;
-      }
-      parent = parent.parent;
-    }
-    return DynamicTypeImpl.instance;
-  }
-
-  DartType _typeSearch(PropertyInducingElement varElement) {
-    // TODO(scheglov) translate it
-    return null;
-  }
-}
-
-abstract class CompletionEngine_AstNodeClassifier extends GeneralizingAstVisitor<Object> {
-  @override
-  Object visitNode(AstNode node) => null;
-}
-
-class CompletionEngine_CommentReferenceCompleter extends CompletionEngine_AstNodeClassifier {
-  final CompletionEngine CompletionEngine_this;
-
-  final SimpleIdentifier _identifier;
-
-  CompletionEngine_NameCollector _names;
-
-  Set<Element> _enclosingElements = new Set();
-
-  CompletionEngine_CommentReferenceCompleter(this.CompletionEngine_this, this._identifier) {
-    CompletionEngine_this._filter = CompletionEngine_this._createFilter(_identifier);
-    _names = CompletionEngine_this._collectTopLevelElementVisibleAt(_identifier);
-  }
-
-  @override
-  Object visitClassDeclaration(ClassDeclaration node) {
-    ClassElement classElement = node.element;
-    _names._addNamesDefinedByHierarchy(classElement, false);
-    _enclosingElements.add(classElement);
-    return null;
-  }
-
-  @override
-  Object visitComment(Comment node) {
-    node.parent.accept(this);
-    // propose names
-    for (Element element in _names.uniqueElements) {
-      CompletionProposal proposal = CompletionEngine_this._createProposal2(element, _identifier);
-      if (proposal != null) {
-        // we don't want to add arguments, just names
-        if (element is MethodElement || element is FunctionElement) {
-          proposal.setKind(CompletionSuggestionKind.METHOD_NAME);
-        }
-        // elevate priority for local elements
-        if (_enclosingElements.contains(element.enclosingElement)) {
-          proposal.setRelevance(CompletionProposal.RELEVANCE_HIGH);
-        }
-        // propose
-        CompletionEngine_this._requestor.accept(proposal);
-      }
-    }
-    // done
-    return null;
-  }
-
-  @override
-  Object visitConstructorDeclaration(ConstructorDeclaration node) {
-    _visitExecutableDeclaration(node);
-    // pass through
-    return node.parent.accept(this);
-  }
-
-  @override
-  Object visitFunctionDeclaration(FunctionDeclaration node) {
-    _visitExecutableDeclaration(node);
-    return null;
-  }
-
-  @override
-  Object visitFunctionTypeAlias(FunctionTypeAlias node) {
-    FunctionTypeAliasElement element = node.element;
-    _names._mergeNames(element.parameters);
-    _enclosingElements.add(element);
-    return null;
-  }
-
-  @override
-  Object visitMethodDeclaration(MethodDeclaration node) {
-    _visitExecutableDeclaration(node);
-    // pass through
-    return node.parent.accept(this);
-  }
-
-  void _visitExecutableDeclaration(Declaration node) {
-    ExecutableElement element = node.element as ExecutableElement;
-    _names._mergeNames(element.parameters);
-    _enclosingElements.add(element);
-  }
-}
-
-/**
- * An IdentifierCompleter is used to classify the parent of the completion node when it has
- * previously been determined that the completion node is a SimpleIdentifier.
- */
-class CompletionEngine_IdentifierCompleter extends CompletionEngine_AstNodeClassifier {
-  final CompletionEngine CompletionEngine_this;
-
-  SimpleIdentifier _completionNode;
-
-  CompletionEngine_IdentifierCompleter(this.CompletionEngine_this, SimpleIdentifier node) {
-    _completionNode = node;
-  }
-
-  @override
-  Object visitAnnotation(Annotation node) {
-    if (_completionNode is SimpleIdentifier) {
-      CompletionEngine_this._analyzeAnnotationName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitArgumentList(ArgumentList node) {
-    if (_completionNode is SimpleIdentifier) {
-      if (CompletionEngine_this._isCompletionBetween(node.leftParenthesis.end, node.rightParenthesis.offset)) {
-        CompletionEngine_this._analyzeLocalName(_completionNode);
-        CompletionEngine_this._analyzePositionalArgument(node, _completionNode);
-        CompletionEngine_this._analyzeNamedParameter(node, _completionNode);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitAssignmentExpression(AssignmentExpression node) {
-    if (_completionNode is SimpleIdentifier) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitBinaryExpression(BinaryExpression node) {
-    if (identical(node.leftOperand, _completionNode)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    } else if (identical(node.rightOperand, _completionNode)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitCombinator(Combinator node) {
-    CompletionEngine_this._proposeCombinator(node, _completionNode);
-    return null;
-  }
-
-  @override
-  Object visitCommentReference(CommentReference node) {
-    AstNode comment = node.parent;
-    CompletionEngine_CommentReferenceCompleter visitor = new CompletionEngine_CommentReferenceCompleter(CompletionEngine_this, _completionNode);
-    return comment.accept(visitor);
-  }
-
-  @override
-  Object visitConstructorDeclaration(ConstructorDeclaration node) {
-    if (identical(node.returnType, _completionNode)) {
-      CompletionEngine_this._filter = CompletionEngine_this._createFilter(_completionNode);
-      CompletionEngine_this._pName3(_completionNode.name, CompletionSuggestionKind.CONSTRUCTOR);
-    }
-    return null;
-  }
-
-  @override
-  Object visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
-    // { A() : this.!x = 1; }
-    if (identical(node.fieldName, _completionNode)) {
-      ClassElement classElement = (node.parent as ConstructorDeclaration).element.enclosingElement;
-      CompletionEngine_this._fieldReference(classElement, node.fieldName);
-    }
-    return null;
-  }
-
-  @override
-  Object visitConstructorName(ConstructorName node) {
-    if (identical(node.name, _completionNode)) {
-      // { new A.!c(); }
-      TypeName typeName = node.type;
-      if (typeName != null) {
-        DartType type = typeName.type;
-        Element typeElement = type.element;
-        if (typeElement is ClassElement) {
-          ClassElement classElement = typeElement;
-          CompletionEngine_this._constructorReference(classElement, node.name);
-        }
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitDoStatement(DoStatement node) {
-    if (identical(node.condition, _completionNode)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitExpression(Expression node) {
-    SimpleIdentifier ident;
-    if (_completionNode is SimpleIdentifier) {
-      ident = _completionNode;
-    } else {
-      ident = CompletionEngine_this._createIdent(node);
-    }
-    CompletionEngine_this._analyzeLocalName(ident);
-    return null;
-  }
-
-  @override
-  Object visitExpressionFunctionBody(ExpressionFunctionBody node) {
-    if (identical(_completionNode, node.expression)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitExpressionStatement(ExpressionStatement node) {
-    SimpleIdentifier ident;
-    if (_completionNode is SimpleIdentifier) {
-      ident = _completionNode;
-    } else {
-      ident = CompletionEngine_this._createIdent(node);
-    }
-    CompletionEngine_this._analyzeLocalName(ident);
-    return null;
-  }
-
-  @override
-  Object visitFieldFormalParameter(FieldFormalParameter node) {
-    if (identical(_completionNode, node.identifier)) {
-      CompletionEngine_this._analyzeImmediateField(node.identifier);
-    }
-    return null;
-  }
-
-  @override
-  Object visitForEachStatement(ForEachStatement node) {
-    if (identical(node.iterator, _completionNode)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitFunctionTypeAlias(FunctionTypeAlias node) {
-    if (identical(node.name, _completionNode)) {
-      if (node.returnType == null) {
-        // This may be an incomplete class type alias
-        CompletionEngine_this._state._includesUndefinedTypes();
-        CompletionEngine_this._analyzeTypeName(node.name, CompletionEngine_this._typeDeclarationName(node));
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitIfStatement(IfStatement node) {
-    if (identical(node.condition, _completionNode)) {
-      // { if (!) }
-      CompletionEngine_this._analyzeLocalName(new Ident.con3(node, _completionNode.token));
-    }
-    return null;
-  }
-
-  @override
-  Object visitInterpolationExpression(InterpolationExpression node) {
-    if (node.expression is SimpleIdentifier) {
-      SimpleIdentifier ident = node.expression as SimpleIdentifier;
-      CompletionEngine_this._analyzeLocalName(ident);
-    }
-    return null;
-  }
-
-  @override
-  Object visitLibraryIdentifier(LibraryIdentifier node) => null;
-
-  @override
-  Object visitMethodDeclaration(MethodDeclaration node) {
-    if (identical(_completionNode, node.name)) {
-      if (node.returnType == null) {
-        // class Foo {const F!(); }
-        CompletionEngine_this._analyzeLocalName(_completionNode);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitMethodInvocation(MethodInvocation node) {
-    if (identical(node.methodName, _completionNode)) {
-      // { x.!y() }
-      Expression expr = node.realTarget;
-      DartType receiverType;
-      if (expr == null) {
-        receiverType = CompletionEngine_this._typeOfContainingClass(node);
-        CompletionEngine_this._analyzeDirectAccess(receiverType, node.methodName);
-      } else {
-        CompletionEngine_this._dispatchPrefixAnalysis2(node);
-      }
-    } else if (identical(node.target, _completionNode)) {
-      // { x!.y() } -- only reached when node.getTarget() is a simple identifier.
-      if (_completionNode is SimpleIdentifier) {
-        SimpleIdentifier ident = _completionNode;
-        CompletionEngine_this._analyzeReceiver(ident);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitParenthesizedExpression(ParenthesizedExpression node) {
-    // Incomplete closure: foo((Str!)); We check if "()" is argument for function typed parameter.
-    if (node.parent is ArgumentList) {
-      ParameterElement parameterElement = node.bestParameterElement;
-      if (parameterElement != null && parameterElement.type is FunctionType) {
-        Ident ident = CompletionEngine_this._createIdent(_completionNode);
-        CompletionEngine_this._analyzeTypeName(_completionNode, ident);
-      }
-    }
-    return super.visitParenthesizedExpression(node);
-  }
-
-  @override
-  Object visitPrefixedIdentifier(PrefixedIdentifier node) {
-    if (identical(node.prefix, _completionNode)) {
-      // { x!.y }
-      CompletionEngine_this._analyzeLocalName(node.prefix);
-    } else {
-      // { v.! }
-      CompletionEngine_this._dispatchPrefixAnalysis3(node, node.identifier);
-    }
-    return null;
-  }
-
-  @override
-  Object visitPropertyAccess(PropertyAccess node) {
-    if (node.target != null && node.target.length == 0) {
-      return null;
-    }
-    // { o.!hashCode }
-    if (identical(node.propertyName, _completionNode)) {
-      CompletionEngine_this._analyzePrefixedAccess(node.realTarget, node.propertyName);
-    }
-    return null;
-  }
-
-  @override
-  Object visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) {
-    // { A.Fac() : this.!b(); }
-    if (identical(node.constructorName, _completionNode)) {
-      ClassElement classElement = node.staticElement.enclosingElement;
-      CompletionEngine_this._constructorReference(classElement, node.constructorName);
-    }
-    return null;
-  }
-
-  @override
-  Object visitReturnStatement(ReturnStatement node) {
-    if (_completionNode is SimpleIdentifier) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitSimpleFormalParameter(SimpleFormalParameter node) {
-    if (identical(node.identifier, _completionNode)) {
-      if (node.keyword == null && node.type == null) {
-        Ident ident = CompletionEngine_this._createIdent(node);
-        CompletionEngine_this._analyzeTypeName(node.identifier, ident);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitSuperConstructorInvocation(SuperConstructorInvocation node) {
-    CompletionEngine_this._analyzeSuperConstructorInvocation(node);
-    return null;
-  }
-
-  @override
-  Object visitSwitchCase(SwitchCase node) {
-    if (identical(_completionNode, node.expression)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitSwitchStatement(SwitchStatement node) {
-    if (identical(node.expression, _completionNode)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-
-  @override
-  Object visitTypeName(TypeName node) {
-    AstNode parent = node.parent;
-    if (parent != null) {
-      CompletionEngine_TypeNameCompleter visitor = new CompletionEngine_TypeNameCompleter(CompletionEngine_this, _completionNode, node);
-      return parent.accept(visitor);
-    }
-    return null;
-  }
-
-  @override
-  Object visitTypeParameter(TypeParameter node) {
-    // { X<!Y> }
-    if (CompletionEngine_this._isCompletionBetween(node.offset, node.end)) {
-      CompletionEngine_this._analyzeTypeName(_completionNode, CompletionEngine_this._typeDeclarationName(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitVariableDeclaration(VariableDeclaration node) {
-    if (identical(node.name, _completionNode)) {
-      CompletionEngine_this._analyzeDeclarationName(node);
-    } else if (identical(node.initializer, _completionNode)) {
-      CompletionEngine_this._analyzeLocalName(node.initializer as SimpleIdentifier);
-    }
-    return null;
-  }
-
-  @override
-  Object visitWhileStatement(WhileStatement node) {
-    if (identical(node.condition, _completionNode)) {
-      CompletionEngine_this._analyzeLocalName(_completionNode);
-    }
-    return null;
-  }
-}
-
-class CompletionEngine_NameCollector {
-  final CompletionEngine CompletionEngine_this;
-
-  Map<String, List<Element>> _uniqueNames = new Map<String, List<Element>>();
-
-  Set<Element> _potentialMatches;
-
-  CompletionEngine_NameCollector(this.CompletionEngine_this);
-
-  void addAll(Iterable<SimpleIdentifier> values) {
-    for (SimpleIdentifier id in values) {
-      _mergeName(id.bestElement);
-    }
-  }
-
-  void addLocalNames(SimpleIdentifier identifier) {
-    AstNode node = identifier;
-    Declaration decl;
-    while ((decl = node.getAncestor((node) => node is Declaration)) != null) {
-      Element declElement = decl.element;
-      if (declElement is ExecutableElement) {
-        _addNamesDefinedByExecutable(declElement);
-      } else {
-        return;
-      }
-      node = decl.parent;
-    }
-  }
-
-  void _addNamesDefinedByExecutable(ExecutableElement execElement) {
-    _mergeNames(execElement.parameters);
-    _mergeNames(execElement.localVariables);
-    _mergeNames(execElement.functions);
-  }
-
-  void _addNamesDefinedByHierarchy(ClassElement classElement, bool forSuper) {
-    _addNamesDefinedByHierarchy2(classElement.type, forSuper);
-  }
-
-  void _addNamesDefinedByHierarchy2(InterfaceType type, bool forSuper) {
-    List<InterfaceType> superTypes = type.element.allSupertypes;
-    if (!forSuper) {
-      superTypes.insert(0, type);
-    }
-    _addNamesDefinedByTypes(superTypes);
-    // Collect names defined by subtypes separately so they can be identified later.
-    CompletionEngine_NameCollector potentialMatchCollector = CompletionEngine_this._createNameCollector();
-    if (!type.isObject) {
-      potentialMatchCollector._addNamesDefinedByTypes(CompletionEngine_this._allSubtypes(type.element));
-    }
-    _potentialMatches = new Set<Element>();
-    for (List<Element> matches in potentialMatchCollector._uniqueNames.values) {
-      for (Element match in matches) {
-        _mergeName(match);
-        _potentialMatches.add(match);
-      }
-    }
-  }
-
-  void _addNamesDefinedByType(ClassElement classElement) {
-    _addNamesDefinedByType2(classElement.type);
-  }
-
-  void _addNamesDefinedByType2(InterfaceType type) {
-    if (_inPrivateLibrary(type)) {
-      return;
-    }
-    List<PropertyAccessorElement> accessors = type.accessors;
-    _mergeNames(accessors);
-    List<MethodElement> methods = type.methods;
-    _mergeNames(methods);
-    _mergeNames(type.element.typeParameters);
-    _filterStaticRefs(accessors);
-    _filterStaticRefs(methods);
-  }
-
-  void _addNamesDefinedByTypes(List<InterfaceType> types) {
-    for (InterfaceType type in types) {
-      _addNamesDefinedByType2(type);
-    }
-  }
-
-  void _addTopLevelNames(List<ImportElement> imports, TopLevelNamesKind topKind) {
-    for (ImportElement imp in imports) {
-      Iterable<Element> elementsCollection = CorrectionUtils.getImportNamespace(imp).values;
-      List<Element> elements = [];
-      _addTopLevelNames4(elements);
-    }
-  }
-
-  void _addTopLevelNames2(LibraryElement library, TopLevelNamesKind topKind) {
-    List<Element> elements = CompletionEngine_this._findTopLevelElements(library, topKind);
-    _addTopLevelNames4(elements);
-  }
-
-  void _addTopLevelNames3(List<LibraryElement> libraries, TopLevelNamesKind topKind) {
-    for (LibraryElement library in libraries) {
-      _addTopLevelNames2(library, topKind);
-    }
-  }
-
-  Iterable<List<Element>> get names => _uniqueNames.values;
-
-  Iterable<Element> get uniqueElements {
-    List<Element> uniqueElements = [];
-    for (List<Element> uniques in _uniqueNames.values) {
-      Element element = uniques[0];
-      uniqueElements.add(element);
-    }
-    return uniqueElements;
-  }
-
-  bool _isPotentialMatch(Element element) => _potentialMatches != null && _potentialMatches.contains(element);
-
-  void _remove(Element element) {
-    String name = element.displayName;
-    List<Element> list = _uniqueNames[name];
-    if (list == null) {
-      return;
-    }
-    list.remove(element);
-    if (list.isEmpty) {
-      _uniqueNames.remove(name);
-    }
-  }
-
-  void _addTopLevelNames4(List<Element> elements) {
-    _mergeNames(CompletionEngine_this._findAllTypes2(elements));
-    if (!CompletionEngine_this._state._areClassesRequired) {
-      _mergeNames(CompletionEngine_this._findAllNotTypes(elements));
-      _mergeNames(CompletionEngine_this._findAllPrefixes());
-    }
-  }
-
-  void _filterStaticRefs(List<ExecutableElement> elements) {
-    for (ExecutableElement execElem in elements) {
-      if (CompletionEngine_this._state._areInstanceReferencesProhibited && !execElem.isStatic) {
-        _remove(execElem);
-      } else if (CompletionEngine_this._state._areStaticReferencesProhibited && execElem.isStatic) {
-        _remove(execElem);
-      } else if (!CompletionEngine_this._state._areOperatorsAllowed && execElem.isOperator) {
-        _remove(execElem);
-      } else if (CompletionEngine_this._state._areMethodsProhibited && !execElem.isOperator) {
-        _remove(execElem);
-      }
-    }
-  }
-
-  bool _inPrivateLibrary(InterfaceType type) {
-    LibraryElement lib = type.element.library;
-    if (!lib.name.startsWith("_")) {
-      return false;
-    }
-    // allow completion in the same library
-    if (identical(lib, CompletionEngine_this.currentLibrary)) {
-      return false;
-    }
-    // eliminate types defined in private libraries
-    return true;
-  }
-
-  void _mergeName(Element element) {
-    if (element == null) {
-      return;
-    }
-    // ignore private
-    String name = element.displayName;
-    if (Identifier.isPrivateName(name)) {
-      if (!CompletionEngine_this._isInCurrentLibrary(element)) {
-        return;
-      }
-    }
-    // add to other Element(s) with such name
-    List<Element> dups = _uniqueNames[name];
-    if (dups == null) {
-      dups = new List<Element>();
-      _uniqueNames[name] = dups;
-    }
-    dups.add(element);
-  }
-
-  void _mergeNames(List<Element> elements) {
-    for (Element element in elements) {
-      _mergeName(element);
-    }
-  }
-}
-
-/**
- * An StringCompleter is used to classify the parent of the completion node when it has previously
- * been determined that the completion node is a SimpleStringLiteral.
- */
-class CompletionEngine_StringCompleter extends CompletionEngine_AstNodeClassifier {
-  final CompletionEngine CompletionEngine_this;
-
-  SimpleStringLiteral _completionNode;
-
-  CompletionEngine_StringCompleter(this.CompletionEngine_this, SimpleStringLiteral node) {
-    _completionNode = node;
-  }
-
-  @override
-  Object visitNamespaceDirective(NamespaceDirective node) {
-    if (identical(_completionNode, node.uri)) {
-      CompletionEngine_this._namespaceReference(node, _completionNode);
-    }
-    return null;
-  }
-}
-
-/**
- * A TerminalNodeCompleter is used to classify the completion node when nothing else is known
- * about it.
- */
-class CompletionEngine_TerminalNodeCompleter extends CompletionEngine_AstNodeClassifier {
-  final CompletionEngine CompletionEngine_this;
-
-  CompletionEngine_TerminalNodeCompleter(this.CompletionEngine_this);
-
-  @override
-  Object visitArgumentList(ArgumentList node) {
-    if (node.arguments.isEmpty && CompletionEngine_this._isCompletionBetween(node.leftParenthesis.end, node.rightParenthesis.offset)) {
-      if (node.parent is MethodInvocation) {
-        // or node.getParent().accept(this); ?
-        MethodInvocation invokeNode = node.parent as MethodInvocation;
-        SimpleIdentifier methodName = invokeNode.methodName;
-        ProposalCollector proposalRequestor = new ProposalCollector(CompletionEngine_this._requestor);
-        try {
-          CompletionEngine_this._requestor = proposalRequestor;
-          CompletionEngine_this._dispatchPrefixAnalysis2(invokeNode);
-        } finally {
-          CompletionEngine_this._requestor = proposalRequestor.requestor;
-        }
-        int offset = methodName.offset;
-        int len = node.rightParenthesis.end - offset;
-        String name = methodName.name;
-        for (CompletionProposal proposal in proposalRequestor.proposals) {
-          if (proposal.completion == name) {
-            CompletionEngine_this._pArgumentList(proposal, offset, len);
-          }
-        }
-      } else if (node.parent is InstanceCreationExpression) {
-        InstanceCreationExpression invokeNode = node.parent as InstanceCreationExpression;
-        ConstructorName methodName = invokeNode.constructorName;
-        ProposalCollector proposalRequestor = new ProposalCollector(CompletionEngine_this._requestor);
-        try {
-          CompletionEngine_this._requestor = proposalRequestor;
-          CompletionEngine_this._dispatchPrefixAnalysis(invokeNode);
-        } finally {
-          CompletionEngine_this._requestor = proposalRequestor.requestor;
-        }
-        int offset = methodName.offset;
-        int len = node.rightParenthesis.end - offset;
-        for (CompletionProposal proposal in proposalRequestor.proposals) {
-          if (proposal.element == invokeNode.staticElement) {
-            CompletionEngine_this._pArgumentList(proposal, offset, len);
-          }
-        }
-      } else if (node.parent is Annotation) {
-        Annotation annotation = node.parent as Annotation;
-        Element annotationElement = annotation.element;
-        if (annotationElement is ConstructorElement) {
-          ConstructorElement constructorElement = annotationElement;
-          // we don't need any filter
-          CompletionEngine_this._filter = new Filter.con2("", -1, 0);
-          // fill parameters for "pArgumentList"
-          CompletionProposal prop = CompletionEngine_this._createProposal(constructorElement);
-          CompletionEngine_this._setParameterInfo(constructorElement.type, prop);
-          prop.setCompletion(constructorElement.enclosingElement.name);
-          // propose the whole parameters list
-          CompletionEngine_this._pArgumentList(prop, 0, 0);
-        }
-      }
-    }
-    if (CompletionEngine_this._isCompletionBetween(node.leftParenthesis.end, node.rightParenthesis.offset)) {
-      Ident ident = CompletionEngine_this._createIdent(node);
-      CompletionEngine_this._analyzeLocalName(ident);
-      CompletionEngine_this._analyzePositionalArgument(node, ident);
-      CompletionEngine_this._analyzeNamedParameter(node, ident);
-    }
-    return null;
-  }
-
-  @override
-  Object visitAsExpression(AsExpression node) {
-    if (CompletionEngine_this._isCompletionAfter(node.asOperator.end)) {
-      CompletionEngine_this._state._isDynamicAllowed = false;
-      CompletionEngine_this._state._isVoidAllowed = false;
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitAssertStatement(AssertStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitBlock(Block node) {
-    if (CompletionEngine_this._isCompletionBetween(node.leftBracket.end, node.rightBracket.offset)) {
-      // { {! stmt; !} }
-      CompletionEngine_this._analyzeLocalName(CompletionEngine_this._createIdent(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitBooleanLiteral(BooleanLiteral node) {
-    CompletionEngine_this._analyzeLiteralReference(node);
-    return null;
-  }
-
-  @override
-  Object visitBreakStatement(BreakStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitCatchClause(CatchClause node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.onKeyword)) {
-      CompletionEngine_this._pKeyword(node.onKeyword);
-    } else if (CompletionEngine_this._isCompletingKeyword(node.catchKeyword)) {
-      CompletionEngine_this._pKeyword(node.catchKeyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitClassDeclaration(ClassDeclaration node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.classKeyword)) {
-      CompletionEngine_this._pKeyword(node.classKeyword);
-    } else if (CompletionEngine_this._isCompletingKeyword(node.abstractKeyword)) {
-      CompletionEngine_this._pKeyword(node.abstractKeyword);
-    } else if (!node.leftBracket.isSynthetic) {
-      if (CompletionEngine_this._isCompletionAfter(node.leftBracket.end)) {
-        if (node.rightBracket.isSynthetic || CompletionEngine_this._isCompletionBefore(node.rightBracket.offset)) {
-          if (!CompletionEngine_this.hasErrorBeforeCompletionLocation) {
-            CompletionEngine_this._analyzeLocalName(CompletionEngine_this._createIdent(node));
-          }
-        }
-      }
-    }
-    // TODO { abstract ! class ! A ! extends B implements C, D ! {}}
-    return null;
-  }
-
-  @override
-  Object visitClassTypeAlias(ClassTypeAlias node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    // TODO { typedef ! A ! = ! B ! with C, D !; }
-    return null;
-  }
-
-  @override
-  Object visitCombinator(Combinator node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitCompilationUnit(CompilationUnit node) => null;
-
-  @override
-  Object visitConstructorName(ConstructorName node) {
-    // { new A.!c(); }
-    TypeName typeName = node.type;
-    if (typeName != null) {
-      DartType type = typeName.type;
-      Element typeElement = type.element;
-      if (typeElement is ClassElement) {
-        ClassElement classElement = typeElement;
-        CompletionEngine_this._constructorReference(classElement, node.name);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitContinueStatement(ContinueStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitDirective(Directive node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitDoStatement(DoStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.doKeyword)) {
-      CompletionEngine_this._pKeyword(node.doKeyword);
-    } else if (CompletionEngine_this._isCompletingKeyword(node.whileKeyword)) {
-      CompletionEngine_this._pKeyword(node.whileKeyword);
-    } else if (CompletionEngine_this._isCompletionBetween(node.condition.end, node.rightParenthesis.offset)) {
-      CompletionEngine_this._operatorAccess(node.condition, CompletionEngine_this._createIdent(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitDoubleLiteral(DoubleLiteral node) => null;
-
-  @override
-  Object visitExportDirective(ExportDirective node) {
-    visitNamespaceDirective(node);
-    return null;
-  }
-
-  @override
-  Object visitExpression(Expression node) {
-    CompletionEngine_this._analyzeLocalName(CompletionEngine_this._createIdent(node));
-    return null;
-  }
-
-  @override
-  Object visitExpressionFunctionBody(ExpressionFunctionBody node) {
-    if (node.expression != null && node.semicolon != null) {
-      if (CompletionEngine_this._isCompletionBetween(node.expression.end, node.semicolon.offset)) {
-        CompletionEngine_this._operatorAccess(node.expression, CompletionEngine_this._createIdent(node));
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitExpressionStatement(ExpressionStatement node) {
-    CompletionEngine_this._analyzeLocalName(CompletionEngine_this._createIdent(node));
-    return null;
-  }
-
-  @override
-  Object visitExtendsClause(ExtendsClause node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    } else if (node.superclass == null) {
-      // { X extends ! }
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), CompletionEngine_this._typeDeclarationName(node));
-    } else {
-      // { X extends ! Y }
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), CompletionEngine_this._typeDeclarationName(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitForEachStatement(ForEachStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.forKeyword)) {
-      CompletionEngine_this._pKeyword(node.forKeyword);
-    } else if (CompletionEngine_this._isCompletingKeyword(node.inKeyword)) {
-      CompletionEngine_this._pKeyword(node.inKeyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitFormalParameterList(FormalParameterList node) {
-    if (CompletionEngine_this._isCompletionBetween(node.leftParenthesis.end, node.rightParenthesis.offset)) {
-      NodeList<FormalParameter> params = node.parameters;
-      if (!params.isEmpty) {
-        FormalParameter last = params[params.length - 1];
-        if (CompletionEngine_this._isCompletionBetween(last.end, node.rightParenthesis.offset)) {
-          List<FormalParameter> newParams = CompletionEngine_this._copyWithout(params, last);
-          CompletionEngine_this._analyzeNewParameterName(newParams, last.identifier, null);
-        } else {
-          Ident ident = CompletionEngine_this._createIdent(node);
-          CompletionEngine_this._analyzeTypeName(ident, ident);
-        }
-      } else {
-        Ident ident = CompletionEngine_this._createIdent(node);
-        CompletionEngine_this._analyzeTypeName(ident, ident);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitForStatement(ForStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.forKeyword)) {
-      CompletionEngine_this._pKeyword(node.forKeyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitFunctionTypeAlias(FunctionTypeAlias node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitIfStatement(IfStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.ifKeyword)) {
-      CompletionEngine_this._pKeyword(node.ifKeyword);
-    } else if (CompletionEngine_this._isCompletingKeyword(node.elseKeyword)) {
-      CompletionEngine_this._pKeyword(node.elseKeyword);
-    } else if (CompletionEngine_this._isCompletionBetween(node.condition.end, node.rightParenthesis.offset)) {
-      CompletionEngine_this._operatorAccess(node.condition, CompletionEngine_this._createIdent(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitImplementsClause(ImplementsClause node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    } else if (node.interfaces.isEmpty) {
-      // { X implements ! }
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), CompletionEngine_this._typeDeclarationName(node));
-    } else {
-      // { X implements ! Y }
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), CompletionEngine_this._typeDeclarationName(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitImportDirective(ImportDirective node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.asToken)) {
-      CompletionEngine_this._pKeyword(node.asToken);
-    } else {
-      visitNamespaceDirective(node);
-    }
-    return null;
-  }
-
-  @override
-  Object visitInstanceCreationExpression(InstanceCreationExpression node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-      Ident ident = new Ident.con3(node, node.keyword);
-      CompletionEngine_this._analyzeLocalName(ident);
-    } else {
-      Ident ident = CompletionEngine_this._createIdent(node);
-      CompletionEngine_this._analyzeConstructorTypeName(ident);
-    }
-    return null;
-  }
-
-  @override
-  Object visitIsExpression(IsExpression node) {
-    Ident ident;
-    Token isToken = node.isOperator;
-    int isTokenEnd = isToken.end;
-    if (isTokenEnd == CompletionEngine_this._completionLocation()) {
-      Expression expression = node.expression;
-      int offset = isToken.offset;
-      // { target.is! } possible name completion, parsed as "target.{synthetic} is!"
-      if (expression is PrefixedIdentifier) {
-        PrefixedIdentifier prefIdent = expression;
-        if (prefIdent.identifier.isSynthetic) {
-          CompletionEngine_this._analyzePrefixedAccess(prefIdent.prefix, new Ident.con2(node, "is", offset));
-        } else {
-          CompletionEngine_this._pKeyword(isToken);
-        }
-        return null;
-      }
-      // { expr is! }
-      if (!CompletionEngine._isSyntheticIdentifier(expression)) {
-        CompletionEngine_this._pKeyword(node.isOperator);
-        return null;
-      }
-      // { is! } possible name completion
-      ident = new Ident.con2(node, "is", offset);
-    } else if (CompletionEngine_this._isCompletionAfter(isTokenEnd)) {
-      CompletionEngine_this._state._isDynamicAllowed = false;
-      CompletionEngine_this._state._isVoidAllowed = false;
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), null);
-      return null;
-    } else {
-      ident = CompletionEngine_this._createIdent(node);
-    }
-    CompletionEngine_this._analyzeLocalName(ident);
-    return null;
-  }
-
-  @override
-  Object visitLibraryIdentifier(LibraryIdentifier node) => null;
-
-  @override
-  Object visitMethodInvocation(MethodInvocation node) {
-    Token period = node.period;
-    if (period != null && CompletionEngine_this._isCompletionAfter(period.end)) {
-      // { x.!y() }
-      CompletionEngine_this._dispatchPrefixAnalysis2(node);
-    }
-    return null;
-  }
-
-  @override
-  Object visitNamespaceDirective(NamespaceDirective node) {
-    StringLiteral uri = node.uri;
-    if (uri != null && uri.isSynthetic && node.keyword.end <= CompletionEngine_this._context.selectionOffset) {
-      uri.accept(this);
-    }
-    return super.visitNamespaceDirective(node);
-  }
-
-  @override
-  Object visitPartOfDirective(PartOfDirective node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.ofToken)) {
-      CompletionEngine_this._pKeyword(node.ofToken);
-    } else {
-      visitDirective(node);
-    }
-    return null;
-  }
-
-  @override
-  Object visitPrefixedIdentifier(PrefixedIdentifier node) {
-    if (CompletionEngine_this._isCompletionAfter(node.period.end)) {
-      if (CompletionEngine_this._isCompletionBefore(node.identifier.offset)) {
-        // { x.! } or { x.!  y } Note missing/implied semicolon before y; this looks like an
-        // obscure case but it occurs frequently when editing existing code.
-        CompletionEngine_this._dispatchPrefixAnalysis3(node, node.identifier);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitPropertyAccess(PropertyAccess node) {
-    if (node.target != null && node.target.length == 0) {
-      return null;
-    }
-    Expression target = node.realTarget;
-    // The "1 + str.!.length" is parsed as "(1 + str).!.length",
-    // but actually user wants "1 + (str.!).length".
-    // So, if completion inside of period-period ".!." then it is not really a cascade completion.
-    Token operator = node.operator;
-    if (operator.type == TokenType.PERIOD_PERIOD) {
-      int completionLocation = CompletionEngine_this._completionLocation();
-      if (completionLocation > operator.offset && completionLocation < operator.end) {
-        while (target is BinaryExpression) {
-          target = (target as BinaryExpression).rightOperand;
-        }
-      }
-    }
-    // do prefixed completion
-    CompletionEngine_this._analyzePrefixedAccess(target, node.propertyName);
-    return null;
-  }
-
-  @override
-  Object visitReturnStatement(ReturnStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-      return null;
-    }
-    Expression expression = node.expression;
-    // return !
-    if (expression is SimpleIdentifier) {
-      SimpleIdentifier identifier = expression;
-      CompletionEngine_this._analyzeLocalName(identifier);
-      return null;
-    }
-    // return expression ! ;
-    Token semicolon = node.semicolon;
-    if (expression != null && semicolon != null && CompletionEngine_this._isCompletionBetween(expression.end, semicolon.offset)) {
-      CompletionEngine_this._operatorAccess(expression, CompletionEngine_this._createIdent(node));
-      return null;
-    }
-    return null;
-  }
-
-  @override
-  Object visitSimpleFormalParameter(SimpleFormalParameter node) {
-    if (node.keyword != null && CompletionEngine_this._isCompletionBefore(node.keyword.end)) {
-      // f() { g(var! z) }
-      Token token = node.keyword;
-      Ident ident = new Ident.con3(node, token);
-      CompletionEngine_this._analyzeTypeName(ident, ident);
-    }
-    return null;
-  }
-
-  @override
-  Object visitSimpleIdentifier(SimpleIdentifier node) {
-    AstNode parent = node.parent;
-    if (parent != null) {
-      CompletionEngine_IdentifierCompleter visitor = new CompletionEngine_IdentifierCompleter(CompletionEngine_this, node);
-      return parent.accept(visitor);
-    }
-    return null;
-  }
-
-  @override
-  Object visitSimpleStringLiteral(SimpleStringLiteral node) {
-    AstNode parent = node.parent;
-    if (parent is Directive) {
-      CompletionEngine_StringCompleter visitor = new CompletionEngine_StringCompleter(CompletionEngine_this, node);
-      return parent.accept(visitor);
-    }
-    return null;
-  }
-
-  @override
-  Object visitSuperConstructorInvocation(SuperConstructorInvocation node) {
-    CompletionEngine_this._analyzeSuperConstructorInvocation(node);
-    return null;
-  }
-
-  @override
-  Object visitSwitchMember(SwitchMember node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitSwitchStatement(SwitchStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitTryStatement(TryStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.tryKeyword)) {
-      CompletionEngine_this._pKeyword(node.tryKeyword);
-    }
-    return null;
-  }
-
-  @override
-  Object visitTypeArgumentList(TypeArgumentList node) {
-    if (CompletionEngine_this._isCompletionBetween(node.leftBracket.end, node.rightBracket.offset)) {
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitTypeParameter(TypeParameter node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    } else if (node.name.name.isEmpty && CompletionEngine_this._isCompletionBefore(node.keyword.offset)) {
-      // { < ! extends X> }
-      CompletionEngine_this._analyzeTypeName(node.name, CompletionEngine_this._typeDeclarationName(node));
-    }
-    // { <! X ! extends ! Y !> }
-    return null;
-  }
-
-  @override
-  Object visitTypeParameterList(TypeParameterList node) {
-    // { <X extends A,! B,! > }
-    if (CompletionEngine_this._isCompletionBetween(node.leftBracket.end, node.rightBracket.offset)) {
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), CompletionEngine_this._typeDeclarationName(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitVariableDeclaration(VariableDeclaration node) {
-    if (CompletionEngine_this._isCompletionAfter(node.equals.end)) {
-      // { var x =! ...}
-      CompletionEngine_this._analyzeLocalName(CompletionEngine_this._createIdent(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitVariableDeclarationList(VariableDeclarationList node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-      CompletionEngine_this._analyzeTypeName(new Ident.con3(node, node.keyword), null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitWhileStatement(WhileStatement node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.keyword)) {
-      CompletionEngine_this._pKeyword(node.keyword);
-    } else if (CompletionEngine_this._isCompletionBetween(node.condition.end, node.rightParenthesis.offset)) {
-      CompletionEngine_this._operatorAccess(node.condition, CompletionEngine_this._createIdent(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitWithClause(WithClause node) {
-    if (CompletionEngine_this._isCompletingKeyword(node.withKeyword)) {
-      CompletionEngine_this._pKeyword(node.withKeyword);
-    } else if (node.mixinTypes.isEmpty) {
-      // { X with ! }
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), CompletionEngine_this._typeDeclarationName(node));
-    } else {
-      // { X with ! Y }
-      CompletionEngine_this._analyzeTypeName(CompletionEngine_this._createIdent(node), CompletionEngine_this._typeDeclarationName(node));
-    }
-    return null;
-  }
-}
-
-/**
- * A TypeNameCompleter is used to classify the parent of a SimpleIdentifier after it has been
- * identified as a TypeName by the IdentifierCompleter.
- */
-class CompletionEngine_TypeNameCompleter extends CompletionEngine_AstNodeClassifier {
-  final CompletionEngine CompletionEngine_this;
-
-  final SimpleIdentifier _identifier;
-
-  final TypeName _typeName;
-
-  CompletionEngine_TypeNameCompleter(this.CompletionEngine_this, this._identifier, this._typeName);
-
-  @override
-  Object visitAsExpression(AsExpression node) {
-    if (identical(node.type, _typeName)) {
-      CompletionEngine_this._state._isDynamicAllowed = false;
-      CompletionEngine_this._state._isVoidAllowed = false;
-      CompletionEngine_this._analyzeTypeName(_identifier, null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitCatchClause(CatchClause node) {
-    if (identical(node.exceptionType, _typeName)) {
-      CompletionEngine_this._analyzeTypeName(_identifier, null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitClassTypeAlias(ClassTypeAlias node) {
-    CompletionEngine_this._analyzeTypeName(_identifier, CompletionEngine_this._typeDeclarationName(node));
-    return null;
-  }
-
-  @override
-  Object visitConstructorName(ConstructorName node) {
-    if (identical(_typeName, node.type)) {
-      if (node.period != null) {
-        if (CompletionEngine_this._isCompletionAfter(node.period.end)) {
-          // Is this branch reachable? Probably only in IdentifierCompleter.
-          "".toString();
-        } else {
-          // { new Cla!ss.cons() }
-          Element element = _identifier.bestElement;
-          if (element is ClassElement) {
-            CompletionEngine_this._namedConstructorReference(element, _identifier);
-          }
-        }
-      } else {
-        // { new ! } { new Na!me(); } { new js!on. }
-        CompletionEngine_this._analyzeConstructorTypeName(_identifier);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitExtendsClause(ExtendsClause node) {
-    CompletionEngine_this._analyzeTypeName(_identifier, CompletionEngine_this._typeDeclarationName(node));
-    return null;
-  }
-
-  @override
-  Object visitFunctionTypeAlias(FunctionTypeAlias node) {
-    CompletionEngine_this._analyzeTypeName(_identifier, CompletionEngine_this._typeDeclarationName(node));
-    return null;
-  }
-
-  @override
-  Object visitImplementsClause(ImplementsClause node) {
-    CompletionEngine_this._analyzeTypeName(_identifier, CompletionEngine_this._typeDeclarationName(node));
-    return null;
-  }
-
-  @override
-  Object visitIsExpression(IsExpression node) {
-    if (identical(_typeName, node.type)) {
-      Token isToken = node.isOperator;
-      if (CompletionEngine_this._completionLocation() == isToken.end) {
-        Expression expression = node.expression;
-        int offset = isToken.offset;
-        // { target.is! } possible name completion, parsed as "target.{synthetic} is!"
-        if (expression is PrefixedIdentifier) {
-          PrefixedIdentifier prefIdent = expression;
-          if (prefIdent.identifier.isSynthetic) {
-            CompletionEngine_this._analyzePrefixedAccess(prefIdent.prefix, new Ident.con2(node, "is", offset));
-          } else {
-            CompletionEngine_this._pKeyword(node.isOperator);
-          }
-          return null;
-        }
-        // { expr is! }
-        if (!CompletionEngine._isSyntheticIdentifier(expression)) {
-          CompletionEngine_this._pKeyword(node.isOperator);
-          return null;
-        }
-        // { is! } possible name completion
-        CompletionEngine_this._analyzeLocalName(new Ident.con2(node, "is", offset));
-      } else {
-        CompletionEngine_this._analyzeTypeName(node.type.name as SimpleIdentifier, null);
-      }
-    }
-    return null;
-  }
-
-  @override
-  Object visitMethodDeclaration(MethodDeclaration node) {
-    if (identical(node.returnType, _typeName)) {
-      CompletionEngine_this._analyzeTypeName(_identifier, null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitSimpleFormalParameter(SimpleFormalParameter node) {
-    CompletionEngine_this._analyzeTypeName(_identifier, null);
-    return null;
-  }
-
-  @override
-  Object visitTypeArgumentList(TypeArgumentList node) {
-    if (CompletionEngine_this._isCompletionBetween(node.leftBracket.end, node.rightBracket.offset)) {
-      CompletionEngine_this._analyzeTypeName(_identifier, null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitTypeParameter(TypeParameter node) {
-    if (identical(node.bound, _typeName)) {
-      // { X<A extends !Y> }
-      CompletionEngine_this._analyzeTypeName(_identifier, CompletionEngine_this._typeDeclarationName(node));
-    }
-    return null;
-  }
-
-  @override
-  Object visitVariableDeclarationList(VariableDeclarationList node) {
-    if (node.parent is Statement) {
-      CompletionEngine_this._analyzeLocalName(_identifier);
-    } else {
-      CompletionEngine_this._analyzeTypeName(_identifier, null);
-    }
-    return null;
-  }
-
-  @override
-  Object visitWithClause(WithClause node) {
-    CompletionEngine_this._analyzeTypeName(_identifier, CompletionEngine_this._typeDeclarationName(node));
-    return null;
-  }
-}
-
-/**
- * The factory class used to create completion proposals.
- */
-class CompletionFactory {
-  /**
-   * Create a completion proposal of the given kind.
-   */
-  CompletionProposal createCompletionProposal(CompletionSuggestionKind kind, int insertionPoint) {
-    CompletionProposalImpl prop = new CompletionProposalImpl();
-    prop.setKind(kind);
-    prop.setLocation(insertionPoint);
-    return prop;
-  }
-}
-
-abstract class CompletionProposal {
-  static final int RELEVANCE_LOW = 0;
-
-  static final int RELEVANCE_DEFAULT = 10;
-
-  static final int RELEVANCE_HIGH = 20;
-
-  /**
-   * This character is used to specify location of the cursor after completion.
-   */
-  static final int CURSOR_MARKER = 0x2758;
-
-  void applyPartitionOffset(int partitionOffset);
-
-  String get completion;
-
-  String get declaringType;
-
-  Element get element;
-
-  CompletionSuggestionKind get kind;
-
-  int get location;
-
-  String get parameterName;
-
-  List<String> get parameterNames;
-
-  String get parameterType;
-
-  List<String> get parameterTypes;
-
-  int get positionalParameterCount;
-
-  int get relevance;
-
-  int get replacementLength;
-
-  int get replacementLengthIdentifier;
-
-  String get returnType;
-
-  bool get hasNamed;
-
-  bool get hasPositional;
-
-  CompletionProposal incRelevance();
-
-  bool get isDeprecated;
-
-  bool get isPotentialMatch;
-
-  CompletionProposal setCompletion(String x);
-
-  CompletionProposal setDeclaringType(String name);
-
-  CompletionProposal setDeprecated(bool deprecated);
-
-  CompletionProposal setElement(Element element);
-
-  CompletionProposal setKind(CompletionSuggestionKind x);
-
-  CompletionProposal setLocation(int x);
-
-  CompletionProposal setParameterName(String paramName);
-
-  CompletionProposal setParameterNames(List<String> paramNames);
-
-  CompletionProposal setParameterStyle(int count, bool named, bool positional);
-
-  CompletionProposal setParameterType(String paramType);
-
-  CompletionProposal setParameterTypes(List<String> paramTypes);
-
-  CompletionProposal setPotentialMatch(bool isPotentialMatch);
-
-  CompletionProposal setRelevance(int n);
-
-  CompletionProposal setReplacementLength(int x);
-
-  CompletionProposal setReplacementLengthIdentifier(int x);
-
-  CompletionProposal setReturnType(String name);
-}
-
-class CompletionProposalImpl implements CompletionProposal {
-  Element _element;
-
-  String _completion = "";
-
-  String _returnType = "";
-
-  String _declaringType = "";
-
-  List<String> _parameterNames = StringUtilities.EMPTY_ARRAY;
-
-  List<String> _parameterTypes = StringUtilities.EMPTY_ARRAY;
-
-  String _parameterName;
-
-  String _parameterType;
-
-  CompletionSuggestionKind _kind = null;
-
-  int _location = 0;
-
-  int _replacementLength = 0;
-
-  int _replacementLength2 = 0;
-
-  int _positionalParameterCount = 0;
-
-  bool _named = false;
-
-  bool _positional = false;
-
-  bool _deprecated = false;
-
-  bool _potential = false;
-
-  int _relevance = CompletionProposal.RELEVANCE_DEFAULT;
-
-  @override
-  void applyPartitionOffset(int partitionOffset) {
-    _location += partitionOffset;
-  }
-
-  @override
-  String get completion => _completion;
-
-  @override
-  String get declaringType => _declaringType;
-
-  @override
-  Element get element => _element;
-
-  @override
-  CompletionSuggestionKind get kind => _kind;
-
-  @override
-  int get location => _location;
-
-  @override
-  String get parameterName => _parameterName;
-
-  @override
-  List<String> get parameterNames => _parameterNames;
-
-  @override
-  String get parameterType => _parameterType;
-
-  @override
-  List<String> get parameterTypes => _parameterTypes;
-
-  @override
-  int get positionalParameterCount => _positionalParameterCount;
-
-  @override
-  int get relevance => _relevance;
-
-  @override
-  int get replacementLength => _replacementLength;
-
-  @override
-  int get replacementLengthIdentifier => _replacementLength2;
-
-  @override
-  String get returnType => _returnType;
-
-  @override
-  bool get hasNamed => _named;
-
-  @override
-  bool get hasPositional => _positional;
-
-  @override
-  CompletionProposal incRelevance() {
-    _relevance++;
-    return this;
-  }
-
-  @override
-  bool get isDeprecated => _deprecated;
-
-  @override
-  bool get isPotentialMatch => _potential;
-
-  @override
-  CompletionProposal setCompletion(String x) {
-    _completion = x;
-    if (_replacementLength == 0) {
-      setReplacementLength(x.length);
-    }
-    return this;
-  }
-
-  @override
-  CompletionProposal setDeclaringType(String name) {
-    _declaringType = name;
-    return this;
-  }
-
-  @override
-  CompletionProposal setDeprecated(bool deprecated) {
-    this._deprecated = deprecated;
-    return this;
-  }
-
-  @override
-  CompletionProposal setElement(Element element) {
-    this._element = element;
-    return this;
-  }
-
-  @override
-  CompletionProposal setKind(CompletionSuggestionKind x) {
-    _kind = x;
-    return this;
-  }
-
-  @override
-  CompletionProposal setLocation(int x) {
-    _location = x;
-    return this;
-  }
-
-  @override
-  CompletionProposal setParameterName(String parameterName) {
-    this._parameterName = parameterName;
-    return this;
-  }
-
-  @override
-  CompletionProposal setParameterNames(List<String> paramNames) {
-    _parameterNames = paramNames;
-    return this;
-  }
-
-  @override
-  CompletionProposal setParameterStyle(int count, bool named, bool positional) {
-    this._named = named;
-    this._positional = positional;
-    this._positionalParameterCount = count;
-    return this;
-  }
-
-  @override
-  CompletionProposal setParameterType(String parameterType) {
-    this._parameterType = parameterType;
-    return this;
-  }
-
-  @override
-  CompletionProposal setParameterTypes(List<String> paramTypes) {
-    _parameterTypes = paramTypes;
-    return this;
-  }
-
-  @override
-  CompletionProposal setPotentialMatch(bool isPotentialMatch) {
-    _potential = isPotentialMatch;
-    return this;
-  }
-
-  @override
-  CompletionProposal setRelevance(int n) {
-    _relevance = n;
-    return this;
-  }
-
-  @override
-  CompletionProposal setReplacementLength(int x) {
-    _replacementLength = x;
-    return this;
-  }
-
-  @override
-  CompletionProposal setReplacementLengthIdentifier(int x) {
-    _replacementLength2 = x;
-    return this;
-  }
-
-  @override
-  CompletionProposal setReturnType(String name) {
-    _returnType = name;
-    return this;
-  }
-}
-
-/**
- * A pathway for reporting completion proposals back to the client.
- */
-abstract class CompletionRequestor {
-  /**
-   * Record the given completion proposal for eventual presentation to the user.
-   */
-  accept(CompletionProposal proposal);
-
-  void beginReporting();
-
-  void endReporting();
-}
-
-/**
- */
-class CompletionState {
-  bool _isForMixin = false;
-
-  bool _isVoidAllowed = false;
-
-  bool _isDynamicAllowed = false;
-
-  bool _isSourceDeclarationStatic = false;
-
-  bool _isThisAllowed = true;
-
-  bool _isVarAllowed = false;
-
-  bool _areLiteralsAllowed = false;
-
-  bool _areLiteralsProhibited = false;
-
-  bool _areOperatorsAllowed = false;
-
-  bool _areStaticReferencesProhibited = false;
-
-  bool _areInstanceReferencesProhibited = false;
-
-  bool _areUndefinedTypesProhibited = false;
-
-  bool _isCompileTimeConstantRequired = false;
-
-  bool _isOptionalArgumentRequired = false;
-
-  bool _areMethodsProhibited = false;
-
-  bool _areClassesRequired = false;
-
-  ParameterElement _targetParameter;
-
-  void mustBeInstantiableType() {
-    _areClassesRequired = true;
-    _prohibitsLiterals();
-  }
-
-  void _includesLiterals() {
-    if (!_areLiteralsProhibited) {
-      _areLiteralsAllowed = true;
-    }
-  }
-
-  void _includesOperators() {
-    _areOperatorsAllowed = true;
-  }
-
-  void _includesUndefinedDeclarationTypes() {
-    if (!_areUndefinedTypesProhibited) {
-      _isVoidAllowed = true;
-      _isDynamicAllowed = true;
-    }
-  }
-
-  void _includesUndefinedTypes() {
-    _isVarAllowed = true;
-    _isDynamicAllowed = true;
-  }
-
-  void _mustBeMixin() {
-    _isForMixin = true;
-  }
-
-  void _prohibitsInstanceReferences() {
-    _areInstanceReferencesProhibited = true;
-  }
-
-  void _prohibitsLiterals() {
-    _areLiteralsAllowed = false;
-    _areLiteralsProhibited = true;
-  }
-
-  void _prohibitsStaticReferences() {
-    _areStaticReferencesProhibited = true;
-  }
-
-  void _prohibitThis() {
-    _isThisAllowed = false;
-  }
-
-  void _prohibitsUndefinedTypes() {
-    _areUndefinedTypesProhibited = true;
-  }
-
-  void _requiresConst(bool isConst) {
-    _isCompileTimeConstantRequired = isConst;
-  }
-
-  void _requiresOperators() {
-    _includesOperators();
-    _areMethodsProhibited = true;
-  }
-
-  void _requiresOptionalArgument() {
-    _isOptionalArgumentRequired = true;
-    _prohibitsLiterals();
-  }
-
-  void set context(AstNode base) {
-    base.accept(new ContextAnalyzer(this, base));
-  }
-
-  void _sourceDeclarationIsStatic(bool state) {
-    _isSourceDeclarationStatic = state;
-    if (state) {
-      if (!_areStaticReferencesProhibited) {
-        _prohibitsInstanceReferences();
-      }
-    }
-  }
-}
-
-/**
- */
-class ContextAnalyzer extends GeneralizingAstVisitor<Object> {
-  final CompletionState _state;
-
-  final AstNode _completionNode;
-
-  AstNode _child;
-
-  bool _inExpression = false;
-
-  bool _inIdentifier = false;
-
-  bool _inTypeName = false;
-
-  bool _maybeInvocationArgument = true;
-
-  ContextAnalyzer(this._state, this._completionNode);
-
-  @override
-  Object visitAnnotation(Annotation node) {
-    _state._requiresConst(true);
-    return super.visitAnnotation(node);
-  }
-
-  @override
-  Object visitCatchClause(CatchClause node) {
-    if (identical(node.exceptionType, _child)) {
-      _state._prohibitsLiterals();
-    }
-    return null;
-  }
-
-  @override
-  Object visitCompilationUnitMember(CompilationUnitMember node) {
-    if (node is! ClassDeclaration) {
-      _state._prohibitThis();
-    }
-    return super.visitCompilationUnitMember(node);
-  }
-
-  @override
-  Object visitConstructorInitializer(ConstructorInitializer node) {
-    _state._prohibitThis();
-    return super.visitConstructorInitializer(node);
-  }
-
-  @override
-  Object visitDirective(Directive node) {
-    _state._prohibitsLiterals();
-    return super.visitDirective(node);
-  }
-
-  @override
-  Object visitDoStatement(DoStatement node) {
-    if (identical(_child, node.condition)) {
-      _state._includesLiterals();
-    }
-    return super.visitDoStatement(node);
-  }
-
-  @override
-  Object visitExpression(Expression node) {
-    _inExpression = true;
-    _state._includesLiterals();
-    _mayBeSetParameterElement(node);
-    return super.visitExpression(node);
-  }
-
-  @override
-  Object visitFieldDeclaration(FieldDeclaration node) {
-    _state._prohibitThis();
-    return super.visitFieldDeclaration(node);
-  }
-
-  @override
-  Object visitForEachStatement(ForEachStatement node) {
-    if (identical(_child, node.iterator)) {
-      _state._includesLiterals();
-    }
-    return super.visitForEachStatement(node);
-  }
-
-  @override
-  Object visitFunctionExpression(FunctionExpression node) {
-    if (node.parent is Declaration) {
-      // Function expressions that are part of a declaration are not to be treated as expressions.
-      return visitNode(node);
-    } else {
-      return visitExpression(node);
-    }
-  }
-
-  @override
-  Object visitFunctionTypeAlias(FunctionTypeAlias node) {
-    if (_inTypeName || node.returnType == null) {
-      // This may be an incomplete class type alias
-      _state._includesUndefinedDeclarationTypes();
-    }
-    return super.visitFunctionTypeAlias(node);
-  }
-
-  @override
-  Object visitIdentifier(Identifier node) {
-    _mayBeSetParameterElement(node);
-    // Identifiers cannot safely be generalized to expressions, so just walk up one level.
-    // LibraryIdentifier is never an expression. PrefixedIdentifier may be an expression, but
-    // not in a catch-clause or a declaration. SimpleIdentifier may be an expression, but not
-    // in a constructor name, label, or where PrefixedIdentifier is not.
-    return visitNode(node);
-  }
-
-  @override
-  Object visitInstanceCreationExpression(InstanceCreationExpression node) {
-    _state._requiresConst(node.isConst);
-    if (identical(_completionNode.parent.parent, _child)) {
-      _state.mustBeInstantiableType();
-    }
-    return super.visitInstanceCreationExpression(node);
-  }
-
-  @override
-  Object visitMethodDeclaration(MethodDeclaration node) {
-    _state._sourceDeclarationIsStatic(node.isStatic);
-    if (identical(_child, node.returnType)) {
-      _state._includesUndefinedDeclarationTypes();
-    }
-    if (node.isStatic) {
-      _state._prohibitThis();
-    }
-    return super.visitMethodDeclaration(node);
-  }
-
-  @override
-  Object visitNode(AstNode node) {
-    // Walk UP the tree, not down.
-    AstNode parent = node.parent;
-    _updateIfShouldGetTargetParameter(node, parent);
-    if (parent != null) {
-      _child = node;
-      parent.accept(this);
-    }
-    return null;
-  }
-
-  @override
-  Object visitPrefixedIdentifier(PrefixedIdentifier node) {
-    if (identical(node, _completionNode) || identical(node.identifier, _completionNode)) {
-      SimpleIdentifier prefix = node.prefix;
-      if (_isClassLiteral(prefix)) {
-        _state._prohibitsInstanceReferences();
-      } else {
-        _state._prohibitsStaticReferences();
-      }
-    }
-    return super.visitPrefixedIdentifier(node);
-  }
-
-  @override
-  Object visitPropertyAccess(PropertyAccess node) {
-    if (identical(node, _completionNode) || identical(node.propertyName, _completionNode)) {
-      Expression target = node.realTarget;
-      if (_isClassLiteral(target)) {
-        _state._prohibitsInstanceReferences();
-      } else {
-        _state._prohibitsStaticReferences();
-      }
-    }
-    return super.visitPropertyAccess(node);
-  }
-
-  @override
-  Object visitSimpleFormalParameter(SimpleFormalParameter node) {
-    _state._includesUndefinedTypes();
-    return super.visitSimpleFormalParameter(node);
-  }
-
-  @override
-  Object visitSimpleIdentifier(SimpleIdentifier node) {
-    _inIdentifier = true;
-    return super.visitSimpleIdentifier(node);
-  }
-
-  @override
-  Object visitSwitchStatement(SwitchStatement node) {
-    if (identical(_child, node.expression)) {
-      _state._includesLiterals();
-    }
-    return super.visitSwitchStatement(node);
-  }
-
-  @override
-  Object visitTypeArgumentList(TypeArgumentList node) {
-    _state._prohibitsUndefinedTypes();
-    return super.visitTypeArgumentList(node);
-  }
-
-  @override
-  Object visitTypeName(TypeName node) {
-    _inTypeName = true;
-    return super.visitTypeName(node);
-  }
-
-  @override
-  Object visitVariableDeclaration(VariableDeclaration node) {
-    if (identical(node.name, _completionNode)) {
-      _state._prohibitsLiterals();
-    }
-    return super.visitVariableDeclaration(node);
-  }
-
-  @override
-  Object visitVariableDeclarationList(VariableDeclarationList node) {
-    _state._includesUndefinedDeclarationTypes();
-    return super.visitVariableDeclarationList(node);
-  }
-
-  @override
-  Object visitWhileStatement(WhileStatement node) {
-    if (identical(_child, node.condition)) {
-      _state._includesLiterals();
-    }
-    return super.visitWhileStatement(node);
-  }
-
-  @override
-  Object visitWithClause(WithClause node) {
-    _state._mustBeMixin();
-    return super.visitWithClause(node);
-  }
-
-  bool _isClassLiteral(Expression expression) => expression is Identifier && expression.staticElement is ClassElement;
-
-  void _mayBeSetParameterElement(Expression node) {
-    if (!_maybeInvocationArgument) {
-      return;
-    }
-    if (node.parent is ArgumentList) {
-      if (_state._targetParameter == null) {
-        _state._targetParameter = node.bestParameterElement;
-      }
-    }
-  }
-
-  void _updateIfShouldGetTargetParameter(AstNode node, AstNode parent) {
-    if (!_maybeInvocationArgument) {
-      return;
-    }
-    // prefix.node
-    if (parent is PrefixedIdentifier) {
-      if (identical(parent.identifier, node)) {
-        return;
-      }
-    }
-    // something unknown
-    _maybeInvocationArgument = false;
-  }
-}
-
-class Filter {
-  String _prefix;
-
-  String _originalPrefix;
-
-  RegExp _pattern;
-
-  Filter.con1(SimpleIdentifier ident, int loc) : this.con2(ident.name, ident.offset, loc);
-
-  Filter.con2(String name, int pos, int loc) {
-    int len = loc - pos;
-    if (len > 0) {
-      if (len <= name.length) {
-        _prefix = name.substring(0, len);
-      } else {
-        _prefix = name;
-      }
-    } else {
-      _prefix = "";
-    }
-    _originalPrefix = _prefix;
-    _prefix = _prefix.toLowerCase();
-  }
-
-  /**
-   * @return `true` if the given name starts with the same prefix as used for filter.
-   */
-  bool _isSameCasePrefix(String name) => name.startsWith(_originalPrefix);
-
-  String _makePattern() {
-    // TODO(scheglov) translate it
-    return null;
-  }
-
-  bool _match(Element elem) => _match2(elem.displayName);
-
-  bool _match2(String name) {
-    // Return true if the filter passes.
-    if (name.toLowerCase().startsWith(_prefix)) {
-      return true;
-    }
-    return _matchPattern(name);
-  }
-
-  void _removeNotMatching(List<Element> elements) {
-    for (int i = elements.length - 1; i >= 0; i--) {
-      if (!_match(elements[i])) {
-        elements.removeAt(i);
-      }
-    }
-  }
-
-  bool _matchPattern(String name) {
-    // TODO(scheglov) translate it
-    return false;
-  }
-}
-
-class GeneralizingAstVisitor_CompletionEngine_copyWithout extends GeneralizingAstVisitor<Object> {
-  AstNode deletion;
-
-  List<FormalParameter> newList;
-
-  GeneralizingAstVisitor_CompletionEngine_copyWithout(this.deletion, this.newList) : super();
-
-  @override
-  Object visitNode(AstNode node) {
-    if (!identical(node, deletion)) {
-      newList.add(node as FormalParameter);
-    }
-    return null;
-  }
-}
-
-/**
- * An [Ident] is a wrapper for a String that provides type equivalence with SimpleIdentifier.
- */
-class Ident extends EphemeralIdentifier {
-  String _name;
-
-  Ident.con1(AstNode parent, int offset) : super(parent, offset);
-
-  Ident.con2(AstNode parent, String name, int offset) : super(parent, offset) {
-    this._name = name;
-  }
-
-  Ident.con3(AstNode parent, Token name) : super(parent, name.offset) {
-    this._name = name.lexeme;
-  }
-
-  @override
-  String get name {
-    if (_name != null) {
-      return _name;
-    }
-    String n = super.name;
-    if (n != null) {
-      return n;
-    }
-    return "";
-  }
-}
-
-class ProposalCollector implements CompletionRequestor {
-  final CompletionRequestor requestor;
-
-  List<CompletionProposal> _proposals;
-
-  ProposalCollector(this.requestor) {
-    this._proposals = new List<CompletionProposal>();
-  }
-
-  @override
-  accept(CompletionProposal proposal) {
-    _proposals.add(proposal);
-  }
-
-  @override
-  void beginReporting() {
-    requestor.beginReporting();
-  }
-
-  @override
-  void endReporting() {
-    requestor.endReporting();
-  }
-
-  List<CompletionProposal> get proposals => _proposals;
-}
-
-class SearchFilter_CompletionEngine_allSubtypes implements SearchFilter {
-  ClassElement classElement;
-
-  SearchFilter_CompletionEngine_allSubtypes(this.classElement);
-
-  @override
-  bool passes(SearchMatch match) {
-    Element element = match.element;
-    if (element is ClassElement) {
-      ClassElement clElem = element;
-      while (clElem != null) {
-        InterfaceType ifType = clElem.supertype;
-        if (ifType == null) {
-          return false;
-        }
-        clElem = ifType.element;
-        if (identical(clElem, classElement)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-}
-
-class TopLevelNamesKind extends Enum<TopLevelNamesKind> {
-  static const TopLevelNamesKind DECLARED_AND_IMPORTS = const TopLevelNamesKind('DECLARED_AND_IMPORTS', 0);
-
-  static const TopLevelNamesKind DECLARED_AND_EXPORTS = const TopLevelNamesKind('DECLARED_AND_EXPORTS', 1);
-
-  static const List<TopLevelNamesKind> values = const [DECLARED_AND_IMPORTS, DECLARED_AND_EXPORTS];
-
-  const TopLevelNamesKind(String name, int ordinal) : super(name, ordinal);
-}
\ No newline at end of file
diff --git a/pkg/analysis_server/lib/src/services/generated/stubs.dart b/pkg/analysis_server/lib/src/services/generated/stubs.dart
deleted file mode 100644
index 8d0982c..0000000
--- a/pkg/analysis_server/lib/src/services/generated/stubs.dart
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// This code was auto-generated, is not intended to be edited, and is subject to
-// significant change. Please see the README file for more information.
-
-library service.correction.stubs;
-
-import 'package:analyzer/src/generated/ast.dart' show AstNode;
-import 'package:analyzer/src/generated/element.dart';
-import 'package:analyzer/src/generated/scanner.dart';
-import 'package:analyzer/src/generated/source.dart';
-
-abstract class SearchFilter {
-  bool passes(SearchMatch match);
-}
-
-class SearchMatch {
-  final Element element = null;
-  final SourceRange sourceRange = null;
-}
-
-class SearchEngine {}
-
-class SourceRangeFactory {
-  static SourceRange rangeElementName(Element element) {
-    return new SourceRange(element.nameOffset, element.name.length);
-  }
-
-  static SourceRange rangeEndEnd(a, b) {
-    int offset = a.end;
-    var length = b.end - offset;
-    return new SourceRange(offset, length);
-  }
-
-  static SourceRange rangeEndLength(a, int length) {
-    return new SourceRange(a.nameOffset, length);
-  }
-
-  static SourceRange rangeEndStart(a, b) {
-    int offset = a.end;
-    var length = b.offset - offset;
-    return new SourceRange(offset, length);
-  }
-
-  static SourceRange rangeNode(AstNode node) {
-    return new SourceRange(node.offset, node.length);
-  }
-
-  static SourceRange rangeNodes(List<AstNode> nodes) {
-    if (nodes.isEmpty) {
-      return new SourceRange(0, 0);
-    }
-    AstNode first = nodes.first;
-    AstNode last = nodes.last;
-    return rangeStartEnd(first, last);
-  }
-
-  static SourceRange rangeStartEnd(a, b) {
-    int offset = a.offset;
-    var length = b.end - offset;
-    return new SourceRange(offset, length);
-  }
-
-  static SourceRange rangeStartLength(a, int length) {
-    int offset = a.offset;
-    return new SourceRange(offset, length);
-  }
-
-  static SourceRange rangeStartStart(a, b) {
-    int offset = a.offset;
-    var length = b.offset - offset;
-    return new SourceRange(offset, length);
-  }
-
-  static SourceRange rangeToken(Token node) {
-    return new SourceRange(node.offset, node.length);
-  }
-}
-
-class StringUtils {
-  static String capitalize(String str) {
-    if (isEmpty(str)) {
-      return str;
-    }
-    return str.substring(0, 1).toUpperCase() + str.substring(1);
-  }
-
-  static bool equals(String cs1, String cs2) {
-    if (cs1 == cs2) {
-      return true;
-    }
-    if (cs1 == null || cs2 == null) {
-      return false;
-    }
-    return cs1 == cs2;
-  }
-
-  static bool isEmpty(String str) {
-    return str == null || str.isEmpty;
-  }
-
-  static String join(Iterable iter,
-      [String separator = ' ', int start = 0, int end = -1]) {
-    if (start != 0) {
-      iter = iter.skip(start);
-    }
-    if (end != -1) {
-      iter = iter.take(end - start);
-    }
-    return iter.join(separator);
-  }
-
-  static String remove(String str, String remove) {
-    if (isEmpty(str) || isEmpty(remove)) {
-      return str;
-    }
-    return str.replaceAll(remove, '');
-  }
-
-  static String removeStart(String str, String remove) {
-    if (isEmpty(str) || isEmpty(remove)) {
-      return str;
-    }
-    if (str.startsWith(remove)) {
-      return str.substring(remove.length);
-    }
-    return str;
-  }
-
-  static String repeat(String s, int n) {
-    StringBuffer sb = new StringBuffer();
-    for (int i = 0; i < n; i++) {
-      sb.write(s);
-    }
-    return sb.toString();
-  }
-
-  static List<String> split(String s, [String pattern = '']) {
-    return s.split(pattern);
-  }
-
-  static List<String> splitByWholeSeparatorPreserveAllTokens(
-      String s, String pattern) {
-    return s.split(pattern);
-  }
-}
diff --git a/pkg/analysis_server/lib/src/services/generated/util.dart b/pkg/analysis_server/lib/src/services/generated/util.dart
deleted file mode 100644
index 31a15c3..0000000
--- a/pkg/analysis_server/lib/src/services/generated/util.dart
+++ /dev/null
@@ -1,1833 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// This code was auto-generated, is not intended to be edited, and is subject to
-// significant change. Please see the README file for more information.
-
-library services.util;
-
-import 'dart:collection';
-import "dart:math" as math;
-
-import 'package:analyzer/src/generated/java_core.dart' hide StringUtils;
-import 'package:analyzer/src/generated/ast.dart';
-import 'package:analyzer/src/generated/element.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/error.dart';
-import 'package:analyzer/src/generated/resolver.dart';
-import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/generated/scanner.dart';
-
-import 'stubs.dart';
-
-/**
- * Context for which assistance should be provided.
- */
-class AssistContext {
-  final SearchEngine searchEngine;
-
-  final AnalysisContext analysisContext;
-
-  final String analysisContextId;
-
-  final Source source;
-
-  final CompilationUnit compilationUnit;
-
-  final int selectionOffset;
-
-  final int selectionLength;
-
-  AstNode _coveredNode;
-
-  AstNode _coveringNode;
-
-  Element _coveredElement;
-
-  bool _coveredElementFound = false;
-
-  AssistContext.con1(this.searchEngine, this.analysisContext,
-      this.analysisContextId, this.source, this.compilationUnit,
-      this.selectionOffset, this.selectionLength);
-
-  AssistContext.con2(SearchEngine searchEngine, AnalysisContext analysisContext,
-      String analysisContextId, Source source, CompilationUnit compilationUnit,
-      SourceRange selectionRange)
-      : this.con1(searchEngine, analysisContext, analysisContextId, source,
-          compilationUnit, selectionRange.offset, selectionRange.length);
-
-  /**
-   * @return the resolved [CompilationUnitElement] of the [Source].
-   */
-  CompilationUnitElement get compilationUnitElement => compilationUnit.element;
-
-  /**
-   * @return the [Element] of the [coveredNode], may be <code>null</code>.
-   */
-  Element get coveredElement {
-    if (!_coveredElementFound) {
-      _coveredElementFound = true;
-      AstNode coveredNode = this.coveredNode;
-      if (coveredNode == null) {
-        return null;
-      }
-      _coveredElement =
-          ElementLocator.locateWithOffset(coveredNode, selectionOffset);
-    }
-    return _coveredElement;
-  }
-
-  /**
-   * @return the [AstNode] that is covered by the selection.
-   */
-  AstNode get coveredNode {
-    if (_coveredNode == null) {
-      NodeLocator locator = new NodeLocator(selectionOffset, selectionOffset);
-      _coveredNode = locator.searchWithin(compilationUnit);
-    }
-    return _coveredNode;
-  }
-
-  /**
-   * @return the ASTNode that covers the selection.
-   */
-  AstNode get coveringNode {
-    if (_coveringNode == null) {
-      NodeLocator locator =
-          new NodeLocator(selectionOffset, selectionOffset + selectionLength);
-      _coveringNode = locator.searchWithin(compilationUnit);
-    }
-    return _coveringNode;
-  }
-
-  /**
-   * @return the errors associated with the [Source].
-   */
-  List<AnalysisError> get errors {
-    Source source = this.source;
-    if (analysisContext == null || source == null) {
-      return AnalysisError.NO_ERRORS;
-    }
-    return analysisContext.getErrors(source).errors;
-  }
-
-  /**
-   * @return the [SourceRange] of the selection.
-   */
-  SourceRange get selectionRange =>
-      new SourceRange(selectionOffset, selectionLength);
-}
-
-/**
- * Utilities for analyzing [CompilationUnit], its parts and source.
- */
-class CorrectionUtils {
-  static List<String> _KNOWN_METHOD_NAME_PREFIXES = ["get", "is", "to"];
-
-  /**
-   * @return <code>true</code> if given [List]s are equals at given position.
-   */
-  static bool allListsEqual(List<List> lists, int position) {
-    Object element = lists[0][position];
-    for (List list in lists) {
-      if (!identical(list[position], element)) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  /**
-   * @return <code>true</code> if given [SourceRange] covers given [AstNode].
-   */
-  static bool covers(SourceRange r, AstNode node) {
-    SourceRange nodeRange = SourceRangeFactory.rangeNode(node);
-    return r.covers(nodeRange);
-  }
-
-  /**
-   * @return all direct children of the given [Element].
-   */
-  static List<Element> getChildren(Element parent) =>
-      getChildren2(parent, null);
-
-  /**
-   * @param name the required name of children; may be <code>null</code> to get children with any
-   *          name.
-   * @return all direct children of the given [Element], with given name.
-   */
-  static List<Element> getChildren2(Element parent, String name) {
-    List<Element> children = [];
-    parent.accept(new GeneralizingElementVisitor_CorrectionUtils_getChildren(
-        parent, name, children));
-    return children;
-  }
-
-  static String getDefaultValueCode(DartType type) {
-    if (type != null) {
-      String typeName = type.displayName;
-      if (typeName == "bool") {
-        return "false";
-      }
-      if (typeName == "int") {
-        return "0";
-      }
-      if (typeName == "double") {
-        return "0.0";
-      }
-      if (typeName == "String") {
-        return "''";
-      }
-    }
-    // no better guess
-    return "null";
-  }
-
-  /**
-   * @return the name of the [Element] kind.
-   */
-  static String getElementKindName(Element element) {
-    ElementKind kind = element.kind;
-    return getElementKindName2(kind);
-  }
-
-  /**
-   * @return the display name of the [ElementKind].
-   */
-  static String getElementKindName2(ElementKind kind) => kind.displayName;
-
-  /**
-   * @return the human name of the [Element].
-   */
-  static String getElementQualifiedName(Element element) {
-    ElementKind kind = element.kind;
-    while (true) {
-      if (kind == ElementKind.FIELD || kind == ElementKind.METHOD) {
-        return "${element.enclosingElement.displayName}.${element.displayName}";
-      } else {
-        return element.displayName;
-      }
-      break;
-    }
-  }
-
-  /**
-   * @return the [ExecutableElement] of the enclosing executable [AstNode].
-   */
-  static ExecutableElement getEnclosingExecutableElement(AstNode node) {
-    while (node != null) {
-      if (node is FunctionDeclaration) {
-        return node.element;
-      }
-      if (node is ConstructorDeclaration) {
-        return node.element;
-      }
-      if (node is MethodDeclaration) {
-        return node.element;
-      }
-      node = node.parent;
-    }
-    return null;
-  }
-
-  /**
-   * @return the enclosing executable [AstNode].
-   */
-  static AstNode getEnclosingExecutableNode(AstNode node) {
-    while (node != null) {
-      if (node is FunctionDeclaration) {
-        return node;
-      }
-      if (node is ConstructorDeclaration) {
-        return node;
-      }
-      if (node is MethodDeclaration) {
-        return node;
-      }
-      node = node.parent;
-    }
-    return null;
-  }
-
-  /**
-   * @return [Element] exported from the given [LibraryElement].
-   */
-  static Element getExportedElement(LibraryElement library, String name) {
-    if (library == null) {
-      return null;
-    }
-    return getExportNamespace2(library)[name];
-  }
-
-  /**
-   * TODO(scheglov) may be replace with some API for this
-   *
-   * @return the namespace of the given [ExportElement].
-   */
-  static Map<String, Element> getExportNamespace(ExportElement exp) {
-    Namespace namespace =
-        new NamespaceBuilder().createExportNamespaceForDirective(exp);
-    return namespace.definedNames;
-  }
-
-  /**
-   * TODO(scheglov) may be replace with some API for this
-   *
-   * @return the export namespace of the given [LibraryElement].
-   */
-  static Map<String, Element> getExportNamespace2(LibraryElement library) {
-    Namespace namespace =
-        new NamespaceBuilder().createExportNamespaceForLibrary(library);
-    return namespace.definedNames;
-  }
-
-  /**
-   * @return [getExpressionPrecedence] for parent node, or `0` if parent node
-   *         is [ParenthesizedExpression]. The reason is that `(expr)` is always
-   *         executed after `expr`.
-   */
-  static int getExpressionParentPrecedence(AstNode node) {
-    AstNode parent = node.parent;
-    if (parent is ParenthesizedExpression) {
-      return 0;
-    }
-    return getExpressionPrecedence(parent);
-  }
-
-  /**
-   * Return the precedence of the given [node]: the result of invoking
-   * [Expression.precedence] if the node is an [Expression], or a negative value
-   * otherwise.
-   */
-  static int getExpressionPrecedence(AstNode node) {
-    if (node is Expression) {
-      return node.precedence;
-    }
-    return -1000;
-  }
-
-  /**
-   * TODO(scheglov) may be replace with some API for this
-   *
-   * @return the namespace of the given [ImportElement].
-   */
-  static Map<String, Element> getImportNamespace(ImportElement imp) {
-    Namespace namespace =
-        new NamespaceBuilder().createImportNamespaceForDirective(imp);
-    return namespace.definedNames;
-  }
-
-  /**
-   * @return all [CompilationUnitElement] the given [LibraryElement] consists of.
-   */
-  static List<CompilationUnitElement> getLibraryUnits(LibraryElement library) {
-    List<CompilationUnitElement> units = [];
-    units.add(library.definingCompilationUnit);
-    units.addAll(library.parts);
-    return units;
-  }
-
-  /**
-   * @return the line prefix from the given source, i.e. basically just whitespace prefix of the
-   *         given [String].
-   */
-  static String getLinesPrefix(String lines) {
-    int index = 0;
-    while (index < lines.length) {
-      int c = lines.codeUnitAt(index);
-      if (!Character.isWhitespace(c)) {
-        break;
-      }
-      index++;
-    }
-    return lines.substring(0, index);
-  }
-
-  /**
-   * @return the [LocalVariableElement] or [ParameterElement] if given
-   *         [SimpleIdentifier] is the reference to local variable or parameter, or
-   *         <code>null</code> in the other case.
-   */
-  static VariableElement getLocalOrParameterVariableElement(
-      SimpleIdentifier node) {
-    Element element = node.staticElement;
-    if (element is LocalVariableElement) {
-      return element;
-    }
-    if (element is ParameterElement) {
-      return element;
-    }
-    return null;
-  }
-
-  /**
-   * @return the [LocalVariableElement] if given [SimpleIdentifier] is the reference to
-   *         local variable, or <code>null</code> in the other case.
-   */
-  static LocalVariableElement getLocalVariableElement(SimpleIdentifier node) {
-    Element element = node.staticElement;
-    if (element is LocalVariableElement) {
-      return element;
-    }
-    return null;
-  }
-
-  /**
-   * @return the nearest common ancestor [AstNode] of the given [AstNode]s.
-   */
-  static AstNode getNearestCommonAncestor(List<AstNode> nodes) {
-    // may be no nodes
-    if (nodes.isEmpty) {
-      return null;
-    }
-    // prepare parents
-    List<List<AstNode>> parents = [];
-    for (AstNode node in nodes) {
-      parents.add(getParents(node));
-    }
-    // find min length
-    int minLength = 2147483647;
-    for (List<AstNode> parentList in parents) {
-      minLength = math.min(minLength, parentList.length);
-    }
-    // find deepest parent
-    int i = 0;
-    for (; i < minLength; i++) {
-      if (!allListsEqual(parents, i)) {
-        break;
-      }
-    }
-    return parents[0][i - 1];
-  }
-
-  /**
-   * @return the [Expression] qualified if given node is name part of a [PropertyAccess]
-   *         or [PrefixedIdentifier]. May be <code>null</code>.
-   */
-  static Expression getNodeQualifier(SimpleIdentifier node) {
-    AstNode parent = node.parent;
-    if (parent is PropertyAccess) {
-      PropertyAccess propertyAccess = parent;
-      if (identical(propertyAccess.propertyName, node)) {
-        return propertyAccess.target;
-      }
-    }
-    if (parent is PrefixedIdentifier) {
-      PrefixedIdentifier prefixed = parent;
-      if (identical(prefixed.identifier, node)) {
-        return prefixed.prefix;
-      }
-    }
-    return null;
-  }
-
-  /**
-   * @return the [ParameterElement] if given [SimpleIdentifier] is the reference to
-   *         parameter, or <code>null</code> in the other case.
-   */
-  static ParameterElement getParameterElement(SimpleIdentifier node) {
-    Element element = node.staticElement;
-    if (element is ParameterElement) {
-      return element;
-    }
-    return null;
-  }
-
-  /**
-   * Return the precedence of the given [expression]'s parent. May be `-1` no
-   * operator.
-   *
-   * See [getPrecedence].
-   */
-  static int getParentPrecedence(Expression expression) {
-    AstNode parent = expression.parent;
-    if (parent is Expression) {
-      return getPrecedence(parent);
-    }
-    return -1;
-  }
-
-  /**
-   * @return parent [AstNode]s from [CompilationUnit] (at index "0") to the given one.
-   */
-  static List<AstNode> getParents(AstNode node) {
-    // prepare number of parents
-    int numParents = 0;
-    {
-      AstNode current = node.parent;
-      while (current != null) {
-        numParents++;
-        current = current.parent;
-      }
-    }
-    // fill array of parents
-    List<AstNode> parents = new List<AstNode>(numParents);
-    AstNode current = node.parent;
-    int index = numParents;
-    while (current != null) {
-      parents[--index] = current;
-      current = current.parent;
-    }
-    return parents;
-  }
-
-  /**
-   * @return the precedence of the given [Expression] operator. May be
-   *         `Integer#MAX_VALUE` if not an operator.
-   */
-  static int getPrecedence(Expression expression) {
-    if (expression is BinaryExpression) {
-      BinaryExpression binaryExpression = expression;
-      return binaryExpression.operator.type.precedence;
-    }
-    if (expression is PrefixExpression) {
-      PrefixExpression prefixExpression = expression;
-      return prefixExpression.operator.type.precedence;
-    }
-    if (expression is PostfixExpression) {
-      PostfixExpression postfixExpression = expression;
-      return postfixExpression.operator.type.precedence;
-    }
-    return 2147483647;
-  }
-
-  /**
-   * @return the [PropertyAccessorElement] if given [SimpleIdentifier] is the reference
-   *         to property, or <code>null</code> in the other case.
-   */
-  static PropertyAccessorElement getPropertyAccessorElement(
-      SimpleIdentifier node) {
-    Element element = node.staticElement;
-    if (element is PropertyAccessorElement) {
-      return element;
-    }
-    return null;
-  }
-
-  /**
-   * If given [AstNode] is name of qualified property extraction, returns target from which
-   * this property is extracted. Otherwise `null`.
-   */
-  static Expression getQualifiedPropertyTarget(AstNode node) {
-    AstNode parent = node.parent;
-    if (parent is PrefixedIdentifier) {
-      PrefixedIdentifier prefixed = parent;
-      if (identical(prefixed.identifier, node)) {
-        return parent.prefix;
-      }
-    }
-    if (parent is PropertyAccess) {
-      PropertyAccess access = parent;
-      if (identical(access.propertyName, node)) {
-        return access.realTarget;
-      }
-    }
-    return null;
-  }
-
-  /**
-   * Returns the name of the file which corresponds to the name of the class according to the style
-   * guide. However class does not have to be in this file.
-   */
-  static String getRecommentedFileNameForClass(String className) {
-    int len = className.length;
-    StringBuffer buffer = new StringBuffer();
-    bool prevWasUpper = false;
-    for (int i = 0; i < len; i++) {
-      int c = className.codeUnitAt(i);
-      if (Character.isUpperCase(c)) {
-        bool nextIsUpper =
-            i < len - 1 && Character.isUpperCase(className.codeUnitAt(i + 1));
-        if (i == 0) {} else if (prevWasUpper) {
-          // HTTPServer
-          //     ^
-          if (!nextIsUpper) {
-            buffer.writeCharCode(0x5F);
-          }
-        } else {
-          // HttpServer
-          //     ^
-          buffer.writeCharCode(0x5F);
-        }
-        prevWasUpper = true;
-        c = Character.toLowerCase(c);
-      } else {
-        prevWasUpper = false;
-      }
-      buffer.writeCharCode(c);
-    }
-    buffer.write(".dart");
-    String fileName = buffer.toString();
-    return fileName;
-  }
-
-  /**
-   * @return given [Statement] if not [Block], first child [Statement] if
-   *         [Block], or <code>null</code> if more than one child.
-   */
-  static Statement getSingleStatement(Statement statement) {
-    if (statement is Block) {
-      List<Statement> blockStatements = statement.statements;
-      if (blockStatements.length != 1) {
-        return null;
-      }
-      return blockStatements[0];
-    }
-    return statement;
-  }
-
-  /**
-   * @return the [String] content of the given [Source].
-   */
-  static String getSourceContent(AnalysisContext context, Source source) =>
-      context.getContents(source).data.toString();
-
-  /**
-   * @return given [Statement] if not [Block], all children [Statement]s if
-   *         [Block].
-   */
-  static List<Statement> getStatements(Statement statement) {
-    if (statement is Block) {
-      return statement.statements;
-    }
-    return [];
-  }
-
-  /**
-   * @return all top-level elements declared in the given [LibraryElement].
-   */
-  static List<Element> getTopLevelElements(LibraryElement library) {
-    List<Element> elements = [];
-    List<CompilationUnitElement> units = getLibraryUnits(library);
-    for (CompilationUnitElement unit in units) {
-      elements.addAll(unit.functions);
-      elements.addAll(unit.functionTypeAliases);
-      elements.addAll(unit.types);
-      elements.addAll(unit.topLevelVariables);
-    }
-    return elements;
-  }
-
-  /**
-   * @return the possible names for variable with initializer of the given [StringLiteral].
-   */
-  static List<String> getVariableNameSuggestions(
-      String text, Set<String> excluded) {
-    // filter out everything except of letters and white spaces
-    {
-      StringBuffer buffer = new StringBuffer();
-      for (int i = 0; i < text.length; i++) {
-        int c = text.codeUnitAt(i);
-        if (Character.isLetter(c) || Character.isWhitespace(c)) {
-          buffer.writeCharCode(c);
-        }
-      }
-      text = buffer.toString();
-    }
-    // make single camel-case text
-    {
-      List<String> words = StringUtils.split(text);
-      StringBuffer buffer = new StringBuffer();
-      for (int i = 0; i < words.length; i++) {
-        String word = words[i];
-        if (i > 0) {
-          word = StringUtils.capitalize(word);
-        }
-        buffer.write(word);
-      }
-      text = buffer.toString();
-    }
-    // split camel-case into separate suggested names
-    Set<String> res = new LinkedHashSet();
-    _addAll(excluded, res, _getVariableNameSuggestions(text));
-    return new List.from(res);
-  }
-
-  /**
-   * @return the possible names for variable with given expected type and expression.
-   */
-  static List<String> getVariableNameSuggestions2(DartType expectedType,
-      Expression assignedExpression, Set<String> excluded) {
-    Set<String> res = new LinkedHashSet();
-    // use expression
-    if (assignedExpression != null) {
-      String nameFromExpression =
-          _getBaseNameFromExpression(assignedExpression);
-      if (nameFromExpression != null) {
-        nameFromExpression = StringUtils.removeStart(nameFromExpression, "_");
-        _addAll(excluded, res, _getVariableNameSuggestions(nameFromExpression));
-      }
-      String nameFromParent =
-          _getBaseNameFromLocationInParent(assignedExpression);
-      if (nameFromParent != null) {
-        _addAll(excluded, res, _getVariableNameSuggestions(nameFromParent));
-      }
-    }
-    // use type
-    if (expectedType != null && !expectedType.isDynamic) {
-      String typeName = expectedType.name;
-      if ("int" == typeName) {
-        _addSingleCharacterName(excluded, res, 0x69);
-      } else if ("double" == typeName) {
-        _addSingleCharacterName(excluded, res, 0x64);
-      } else if ("String" == typeName) {
-        _addSingleCharacterName(excluded, res, 0x73);
-      } else {
-        _addAll(excluded, res, _getVariableNameSuggestions(typeName));
-      }
-      res.remove(typeName);
-    }
-    // done
-    return new List.from(res);
-  }
-
-  /**
-   * Return `true` if the given [element]'s display name ([Element.displayName])
-   * is equal to the given [name].
-   */
-  static bool hasDisplayName(Element element, String name) {
-    if (element == null) {
-      return false;
-    }
-    String elementDisplayName = element.displayName;
-    return StringUtils.equals(elementDisplayName, name);
-  }
-
-  /**
-   * Return `true` if the given [element]'s name ([Element.name]) is equal to
-   * the given [name].
-   */
-  static bool hasName(Element element, String name) {
-    if (element == null) {
-      return false;
-    }
-    String elementName = element.name;
-    return StringUtils.equals(elementName, name);
-  }
-
-  /**
-   * @return `true` if the given [SimpleIdentifier] is the name of the
-   *         [NamedExpression].
-   */
-  static bool isNamedExpressionName(SimpleIdentifier node) {
-    AstNode parent = node.parent;
-    if (parent is Label) {
-      Label label = parent;
-      if (identical(label.label, node)) {
-        AstNode parent2 = label.parent;
-        if (parent2 is NamedExpression) {
-          return identical(parent2.name, label);
-        }
-      }
-    }
-    return false;
-  }
-
-  /**
-   * Adds "toAdd" items which are not excluded.
-   */
-  static void _addAll(
-      Set<String> excluded, Set<String> result, Iterable<String> toAdd) {
-    for (String item in toAdd) {
-      // add name based on "item", but not "excluded"
-      for (int suffix = 1;; suffix++) {
-        // prepare name, just "item" or "item2", "item3", etc
-        String name = item;
-        if (suffix > 1) {
-          name += suffix.toString();
-        }
-        // add once found not excluded
-        if (!excluded.contains(name)) {
-          result.add(name);
-          break;
-        }
-      }
-    }
-  }
-
-  /**
-   * Add to "result" then given "c" or the first ASCII character after it.
-   */
-  static void _addSingleCharacterName(
-      Set<String> excluded, Set<String> result, int c) {
-    while (c < 0x7A) {
-      String name = new String.fromCharCode(c);
-      // may be done
-      if (!excluded.contains(name)) {
-        result.add(name);
-        break;
-      }
-      // next character
-      c = (c + 1);
-    }
-  }
-
-  static String _getBaseNameFromExpression(Expression expression) {
-    String name = null;
-    // e as Type
-    if (expression is AsExpression) {
-      AsExpression asExpression = expression as AsExpression;
-      expression = asExpression.expression;
-    }
-    // analyze expressions
-    if (expression is SimpleIdentifier) {
-      SimpleIdentifier node = expression;
-      return node.name;
-    } else if (expression is PrefixedIdentifier) {
-      PrefixedIdentifier node = expression;
-      return node.identifier.name;
-    } else if (expression is MethodInvocation) {
-      name = expression.methodName.name;
-    } else if (expression is InstanceCreationExpression) {
-      InstanceCreationExpression creation = expression;
-      ConstructorName constructorName = creation.constructorName;
-      TypeName typeName = constructorName.type;
-      if (typeName != null) {
-        Identifier typeNameIdentifier = typeName.name;
-        // new ClassName()
-        if (typeNameIdentifier is SimpleIdentifier) {
-          return typeNameIdentifier.name;
-        }
-        // new prefix.name();
-        if (typeNameIdentifier is PrefixedIdentifier) {
-          PrefixedIdentifier prefixed = typeNameIdentifier;
-          // new prefix.ClassName()
-          if (prefixed.prefix.staticElement is PrefixElement) {
-            return prefixed.identifier.name;
-          }
-          // new ClassName.constructorName()
-          return prefixed.prefix.name;
-        }
-      }
-    }
-    // strip known prefixes
-    if (name != null) {
-      for (int i = 0; i < _KNOWN_METHOD_NAME_PREFIXES.length; i++) {
-        String curr = _KNOWN_METHOD_NAME_PREFIXES[i];
-        if (name.startsWith(curr)) {
-          if (name == curr) {
-            return null;
-          } else if (Character.isUpperCase(name.codeUnitAt(curr.length))) {
-            return name.substring(curr.length);
-          }
-        }
-      }
-    }
-    // done
-    return name;
-  }
-
-  static String _getBaseNameFromLocationInParent(Expression expression) {
-    // value in named expression
-    if (expression.parent is NamedExpression) {
-      NamedExpression namedExpression = expression.parent as NamedExpression;
-      if (identical(namedExpression.expression, expression)) {
-        return namedExpression.name.label.name;
-      }
-    }
-    // positional argument
-    {
-      ParameterElement parameter = expression.propagatedParameterElement;
-      if (parameter == null) {
-        parameter = expression.staticParameterElement;
-      }
-      if (parameter != null) {
-        return parameter.displayName;
-      }
-    }
-    // unknown
-    return null;
-  }
-
-  /**
-   * @return [Expression]s from <code>operands</code> which are completely covered by given
-   *         [SourceRange]. Range should start and end between given [Expression]s.
-   */
-  static List<Expression> _getOperandsForSourceRange(
-      List<Expression> operands, SourceRange range) {
-    assert(!operands.isEmpty);
-    List<Expression> subOperands = [];
-    // track range enter/exit
-    bool entered = false;
-    bool exited = false;
-    // may be range starts before or on first operand
-    if (range.offset <= operands[0].offset) {
-      entered = true;
-    }
-    // iterate over gaps between operands
-    for (int i = 0; i < operands.length - 1; i++) {
-      Expression operand = operands[i];
-      Expression nextOperand = operands[i + 1];
-      SourceRange inclusiveGap =
-          SourceRangeFactory.rangeEndStart(operand, nextOperand).getMoveEnd(1);
-      // add operand, if already entered range
-      if (entered) {
-        subOperands.add(operand);
-        // may be last operand in range
-        if (range.endsIn(inclusiveGap)) {
-          exited = true;
-        }
-      } else {
-        // may be first operand in range
-        if (range.startsIn(inclusiveGap)) {
-          entered = true;
-        }
-      }
-    }
-    // check if last operand is in range
-    Expression lastGroupMember = operands[operands.length - 1];
-    if (range.end == lastGroupMember.end) {
-      subOperands.add(lastGroupMember);
-      exited = true;
-    }
-    // we expect that range covers only given operands
-    if (!exited) {
-      return [];
-    }
-    // done
-    return subOperands;
-  }
-
-  /**
-   * @return all operands of the given [BinaryExpression] and its children with the same
-   *         operator.
-   */
-  static List<Expression> _getOperandsInOrderFor(BinaryExpression groupRoot) {
-    List<Expression> operands = [];
-    TokenType groupOperatorType = groupRoot.operator.type;
-    groupRoot.accept(
-        new GeneralizingAstVisitor_CorrectionUtils_getOperandsInOrderFor(
-            groupOperatorType, operands));
-    return operands;
-  }
-
-  /**
-   * @return all variants of names by removing leading words by one.
-   */
-  static List<String> _getVariableNameSuggestions(String name) {
-    List<String> result = [];
-    List<String> parts =
-        name.split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])");
-    for (int i = 0; i < parts.length; i++) {
-      String suggestion =
-          "${parts[i].toLowerCase()}${StringUtils.join(parts, "", i + 1, parts.length)}";
-      result.add(suggestion);
-    }
-    return result;
-  }
-
-  final CompilationUnit unit;
-
-  LibraryElement _library;
-
-  String _buffer;
-
-  String _endOfLine;
-
-  CorrectionUtils(this.unit) {
-    CompilationUnitElement element = unit.element;
-    this._library = element.library;
-    this._buffer = getSourceContent(element.context, element.source);
-  }
-
-  /**
-   * @return the [AstNode] that encloses the given offset.
-   */
-  AstNode findNode(int offset) => new NodeLocator(offset).searchWithin(unit);
-
-  /**
-   * TODO(scheglov) replace with nodes once there will be [CompilationUnit.comments].
-   *
-   * @return the [SourceRange]s of all comments in [CompilationUnit].
-   */
-  List<SourceRange> get commentRanges {
-    List<SourceRange> ranges = [];
-    Token token = unit.beginToken;
-    while (token != null && token.type != TokenType.EOF) {
-      Token commentToken = token.precedingComments;
-      while (commentToken != null) {
-        ranges.add(SourceRangeFactory.rangeToken(commentToken));
-        commentToken = commentToken.next;
-      }
-      token = token.next;
-    }
-    return ranges;
-  }
-
-  /**
-   * @return the EOL to use for this [CompilationUnit].
-   */
-  String get endOfLine {
-    if (_endOfLine == null) {
-      if (_buffer.contains("\r\n")) {
-        _endOfLine = "\r\n";
-      } else {
-        _endOfLine = "\n";
-      }
-    }
-    return _endOfLine;
-  }
-
-  /**
-   * @return the default indentation with given level.
-   */
-  String getIndent(int level) => StringUtils.repeat("  ", level);
-
-  /**
-   * @return the source of the given [SourceRange] with indentation changed from "oldIndent"
-   *         to "newIndent", keeping indentation of the lines relative to each other.
-   */
-  String getIndentSource(
-      SourceRange range, String oldIndent, String newIndent) {
-    String oldSource = getText3(range);
-    return getIndentSource3(oldSource, oldIndent, newIndent);
-  }
-
-  /**
-   * Indents given source left or right.
-   *
-   * @return the source with changed indentation.
-   */
-  String getIndentSource2(String source, bool right) {
-    StringBuffer buffer = new StringBuffer();
-    String indent = getIndent(1);
-    String eol = endOfLine;
-    List<String> lines =
-        StringUtils.splitByWholeSeparatorPreserveAllTokens(source, eol);
-    for (int i = 0; i < lines.length; i++) {
-      String line = lines[i];
-      // last line, stop if empty
-      if (i == lines.length - 1 && StringUtils.isEmpty(line)) {
-        break;
-      }
-      // update line
-      if (right) {
-        line = "${indent}${line}";
-      } else {
-        line = StringUtils.removeStart(line, indent);
-      }
-      // append line
-      buffer.write(line);
-      buffer.write(eol);
-    }
-    return buffer.toString();
-  }
-
-  /**
-   * @return the source with indentation changed from "oldIndent" to "newIndent", keeping
-   *         indentation of the lines relative to each other.
-   */
-  String getIndentSource3(String source, String oldIndent, String newIndent) {
-    // prepare STRING token ranges
-    List<SourceRange> lineRanges = [];
-    for (Token token in TokenUtils.getTokens(source)) {
-      if (token.type == TokenType.STRING) {
-        lineRanges.add(SourceRangeFactory.rangeToken(token));
-      }
-    }
-    // re-indent lines
-    StringBuffer buffer = new StringBuffer();
-    String eol = endOfLine;
-    List<String> lines =
-        StringUtils.splitByWholeSeparatorPreserveAllTokens(source, eol);
-    int lineOffset = 0;
-    for (int i = 0; i < lines.length; i++) {
-      String line = lines[i];
-      // last line, stop if empty
-      if (i == lines.length - 1 && StringUtils.isEmpty(line)) {
-        break;
-      }
-      // check if "offset" is in one of the String ranges
-      bool inString = false;
-      for (SourceRange lineRange in lineRanges) {
-        if (lineOffset > lineRange.offset && lineOffset < lineRange.end) {
-          inString = true;
-        }
-        if (lineOffset > lineRange.end) {
-          break;
-        }
-      }
-      lineOffset += line.length + eol.length;
-      // update line indent
-      if (!inString) {
-        line = "${newIndent}${StringUtils.removeStart(line, oldIndent)}";
-      }
-      // append line
-      buffer.write(line);
-      buffer.write(eol);
-    }
-    return buffer.toString();
-  }
-
-  /**
-   * @return [InsertDesc], description where to insert new library-related directive.
-   */
-  CorrectionUtils_InsertDesc get insertDescImport {
-    // analyze directives
-    Directive prevDirective = null;
-    for (Directive directive in unit.directives) {
-      if (directive is LibraryDirective ||
-          directive is ImportDirective ||
-          directive is ExportDirective) {
-        prevDirective = directive;
-      }
-    }
-    // insert after last library-related directive
-    if (prevDirective != null) {
-      CorrectionUtils_InsertDesc result = new CorrectionUtils_InsertDesc();
-      result.offset = prevDirective.end;
-      String eol = endOfLine;
-      if (prevDirective is LibraryDirective) {
-        result.prefix = "${eol}${eol}";
-      } else {
-        result.prefix = eol;
-      }
-      return result;
-    }
-    // no directives, use "top" location
-    return insertDescTop;
-  }
-
-  /**
-   * @return [InsertDesc], description where to insert new 'part 'directive.
-   */
-  CorrectionUtils_InsertDesc get insertDescPart {
-    // analyze directives
-    Directive prevDirective = null;
-    for (Directive directive in unit.directives) {
-      prevDirective = directive;
-    }
-    // insert after last directive
-    if (prevDirective != null) {
-      CorrectionUtils_InsertDesc result = new CorrectionUtils_InsertDesc();
-      result.offset = prevDirective.end;
-      String eol = endOfLine;
-      if (prevDirective is PartDirective) {
-        result.prefix = eol;
-      } else {
-        result.prefix = "${eol}${eol}";
-      }
-      return result;
-    }
-    // no directives, use "top" location
-    return insertDescTop;
-  }
-
-  /**
-   * @return [InsertDesc], description where to insert new directive or top-level declaration
-   *         at the top of file.
-   */
-  CorrectionUtils_InsertDesc get insertDescTop {
-    // skip leading line comments
-    int offset = 0;
-    bool insertEmptyLineBefore = false;
-    bool insertEmptyLineAfter = false;
-    String source = text;
-    // skip hash-bang
-    if (offset < source.length - 2) {
-      String linePrefix = getText2(offset, 2);
-      if (linePrefix == "#!") {
-        insertEmptyLineBefore = true;
-        offset = getLineNext(offset);
-        // skip empty lines to first line comment
-        int emptyOffset = offset;
-        while (emptyOffset < source.length - 2) {
-          int nextLineOffset = getLineNext(emptyOffset);
-          String line = source.substring(emptyOffset, nextLineOffset);
-          if (line.trim().isEmpty) {
-            emptyOffset = nextLineOffset;
-            continue;
-          } else if (line.startsWith("//")) {
-            offset = emptyOffset;
-            break;
-          } else {
-            break;
-          }
-        }
-      }
-    }
-    // skip line comments
-    while (offset < source.length - 2) {
-      String linePrefix = getText2(offset, 2);
-      if (linePrefix == "//") {
-        insertEmptyLineBefore = true;
-        offset = getLineNext(offset);
-      } else {
-        break;
-      }
-    }
-    // determine if empty line is required after
-    int nextLineOffset = getLineNext(offset);
-    String insertLine = source.substring(offset, nextLineOffset);
-    if (!insertLine.trim().isEmpty) {
-      insertEmptyLineAfter = true;
-    }
-    // fill InsertDesc
-    CorrectionUtils_InsertDesc desc = new CorrectionUtils_InsertDesc();
-    desc.offset = offset;
-    if (insertEmptyLineBefore) {
-      desc.prefix = endOfLine;
-    }
-    if (insertEmptyLineAfter) {
-      desc.suffix = endOfLine;
-    }
-    return desc;
-  }
-
-  /**
-   * Skips whitespace characters and single EOL on the right from the given position. If from
-   * statement or method end, then this is in the most cases start of the next line.
-   */
-  int getLineContentEnd(int index) {
-    int length = _buffer.length;
-    // skip whitespace characters
-    while (index < length) {
-      int c = _buffer.codeUnitAt(index);
-      if (!Character.isWhitespace(c) || c == 0xD || c == 0xA) {
-        break;
-      }
-      index++;
-    }
-    // skip single \r
-    if (index < length && _buffer.codeUnitAt(index) == 0xD) {
-      index++;
-    }
-    // skip single \n
-    if (index < length && _buffer.codeUnitAt(index) == 0xA) {
-      index++;
-    }
-    // done
-    return index;
-  }
-
-  /**
-   * @return the index of the last space or tab on the left from the given one, if from statement or
-   *         method start, then this is in most cases start of the line.
-   */
-  int getLineContentStart(int index) {
-    while (index > 0) {
-      int c = _buffer.codeUnitAt(index - 1);
-      if (c != 0x20 && c != 0x9) {
-        break;
-      }
-      index--;
-    }
-    return index;
-  }
-
-  /**
-   * @return the start index of the next line after the line which contains given index.
-   */
-  int getLineNext(int index) {
-    int length = _buffer.length;
-    // skip to the end of the line
-    while (index < length) {
-      int c = _buffer.codeUnitAt(index);
-      if (c == 0xD || c == 0xA) {
-        break;
-      }
-      index++;
-    }
-    // skip single \r
-    if (index < length && _buffer.codeUnitAt(index) == 0xD) {
-      index++;
-    }
-    // skip single \n
-    if (index < length && _buffer.codeUnitAt(index) == 0xA) {
-      index++;
-    }
-    // done
-    return index;
-  }
-
-  /**
-   * @return the whitespace prefix of the line which contains given offset.
-   */
-  String getLinePrefix(int index) {
-    int lineStart = getLineThis(index);
-    int length = _buffer.length;
-    int lineNonWhitespace = lineStart;
-    while (lineNonWhitespace < length) {
-      int c = _buffer.codeUnitAt(lineNonWhitespace);
-      if (c == 0xD || c == 0xA) {
-        break;
-      }
-      if (!Character.isWhitespace(c)) {
-        break;
-      }
-      lineNonWhitespace++;
-    }
-    return getText2(lineStart, lineNonWhitespace - lineStart);
-  }
-
-  /**
-   * @return the [getLinesRange] for given [Statement]s.
-   */
-  SourceRange getLinesRange(List<Statement> statements) {
-    SourceRange range = SourceRangeFactory.rangeNodes(statements);
-    return getLinesRange2(range);
-  }
-
-  /**
-   * @return the [SourceRange] which starts at the start of the line of "offset" and ends at
-   *         the start of the next line after "end" of the given [SourceRange], i.e. basically
-   *         complete lines of the source for given [SourceRange].
-   */
-  SourceRange getLinesRange2(SourceRange range) {
-    // start
-    int startOffset = range.offset;
-    int startLineOffset = getLineContentStart(startOffset);
-    // end
-    int endOffset = range.end;
-    int afterEndLineOffset = getLineContentEnd(endOffset);
-    // range
-    return SourceRangeFactory.rangeStartEnd(
-        startLineOffset, afterEndLineOffset);
-  }
-
-  /**
-   * @return the [getLinesRange] for given [Statement]s.
-   */
-  SourceRange getLinesRange3(List<Statement> statements) => getLinesRange([]);
-
-  /**
-   * @return the start index of the line which contains given index.
-   */
-  int getLineThis(int index) {
-    while (index > 0) {
-      int c = _buffer.codeUnitAt(index - 1);
-      if (c == 0xD || c == 0xA) {
-        break;
-      }
-      index--;
-    }
-    return index;
-  }
-
-  /**
-   * @return the line prefix consisting of spaces and tabs on the left from the given
-   *         [AstNode].
-   */
-  String getNodePrefix(AstNode node) {
-    int offset = node.offset;
-    // function literal is special, it uses offset of enclosing line
-    if (node is FunctionExpression) {
-      return getLinePrefix(offset);
-    }
-    // use just prefix directly before node
-    return getPrefix(offset);
-  }
-
-  /**
-   * @return the index of the first non-whitespace character after given index.
-   */
-  int getNonWhitespaceForward(int index) {
-    int length = _buffer.length;
-    // skip whitespace characters
-    while (index < length) {
-      int c = _buffer.codeUnitAt(index);
-      if (!Character.isWhitespace(c)) {
-        break;
-      }
-      index++;
-    }
-    // done
-    return index;
-  }
-
-  /**
-   * @return the source for the parameter with the given type and name.
-   */
-  String getParameterSource(DartType type, String name) {
-    // no type
-    if (type == null || type.isDynamic) {
-      return name;
-    }
-    // function type
-    if (type is FunctionType) {
-      FunctionType functionType = type;
-      StringBuffer buffer = new StringBuffer();
-      // return type
-      DartType returnType = functionType.returnType;
-      if (returnType != null && !returnType.isDynamic) {
-        buffer.write(getTypeSource2(returnType));
-        buffer.writeCharCode(0x20);
-      }
-      // parameter name
-      buffer.write(name);
-      // parameters
-      buffer.writeCharCode(0x28);
-      List<ParameterElement> fParameters = functionType.parameters;
-      for (int i = 0; i < fParameters.length; i++) {
-        ParameterElement fParameter = fParameters[i];
-        if (i != 0) {
-          buffer.write(", ");
-        }
-        buffer.write(getParameterSource(fParameter.type, fParameter.name));
-      }
-      buffer.writeCharCode(0x29);
-      // done
-      return buffer.toString();
-    }
-    // simple type
-    return "${getTypeSource2(type)} ${name}";
-  }
-
-  /**
-   * @return the line prefix consisting of spaces and tabs on the left from the given offset.
-   */
-  String getPrefix(int endIndex) {
-    int startIndex = getLineContentStart(endIndex);
-    return _buffer.substring(startIndex, endIndex);
-  }
-
-  /**
-   * @return the full text of unit.
-   */
-  String get text => _buffer;
-
-  /**
-   * @return the given range of text from unit.
-   */
-  String getText(AstNode node) => getText2(node.offset, node.length);
-
-  /**
-   * @return the given range of text from unit.
-   */
-  String getText2(int offset, int length) =>
-      _buffer.substring(offset, offset + length);
-
-  /**
-   * @return the given range of text from unit.
-   */
-  String getText3(SourceRange range) => getText2(range.offset, range.length);
-
-  /**
-   * @return the actual type source of the given [Expression], may be `null` if can not
-   *         be resolved, should be treated as <code>Dynamic</code>.
-   */
-  String getTypeSource(Expression expression) {
-    if (expression == null) {
-      return null;
-    }
-    DartType type = expression.bestType;
-    String typeSource = getTypeSource2(type);
-    if ("dynamic" == typeSource) {
-      return null;
-    }
-    return typeSource;
-  }
-
-  /**
-   * @return the source to reference the given [Type] in this [CompilationUnit].
-   */
-  String getTypeSource2(DartType type) {
-    StringBuffer buffer = new StringBuffer();
-    // prepare element
-    Element element = type.element;
-    if (element == null) {
-      String source = type.toString();
-      source = StringUtils.remove(source, "<dynamic>");
-      source = StringUtils.remove(source, "<dynamic, dynamic>");
-      return source;
-    }
-    // append prefix
-    {
-      ImportElement imp = _getImportElement(element);
-      if (imp != null && imp.prefix != null) {
-        buffer.write(imp.prefix.displayName);
-        buffer.write(".");
-      }
-    }
-    // append simple name
-    String name = element.displayName;
-    buffer.write(name);
-    // may be type arguments
-    if (type is InterfaceType) {
-      InterfaceType interfaceType = type;
-      List<DartType> arguments = interfaceType.typeArguments;
-      // check if has arguments
-      bool hasArguments = false;
-      for (DartType argument in arguments) {
-        if (!argument.isDynamic) {
-          hasArguments = true;
-          break;
-        }
-      }
-      // append type arguments
-      if (hasArguments) {
-        buffer.write("<");
-        for (int i = 0; i < arguments.length; i++) {
-          DartType argument = arguments[i];
-          if (i != 0) {
-            buffer.write(", ");
-          }
-          buffer.write(getTypeSource2(argument));
-        }
-        buffer.write(">");
-      }
-    }
-    // done
-    return buffer.toString();
-  }
-
-  /**
-   * @return <code>true</code> if selection range contains only whitespace.
-   */
-  bool isJustWhitespace(SourceRange range) =>
-      getText3(range).trim().length == 0;
-
-  /**
-   * @return <code>true</code> if selection range contains only whitespace or comments
-   */
-  bool isJustWhitespaceOrComment(SourceRange range) {
-    String trimmedText = getText3(range).trim();
-    // may be whitespace
-    if (trimmedText.isEmpty) {
-      return true;
-    }
-    // may be comment
-    return TokenUtils.getTokens(trimmedText).isEmpty;
-  }
-
-  /**
-   * @return <code>true</code> if "selection" covers "node" and there are any non-whitespace tokens
-   *         between "selection" and "node" start/end.
-   */
-  bool selectionIncludesNonWhitespaceOutsideNode(
-          SourceRange selection, AstNode node) =>
-      _selectionIncludesNonWhitespaceOutsideRange(
-          selection, SourceRangeFactory.rangeNode(node));
-
-  /**
-   * @return <code>true</code> if given range of [BinaryExpression] can be extracted.
-   */
-  bool validateBinaryExpressionRange(
-      BinaryExpression binaryExpression, SourceRange range) {
-    // only parts of associative expression are safe to extract
-    if (!binaryExpression.operator.type.isAssociativeOperator) {
-      return false;
-    }
-    // prepare selected operands
-    List<Expression> operands = _getOperandsInOrderFor(binaryExpression);
-    List<Expression> subOperands = _getOperandsForSourceRange(operands, range);
-    // if empty, then something wrong with selection
-    if (subOperands.isEmpty) {
-      return false;
-    }
-    // may be some punctuation included into selection - operators, braces, etc
-    if (_selectionIncludesNonWhitespaceOutsideOperands(range, subOperands)) {
-      return false;
-    }
-    // OK
-    return true;
-  }
-
-  /**
-   * @return the [ImportElement] used to import given [Element] into [library].
-   *         May be `null` if was not imported, i.e. declared in the same library.
-   */
-  ImportElement _getImportElement(Element element) {
-    for (ImportElement imp in _library.imports) {
-      Map<String, Element> definedNames = getImportNamespace(imp);
-      if (definedNames.containsValue(element)) {
-        return imp;
-      }
-    }
-    return null;
-  }
-
-  bool _selectionIncludesNonWhitespaceOutsideOperands(
-          SourceRange selection, List<Expression> operands) =>
-      _selectionIncludesNonWhitespaceOutsideRange(
-          selection, SourceRangeFactory.rangeNodes(operands));
-
-  /**
-   * @return <code>true</code> if "selection" covers "range" and there are any non-whitespace tokens
-   *         between "selection" and "range" start/end.
-   */
-  bool _selectionIncludesNonWhitespaceOutsideRange(
-      SourceRange selection, SourceRange range) {
-    // selection should cover range
-    if (!selection.covers(range)) {
-      return false;
-    }
-    // non-whitespace between selection start and range start
-    if (!isJustWhitespaceOrComment(
-        SourceRangeFactory.rangeStartStart(selection, range))) {
-      return true;
-    }
-    // non-whitespace after range
-    if (!isJustWhitespaceOrComment(
-        SourceRangeFactory.rangeEndEnd(range, selection))) {
-      return true;
-    }
-    // only whitespace in selection around range
-    return false;
-  }
-}
-
-/**
- * Describes where to insert new directive or top-level declaration.
- */
-class CorrectionUtils_InsertDesc {
-  int offset = 0;
-
-  String prefix = "";
-
-  String suffix = "";
-}
-
-class GeneralizingAstVisitor_CorrectionUtils_getOperandsInOrderFor
-    extends GeneralizingAstVisitor<Object> {
-  TokenType groupOperatorType;
-
-  List<Expression> operands;
-
-  GeneralizingAstVisitor_CorrectionUtils_getOperandsInOrderFor(
-      this.groupOperatorType, this.operands)
-      : super();
-
-  @override
-  Object visitExpression(Expression node) {
-    if (node is BinaryExpression && node.operator.type == groupOperatorType) {
-      return super.visitNode(node);
-    }
-    operands.add(node);
-    return null;
-  }
-}
-
-class GeneralizingElementVisitor_CorrectionUtils_getChildren
-    extends GeneralizingElementVisitor<Object> {
-  Element parent;
-
-  String name;
-
-  List<Element> children;
-
-  GeneralizingElementVisitor_CorrectionUtils_getChildren(
-      this.parent, this.name, this.children)
-      : super();
-
-  @override
-  Object visitElement(Element element) {
-    if (identical(element, parent)) {
-      super.visitElement(element);
-    } else if (name == null || CorrectionUtils.hasDisplayName(element, name)) {
-      children.add(element);
-    }
-    return null;
-  }
-}
-
-class GeneralizingElementVisitor_HierarchyUtils_getDirectMembers
-    extends GeneralizingElementVisitor<Object> {
-  ClassElement clazz;
-
-  bool includeSynthetic = false;
-
-  List<Element> members;
-
-  GeneralizingElementVisitor_HierarchyUtils_getDirectMembers(
-      this.clazz, this.includeSynthetic, this.members)
-      : super();
-
-  @override
-  Object visitElement(Element element) {
-    if (identical(element, clazz)) {
-      return super.visitElement(element);
-    }
-    if (!includeSynthetic && element.isSynthetic) {
-      return null;
-    }
-    if (element is ConstructorElement) {
-      return null;
-    }
-    if (element is ExecutableElement) {
-      members.add(element);
-    }
-    if (element is FieldElement) {
-      members.add(element);
-    }
-    return null;
-  }
-}
-
-class NameOccurrencesFinder extends RecursiveAstVisitor<Object> {
-  static Iterable<AstNode> findIn(SimpleIdentifier ident, AstNode root) {
-    if (ident == null || ident.bestElement == null) {
-      return new Set<AstNode>();
-    }
-    NameOccurrencesFinder finder = new NameOccurrencesFinder(ident.bestElement);
-    root.accept(finder);
-    return finder.matches;
-  }
-
-  Element _target;
-
-  Element _target2;
-
-  Element _target3;
-
-  Element _target4;
-
-  Set<AstNode> _matches;
-
-  NameOccurrencesFinder(Element source) {
-    this._target = source;
-    while (true) {
-      if (source.kind == ElementKind.GETTER ||
-          source.kind == ElementKind.SETTER) {
-        PropertyAccessorElement accessorElem =
-            source as PropertyAccessorElement;
-        this._target2 = accessorElem.variable;
-        if (source is Member) {
-          Member member = source;
-          this._target4 = member.baseElement;
-        }
-        if (this._target2 is Member) {
-          Member member = source as Member;
-          this._target3 = member.baseElement;
-        }
-      } else if (source.kind == ElementKind.FIELD ||
-          source.kind == ElementKind.TOP_LEVEL_VARIABLE) {
-        PropertyInducingElement propertyElem =
-            source as PropertyInducingElement;
-        this._target2 = propertyElem.getter;
-        this._target3 = propertyElem.setter;
-      } else if (source.kind == ElementKind.METHOD) {
-        if (source is Member) {
-          Member member = source;
-          this._target4 = member.baseElement;
-        }
-      } else if (source.kind == ElementKind.PARAMETER) {
-        ParameterElement param = source as ParameterElement;
-        if (param.isInitializingFormal) {
-          FieldFormalParameterElement fieldInit =
-              param as FieldFormalParameterElement;
-          this._target2 = fieldInit.field;
-        }
-      } else {}
-      break;
-    }
-    if (_target2 == null) {
-      _target2 = _target;
-    }
-    if (_target3 == null) {
-      _target3 = _target;
-    }
-    if (_target4 == null) {
-      _target4 = _target;
-    }
-    this._matches = new Set<AstNode>();
-  }
-
-  Iterable<AstNode> get matches => _matches;
-
-  @override
-  Object visitSimpleIdentifier(SimpleIdentifier node) {
-    Element element = node.bestElement;
-    if (element == null) {
-      return null;
-    }
-    _match(element, node);
-    if (element is Member) {
-      Member member = element;
-      _match(member.baseElement, node);
-    }
-    while (true) {
-      if (element.kind == ElementKind.GETTER ||
-          element.kind == ElementKind.SETTER) {
-        PropertyAccessorElement accessorElem =
-            element as PropertyAccessorElement;
-        _match(accessorElem.variable, node);
-      } else if (element.kind == ElementKind.FIELD ||
-          element.kind == ElementKind.TOP_LEVEL_VARIABLE) {
-        PropertyInducingElement propertyElem =
-            element as PropertyInducingElement;
-        _match(propertyElem.getter, node);
-        _match(propertyElem.setter, node);
-      } else if (element.kind == ElementKind.PARAMETER) {
-        ParameterElement param = element as ParameterElement;
-        if (param.isInitializingFormal) {
-          FieldFormalParameterElement fieldInit =
-              param as FieldFormalParameterElement;
-          _match(fieldInit.field, node);
-        }
-      } else {}
-      break;
-    }
-    return null;
-  }
-
-  void _match(Element element, AstNode node) {
-    if (identical(_target, element) ||
-        identical(_target2, element) ||
-        identical(_target3, element) ||
-        identical(_target4, element)) {
-      _matches.add(node);
-    }
-  }
-}
-
-/**
- * Utilities to work with [Token]s.
- */
-class TokenUtils {
-  /**
-   * @return the first [KeywordToken] with given [Keyword], may be <code>null</code> if
-   *         not found.
-   */
-  static KeywordToken findKeywordToken(List<Token> tokens, Keyword keyword) {
-    for (Token token in tokens) {
-      if (token is KeywordToken) {
-        KeywordToken keywordToken = token;
-        if (keywordToken.keyword == keyword) {
-          return keywordToken;
-        }
-      }
-    }
-    return null;
-  }
-
-  /**
-   * @return the first [Token] with given [TokenType], may be <code>null</code> if not
-   *         found.
-   */
-  static Token findToken(List<Token> tokens, TokenType type) {
-    for (Token token in tokens) {
-      if (token.type == type) {
-        return token;
-      }
-    }
-    return null;
-  }
-
-  /**
-   * @return [Token]s of the given Dart source, not <code>null</code>, may be empty if no
-   *         tokens or some exception happens.
-   */
-  static List<Token> getTokens(String s) {
-    try {
-      List<Token> tokens = [];
-      Scanner scanner = new Scanner(null, new CharSequenceReader(s), null);
-      Token token = scanner.tokenize();
-      while (token.type != TokenType.EOF) {
-        tokens.add(token);
-        token = token.next;
-      }
-      return tokens;
-    } catch (e) {
-      return [];
-    }
-  }
-
-  /**
-   * @return <code>true</code> if given [Token]s contain only single [Token] with given
-   *         [TokenType].
-   */
-  static bool hasOnly(List<Token> tokens, TokenType type) =>
-      tokens.length == 1 && tokens[0].type == type;
-}
diff --git a/pkg/analysis_server/lib/src/services/index/index.dart b/pkg/analysis_server/lib/src/services/index/index.dart
index 374ccaf..41b5a0a 100644
--- a/pkg/analysis_server/lib/src/services/index/index.dart
+++ b/pkg/analysis_server/lib/src/services/index/index.dart
@@ -78,8 +78,6 @@
  * a concrete kind of this name - field, method or something else.
  */
 class IndexableName implements IndexableObject {
-  // TODO(brianwilkerson) Replace NameElement with this class. This will require
-  // generalizing the search engine to use IndexableObject rather than Element.
   /**
    * The name to be indexed.
    */
@@ -105,6 +103,10 @@
   Source get source => null;
 
   @override
+  bool operator ==(Object object) =>
+      object is IndexableName && object.name == name;
+
+  @override
   String toString() => name;
 }
 
@@ -320,20 +322,6 @@
 }
 
 /**
- * An [Element] which is used to index references to the name without specifying
- * a concrete kind of this name - field, method or something else.
- */
-class NameElement extends ElementImpl {
-  NameElement(String name) : super(name, -1);
-
-  @override
-  ElementKind get kind => ElementKind.NAME;
-
-  @override
-  accept(ElementVisitor visitor) => null;
-}
-
-/**
  * Relationship between an element and a location. Relationships are identified
  * by a globally unique identifier.
  */
diff --git a/pkg/analysis_server/lib/src/services/index/index_contributor.dart b/pkg/analysis_server/lib/src/services/index/index_contributor.dart
index 53ef464..26397fb 100644
--- a/pkg/analysis_server/lib/src/services/index/index_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/index/index_contributor.dart
@@ -35,7 +35,7 @@
     return;
   }
   // about to index
-  bool mayIndex = store.aboutToIndexDart(context, unitElement);
+  bool mayIndex = store.aboutToIndex(context, unitElement);
   if (!mayIndex) {
     return;
   }
@@ -44,7 +44,7 @@
     unit.accept(new _IndexContributor(store));
     store.doneIndex();
   } catch (e) {
-    store.cancelIndexDart();
+    store.cancelIndex();
     rethrow;
   }
 }
@@ -54,22 +54,23 @@
  */
 void indexHtmlUnit(
     InternalIndexStore store, AnalysisContext context, ht.HtmlUnit unit) {
-  // check unit
-  if (unit == null) {
-    return;
-  }
-  // prepare unit element
-  HtmlElement unitElement = unit.element;
-  if (unitElement == null) {
-    return;
-  }
-  // about to index
-  bool mayIndex = store.aboutToIndexHtml(context, unitElement);
-  if (!mayIndex) {
-    return;
-  }
-  // do index
-  store.doneIndex();
+  // TODO(scheglov) remove or implement
+//  // check unit
+//  if (unit == null) {
+//    return;
+//  }
+//  // prepare unit element
+//  HtmlElement unitElement = unit.element;
+//  if (unitElement == null) {
+//    return;
+//  }
+//  // about to index
+//  bool mayIndex = store.aboutToIndexHtml(context, unitElement);
+//  if (!mayIndex) {
+//    return;
+//  }
+//  // do index
+//  store.doneIndex();
 }
 
 /**
@@ -127,7 +128,7 @@
    * Record the given relationship between the given [Element] and
    * [LocationImpl].
    */
-  void recordRelationship(
+  void recordRelationshipElement(
       Element element, RelationshipImpl relationship, LocationImpl location) {
     if (element != null && location != null) {
       _store.recordRelationship(
@@ -135,6 +136,17 @@
     }
   }
 
+  /**
+   * Record the given relationship between the given [IndexableObject] and
+   * [LocationImpl].
+   */
+  void recordRelationshipIndexable(IndexableObject indexable,
+      RelationshipImpl relationship, LocationImpl location) {
+    if (indexable != null && location != null) {
+      _store.recordRelationship(indexable, relationship, location);
+    }
+  }
+
   @override
   visitAssignmentExpression(AssignmentExpression node) {
     _recordOperatorReference(node.operator, node.bestElement);
@@ -162,7 +174,9 @@
           InterfaceType superType = element.supertype;
           if (superType != null) {
             ClassElement objectElement = superType.element;
-            recordRelationship(objectElement, IndexConstants.IS_EXTENDED_BY,
+            recordRelationshipElement(
+                objectElement,
+                IndexConstants.IS_EXTENDED_BY,
                 _createLocationForOffset(node.name.offset, 0));
           }
         }
@@ -254,7 +268,8 @@
     if (fieldName != null) {
       Element element = fieldName.staticElement;
       LocationImpl location = _createLocationForNode(fieldName);
-      recordRelationship(element, IndexConstants.IS_WRITTEN_BY, location);
+      recordRelationshipElement(
+          element, IndexConstants.IS_WRITTEN_BY, location);
     }
     // index expression
     if (expression != null) {
@@ -282,7 +297,8 @@
       location = _createLocationForOffset(start, 0);
     }
     // record relationship
-    recordRelationship(element, IndexConstants.IS_REFERENCED_BY, location);
+    recordRelationshipElement(
+        element, IndexConstants.IS_REFERENCED_BY, location);
     super.visitConstructorName(node);
   }
 
@@ -366,7 +382,8 @@
       Token operator = node.leftBracket;
       LocationImpl location =
           _createLocationForToken(operator, element != null);
-      recordRelationship(element, IndexConstants.IS_INVOKED_BY, location);
+      recordRelationshipElement(
+          element, IndexConstants.IS_INVOKED_BY, location);
     }
     super.visitIndexExpression(node);
   }
@@ -386,18 +403,17 @@
   visitMethodInvocation(MethodInvocation node) {
     SimpleIdentifier name = node.methodName;
     LocationImpl location = _createLocationForNode(name);
+    // name invocation
+    recordRelationshipIndexable(
+        new IndexableName(name.name), IndexConstants.IS_INVOKED_BY, location);
     // element invocation
     Element element = name.bestElement;
     if (element is MethodElement ||
         element is PropertyAccessorElement ||
         element is FunctionElement ||
         element is VariableElement) {
-      recordRelationship(element, IndexConstants.IS_INVOKED_BY, location);
-    }
-    // name invocation
-    {
-      recordRelationship(
-          new NameElement(name.name), IndexConstants.IS_INVOKED_BY, location);
+      recordRelationshipElement(
+          element, IndexConstants.IS_INVOKED_BY, location);
     }
     _recordImportElementReferenceWithoutPrefix(name);
     super.visitMethodInvocation(node);
@@ -407,14 +423,16 @@
   visitPartDirective(PartDirective node) {
     Element element = node.element;
     LocationImpl location = _createLocationForNode(node.uri);
-    recordRelationship(element, IndexConstants.IS_REFERENCED_BY, location);
+    recordRelationshipElement(
+        element, IndexConstants.IS_REFERENCED_BY, location);
     super.visitPartDirective(node);
   }
 
   @override
   visitPartOfDirective(PartOfDirective node) {
     LocationImpl location = _createLocationForNode(node.libraryName);
-    recordRelationship(node.element, IndexConstants.IS_REFERENCED_BY, location);
+    recordRelationshipElement(
+        node.element, IndexConstants.IS_REFERENCED_BY, location);
   }
 
   @override
@@ -441,21 +459,22 @@
       int start = node.thisKeyword.end;
       location = _createLocationForOffset(start, 0);
     }
-    recordRelationship(element, IndexConstants.IS_REFERENCED_BY, location);
+    recordRelationshipElement(
+        element, IndexConstants.IS_REFERENCED_BY, location);
     super.visitRedirectingConstructorInvocation(node);
   }
 
   @override
   visitSimpleIdentifier(SimpleIdentifier node) {
-    NameElement nameElement = new NameElement(node.name);
+    IndexableName indexableName = new IndexableName(node.name);
     LocationImpl location = _createLocationForNode(node);
     if (location == null) {
       return;
     }
     // name in declaration
     if (node.inDeclarationContext()) {
-      recordRelationship(
-          nameElement, IndexConstants.NAME_IS_DEFINED_BY, location);
+      recordRelationshipIndexable(
+          indexableName, IndexConstants.NAME_IS_DEFINED_BY, location);
       return;
     }
     // prepare information
@@ -470,12 +489,14 @@
       bool inGetterContext = node.inGetterContext();
       bool inSetterContext = node.inSetterContext();
       if (inGetterContext && inSetterContext) {
-        recordRelationship(
-            nameElement, IndexConstants.IS_READ_WRITTEN_BY, location);
+        recordRelationshipIndexable(
+            indexableName, IndexConstants.IS_READ_WRITTEN_BY, location);
       } else if (inGetterContext) {
-        recordRelationship(nameElement, IndexConstants.IS_READ_BY, location);
+        recordRelationshipIndexable(
+            indexableName, IndexConstants.IS_READ_BY, location);
       } else if (inSetterContext) {
-        recordRelationship(nameElement, IndexConstants.IS_WRITTEN_BY, location);
+        recordRelationshipIndexable(
+            indexableName, IndexConstants.IS_WRITTEN_BY, location);
       }
     }
     // this.field parameter
@@ -483,7 +504,7 @@
       RelationshipImpl relationship = peekElement().element == element
           ? IndexConstants.IS_WRITTEN_BY
           : IndexConstants.IS_REFERENCED_BY;
-      recordRelationship(element.field, relationship, location);
+      recordRelationshipElement(element.field, relationship, location);
       return;
     }
     // record specific relations
@@ -495,22 +516,26 @@
         element is PropertyAccessorElement ||
         element is PropertyInducingElement ||
         element is TypeParameterElement) {
-      recordRelationship(element, IndexConstants.IS_REFERENCED_BY, location);
+      recordRelationshipElement(
+          element, IndexConstants.IS_REFERENCED_BY, location);
     } else if (element is PrefixElement) {
-      recordRelationship(element, IndexConstants.IS_REFERENCED_BY, location);
+      recordRelationshipElement(
+          element, IndexConstants.IS_REFERENCED_BY, location);
       _recordImportElementReferenceWithPrefix(node);
     } else if (element is ParameterElement || element is LocalVariableElement) {
       bool inGetterContext = node.inGetterContext();
       bool inSetterContext = node.inSetterContext();
       if (inGetterContext && inSetterContext) {
-        recordRelationship(
+        recordRelationshipElement(
             element, IndexConstants.IS_READ_WRITTEN_BY, location);
       } else if (inGetterContext) {
-        recordRelationship(element, IndexConstants.IS_READ_BY, location);
+        recordRelationshipElement(element, IndexConstants.IS_READ_BY, location);
       } else if (inSetterContext) {
-        recordRelationship(element, IndexConstants.IS_WRITTEN_BY, location);
+        recordRelationshipElement(
+            element, IndexConstants.IS_WRITTEN_BY, location);
       } else {
-        recordRelationship(element, IndexConstants.IS_REFERENCED_BY, location);
+        recordRelationshipElement(
+            element, IndexConstants.IS_REFERENCED_BY, location);
       }
     }
     _recordImportElementReferenceWithoutPrefix(node);
@@ -529,7 +554,8 @@
       int start = node.superKeyword.end;
       location = _createLocationForOffset(start, 0);
     }
-    recordRelationship(element, IndexConstants.IS_REFERENCED_BY, location);
+    recordRelationshipElement(
+        element, IndexConstants.IS_REFERENCED_BY, location);
     super.visitSuperConstructorInvocation(node);
   }
 
@@ -562,7 +588,8 @@
       SimpleIdentifier name = node.name;
       LocationImpl location = _createLocationForNode(name);
       location = _getLocationWithExpressionType(location, node.initializer);
-      recordRelationship(element, IndexConstants.NAME_IS_DEFINED_BY, location);
+      recordRelationshipElement(
+          element, IndexConstants.NAME_IS_DEFINED_BY, location);
     }
     // visit
     enterScope(element);
@@ -689,7 +716,7 @@
         _libraryElement, null, element, _importElementsMap);
     if (importElement != null) {
       LocationImpl location = _createLocationForOffset(node.offset, 0);
-      recordRelationship(
+      recordRelationshipElement(
           importElement, IndexConstants.IS_REFERENCED_BY, location);
     }
   }
@@ -704,7 +731,7 @@
       int offset = prefixNode.offset;
       int length = info.periodEnd - offset;
       LocationImpl location = _createLocationForOffset(offset, length);
-      recordRelationship(
+      recordRelationshipElement(
           info.element, IndexConstants.IS_REFERENCED_BY, location);
     }
   }
@@ -716,7 +743,7 @@
   void _recordLibraryReference(UriBasedDirective node, LibraryElement library) {
     if (library != null) {
       LocationImpl location = _createLocationForNode(node.uri);
-      recordRelationship(library.definingCompilationUnit,
+      recordRelationshipElement(library.definingCompilationUnit,
           IndexConstants.IS_REFERENCED_BY, location);
     }
   }
@@ -739,12 +766,14 @@
       if (StringUtilities.endsWithChar(name, 0x3D) && name != "==") {
         name = name.substring(0, name.length - 1);
       }
-      Element nameElement = new NameElement(name);
-      recordRelationship(nameElement, IndexConstants.IS_INVOKED_BY, location);
+      IndexableName indexableName = new IndexableName(name);
+      recordRelationshipIndexable(
+          indexableName, IndexConstants.IS_INVOKED_BY, location);
     }
     // record element reference
     if (element != null) {
-      recordRelationship(element, IndexConstants.IS_INVOKED_BY, location);
+      recordRelationshipElement(
+          element, IndexConstants.IS_INVOKED_BY, location);
     }
   }
 
@@ -756,7 +785,7 @@
       Identifier superName = superNode.name;
       if (superName != null) {
         Element superElement = superName.staticElement;
-        recordRelationship(
+        recordRelationshipElement(
             superElement, relationship, _createLocationForNode(superNode));
       }
     }
@@ -771,7 +800,8 @@
       int offset = indexable.offset;
       int length = indexable.length;
       LocationImpl location = new LocationImpl(indexable, offset, length);
-      recordRelationship(_libraryElement, IndexConstants.DEFINES, location);
+      recordRelationshipElement(
+          _libraryElement, IndexConstants.DEFINES, location);
       _store.recordTopLevelDeclaration(element);
     }
   }
diff --git a/pkg/analysis_server/lib/src/services/index/index_store.dart b/pkg/analysis_server/lib/src/services/index/index_store.dart
index 858d0ac..2b8dc22 100644
--- a/pkg/analysis_server/lib/src/services/index/index_store.dart
+++ b/pkg/analysis_server/lib/src/services/index/index_store.dart
@@ -20,48 +20,27 @@
   String get statistics;
 
   /**
-   * Notifies the index store that we are going to index an unit with the given
-   * [unitElement].
-   *
-   * If the unit is a part of a library, then all its locations are removed.
-   *
-   * If it is a defining compilation unit of a library, then index store also
-   * checks if some previously indexed parts of the library are not parts of the
-   * library anymore, and clears their information.
+   * Notifies the index store that we are going to index the given [object].
    *
    * [context] - the [AnalysisContext] in which unit being indexed.
-   * [unitElement] - the element of the unit being indexed.
+   * [object] - the object being indexed.
    *
-   * Returns `true` if the given [unitElement] may be indexed, or `false` if
+   * Returns `true` if the given [object] may be indexed, or `false` if
    * belongs to a disposed [AnalysisContext], is not resolved completely, etc.
    */
-  bool aboutToIndexDart(
-      AnalysisContext context, CompilationUnitElement unitElement);
+  bool aboutToIndex(AnalysisContext context, Object object);
 
   /**
-   * Notifies the index store that we are going to index an unit with the given
-   * [htmlElement].
-   *
-   * [context] - the [AnalysisContext] in which unit being indexed.
-   * [htmlElement] - the [HtmlElement] being indexed.
-   *
-   * Returns `true` if the given [htmlElement] may be indexed, or `false` if
-   * belongs to a disposed [AnalysisContext], is not resolved completely, etc.
-   */
-  bool aboutToIndexHtml(AnalysisContext context, HtmlElement htmlElement);
-
-  /**
-   * Notifies the index store that there was an error during the current Dart
+   * Notifies the index store that there was an error during the current
    * indexing, and all the information recorded after the last
-   * [aboutToIndexDart] invocation must be discarded.
+   * [aboutToIndex] invocation must be discarded.
    */
-  void cancelIndexDart();
+  void cancelIndex();
 
   /**
-   * Notifies the index store that the current Dart or HTML unit indexing is
-   * done.
+   * Notifies the index store that the current object indexing is done.
    *
-   * If this method is not invoked after corresponding "aboutToIndex*"
+   * If this method is not invoked after corresponding [aboutToIndex]
    * invocation, all recorded information may be lost.
    */
   void doneIndex();
diff --git a/pkg/analysis_server/lib/src/services/index/local_index.dart b/pkg/analysis_server/lib/src/services/index/local_index.dart
index 887a003..80f3b18 100644
--- a/pkg/analysis_server/lib/src/services/index/local_index.dart
+++ b/pkg/analysis_server/lib/src/services/index/local_index.dart
@@ -29,7 +29,9 @@
   SplitIndexStore _store;
 
   LocalIndex(NodeManager nodeManager) {
-    _store = new SplitIndexStore(nodeManager);
+    // TODO(scheglov) get IndexObjectManager(s) as a parameter
+    _store = new SplitIndexStore(nodeManager,
+        <IndexObjectManager>[new DartUnitIndexObjectManager()]);
   }
 
   @override
diff --git a/pkg/analysis_server/lib/src/services/index/store/codec.dart b/pkg/analysis_server/lib/src/services/index/store/codec.dart
index 062eae6..36220aa 100644
--- a/pkg/analysis_server/lib/src/services/index/store/codec.dart
+++ b/pkg/analysis_server/lib/src/services/index/store/codec.dart
@@ -84,15 +84,16 @@
     if (kind == null) {
       return null;
     } else if (kind is IndexableNameKind) {
-      return new IndexableElement(new NameElement(_stringCodec.decode(offset)));
+      String name = _stringCodec.decode(offset);
+      return new IndexableName(name);
     }
     return kind.decode(context, filePath, offset);
   }
 
   /**
-   * Returns the first component of the [element] id.
-   * In the most cases it is an encoding of the [element]'s file path.
-   * If the given [element] is not defined in a file, returns `-1`.
+   * Returns the first component of the [indexable] id.
+   * In the most cases it is an encoding of the [indexable]'s file path.
+   * If the given [indexable] is not defined in a file, returns `-1`.
    */
   int encode1(IndexableObject indexable) {
     Source source = indexable.source;
@@ -104,8 +105,8 @@
   }
 
   /**
-   * Returns the second component of the [element] id.
-   * In the most cases it is the [element]'s name offset.
+   * Returns the second component of the [indexable] id.
+   * In the most cases it is the [indexable]'s name offset.
    */
   int encode2(IndexableObject indexable) {
     if (indexable is IndexableName) {
@@ -120,15 +121,15 @@
   }
 
   /**
-   * Returns the third component of the [element] id.
-   * In the most cases it is the [element]'s kind.
+   * Returns the third component of the [indexable] id.
+   * In the most cases it is the [indexable]'s kind.
    */
   int encode3(IndexableObject indexable) {
     return indexable.kind.index;
   }
 
   /**
-   * Returns an integer that corresponds to the name of [element].
+   * Returns an integer that corresponds to the name of [indexable].
    */
   int encodeHash(IndexableObject indexable) {
     // TODO(brianwilkerson) Consider moving this to IndexableObjectKind so that
diff --git a/pkg/analysis_server/lib/src/services/index/store/split_store.dart b/pkg/analysis_server/lib/src/services/index/store/split_store.dart
index 8d94d74..6e3956c 100644
--- a/pkg/analysis_server/lib/src/services/index/store/split_store.dart
+++ b/pkg/analysis_server/lib/src/services/index/store/split_store.dart
@@ -22,6 +22,185 @@
 import 'package:analyzer/src/generated/utilities_general.dart';
 
 /**
+ * The implementation of [IndexObjectManager] for indexing
+ * [CompilationUnitElement]s.
+ */
+class DartUnitIndexObjectManager extends IndexObjectManager {
+  /**
+   * The mapping of library [Source] to the [Source]s of part units.
+   */
+  Map<AnalysisContext, Map<Source, Set<Source>>> _contextToLibraryToUnits =
+      new HashMap<AnalysisContext, Map<Source, Set<Source>>>();
+
+  /**
+   * The mapping of unit [Source] to the [Source]s of libraries it is used in.
+   */
+  Map<AnalysisContext, Map<Source, Set<Source>>> _contextToUnitToLibraries =
+      new HashMap<AnalysisContext, Map<Source, Set<Source>>>();
+
+  @override
+  String aboutToIndex(AnalysisContext context, Object object) {
+    if (object is! CompilationUnitElement) {
+      return null;
+    }
+    CompilationUnitElement unitElement = object;
+    // validate unit
+    if (unitElement == null) {
+      return null;
+    }
+    LibraryElement libraryElement = unitElement.library;
+    if (libraryElement == null) {
+      return null;
+    }
+    CompilationUnitElement definingUnitElement =
+        libraryElement.definingCompilationUnit;
+    if (definingUnitElement == null) {
+      return null;
+    }
+    // prepare sources
+    Source library = definingUnitElement.source;
+    Source unit = unitElement.source;
+    // special handling for the defining library unit
+    if (unit == library) {
+      // prepare new parts
+      HashSet<Source> newParts = new HashSet<Source>();
+      for (CompilationUnitElement part in libraryElement.parts) {
+        newParts.add(part.source);
+      }
+      // prepare old parts
+      Map<Source, Set<Source>> libraryToUnits =
+          _contextToLibraryToUnits[context];
+      if (libraryToUnits == null) {
+        libraryToUnits = new HashMap<Source, Set<Source>>();
+        _contextToLibraryToUnits[context] = libraryToUnits;
+      }
+      Set<Source> oldParts = libraryToUnits[library];
+      // check if some parts are not in the library now
+      if (oldParts != null) {
+        Set<Source> noParts = oldParts.difference(newParts);
+        for (Source noPart in noParts) {
+          String nodeName = _getNodeName(library, noPart);
+          site.removeNodeByName(context, nodeName);
+          site.removeSource(library);
+          site.removeSource(noPart);
+        }
+      }
+      // remember new parts
+      libraryToUnits[library] = newParts;
+    }
+    // remember library/unit relations
+    _recordUnitInLibrary(context, library, unit);
+    _recordLibraryWithUnit(context, library, unit);
+    site.addSource(library);
+    site.addSource(unit);
+    // prepare node
+    String nodeName = _getNodeName(library, unit);
+    return nodeName;
+  }
+
+  @override
+  void removeContext(AnalysisContext context) {
+    _contextToLibraryToUnits.remove(context);
+    _contextToUnitToLibraries.remove(context);
+  }
+
+  @override
+  void removeSource(AnalysisContext context, Source source) {
+    // remove nodes for unit/library pairs
+    Map<Source, Set<Source>> unitToLibraries =
+        _contextToUnitToLibraries[context];
+    if (unitToLibraries != null) {
+      Set<Source> libraries = unitToLibraries.remove(source);
+      if (libraries != null) {
+        for (Source library in libraries) {
+          String nodeName = _getNodeName(library, source);
+          site.removeNodeByName(context, nodeName);
+          site.removeSource(library);
+          site.removeSource(source);
+        }
+      }
+    }
+    // remove nodes for library/unit pairs
+    Map<Source, Set<Source>> libraryToUnits = _contextToLibraryToUnits[context];
+    if (libraryToUnits != null) {
+      Set<Source> units = libraryToUnits.remove(source);
+      if (units != null) {
+        for (Source unit in units) {
+          String nodeName = _getNodeName(source, unit);
+          site.removeNodeByName(context, nodeName);
+          site.removeSource(source);
+          site.removeSource(unit);
+        }
+      }
+    }
+  }
+
+  @override
+  void removeSources(AnalysisContext context, SourceContainer container) {
+    // remove nodes for unit/library pairs
+    Map<Source, Set<Source>> unitToLibraries =
+        _contextToUnitToLibraries[context];
+    if (unitToLibraries != null) {
+      List<Source> units = unitToLibraries.keys.toList();
+      for (Source source in units) {
+        if (container == null || container.contains(source)) {
+          removeSource(context, source);
+        }
+      }
+    }
+    // remove nodes for library/unit pairs
+    Map<Source, Set<Source>> libraryToUnits = _contextToLibraryToUnits[context];
+    if (libraryToUnits != null) {
+      List<Source> libraries = libraryToUnits.keys.toList();
+      for (Source source in libraries) {
+        if (container == null || container.contains(source)) {
+          removeSource(context, source);
+        }
+      }
+    }
+  }
+
+  String _getNodeName(Source library, Source unit) {
+    String libraryName = library != null ? library.fullName : null;
+    String unitName = unit.fullName;
+    int libraryNameIndex = site.encodeString(libraryName);
+    int unitNameIndex = site.encodeString(unitName);
+    return 'DartUnitElement_${libraryNameIndex}_${unitNameIndex}.index';
+  }
+
+  void _recordLibraryWithUnit(
+      AnalysisContext context, Source library, Source unit) {
+    Map<Source, Set<Source>> libraryToUnits = _contextToLibraryToUnits[context];
+    if (libraryToUnits == null) {
+      libraryToUnits = new HashMap<Source, Set<Source>>();
+      _contextToLibraryToUnits[context] = libraryToUnits;
+    }
+    Set<Source> units = libraryToUnits[library];
+    if (units == null) {
+      units = new HashSet<Source>();
+      libraryToUnits[library] = units;
+    }
+    units.add(unit);
+  }
+
+  void _recordUnitInLibrary(
+      AnalysisContext context, Source library, Source unit) {
+    Map<Source, Set<Source>> unitToLibraries =
+        _contextToUnitToLibraries[context];
+    if (unitToLibraries == null) {
+      unitToLibraries = new HashMap<Source, Set<Source>>();
+      _contextToUnitToLibraries[context] = unitToLibraries;
+    }
+    Set<Source> libraries = unitToLibraries[unit];
+    if (libraries == null) {
+      libraries = new HashSet<Source>();
+      unitToLibraries[unit] = libraries;
+    }
+    libraries.add(library);
+  }
+}
+
+/**
  * A manager for files content.
  */
 abstract class FileManager {
@@ -341,6 +520,36 @@
   }
 }
 
+/**
+ * [SplitIndexStore] uses instances of this class to manager index nodes.
+ */
+abstract class IndexObjectManager {
+  SplitIndexStoreSite site;
+
+  /**
+   * Notifies the manager that the given [object] is to be indexed.
+   * Returns the name of the index node to put information into.
+   */
+  String aboutToIndex(AnalysisContext context, Object object);
+
+  /**
+   * Notifies the manager that the given [context] is disposed.
+   */
+  void removeContext(AnalysisContext context);
+
+  /**
+   * Notifies the manager that the given [source] is no longer part of
+   * the given [context].
+   */
+  void removeSource(AnalysisContext context, Source source);
+
+  /**
+   * Notifies the manager that the sources described by the given [container]
+   * are no longer part of the given [context].
+   */
+  void removeSources(AnalysisContext context, SourceContainer container);
+}
+
 class InspectLocation {
   final String nodeName;
   final RelationshipImpl relationship;
@@ -526,9 +735,26 @@
  */
 class SplitIndexStore implements InternalIndexStore {
   /**
+   * The [NodeManager] to get/put [IndexNode]s.
+   */
+  final NodeManager _nodeManager;
+
+  final List<IndexObjectManager> _objectManagers;
+
+  /**
    * The [ContextCodec] to encode/decode [AnalysisContext]s.
    */
-  ContextCodec _contextCodec;
+  final ContextCodec _contextCodec;
+
+  /**
+   * The [ElementCodec] to encode/decode [Element]s.
+   */
+  final ElementCodec _elementCodec;
+
+  /**
+   * The [StringCodec] to encode/decode [String]s.
+   */
+  final StringCodec _stringCodec;
 
   /**
    * Information about top-level elements.
@@ -536,60 +762,35 @@
    *
    * Order of keys: contextId, nodeId.
    */
-  Map<int, Map<int, List<_TopElementData>>> _topDeclarations =
+  final Map<int, Map<int, List<_TopElementData>>> _topDeclarations =
       new Map<int, Map<int, List<_TopElementData>>>();
 
-  /**
-   * The mapping of library [Source] to the [Source]s of part units.
-   */
-  Map<AnalysisContext, Map<Source, Set<Source>>> _contextToLibraryToUnits =
-      new HashMap<AnalysisContext, Map<Source, Set<Source>>>();
-
-  /**
-   * The mapping of unit [Source] to the [Source]s of libraries it is used in.
-   */
-  Map<AnalysisContext, Map<Source, Set<Source>>> _contextToUnitToLibraries =
-      new HashMap<AnalysisContext, Map<Source, Set<Source>>>();
-
-  int _currentContextId = 0;
-
-  IndexNode _currentNode;
-
+  int _currentContextId;
   String _currentNodeName;
-
-  int _currentNodeNameId = 0;
-
-  /**
-   * The [ElementCodec] to encode/decode [Element]s.
-   */
-  ElementCodec _elementCodec;
+  int _currentNodeNameId;
+  IndexNode _currentNode;
 
   /**
    * A table mapping element names to the node names that may have relations with elements with
    * these names.
    */
-  Map<RelationshipImpl, IntToIntSetMap> _relToNameMap =
+  final Map<RelationshipImpl, IntToIntSetMap> _relToNameMap =
       new HashMap<RelationshipImpl, IntToIntSetMap>();
 
   /**
-   * The [NodeManager] to get/put [IndexNode]s.
-   */
-  final NodeManager _nodeManager;
-
-  /**
    * The set of known [Source]s.
    */
-  Set<Source> _sources = new HashSet<Source>();
+  final Set<Source> _sources = new HashSet<Source>();
 
-  /**
-   * The [StringCodec] to encode/decode [String]s.
-   */
-  StringCodec _stringCodec;
-
-  SplitIndexStore(this._nodeManager) {
-    this._contextCodec = _nodeManager.contextCodec;
-    this._elementCodec = _nodeManager.elementCodec;
-    this._stringCodec = _nodeManager.stringCodec;
+  SplitIndexStore(NodeManager _nodeManager, this._objectManagers)
+      : _nodeManager = _nodeManager,
+        _contextCodec = _nodeManager.contextCodec,
+        _elementCodec = _nodeManager.elementCodec,
+        _stringCodec = _nodeManager.stringCodec {
+    SplitIndexStoreSiteImpl site = new SplitIndexStoreSiteImpl(this);
+    for (IndexObjectManager manager in _objectManagers) {
+      manager.site = site;
+    }
   }
 
   @override
@@ -608,64 +809,22 @@
   }
 
   @override
-  bool aboutToIndexDart(
-      AnalysisContext context, CompilationUnitElement unitElement) {
-    // may be already disposed in other thread
+  bool aboutToIndex(AnalysisContext context, Object object) {
     if (context.isDisposed) {
       return false;
     }
-    // validate unit
-    if (unitElement == null) {
+    // try to find a node name
+    _currentNodeName = null;
+    for (IndexObjectManager manager in _objectManagers) {
+      _currentNodeName = manager.aboutToIndex(context, object);
+      if (_currentNodeName != null) {
+        break;
+      }
+    }
+    if (_currentNodeName == null) {
       return false;
     }
-    LibraryElement libraryElement = unitElement.library;
-    if (libraryElement == null) {
-      return false;
-    }
-    CompilationUnitElement definingUnitElement =
-        libraryElement.definingCompilationUnit;
-    if (definingUnitElement == null) {
-      return false;
-    }
-    // prepare sources
-    Source library = definingUnitElement.source;
-    Source unit = unitElement.source;
-    // special handling for the defining library unit
-    if (unit == library) {
-      // prepare new parts
-      HashSet<Source> newParts = new HashSet<Source>();
-      for (CompilationUnitElement part in libraryElement.parts) {
-        newParts.add(part.source);
-      }
-      // prepare old parts
-      Map<Source, Set<Source>> libraryToUnits =
-          _contextToLibraryToUnits[context];
-      if (libraryToUnits == null) {
-        libraryToUnits = new HashMap<Source, Set<Source>>();
-        _contextToLibraryToUnits[context] = libraryToUnits;
-      }
-      Set<Source> oldParts = libraryToUnits[library];
-      // check if some parts are not in the library now
-      if (oldParts != null) {
-        Set<Source> noParts = oldParts.difference(newParts);
-        for (Source noPart in noParts) {
-          _removeLocations(context, library, noPart);
-        }
-      }
-      // remember new parts
-      libraryToUnits[library] = newParts;
-    }
-    // remember library/unit relations
-    _recordUnitInLibrary(context, library, unit);
-    _recordLibraryWithUnit(context, library, unit);
-    _sources.add(library);
-    _sources.add(unit);
     // prepare node
-    String libraryName = library.fullName;
-    String unitName = unit.fullName;
-    int libraryNameIndex = _stringCodec.encode(libraryName);
-    int unitNameIndex = _stringCodec.encode(unitName);
-    _currentNodeName = '${libraryNameIndex}_${unitNameIndex}.index';
     _currentNodeNameId = _stringCodec.encode(_currentNodeName);
     _currentNode = _nodeManager.newNode(context);
     _currentContextId = _contextCodec.encode(context);
@@ -678,27 +837,7 @@
   }
 
   @override
-  bool aboutToIndexHtml(AnalysisContext context, HtmlElement htmlElement) {
-    // may be already disposed in other thread
-    if (context.isDisposed) {
-      return false;
-    }
-    // remove locations
-    Source source = htmlElement.source;
-    _removeLocations(context, null, source);
-    // remember library/unit relations
-    _recordUnitInLibrary(context, null, source);
-    // prepare node
-    String sourceName = source.fullName;
-    int sourceNameIndex = _stringCodec.encode(sourceName);
-    _currentNodeName = '${sourceNameIndex}.index';
-    _currentNodeNameId = _stringCodec.encode(_currentNodeName);
-    _currentNode = _nodeManager.newNode(context);
-    return true;
-  }
-
-  @override
-  void cancelIndexDart() {
+  void cancelIndex() {
     if (_currentNode != null) {
       // remove top-level information for the current node
       for (Map<int, dynamic> nodeRelations in _topDeclarations.values) {
@@ -875,8 +1014,9 @@
     // remove sources
     removeSources(context, null);
     // remove context information
-    _contextToLibraryToUnits.remove(context);
-    _contextToUnitToLibraries.remove(context);
+    for (IndexObjectManager manager in _objectManagers) {
+      manager.removeContext(context);
+    }
     _topDeclarations.remove(_contextCodec.encode(context));
     // remove context from codec
     _contextCodec.remove(context);
@@ -887,26 +1027,8 @@
     if (context == null) {
       return;
     }
-    // remove nodes for unit/library pairs
-    Map<Source, Set<Source>> unitToLibraries =
-        _contextToUnitToLibraries[context];
-    if (unitToLibraries != null) {
-      Set<Source> libraries = unitToLibraries.remove(source);
-      if (libraries != null) {
-        for (Source library in libraries) {
-          _removeLocations(context, library, source);
-        }
-      }
-    }
-    // remove nodes for library/unit pairs
-    Map<Source, Set<Source>> libraryToUnits = _contextToLibraryToUnits[context];
-    if (libraryToUnits != null) {
-      Set<Source> units = libraryToUnits.remove(source);
-      if (units != null) {
-        for (Source unit in units) {
-          _removeLocations(context, source, unit);
-        }
-      }
+    for (IndexObjectManager manager in _objectManagers) {
+      manager.removeSource(context, source);
     }
   }
 
@@ -915,42 +1037,9 @@
     if (context == null) {
       return;
     }
-    // remove nodes for unit/library pairs
-    Map<Source, Set<Source>> unitToLibraries =
-        _contextToUnitToLibraries[context];
-    if (unitToLibraries != null) {
-      List<Source> units = new List<Source>.from(unitToLibraries.keys);
-      for (Source source in units) {
-        if (container == null || container.contains(source)) {
-          removeSource(context, source);
-        }
-      }
+    for (IndexObjectManager manager in _objectManagers) {
+      manager.removeSources(context, container);
     }
-    // remove nodes for library/unit pairs
-    Map<Source, Set<Source>> libraryToUnits = _contextToLibraryToUnits[context];
-    if (libraryToUnits != null) {
-      List<Source> libraries = new List<Source>.from(libraryToUnits.keys);
-      for (Source source in libraries) {
-        if (container == null || container.contains(source)) {
-          removeSource(context, source);
-        }
-      }
-    }
-  }
-
-  void _recordLibraryWithUnit(
-      AnalysisContext context, Source library, Source unit) {
-    Map<Source, Set<Source>> libraryToUnits = _contextToLibraryToUnits[context];
-    if (libraryToUnits == null) {
-      libraryToUnits = new HashMap<Source, Set<Source>>();
-      _contextToLibraryToUnits[context] = libraryToUnits;
-    }
-    Set<Source> units = libraryToUnits[library];
-    if (units == null) {
-      units = new HashSet<Source>();
-      libraryToUnits[library] = units;
-    }
-    units.add(unit);
   }
 
   void _recordNodeNameForElement(
@@ -964,37 +1053,9 @@
     nameToNodeNames.add(nameId, _currentNodeNameId);
   }
 
-  void _recordUnitInLibrary(
-      AnalysisContext context, Source library, Source unit) {
-    Map<Source, Set<Source>> unitToLibraries =
-        _contextToUnitToLibraries[context];
-    if (unitToLibraries == null) {
-      unitToLibraries = new HashMap<Source, Set<Source>>();
-      _contextToUnitToLibraries[context] = unitToLibraries;
-    }
-    Set<Source> libraries = unitToLibraries[unit];
-    if (libraries == null) {
-      libraries = new HashSet<Source>();
-      unitToLibraries[unit] = libraries;
-    }
-    libraries.add(library);
-  }
-
-  /**
-   * Removes locations recorded in the given library/unit pair.
-   */
-  void _removeLocations(AnalysisContext context, Source library, Source unit) {
-    // remove node
-    String libraryName = library != null ? library.fullName : null;
-    String unitName = unit.fullName;
-    int libraryNameIndex = _stringCodec.encode(libraryName);
-    int unitNameIndex = _stringCodec.encode(unitName);
-    String nodeName = '${libraryNameIndex}_${unitNameIndex}.index';
+  void _removeNodeByName(AnalysisContext context, String nodeName) {
     int nodeNameId = _stringCodec.encode(nodeName);
     _nodeManager.removeNode(nodeName);
-    // remove source
-    _sources.remove(library);
-    _sources.remove(unit);
     // remove top-level relations
     {
       int contextId = _contextCodec.encode(context);
@@ -1006,6 +1067,45 @@
   }
 }
 
+/**
+ * Interface to [SplitIndexStore] for [IndexObjectManager] implementations.
+ */
+abstract class SplitIndexStoreSite {
+  void addSource(Source source);
+  int encodeString(String str);
+  void removeNodeByName(AnalysisContext context, String nodeName);
+  void removeSource(Source source);
+}
+
+/**
+ * The implementaiton of [SplitIndexStoreSite].
+ */
+class SplitIndexStoreSiteImpl implements SplitIndexStoreSite {
+  final SplitIndexStore store;
+
+  SplitIndexStoreSiteImpl(this.store);
+
+  @override
+  void addSource(Source source) {
+    store._sources.add(source);
+  }
+
+  @override
+  int encodeString(String str) {
+    return store._stringCodec.encode(str);
+  }
+
+  @override
+  void removeNodeByName(AnalysisContext context, String nodeName) {
+    store._removeNodeByName(context, nodeName);
+  }
+
+  @override
+  void removeSource(Source source) {
+    store._sources.remove(source);
+  }
+}
+
 class _DataInputStream {
   ByteData _byteData;
   int _byteOffset = 0;
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine.dart b/pkg/analysis_server/lib/src/services/search/search_engine.dart
index e754d9f..60391ff 100644
--- a/pkg/analysis_server/lib/src/services/search/search_engine.dart
+++ b/pkg/analysis_server/lib/src/services/search/search_engine.dart
@@ -99,7 +99,7 @@
   /**
    * Returns subtypes of the given [type].
    *
-   * [type] - the [ClassElemnet] being subtyped by the found matches.
+   * [type] - the [ClassElement] being subtyped by the found matches.
    */
   Future<List<SearchMatch>> searchSubtypes(ClassElement type);
 
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
index 6126e14..6efd7d0 100644
--- a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
+++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
@@ -24,10 +24,10 @@
 
   @override
   Future<List<SearchMatch>> searchElementDeclarations(String name) {
-    NameElement element = new NameElement(name);
+    IndexableName indexableName = new IndexableName(name);
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(
-        element, IndexConstants.NAME_IS_DEFINED_BY, MatchKind.DECLARATION);
+    requestor.add(indexableName, IndexConstants.NAME_IS_DEFINED_BY,
+        MatchKind.DECLARATION);
     return requestor.merge();
   }
 
@@ -42,13 +42,14 @@
 
   @override
   Future<List<SearchMatch>> searchMemberReferences(String name) {
-    NameElement element = new NameElement(name);
+    IndexableName indexableName = new IndexableName(name);
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(element, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
-    requestor.add(element, IndexConstants.IS_READ_BY, MatchKind.READ);
     requestor.add(
-        element, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
-    requestor.add(element, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
+        indexableName, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
+    requestor.add(indexableName, IndexConstants.IS_READ_BY, MatchKind.READ);
+    requestor.add(
+        indexableName, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
+    requestor.add(indexableName, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
     return requestor.merge();
   }
 
@@ -93,9 +94,12 @@
   @override
   Future<List<SearchMatch>> searchSubtypes(ClassElement type) {
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(type, IndexConstants.IS_EXTENDED_BY, MatchKind.REFERENCE);
-    requestor.add(type, IndexConstants.IS_MIXED_IN_BY, MatchKind.REFERENCE);
-    requestor.add(type, IndexConstants.IS_IMPLEMENTED_BY, MatchKind.REFERENCE);
+    requestor.addElement(
+        type, IndexConstants.IS_EXTENDED_BY, MatchKind.REFERENCE);
+    requestor.addElement(
+        type, IndexConstants.IS_MIXED_IN_BY, MatchKind.REFERENCE);
+    requestor.addElement(
+        type, IndexConstants.IS_IMPLEMENTED_BY, MatchKind.REFERENCE);
     return requestor.merge();
   }
 
@@ -114,7 +118,7 @@
 
   Future<List<SearchMatch>> _searchReferences(Element element) {
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(
+    requestor.addElement(
         element, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
     return requestor.merge();
   }
@@ -122,7 +126,7 @@
   Future<List<SearchMatch>> _searchReferences_Constructor(
       ConstructorElement constructor) {
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(
+    requestor.addElement(
         constructor, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
     return requestor.merge();
   }
@@ -133,16 +137,20 @@
     PropertyAccessorElement setter = field.setter;
     _Requestor requestor = new _Requestor(_index);
     // field itself
-    requestor.add(field, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
-    requestor.add(field, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
+    requestor.addElement(
+        field, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
+    requestor.addElement(field, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
     // getter
     if (getter != null) {
-      requestor.add(getter, IndexConstants.IS_REFERENCED_BY, MatchKind.READ);
-      requestor.add(getter, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
+      requestor.addElement(
+          getter, IndexConstants.IS_REFERENCED_BY, MatchKind.READ);
+      requestor.addElement(
+          getter, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
     }
     // setter
     if (setter != null) {
-      requestor.add(setter, IndexConstants.IS_REFERENCED_BY, MatchKind.WRITE);
+      requestor.addElement(
+          setter, IndexConstants.IS_REFERENCED_BY, MatchKind.WRITE);
     }
     // done
     return requestor.merge();
@@ -151,20 +159,23 @@
   Future<List<SearchMatch>> _searchReferences_Function(
       FunctionElement function) {
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(
+    requestor.addElement(
         function, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
-    requestor.add(function, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
+    requestor.addElement(
+        function, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
     return requestor.merge();
   }
 
   Future<List<SearchMatch>> _searchReferences_LocalVariable(
       LocalVariableElement variable) {
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(variable, IndexConstants.IS_READ_BY, MatchKind.READ);
-    requestor.add(
+    requestor.addElement(variable, IndexConstants.IS_READ_BY, MatchKind.READ);
+    requestor.addElement(
         variable, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
-    requestor.add(variable, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
-    requestor.add(variable, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
+    requestor.addElement(
+        variable, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
+    requestor.addElement(
+        variable, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
     return requestor.merge();
   }
 
@@ -173,21 +184,24 @@
     if (method is MethodMember) {
       method = (method as MethodMember).baseElement;
     }
-    requestor.add(method, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
-    requestor.add(method, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
+    requestor.addElement(
+        method, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
+    requestor.addElement(
+        method, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
     return requestor.merge();
   }
 
   Future<List<SearchMatch>> _searchReferences_Parameter(
       ParameterElement parameter) {
     _Requestor requestor = new _Requestor(_index);
-    requestor.add(parameter, IndexConstants.IS_READ_BY, MatchKind.READ);
-    requestor.add(
+    requestor.addElement(parameter, IndexConstants.IS_READ_BY, MatchKind.READ);
+    requestor.addElement(
         parameter, IndexConstants.IS_READ_WRITTEN_BY, MatchKind.READ_WRITE);
-    requestor.add(parameter, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
-    requestor.add(
+    requestor.addElement(
+        parameter, IndexConstants.IS_WRITTEN_BY, MatchKind.WRITE);
+    requestor.addElement(
         parameter, IndexConstants.IS_REFERENCED_BY, MatchKind.REFERENCE);
-    requestor.add(
+    requestor.addElement(
         parameter, IndexConstants.IS_INVOKED_BY, MatchKind.INVOCATION);
     return requestor.merge();
   }
@@ -199,9 +213,9 @@
 
   _Requestor(this.index);
 
-  void add(Element element, RelationshipImpl relationship, MatchKind kind) {
-    Future relationsFuture =
-        index.getRelationships(new IndexableElement(element), relationship);
+  void add(IndexableObject indexable, RelationshipImpl relationship,
+      MatchKind kind) {
+    Future relationsFuture = index.getRelationships(indexable, relationship);
     Future matchesFuture = relationsFuture.then((List<LocationImpl> locations) {
       List<SearchMatch> matches = <SearchMatch>[];
       for (LocationImpl location in locations) {
@@ -220,6 +234,12 @@
     futures.add(matchesFuture);
   }
 
+  void addElement(
+      Element element, RelationshipImpl relationship, MatchKind kind) {
+    IndexableElement indexable = new IndexableElement(element);
+    add(indexable, relationship, kind);
+  }
+
   Future<List<SearchMatch>> merge() {
     return Future.wait(futures).then((List<List<SearchMatch>> matchesList) {
       return matchesList.expand((matches) => matches).toList();
diff --git a/pkg/analysis_server/lib/src/status/get_handler.dart b/pkg/analysis_server/lib/src/status/get_handler.dart
index 6a49946..9f9dda4 100644
--- a/pkg/analysis_server/lib/src/status/get_handler.dart
+++ b/pkg/analysis_server/lib/src/status/get_handler.dart
@@ -495,6 +495,7 @@
     _writeResponse(request, (StringBuffer buffer) {
       _writePage(buffer, 'Analysis Server - Cache Entry',
           ['Context: $contextFilter', 'File: $sourceUri'], (HttpResponse) {
+        List<CacheEntry> entries = entryMap[folder];
         buffer.write('<h3>Analyzing Contexts</h3><p>');
         bool first = true;
         allContexts.forEach((Folder folder) {
@@ -516,7 +517,11 @@
                 },
                 HTML_ESCAPE.convert(folder.path)));
           }
-          if (entryMap[folder][0].explicitlyAdded) {
+          CacheEntry sourceEntry =
+              entries.firstWhere((CacheEntry entry) => entry.target is Source);
+          if (sourceEntry == null) {
+            buffer.write(' (missing source entry)');
+          } else if (sourceEntry.explicitlyAdded) {
             buffer.write(' (explicit)');
           } else {
             buffer.write(' (implicit)');
@@ -524,7 +529,6 @@
         });
         buffer.write('</p>');
 
-        List<CacheEntry> entries = entryMap[folder];
         if (entries == null) {
           buffer.write('<p>Not being analyzed in this context.</p>');
           return;
@@ -544,7 +548,7 @@
           buffer.write('<dl>');
           buffer.write('<dt>time</dt><dd>');
           buffer.write(entry.modificationTime);
-          buffer.write('</dd></dl>');
+          buffer.write('</dd>');
           for (ResultDescriptor result in results) {
             ResultData data = entry.getResultData(result);
             String descriptorName = HTML_ESCAPE.convert(result.toString());
@@ -560,7 +564,7 @@
           if (entry.exception != null) {
             buffer.write('<dt>exception</dt><dd>');
             _writeException(buffer, entry.exception);
-            buffer.write('</dd></dl>');
+            buffer.write('</dd>');
           }
           buffer.write('</dl>');
         }
@@ -757,12 +761,12 @@
         .map((Source source) => source.fullName)
         .toList();
     MapIterator<AnalysisTarget, CacheEntry> iterator =
-        context.analysisCache.iterator();
+        context.analysisCache.iterator(context: context);
     while (iterator.moveNext()) {
-      Source source = iterator.key.source;
-      if (source != null) {
+      AnalysisTarget target = iterator.key;
+      if (target is Source) {
         CacheEntry entry = iterator.value;
-        String sourceName = source.fullName;
+        String sourceName = target.fullName;
         if (!links.containsKey(sourceName)) {
           CaughtException exception = entry.exception;
           if (exception != null) {
@@ -772,7 +776,7 @@
               CACHE_ENTRY_PATH,
               {
                 CONTEXT_QUERY_PARAM: folder.path,
-                SOURCE_QUERY_PARAM: source.uri.toString()
+                SOURCE_QUERY_PARAM: target.uri.toString()
               },
               sourceName,
               exception != null);
@@ -799,7 +803,7 @@
       if (fileNames == null || fileNames.isEmpty) {
         buffer.write('<p>None</p>');
       } else {
-        buffer.write('<table style="width: 100%">');
+        buffer.write('<p><table style="width: 100%">');
         for (String fileName in fileNames) {
           buffer.write('<tr><td>');
           buffer.write(links[fileName]);
@@ -810,7 +814,7 @@
           }
           buffer.write('</td></tr>');
         }
-        buffer.write('</table>');
+        buffer.write('</table></p>');
       }
     }
 
@@ -818,27 +822,6 @@
       _writePage(
           buffer, 'Analysis Server - Context', ['Context: $contextFilter'],
           (StringBuffer buffer) {
-        List headerRowText = ['Context'];
-        headerRowText.addAll(CacheState.values);
-        buffer.write('<h3>Summary</h3>');
-        buffer.write('<table>');
-        _writeRow(buffer, headerRowText, header: true);
-        AnalysisContextStatistics statistics = context.statistics;
-        statistics.cacheRows.forEach((AnalysisContextStatistics_CacheRow row) {
-          List rowText = [row.name];
-          for (CacheState state in CacheState.values) {
-            String text = row.getCount(state).toString();
-            Map<String, String> params = <String, String>{
-              STATE_QUERY_PARAM: state.toString(),
-              CONTEXT_QUERY_PARAM: folder.path,
-              DESCRIPTOR_QUERY_PARAM: row.name
-            };
-            rowText.add(makeLink(CACHE_STATE_PATH, params, text));
-          }
-          _writeRow(buffer, rowText, classes: [null, "right"]);
-        });
-        buffer.write('</table>');
-
         _writeFiles(buffer, 'Priority Files', priorityNames);
         _writeFiles(buffer, 'Explicitly Analyzed Files', explicitNames);
         _writeFiles(buffer, 'Implicitly Analyzed Files', implicitNames);
@@ -1101,6 +1084,7 @@
         buffer.write(makeLink(CONTEXT_PATH, {CONTEXT_QUERY_PARAM: folder.path},
             key, _hasException(folderMap[folder])));
       });
+      // TODO(brianwilkerson) Add items for the SDK contexts (currently only one).
       buffer.write('</p>');
 
       buffer.write('<p><b>Options</b></p>');
@@ -1394,9 +1378,9 @@
    */
   void _writePluginStatus(StringBuffer buffer) {
     void writePlugin(Plugin plugin) {
-      buffer.write(_server.serverPlugin.uniqueIdentifier);
+      buffer.write(plugin.uniqueIdentifier);
       buffer.write(' (');
-      buffer.write(_server.serverPlugin.runtimeType);
+      buffer.write(plugin.runtimeType);
       buffer.write(')<br>');
     }
     buffer.write('<h3>Plugin Status</h3><p>');
diff --git a/pkg/analysis_server/test/analysis/notification_highlights_test2.dart b/pkg/analysis_server/test/analysis/notification_highlights_test2.dart
index 002bb1b..5f3b79b 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights_test2.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights_test2.dart
@@ -731,6 +731,19 @@
     });
   }
 
+  test_INSTANCE_FIELD_dynamic() {
+    addTestFile('''
+class A {
+  var f;
+  A(this.f);
+}
+''');
+    return prepareHighlights().then((_) {
+      assertHasRegion(HighlightRegionType.INSTANCE_FIELD_DECLARATION, 'f;');
+      assertHasRegion(HighlightRegionType.INSTANCE_FIELD_REFERENCE, 'f);');
+    });
+  }
+
   test_KEYWORD() {
     addTestFile('''
 main() {
@@ -821,6 +834,25 @@
     });
   }
 
+  test_LIBRARY_NAME_libraryDirective() {
+    addTestFile('''
+library my.lib.name;
+''');
+    return prepareHighlights().then((_) {
+      assertHasStringRegion(HighlightRegionType.LIBRARY_NAME, 'my.lib.name');
+    });
+  }
+
+  test_LIBRARY_NAME_partOfDirective() {
+    _addLibraryForTestPart();
+    addTestFile('''
+part of my.lib.name;
+''');
+    return prepareHighlights().then((_) {
+      assertHasStringRegion(HighlightRegionType.LIBRARY_NAME, 'my.lib.name');
+    });
+  }
+
   test_LITERAL_BOOLEAN() {
     addTestFile('var V = true;');
     return prepareHighlights().then((_) {
@@ -1062,6 +1094,58 @@
     });
   }
 
+  test_UNRESOLVED_INSTANCE_MEMBER_REFERENCE_dynamicVarTarget() {
+    addTestFile('''
+main(p) {
+  p.aaa;
+  p.aaa++;
+  p.aaa += 0;
+  ++p.aaa; // ++
+  p.aaa = 0;
+  p.bbb(0);
+  ''.length.ccc().ddd();
+}
+''');
+    return prepareHighlights().then((_) {
+      HighlightRegionType type =
+          HighlightRegionType.UNRESOLVED_INSTANCE_MEMBER_REFERENCE;
+      assertHasRegion(type, 'aaa');
+      assertHasRegion(type, 'aaa++');
+      assertHasRegion(type, 'aaa += 0');
+      assertHasRegion(type, 'aaa; // ++');
+      assertHasRegion(type, 'aaa =');
+      assertHasRegion(type, 'bbb(');
+      assertHasRegion(type, 'ddd()');
+    });
+  }
+
+  test_UNRESOLVED_INSTANCE_MEMBER_REFERENCE_nonDynamicTarget() {
+    addTestFile('''
+import 'dart:math' as math;
+main(String str) {
+  new Object().aaa();
+  math.bbb();
+  str.ccc();
+}
+class A {
+  m() {
+    unresolved(1);
+    this.unresolved(2);
+    super.unresolved(3);
+  }
+}
+''');
+    return prepareHighlights().then((_) {
+      HighlightRegionType type = HighlightRegionType.IDENTIFIER_DEFAULT;
+      assertHasRegion(type, 'aaa()');
+      assertHasRegion(type, 'bbb()');
+      assertHasRegion(type, 'ccc()');
+      assertHasRegion(type, 'unresolved(1)');
+      assertHasRegion(type, 'unresolved(2)');
+      assertHasRegion(type, 'unresolved(3)');
+    });
+  }
+
   void _addLibraryForTestPart() {
     addFile(
         '$testFolder/my_lib.dart',
diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart
index 3c3306e..1202ef3 100644
--- a/pkg/analysis_server/test/domain_completion_test.dart
+++ b/pkg/analysis_server/test/domain_completion_test.dart
@@ -8,6 +8,7 @@
 
 import 'package:analysis_server/completion/completion_core.dart'
     show CompletionRequest, CompletionResult;
+import 'package:analysis_server/completion/completion_dart.dart' as newApi;
 import 'package:analysis_server/src/analysis_server.dart';
 import 'package:analysis_server/src/channel/channel.dart';
 import 'package:analysis_server/src/constants.dart';
@@ -17,6 +18,7 @@
 import 'package:analysis_server/src/plugin/server_plugin.dart';
 import 'package:analysis_server/src/protocol.dart';
 import 'package:analysis_server/src/services/completion/completion_manager.dart';
+import 'package:analysis_server/src/services/completion/contribution_sorter.dart';
 import 'package:analysis_server/src/services/completion/dart_completion_manager.dart';
 import 'package:analysis_server/src/services/index/index.dart' show Index;
 import 'package:analysis_server/src/services/index/local_memory_index.dart';
@@ -470,6 +472,29 @@
     });
   }
 
+  test_invocation_sdk_relevancy_off() {
+    var originalSorter = DartCompletionManager.defaultContributionSorter;
+    var mockSorter = new MockRelevancySorter();
+    DartCompletionManager.defaultContributionSorter = 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.defaultContributionSorter = 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((_) {
@@ -690,6 +715,18 @@
   noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
 }
 
+class MockRelevancySorter implements ContributionSorter {
+  bool enabled = true;
+
+  @override
+  void sort(newApi.DartCompletionRequest request,
+      List<CompletionSuggestion> suggestions) {
+    if (!enabled) {
+      throw 'unexpected sort';
+    }
+  }
+}
+
 /**
  * Mock stream for tracking calls to listen and subscription.cancel.
  */
diff --git a/pkg/analysis_server/test/mock_sdk.dart b/pkg/analysis_server/test/mock_sdk.dart
index 6d41c97..99be8fc 100644
--- a/pkg/analysis_server/test/mock_sdk.dart
+++ b/pkg/analysis_server/test/mock_sdk.dart
@@ -97,6 +97,7 @@
 }
 
 abstract class Map<K, V> extends Object {
+  bool containsKey(Object key);
   Iterable<K> get keys;
 }
 
diff --git a/pkg/analysis_server/test/services/completion/completion_target_test.dart b/pkg/analysis_server/test/services/completion/completion_target_test.dart
index 35bd5da..6d0e52f 100644
--- a/pkg/analysis_server/test/services/completion/completion_target_test.dart
+++ b/pkg/analysis_server/test/services/completion/completion_target_test.dart
@@ -4,7 +4,7 @@
 
 library test.services.completion.target;
 
-import 'package:analysis_server/src/services/completion/completion_target.dart';
+import 'package:analysis_server/completion/dart/completion_target.dart';
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart
index 2e357d6..7cfdffd 100644
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart
@@ -12,7 +12,7 @@
 import 'package:analysis_server/src/protocol.dart' hide Element, ElementKind;
 import 'package:analysis_server/src/services/completion/common_usage_computer.dart';
 import 'package:analysis_server/src/services/completion/completion_manager.dart';
-import 'package:analysis_server/src/services/completion/completion_target.dart';
+import 'package:analysis_server/completion/dart/completion_target.dart';
 import 'package:analysis_server/src/services/completion/dart_completion_cache.dart';
 import 'package:analysis_server/src/services/completion/dart_completion_manager.dart';
 import 'package:analysis_server/src/services/completion/imported_reference_contributor.dart';
diff --git a/pkg/analysis_server/test/services/completion/inherited_computer_test.dart b/pkg/analysis_server/test/services/completion/inherited_computer_test.dart
new file mode 100644
index 0000000..530b88a
--- /dev/null
+++ b/pkg/analysis_server/test/services/completion/inherited_computer_test.dart
@@ -0,0 +1,75 @@
+// 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 test.services.completion.inherited_computer_test;
+
+import 'package:analysis_server/src/protocol.dart';
+import 'package:analysis_server/src/services/completion/dart_completion_manager.dart';
+import 'package:analysis_server/src/services/completion/inherited_contributor.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+import 'package:unittest/src/matcher/core_matchers.dart';
+import 'package:unittest/unittest.dart';
+
+import '../../utils.dart';
+import 'completion_test_util.dart';
+
+main() {
+  initializeTestEnvironment();
+//  defineReflectiveTests(InheritedContributorTest);
+}
+
+@reflectiveTest
+class InheritedContributorTest extends AbstractCompletionTest {
+  @override
+  void setUpContributor() {
+    contributor = new NewCompletionWrapper(new InheritedContributor());
+  }
+
+  test_fromMultipleSuperclasses() {
+    addTestSource(r'''
+class A {
+  notSuggested() => null;
+  A suggested1(int x) => null;
+  B suggested2(String y) => null;
+}
+class B extends A {
+  B suggested2(String y) => null;
+  C suggested3([String z]) => null;
+}
+class C extends B {
+  sugg^
+}
+''');
+    computeFast();
+    return computeFull((bool result) {
+      _assertOverride(
+          '@override\n  A suggested1(int x) {\n    // TODO: implement suggested1\n    return null;\n  }');
+      _assertOverride(
+          '''@override\n  B suggested2(String y) {\n    // TODO: implement suggested2\n    return null;\n  }''');
+      _assertOverride(
+          '''@override\n  C suggested3([String z]) {\n    // TODO: implement suggested3\n    return null;\n  }''');
+      assertNotSuggested(
+          '''@override\n  notSuggested() {\n    // TODO: implement notSuggested\n    return null;\n  }''');
+    });
+  }
+
+  CompletionSuggestion _assertOverride(String completion) {
+    CompletionSuggestion cs = getSuggest(
+        completion: completion,
+        csKind: CompletionSuggestionKind.IDENTIFIER,
+        elemKind: null);
+    if (cs == null) {
+      failedCompletion('expected $completion', request.suggestions);
+    }
+    expect(cs.kind, equals(CompletionSuggestionKind.IDENTIFIER));
+    expect(cs.relevance, equals(DART_RELEVANCE_HIGH));
+    expect(cs.importUri, null);
+//    expect(cs.selectionOffset, equals(completion.length));
+    expect(cs.selectionLength, equals(0));
+    expect(cs.isDeprecated, isFalse);
+    expect(cs.isPotential, isFalse);
+    expect(cs.element, isNotNull);
+    return cs;
+  }
+}
diff --git a/pkg/analysis_server/test/services/completion/optype_test.dart b/pkg/analysis_server/test/services/completion/optype_test.dart
index efd355e..e2c654c 100644
--- a/pkg/analysis_server/test/services/completion/optype_test.dart
+++ b/pkg/analysis_server/test/services/completion/optype_test.dart
@@ -4,7 +4,7 @@
 
 library test.services.completion.contributor.dart.optype;
 
-import 'package:analysis_server/src/services/completion/completion_target.dart';
+import 'package:analysis_server/completion/dart/completion_target.dart';
 import 'package:analysis_server/src/services/completion/optype.dart';
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/engine.dart';
diff --git a/pkg/analysis_server/test/services/completion/test_all.dart b/pkg/analysis_server/test/services/completion/test_all.dart
index 34d49c2..69735da 100644
--- a/pkg/analysis_server/test/services/completion/test_all.dart
+++ b/pkg/analysis_server/test/services/completion/test_all.dart
@@ -14,6 +14,7 @@
 import 'completion_manager_test.dart' as completion_manager_test;
 import 'completion_target_test.dart' as completion_target_test;
 import 'imported_reference_contributor_test.dart' as imported_test;
+import 'inherited_computer_test.dart' as inherited_computer_test;
 import 'keyword_contributor_test.dart' as keyword_test;
 import 'local_declaration_visitor_test.dart' as local_declaration_visitor_test;
 import 'local_reference_contributor_test.dart'
@@ -33,6 +34,7 @@
     completion_manager_test.main();
     completion_target_test.main();
     imported_test.main();
+    inherited_computer_test.main();
     invocation_test.main();
     keyword_test.main();
     local_declaration_visitor_test.main();
diff --git a/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart b/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
index da11c93..022a7c9 100644
--- a/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
+++ b/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
@@ -69,7 +69,7 @@
 
   void setUp() {
     super.setUp();
-    when(store.aboutToIndexDart(context, anyObject)).thenReturn(true);
+    when(store.aboutToIndex(context, anyObject)).thenReturn(true);
     when(store.recordRelationship(anyObject, anyObject, anyObject)).thenInvoke(
         (IndexableObject indexable, RelationshipImpl relationship,
             LocationImpl location) {
@@ -155,32 +155,185 @@
         IndexConstants.IS_READ_BY, _expectedLocation(mainElement, 'v in []'));
   }
 
-  void test_isDefinedBy_NameElement_method() {
+  void test_IndexableName_field() {
+    _indexTestUnit('''
+class A {
+  int field;
+}
+main(A a, p) {
+  print(a.field); // r
+  print(p.field); // ur
+  {
+    var field = 42;
+    print(field); // not a member
+  }
+}
+''');
+    // prepare elements
+    Element mainElement = findElement('main');
+    FieldElement fieldElement = findElement('field');
+    IndexableName indexable = new IndexableName('field');
+    // verify
+    _assertRecordedRelation(indexable, IndexConstants.NAME_IS_DEFINED_BY,
+        _expectedLocation(fieldElement, 'field;'));
+    _assertRecordedRelation(indexable, IndexConstants.IS_READ_BY,
+        _expectedLocationQ(mainElement, 'field); // r'));
+    _assertRecordedRelation(indexable, IndexConstants.IS_READ_BY,
+        _expectedLocationQU(mainElement, 'field); // ur'));
+    _assertNoRecordedRelation(indexable, IndexConstants.IS_READ_BY,
+        _expectedLocation(mainElement, 'field); // not a member'));
+  }
+
+  void test_IndexableName_isDefinedBy_localVariable_inForEach() {
+    _indexTestUnit('''
+class A {
+  main() {
+    for (int test in []) {
+    }
+  }
+}
+''');
+    // prepare elements
+    LocalVariableElement testElement = findElement('test');
+    IndexableName indexable = new IndexableName('test');
+    // verify
+    _assertRecordedRelation(indexable, IndexConstants.NAME_IS_DEFINED_BY,
+        _expectedLocation(testElement, 'test in []'));
+  }
+
+  void test_IndexableName_method() {
+    _indexTestUnit('''
+class A {
+  method() {}
+}
+main(A a, p) {
+  a.method(); // r
+  p.method(); // ur
+}
+''');
+    // prepare elements
+    Element mainElement = findElement('main');
+    MethodElement methodElement = findElement('method');
+    IndexableName indexable = new IndexableName('method');
+    // verify
+    _assertRecordedRelation(indexable, IndexConstants.NAME_IS_DEFINED_BY,
+        _expectedLocation(methodElement, 'method() {}'));
+    _assertRecordedRelation(indexable, IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, 'method(); // r'));
+    _assertRecordedRelation(indexable, IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, 'method(); // ur'));
+  }
+
+  void test_IndexableName_operator_resolved() {
+    _indexTestUnit('''
+class A {
+  operator +(o) {}
+  operator -(o) {}
+  operator ~() {}
+  operator ==(o) {}
+}
+main(A a) {
+  a + 5;
+  a += 5;
+  a == 5;
+  ++a;
+  --a;
+  ~a;
+  a++;
+  a--;
+}
+''');
+    // prepare elements
+    Element mainElement = findElement('main');
+    // binary
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '+ 5', length: 1));
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '+= 5', length: 2));
+    _assertRecordedRelationForName('==', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '== 5', length: 2));
+    // prefix
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '++a', length: 2));
+    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '--a', length: 2));
+    _assertRecordedRelationForName('~', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '~a', length: 1));
+    // postfix
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '++;', length: 2));
+    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQ(mainElement, '--;', length: 2));
+  }
+
+  void test_IndexableName_operator_unresolved() {
+    _indexTestUnit('''
+class A {
+  operator +(o) {}
+  operator -(o) {}
+  operator ~() {}
+  operator ==(o) {}
+}
+main(a) {
+  a + 5;
+  a += 5;
+  a == 5;
+  ++a;
+  --a;
+  ~a;
+  a++;
+  a--;
+}
+''');
+    // prepare elements
+    Element mainElement = findElement('main');
+    // binary
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '+ 5', length: 1));
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '+= 5', length: 2));
+    _assertRecordedRelationForName('==', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '== 5', length: 2));
+    // prefix
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '++a', length: 2));
+    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '--a', length: 2));
+    _assertRecordedRelationForName('~', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '~a', length: 1));
+    // postfix
+    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '++;', length: 2));
+    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
+        _expectedLocationQU(mainElement, '--;', length: 2));
+  }
+
+  void test_isDefinedBy_IndexableName_method() {
     _indexTestUnit('''
 class A {
   m() {}
 }''');
     // prepare elements
     Element methodElement = findElement("m");
-    Element nameElement = new NameElement("m");
+    IndexableName nameIndexable = new IndexableName("m");
     // verify
-    _assertRecordedRelationForElement(
-        nameElement,
+    _assertRecordedRelationForIndexable(
+        nameIndexable,
         IndexConstants.NAME_IS_DEFINED_BY,
         _expectedLocation(methodElement, 'm() {}'));
   }
 
-  void test_isDefinedBy_NameElement_operator() {
+  void test_isDefinedBy_IndexableName_operator() {
     _indexTestUnit('''
 class A {
   operator +(o) {}
 }''');
     // prepare elements
     Element methodElement = findElement("+");
-    Element nameElement = new NameElement("+");
+    IndexableName nameIndexable = new IndexableName("+");
     // verify
-    _assertRecordedRelationForElement(
-        nameElement,
+    _assertRecordedRelationForIndexable(
+        nameIndexable,
         IndexConstants.NAME_IS_DEFINED_BY,
         _expectedLocation(methodElement, '+(o) {}', length: 1));
   }
@@ -1254,160 +1407,6 @@
         _expectedLocation(mainElement, 'v = 1'));
   }
 
-  void test_NameElement_field() {
-    _indexTestUnit('''
-class A {
-  int field;
-}
-main(A a, p) {
-  print(a.field); // r
-  print(p.field); // ur
-  {
-    var field = 42;
-    print(field); // not a member
-  }
-}
-''');
-    // prepare elements
-    Element mainElement = findElement('main');
-    FieldElement fieldElement = findElement('field');
-    IndexableElement indexable = new IndexableElement(new NameElement('field'));
-    // verify
-    _assertRecordedRelation(indexable, IndexConstants.NAME_IS_DEFINED_BY,
-        _expectedLocation(fieldElement, 'field;'));
-    _assertRecordedRelation(indexable, IndexConstants.IS_READ_BY,
-        _expectedLocationQ(mainElement, 'field); // r'));
-    _assertRecordedRelation(indexable, IndexConstants.IS_READ_BY,
-        _expectedLocationQU(mainElement, 'field); // ur'));
-    _assertNoRecordedRelation(indexable, IndexConstants.IS_READ_BY,
-        _expectedLocation(mainElement, 'field); // not a member'));
-  }
-
-  void test_NameElement_isDefinedBy_localVariable_inForEach() {
-    _indexTestUnit('''
-class A {
-  main() {
-    for (int test in []) {
-    }
-  }
-}
-''');
-    // prepare elements
-    LocalVariableElement testElement = findElement('test');
-    IndexableElement indexable = new IndexableElement(new NameElement('test'));
-    // verify
-    _assertRecordedRelation(indexable, IndexConstants.NAME_IS_DEFINED_BY,
-        _expectedLocation(testElement, 'test in []'));
-  }
-
-  void test_NameElement_method() {
-    _indexTestUnit('''
-class A {
-  method() {}
-}
-main(A a, p) {
-  a.method(); // r
-  p.method(); // ur
-}
-''');
-    // prepare elements
-    Element mainElement = findElement('main');
-    MethodElement methodElement = findElement('method');
-    IndexableElement indexable =
-        new IndexableElement(new NameElement('method'));
-    // verify
-    _assertRecordedRelation(indexable, IndexConstants.NAME_IS_DEFINED_BY,
-        _expectedLocation(methodElement, 'method() {}'));
-    _assertRecordedRelation(indexable, IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, 'method(); // r'));
-    _assertRecordedRelation(indexable, IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, 'method(); // ur'));
-  }
-
-  void test_NameElement_operator_resolved() {
-    _indexTestUnit('''
-class A {
-  operator +(o) {}
-  operator -(o) {}
-  operator ~() {}
-  operator ==(o) {}
-}
-main(A a) {
-  a + 5;
-  a += 5;
-  a == 5;
-  ++a;
-  --a;
-  ~a;
-  a++;
-  a--;
-}
-''');
-    // prepare elements
-    Element mainElement = findElement('main');
-    // binary
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '+ 5', length: 1));
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '+= 5', length: 2));
-    _assertRecordedRelationForName('==', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '== 5', length: 2));
-    // prefix
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '++a', length: 2));
-    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '--a', length: 2));
-    _assertRecordedRelationForName('~', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '~a', length: 1));
-    // postfix
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '++;', length: 2));
-    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQ(mainElement, '--;', length: 2));
-  }
-
-  void test_NameElement_operator_unresolved() {
-    _indexTestUnit('''
-class A {
-  operator +(o) {}
-  operator -(o) {}
-  operator ~() {}
-  operator ==(o) {}
-}
-main(a) {
-  a + 5;
-  a += 5;
-  a == 5;
-  ++a;
-  --a;
-  ~a;
-  a++;
-  a--;
-}
-''');
-    // prepare elements
-    Element mainElement = findElement('main');
-    // binary
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '+ 5', length: 1));
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '+= 5', length: 2));
-    _assertRecordedRelationForName('==', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '== 5', length: 2));
-    // prefix
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '++a', length: 2));
-    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '--a', length: 2));
-    _assertRecordedRelationForName('~', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '~a', length: 1));
-    // postfix
-    _assertRecordedRelationForName('+', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '++;', length: 2));
-    _assertRecordedRelationForName('-', IndexConstants.IS_INVOKED_BY,
-        _expectedLocationQU(mainElement, '--;', length: 2));
-  }
-
   void test_nameIsInvokedBy() {
     _indexTestUnit('''
 class A {
@@ -1419,7 +1418,7 @@
 }''');
     // prepare elements
     Element mainElement = findElement("main");
-    IndexableElement indexable = new IndexableElement(new NameElement('test'));
+    IndexableName indexable = new IndexableName('test');
     // verify
     _assertRecordedRelation(indexable, IndexConstants.IS_INVOKED_BY,
         _expectedLocationQ(mainElement, 'test(1)'));
@@ -1440,7 +1439,7 @@
 }''');
     // prepare elements
     Element mainElement = findElement("main");
-    IndexableElement indexable = new IndexableElement(new NameElement('test'));
+    IndexableName indexable = new IndexableName('test');
     // verify
     _assertRecordedRelation(indexable, IndexConstants.IS_READ_BY,
         _expectedLocationQ(mainElement, 'test); // a'));
@@ -1459,7 +1458,7 @@
 }''');
     // prepare elements
     Element mainElement = findElement("main");
-    IndexableElement indexable = new IndexableElement(new NameElement('test'));
+    IndexableName indexable = new IndexableName('test');
     // verify
     _assertRecordedRelation(indexable, IndexConstants.IS_READ_WRITTEN_BY,
         _expectedLocationQ(mainElement, 'test += 1'));
@@ -1478,7 +1477,7 @@
 }''');
     // prepare elements
     Element mainElement = findElement("main");
-    IndexableElement indexable = new IndexableElement(new NameElement('test'));
+    IndexableName indexable = new IndexableName('test');
     // verify
     _assertRecordedRelation(indexable, IndexConstants.IS_WRITTEN_BY,
         _expectedLocationQ(mainElement, 'test = 1'));
@@ -1552,8 +1551,21 @@
       Element expectedElement,
       RelationshipImpl expectedRelationship,
       ExpectedLocation expectedLocation) {
-    return _assertRecordedRelation(new IndexableElement(expectedElement),
-        expectedRelationship, expectedLocation);
+    return _assertRecordedRelationForIndexable(
+        new IndexableElement(expectedElement),
+        expectedRelationship,
+        expectedLocation);
+  }
+
+  /**
+   * Asserts that [recordedRelations] has an item with the expected properties.
+   */
+  LocationImpl _assertRecordedRelationForIndexable(
+      IndexableObject expectedIndexable,
+      RelationshipImpl expectedRelationship,
+      ExpectedLocation expectedLocation) {
+    return _assertRecordedRelation(
+        expectedIndexable, expectedRelationship, expectedLocation);
   }
 
   /**
@@ -1563,8 +1575,8 @@
       String expectedName,
       RelationshipImpl expectedRelationship,
       ExpectedLocation expectedLocation) {
-    return _assertRecordedRelationForElement(
-        new NameElement(expectedName), expectedRelationship, expectedLocation);
+    return _assertRecordedRelationForIndexable(new IndexableName(expectedName),
+        expectedRelationship, expectedLocation);
   }
 
   ExpectedLocation _expectedLocation(Element element, String search,
diff --git a/pkg/analysis_server/test/services/index/store/codec_test.dart b/pkg/analysis_server/test/services/index/store/codec_test.dart
index 2d6a068..62e86d5 100644
--- a/pkg/analysis_server/test/services/index/store/codec_test.dart
+++ b/pkg/analysis_server/test/services/index/store/codec_test.dart
@@ -252,6 +252,16 @@
     validateDecode(id1, id2, id3, element);
   }
 
+  void test_encode_IndexableName() {
+    IndexableName indexable = new IndexableName('test');
+    int id1 = codec.encode1(indexable);
+    int id2 = codec.encode2(indexable);
+    int id3 = codec.encode3(indexable);
+    expect(id1, -1);
+    expect(id2, isNonNegative);
+    expect(id3, IndexableNameKind.INSTANCE.index);
+  }
+
   void test_encode_LibraryElement() {
     resolveTestUnit('''
 class A {
@@ -286,17 +296,6 @@
     validateDecode(id1, id2, id3, element);
   }
 
-  void test_encode_NameElement() {
-    Element element = new NameElement('test');
-    IndexableObject indexable = new IndexableElement(element);
-    int id1 = codec.encode1(indexable);
-    int id2 = codec.encode2(indexable);
-    int id3 = codec.encode3(indexable);
-    expect(id1, -1);
-    expect(id2, isNonNegative);
-    expect(id3, IndexableElementKind.forElement(element).index);
-  }
-
   void test_encode_nullLibraryElement() {
     resolveTestUnit('''
 test() {}
diff --git a/pkg/analysis_server/test/services/index/store/split_store_test.dart b/pkg/analysis_server/test/services/index/store/split_store_test.dart
index c663dc4..f52556c 100644
--- a/pkg/analysis_server/test/services/index/store/split_store_test.dart
+++ b/pkg/analysis_server/test/services/index/store/split_store_test.dart
@@ -492,11 +492,14 @@
   IndexableElement indexableC;
   IndexableElement indexableD;
 
-  HtmlElement htmlElementA = new MockHtmlElement();
-  HtmlElement htmlElementB = new MockHtmlElement();
-  LibraryElement libraryElement = new MockLibraryElement();
   Source librarySource = new MockSource('librarySource');
   CompilationUnitElement libraryUnitElement = new MockCompilationUnitElement();
+  LibraryElement libraryElement = new MockLibraryElement();
+
+  Source librarySourceB = new MockSource('librarySourceB');
+  LibraryElement libraryElementB = new MockLibraryElement();
+  CompilationUnitElement libraryUnitElementB = new MockCompilationUnitElement();
+
   ElementCodec elementCodec = new MockElementCodec();
   MemoryNodeManager nodeManager = new MemoryNodeManager();
   RelationshipImpl relationship =
@@ -518,7 +521,8 @@
     indexableD = new IndexableElement(elementD);
 
     nodeManager.elementCodec = elementCodec;
-    store = new SplitIndexStore(nodeManager);
+    store = new SplitIndexStore(nodeManager,
+        <IndexObjectManager>[new DartUnitIndexObjectManager()]);
     when(elementCodec.encode1(indexableA)).thenReturn(11);
     when(elementCodec.encode2(indexableA)).thenReturn(12);
     when(elementCodec.encode3(indexableA)).thenReturn(13);
@@ -538,7 +542,6 @@
     when(contextA.isDisposed).thenReturn(false);
     when(contextB.isDisposed).thenReturn(false);
     when(contextC.isDisposed).thenReturn(false);
-    when(librarySource.fullName).thenReturn('/home/user/librarySource.dart');
     when(sourceA.fullName).thenReturn('/home/user/sourceA.dart');
     when(sourceB.fullName).thenReturn('/home/user/sourceB.dart');
     when(sourceC.fullName).thenReturn('/home/user/sourceC.dart');
@@ -567,25 +570,31 @@
     when(unitElementB.library).thenReturn(libraryElement);
     when(unitElementC.library).thenReturn(libraryElement);
     when(unitElementD.library).thenReturn(libraryElement);
-    when(htmlElementA.source).thenReturn(sourceA);
-    when(htmlElementB.source).thenReturn(sourceB);
     // library
+    when(librarySource.fullName).thenReturn('/home/user/librarySource.dart');
     when(libraryUnitElement.library).thenReturn(libraryElement);
     when(libraryUnitElement.source).thenReturn(librarySource);
     when(libraryElement.source).thenReturn(librarySource);
     when(libraryElement.definingCompilationUnit).thenReturn(libraryUnitElement);
+    // library B
+    when(librarySourceB.fullName).thenReturn('/home/user/librarySource.dart');
+    when(libraryUnitElementB.library).thenReturn(libraryElementB);
+    when(libraryUnitElementB.source).thenReturn(librarySourceB);
+    when(libraryElementB.source).thenReturn(librarySourceB);
+    when(libraryElementB.definingCompilationUnit)
+        .thenReturn(libraryUnitElementB);
   }
 
   void test_aboutToIndexDart_disposedContext() {
     when(contextA.isDisposed).thenReturn(true);
-    expect(store.aboutToIndexDart(contextA, unitElementA), isFalse);
+    expect(store.aboutToIndex(contextA, unitElementA), isFalse);
   }
 
   Future test_aboutToIndexDart_library_first() {
     when(libraryElement.parts)
         .thenReturn(<CompilationUnitElement>[unitElementA, unitElementB]);
     {
-      store.aboutToIndexDart(contextA, libraryUnitElement);
+      store.aboutToIndex(contextA, libraryUnitElement);
       store.doneIndex();
     }
     return store
@@ -599,12 +608,12 @@
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableB);
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordRelationship(indexableA, relationship, locationA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
+      store.aboutToIndex(contextA, unitElementB);
       store.recordRelationship(indexableA, relationship, locationB);
       store.doneIndex();
     }
@@ -616,7 +625,7 @@
       // apply "libraryUnitElement", only with "B"
       when(libraryElement.parts).thenReturn([unitElementB]);
       {
-        store.aboutToIndexDart(contextA, libraryUnitElement);
+        store.aboutToIndex(contextA, libraryUnitElement);
         store.doneIndex();
       }
     }).then((_) {
@@ -630,52 +639,26 @@
 
   void test_aboutToIndexDart_nullLibraryElement() {
     when(unitElementA.library).thenReturn(null);
-    expect(store.aboutToIndexDart(contextA, unitElementA), isFalse);
+    expect(store.aboutToIndex(contextA, unitElementA), isFalse);
   }
 
   void test_aboutToIndexDart_nullLibraryUnitElement() {
     when(libraryElement.definingCompilationUnit).thenReturn(null);
-    expect(store.aboutToIndexDart(contextA, unitElementA), isFalse);
+    expect(store.aboutToIndex(contextA, unitElementA), isFalse);
   }
 
   void test_aboutToIndexDart_nullUnitElement() {
-    expect(store.aboutToIndexDart(contextA, null), isFalse);
-  }
-
-  test_aboutToIndexHtml_() {
-    LocationImpl locationA = mockLocation(indexableA);
-    LocationImpl locationB = mockLocation(indexableB);
-    {
-      store.aboutToIndexHtml(contextA, htmlElementA);
-      store.recordRelationship(indexableA, relationship, locationA);
-      store.doneIndex();
-    }
-    {
-      store.aboutToIndexHtml(contextA, htmlElementB);
-      store.recordRelationship(indexableA, relationship, locationB);
-      store.doneIndex();
-    }
-    // "A" and "B" locations
-    return store
-        .getRelationships(indexableA, relationship)
-        .then((List<LocationImpl> locations) {
-      assertLocations(locations, [locationA, locationB]);
-    });
-  }
-
-  void test_aboutToIndexHtml_disposedContext() {
-    when(contextA.isDisposed).thenReturn(true);
-    expect(store.aboutToIndexHtml(contextA, htmlElementA), isFalse);
+    expect(store.aboutToIndex(contextA, null), isFalse);
   }
 
   test_cancelIndexDart() {
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableA);
-    store.aboutToIndexDart(contextA, unitElementA);
+    store.aboutToIndex(contextA, unitElementA);
     store.recordRelationship(indexableA, relationship, locationA);
     store.recordRelationship(indexableA, relationship, locationB);
     store.recordTopLevelDeclaration(elementA);
-    store.cancelIndexDart();
+    store.cancelIndex();
     return store
         .getRelationships(indexableA, relationship)
         .then((List<LocationImpl> locations) {
@@ -686,7 +669,7 @@
 
   void test_clear() {
     LocationImpl locationA = mockLocation(indexableA);
-    store.aboutToIndexDart(contextA, unitElementA);
+    store.aboutToIndex(contextA, unitElementA);
     store.recordRelationship(indexableA, relationship, locationA);
     store.doneIndex();
     expect(nodeManager.isEmpty(), isFalse);
@@ -714,12 +697,12 @@
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableB);
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordRelationship(indexableA, relationship, locationA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
+      store.aboutToIndex(contextA, unitElementB);
       store.recordRelationship(indexableA, relationship, locationB);
       store.doneIndex();
     }
@@ -757,12 +740,12 @@
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableB);
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordRelationship(indexableA, relationship, locationA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
+      store.aboutToIndex(contextA, unitElementB);
       store.recordRelationship(indexableA, relationship, locationB);
       store.doneIndex();
     }
@@ -775,7 +758,7 @@
 
   test_recordRelationship_oneLocation() {
     LocationImpl locationA = mockLocation(indexableA);
-    store.aboutToIndexDart(contextA, unitElementA);
+    store.aboutToIndex(contextA, unitElementA);
     store.recordRelationship(indexableA, relationship, locationA);
     store.doneIndex();
     return store
@@ -788,7 +771,7 @@
   test_recordRelationship_twoLocations() {
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableA);
-    store.aboutToIndexDart(contextA, unitElementA);
+    store.aboutToIndex(contextA, unitElementA);
     store.recordRelationship(indexableA, relationship, locationA);
     store.recordRelationship(indexableA, relationship, locationB);
     store.doneIndex();
@@ -803,12 +786,12 @@
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableB);
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordRelationship(indexableA, relationship, locationA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
+      store.aboutToIndex(contextA, unitElementB);
       store.recordRelationship(indexableA, relationship, locationB);
       store.doneIndex();
     }
@@ -832,39 +815,39 @@
     store.removeContext(null);
   }
 
-  test_removeSource_library() {
+  test_removeSource_library() async {
+    when(elementB.library).thenReturn(libraryElementB);
+    when(unitElementB.library).thenReturn(libraryElementB);
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableB);
     LocationImpl locationC = mockLocation(indexableC);
     {
-      store.aboutToIndexDart(contextA, unitElementA);
-      store.recordRelationship(indexableA, relationship, locationA);
+      store.aboutToIndex(contextA, unitElementA);
+      store.recordRelationship(indexableD, relationship, locationA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
-      store.recordRelationship(indexableA, relationship, locationB);
+      store.aboutToIndex(contextA, unitElementB);
+      store.recordRelationship(indexableD, relationship, locationB);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementC);
-      store.recordRelationship(indexableA, relationship, locationC);
+      store.aboutToIndex(contextA, unitElementC);
+      store.recordRelationship(indexableD, relationship, locationC);
       store.doneIndex();
     }
     // "A", "B" and "C" locations
-    return store
-        .getRelationships(indexableA, relationship)
-        .then((List<LocationImpl> locations) {
+    {
+      var locations = await store.getRelationships(indexableD, relationship);
       assertLocations(locations, [locationA, locationB, locationC]);
-    }).then((_) {
-      // remove "librarySource"
-      store.removeSource(contextA, librarySource);
-      return store
-          .getRelationships(indexableA, relationship)
-          .then((List<LocationImpl> locations) {
-        assertLocations(locations, []);
-      });
-    });
+    }
+    // remove "librarySource"
+    store.removeSource(contextA, librarySource);
+    // only "B" location, which is in "librarySourceB"
+    {
+      var locations = await store.getRelationships(indexableD, relationship);
+      assertLocations(locations, [locationB]);
+    }
   }
 
   void test_removeSource_nullContext() {
@@ -876,17 +859,17 @@
     LocationImpl locationB = mockLocation(indexableB);
     LocationImpl locationC = mockLocation(indexableC);
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordRelationship(indexableA, relationship, locationA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
+      store.aboutToIndex(contextA, unitElementB);
       store.recordRelationship(indexableA, relationship, locationB);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementC);
+      store.aboutToIndex(contextA, unitElementC);
       store.recordRelationship(indexableA, relationship, locationC);
       store.doneIndex();
     }
@@ -910,12 +893,12 @@
     LocationImpl locationA = mockLocation(indexableA);
     LocationImpl locationB = mockLocation(indexableB);
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordRelationship(indexableA, relationship, locationA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
+      store.aboutToIndex(contextA, unitElementB);
       store.recordRelationship(indexableA, relationship, locationB);
       store.doneIndex();
     }
@@ -941,17 +924,17 @@
 
   void test_removeSources_unit() {
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordTopLevelDeclaration(elementA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementB);
+      store.aboutToIndex(contextA, unitElementB);
       store.recordTopLevelDeclaration(elementB);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextA, unitElementC);
+      store.aboutToIndex(contextA, unitElementC);
       store.recordTopLevelDeclaration(elementC);
       store.doneIndex();
     }
@@ -975,12 +958,12 @@
     when(elementCodec.decode(contextB, 21, 22, 23))
         .thenReturn(new IndexableElement(elementB));
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordTopLevelDeclaration(elementA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextB, unitElementB);
+      store.aboutToIndex(contextB, unitElementB);
       store.recordTopLevelDeclaration(elementB);
       store.doneIndex();
     }
@@ -991,7 +974,7 @@
     }
     // re-index "unitElementA"
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.doneIndex();
     }
     {
@@ -1006,12 +989,12 @@
     when(elementCodec.decode(contextB, 21, 22, 23))
         .thenReturn(new IndexableElement(elementB));
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordTopLevelDeclaration(elementA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextB, unitElementB);
+      store.aboutToIndex(contextB, unitElementB);
       store.recordTopLevelDeclaration(elementB);
       store.doneIndex();
     }
@@ -1034,12 +1017,12 @@
     when(elementCodec.decode(contextB, 21, 22, 23))
         .thenReturn(new IndexableElement(elementB));
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordTopLevelDeclaration(elementA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextB, unitElementB);
+      store.aboutToIndex(contextB, unitElementB);
       store.recordTopLevelDeclaration(elementB);
       store.doneIndex();
     }
@@ -1062,12 +1045,12 @@
     when(elementCodec.decode(contextB, 21, 22, 23))
         .thenReturn(new IndexableElement(elementB));
     {
-      store.aboutToIndexDart(contextA, unitElementA);
+      store.aboutToIndex(contextA, unitElementA);
       store.recordTopLevelDeclaration(elementA);
       store.doneIndex();
     }
     {
-      store.aboutToIndexDart(contextB, unitElementB);
+      store.aboutToIndex(contextB, unitElementB);
       store.recordTopLevelDeclaration(elementB);
       store.doneIndex();
     }
diff --git a/pkg/analysis_server/tool/spec/from_html.dart b/pkg/analysis_server/tool/spec/from_html.dart
index c3e3010..1ae9425 100644
--- a/pkg/analysis_server/tool/spec/from_html.dart
+++ b/pkg/analysis_server/tool/spec/from_html.dart
@@ -293,7 +293,9 @@
   File htmlFile = new File('spec_input.html');
   String htmlContents = htmlFile.readAsStringSync();
   dom.Document document = parser.parse(htmlContents);
-  return apiFromHtml(document.firstChild);
+  dom.Element htmlElement = document.children
+      .singleWhere((element) => element.localName.toLowerCase() == 'html');
+  return apiFromHtml(htmlElement);
 }
 
 void recurse(dom.Element parent, String context,
diff --git a/pkg/analysis_server/tool/spec/spec_input.html b/pkg/analysis_server/tool/spec/spec_input.html
index 5b0a431..7795bdc 100644
--- a/pkg/analysis_server/tool/spec/spec_input.html
+++ b/pkg/analysis_server/tool/spec/spec_input.html
@@ -1,3 +1,4 @@
+<!doctype html>
 <html>
   <head>
     <meta charset="UTF-8"/>
@@ -4244,6 +4245,6 @@
       TBD
     </p>
     <h2 class="domain"><a name="index">Index</a></h2>
-    <index />
+    <index></index>
   </body>
 </html>
diff --git a/pkg/analysis_server/tool/spec/to_html.dart b/pkg/analysis_server/tool/spec/to_html.dart
index 3d35b01..2164c9f 100644
--- a/pkg/analysis_server/tool/spec/to_html.dart
+++ b/pkg/analysis_server/tool/spec/to_html.dart
@@ -84,6 +84,7 @@
 final GeneratedFile target = new GeneratedFile('../../doc/api.html', () {
   ToHtmlVisitor visitor = new ToHtmlVisitor(readApi());
   dom.Document document = new dom.Document();
+  document.append(new dom.DocumentType('html', null, null));
   for (dom.Node node in visitor.collectHtml(visitor.visitApi)) {
     document.append(node);
   }
diff --git a/pkg/analyzer/lib/plugin/task.dart b/pkg/analyzer/lib/plugin/task.dart
index fd4dd7c..d3eb4cd 100644
--- a/pkg/analyzer/lib/plugin/task.dart
+++ b/pkg/analyzer/lib/plugin/task.dart
@@ -43,6 +43,12 @@
  * The identifier of the extension point that allows plugins to register new
  * analysis tasks with the analysis engine. The object used as an extension must
  * be a [TaskDescriptor].
+ *
+ * Contributed tasks should never extract information from Dart elements or AST
+ * (e.g. offsets) of a source and put it into results for targets in other
+ * sources. Dart elements and ASTs are updated during incremental resolution,
+ * and invalidation of results is intentionally limited by the source bounds
+ * for performance reasons.
  */
 final String TASK_EXTENSION_POINT_ID = Plugin.join(
     EnginePlugin.UNIQUE_IDENTIFIER, EnginePlugin.TASK_EXTENSION_POINT);
diff --git a/pkg/analyzer/lib/src/context/cache.dart b/pkg/analyzer/lib/src/context/cache.dart
index 01ae4ea..4535ca4 100644
--- a/pkg/analyzer/lib/src/context/cache.dart
+++ b/pkg/analyzer/lib/src/context/cache.dart
@@ -166,14 +166,17 @@
 
   /**
    * Return an iterator returning all of the map entries mapping targets to
-   * cache entries.
+   * cache entries. If the [context] is not `null`, then only entries that are
+   * owned by the given context will be returned.
    */
-  MapIterator<AnalysisTarget, CacheEntry> iterator() {
-    int count = _partitions.length;
+  MapIterator<AnalysisTarget, CacheEntry> iterator(
+      {InternalAnalysisContext context: null}) {
     List<Map<AnalysisTarget, CacheEntry>> maps =
-        new List<Map<AnalysisTarget, CacheEntry>>(count);
-    for (int i = 0; i < count; i++) {
-      maps[i] = _partitions[i].map;
+        <Map<AnalysisTarget, CacheEntry>>[];
+    for (CachePartition partition in _partitions) {
+      if (context == null || partition.context == context) {
+        maps.add(partition.map);
+      }
     }
     return new MultipleMapIterator<AnalysisTarget, CacheEntry>(maps);
   }
@@ -252,6 +255,11 @@
   static int _EXPLICITLY_ADDED_FLAG = 0;
 
   /**
+   * The next invalidation process identifier.
+   */
+  static int nextInvalidateId = 0;
+
+  /**
    * The target this entry is about.
    */
   final AnalysisTarget target;
@@ -440,7 +448,7 @@
     if (state == CacheState.INVALID) {
       ResultData data = _resultMap[descriptor];
       if (data != null) {
-        _invalidate(descriptor, delta);
+        _invalidate(nextInvalidateId++, descriptor, delta, 0);
       }
     } else {
       ResultData data = getResultData(descriptor);
@@ -488,11 +496,14 @@
    * Set the value of the result represented by the given [descriptor] to the
    * given [value], keep its dependency, invalidate all the dependent result.
    */
-  void setValueIncremental(ResultDescriptor descriptor, dynamic value) {
+  void setValueIncremental(
+      ResultDescriptor descriptor, dynamic value, bool invalidateDependent) {
     ResultData data = getResultData(descriptor);
-    _invalidateDependentResults(data, null);
     data.state = CacheState.VALID;
     data.value = value;
+    if (invalidateDependent) {
+      _invalidateDependentResults(nextInvalidateId++, data, null, 0);
+    }
   }
 
   @override
@@ -511,25 +522,38 @@
    * Invalidate the result represented by the given [descriptor] and propagate
    * invalidation to other results that depend on it.
    */
-  void _invalidate(ResultDescriptor descriptor, Delta delta) {
+  void _invalidate(
+      int id, ResultDescriptor descriptor, Delta delta, int level) {
+    ResultData thisData = _resultMap[descriptor];
+    if (thisData == null) {
+      return;
+    }
+    // Stop if already validated.
+    if (delta != null) {
+      if (thisData.invalidateId == id) {
+        return;
+      }
+      thisData.invalidateId = id;
+    }
+    // Ask the delta to validate.
     DeltaResult deltaResult = null;
     if (delta != null) {
       deltaResult = delta.validate(_partition.context, target, descriptor);
       if (deltaResult == DeltaResult.STOP) {
-//        print('not-invalidate $descriptor for $target');
         return;
       }
     }
-//    print('invalidate $descriptor for $target');
-    ResultData thisData;
-    if (deltaResult == null || deltaResult == DeltaResult.INVALIDATE) {
-      thisData = _resultMap.remove(descriptor);
+    if (deltaResult == DeltaResult.INVALIDATE_NO_DELTA) {
+      delta = null;
     }
-    if (deltaResult == DeltaResult.KEEP_CONTINUE) {
-      thisData = _resultMap[descriptor];
-    }
-    if (thisData == null) {
-      return;
+    if (deltaResult == null ||
+        deltaResult == DeltaResult.INVALIDATE ||
+        deltaResult == DeltaResult.INVALIDATE_NO_DELTA) {
+      _resultMap.remove(descriptor);
+//      {
+//        String indent = '  ' * level;
+//        print('[$id]$indent invalidate $descriptor for $target');
+//      }
     }
     // Stop depending on other results.
     TargetedResult thisResult = new TargetedResult(target, descriptor);
@@ -540,7 +564,7 @@
       }
     }
     // Invalidate results that depend on this result.
-    _invalidateDependentResults(thisData, delta);
+    _invalidateDependentResults(id, thisData, delta, level + 1);
     // If empty, remove the entry altogether.
     if (_resultMap.isEmpty) {
       _partition._targetMap.remove(target);
@@ -557,19 +581,20 @@
   void _invalidateAll() {
     List<ResultDescriptor> results = _resultMap.keys.toList();
     for (ResultDescriptor result in results) {
-      _invalidate(result, null);
+      _invalidate(nextInvalidateId++, result, null, 0);
     }
   }
 
   /**
    * Invalidate results that depend on [thisData].
    */
-  void _invalidateDependentResults(ResultData thisData, Delta delta) {
+  void _invalidateDependentResults(
+      int id, ResultData thisData, Delta delta, int level) {
     List<TargetedResult> dependentResults = thisData.dependentResults.toList();
     for (TargetedResult dependentResult in dependentResults) {
       CacheEntry entry = _partition.get(dependentResult.target);
       if (entry != null) {
-        entry._invalidate(dependentResult.result, delta);
+        entry._invalidate(id, dependentResult.result, delta, level);
       }
     }
   }
@@ -950,10 +975,8 @@
   void _addIfSource(AnalysisTarget target) {
     if (target is Source) {
       _sources.add(target);
-      {
-        String fullName = target.fullName;
-        _pathToSources.putIfAbsent(fullName, () => <Source>[]).add(target);
-      }
+      String fullName = target.fullName;
+      _pathToSources.putIfAbsent(fullName, () => <Source>[]).add(target);
     }
   }
 
@@ -1021,7 +1044,30 @@
 /**
  * The possible results of validating analysis results againt a [Delta].
  */
-enum DeltaResult { INVALIDATE, KEEP_CONTINUE, STOP }
+enum DeltaResult {
+  /**
+   * Invalidate this result and continue visiting dependent results
+   * with this [Delta].
+   */
+  INVALIDATE,
+
+  /**
+   * Invalidate this result and stop using this [Delta], so unconditionally
+   * invalidate all the dependent results.
+   */
+  INVALIDATE_NO_DELTA,
+
+  /**
+   * Keep this result and continue validating dependent results
+   * with this [Delta].
+   */
+  KEEP_CONTINUE,
+
+  /**
+   * Keep this result and stop visiting results that depend on this one.
+   */
+  STOP
+}
 
 /**
  * [InvalidatedResult] describes an invalidated result.
@@ -1100,6 +1146,13 @@
   Object value;
 
   /**
+   * The identifier of the invalidation process that most recently checked
+   * this value. If it is the same as the current invalidation identifier,
+   * then there is no reason to check it (and its subtree again).
+   */
+  int invalidateId = -1;
+
+  /**
    * A list of the results on which this result depends.
    */
   List<TargetedResult> dependedOnResults = <TargetedResult>[];
diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
index c6a81da..9b8081e 100644
--- a/pkg/analyzer/lib/src/context/context.dart
+++ b/pkg/analyzer/lib/src/context/context.dart
@@ -161,6 +161,11 @@
   TypeProvider _typeProvider;
 
   /**
+   * The [TypeSystem] for this context, `null` if not yet created.
+   */
+  TypeSystem _typeSystem;
+
+  /**
    * The controller for sending [SourcesChangedEvent]s.
    */
   StreamController<SourcesChangedEvent> _onSourcesChangedController;
@@ -298,6 +303,7 @@
     for (WorkManager workManager in workManagers) {
       workManager.applyPriorityTargets(_priorityOrder);
     }
+    driver.reset();
   }
 
   @override
@@ -481,6 +487,14 @@
   }
 
   @override
+  TypeSystem get typeSystem {
+    if (_typeSystem == null) {
+      _typeSystem = TypeSystem.create(this);
+    }
+    return _typeSystem;
+  }
+
+  @override
   void addListener(AnalysisListener listener) {
     if (!_listeners.contains(listener)) {
       _listeners.add(listener);
diff --git a/pkg/analyzer/lib/src/generated/ast.dart b/pkg/analyzer/lib/src/generated/ast.dart
index 6d47cf7..0e879a8 100644
--- a/pkg/analyzer/lib/src/generated/ast.dart
+++ b/pkg/analyzer/lib/src/generated/ast.dart
@@ -18051,7 +18051,6 @@
   Object visitAwaitExpression(AwaitExpression node) {
     _writer.print("await ");
     _visitNode(node.expression);
-    _writer.print(";");
     return null;
   }
 
diff --git a/pkg/analyzer/lib/src/generated/constant.dart b/pkg/analyzer/lib/src/generated/constant.dart
index 93186c6..117b263 100644
--- a/pkg/analyzer/lib/src/generated/constant.dart
+++ b/pkg/analyzer/lib/src/generated/constant.dart
@@ -214,6 +214,11 @@
       "^(?:${ConstantValueComputer._OPERATOR_RE}\$|$_PUBLIC_IDENTIFIER_RE(?:=?\$|[.](?!\$)))+?\$");
 
   /**
+   * The type provider used to access the known types.
+   */
+  final TypeProvider typeProvider;
+
+  /**
    * The type system.  This is used to gues the types of constants when their
    * exact value is unknown.
    */
@@ -237,17 +242,12 @@
    * given, is used to verify correct dependency analysis when running unit
    * tests.
    */
-  ConstantEvaluationEngine(TypeProvider typeProvider, this._declaredVariables,
-      {ConstantEvaluationValidator validator})
+  ConstantEvaluationEngine(this.typeProvider, this._declaredVariables,
+      {ConstantEvaluationValidator validator, TypeSystem typeSystem})
       : validator = validator != null
             ? validator
             : new ConstantEvaluationValidator_ForProduction(),
-        typeSystem = new TypeSystemImpl(typeProvider);
-
-  /**
-   * The type provider used to access the known types.
-   */
-  TypeProvider get typeProvider => typeSystem.typeProvider;
+        typeSystem = typeSystem != null ? typeSystem : new TypeSystemImpl();
 
   /**
    * Check that the arguments to a call to fromEnvironment() are correct. The
@@ -1018,6 +1018,9 @@
       return false;
     }
   }
+
+  @override
+  String toString() => 'Constant: $annotation';
 }
 
 /**
@@ -1150,17 +1153,24 @@
   final TypeProvider _typeProvider;
 
   /**
+   * The type system primitives.
+   */
+  final TypeSystem _typeSystem;
+
+  /**
    * Initialize a newly created evaluator to evaluate expressions in the given
    * [source]. The [typeProvider] is the type provider used to access known
    * types.
    */
-  ConstantEvaluator(this._source, this._typeProvider);
+  ConstantEvaluator(this._source, this._typeProvider, {TypeSystem typeSystem})
+      : _typeSystem = typeSystem != null ? typeSystem : new TypeSystemImpl();
 
   EvaluationResult evaluate(Expression expression) {
     RecordingErrorListener errorListener = new RecordingErrorListener();
     ErrorReporter errorReporter = new ErrorReporter(errorListener, _source);
     DartObjectImpl result = expression.accept(new ConstantVisitor(
-        new ConstantEvaluationEngine(_typeProvider, new DeclaredVariables()),
+        new ConstantEvaluationEngine(_typeProvider, new DeclaredVariables(),
+            typeSystem: _typeSystem),
         errorReporter));
     if (result != null) {
       return EvaluationResult.forValue(result);
@@ -1304,10 +1314,10 @@
    */
   ConstantValueComputer(this._context, TypeProvider typeProvider,
       DeclaredVariables declaredVariables,
-      [ConstantEvaluationValidator validator])
+      [ConstantEvaluationValidator validator, TypeSystem typeSystem])
       : evaluationEngine = new ConstantEvaluationEngine(
             typeProvider, declaredVariables,
-            validator: validator);
+            validator: validator, typeSystem: typeSystem);
 
   /**
    * Add the constants in the given compilation [unit] to the list of constants
@@ -1577,7 +1587,8 @@
     ParameterizedType thenType = thenResult.type;
     ParameterizedType elseType = elseResult.type;
     return new DartObjectImpl.validWithUnknownValue(
-        _typeSystem.getLeastUpperBound(thenType, elseType) as InterfaceType);
+        _typeSystem.getLeastUpperBound(_typeProvider, thenType, elseType)
+        as InterfaceType);
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index c0e548c..a57cc05 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -429,6 +429,11 @@
   TypeProvider get typeProvider;
 
   /**
+   * Return a type system for this context.
+   */
+  TypeSystem get typeSystem;
+
+  /**
    * Add the given [listener] to the list of objects that are to be notified
    * when various analysis results are produced in this context.
    */
@@ -1040,6 +1045,11 @@
   TypeProvider _typeProvider;
 
   /**
+   * The [TypeSystem] for this context, `null` if not yet created.
+   */
+  TypeSystem _typeSystem;
+
+  /**
    * The object used to manage the list of sources that need to be analyzed.
    */
   WorkManager _workManager = new WorkManager();
@@ -1550,6 +1560,14 @@
   }
 
   @override
+  TypeSystem get typeSystem {
+    if (_typeSystem == null) {
+      _typeSystem = TypeSystem.create(this);
+    }
+    return _typeSystem;
+  }
+
+  @override
   void addListener(AnalysisListener listener) {
     if (!_listeners.contains(listener)) {
       _listeners.add(listener);
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 4b47c67..912f364 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -70,6 +70,11 @@
   final TypeProvider _typeProvider;
 
   /**
+   * The type system primitives
+   */
+  TypeSystem _typeSystem;
+
+  /**
    * The manager for the inheritance mappings.
    */
   final InheritanceManager _inheritanceManager;
@@ -277,6 +282,7 @@
     _boolType = _typeProvider.boolType;
     _intType = _typeProvider.intType;
     _DISALLOWED_TYPES_TO_EXTEND_OR_IMPLEMENT = _typeProvider.nonSubtypableTypes;
+    _typeSystem = _currentLibrary.context.typeSystem;
   }
 
   @override
@@ -1360,7 +1366,8 @@
     }
     // SWC.INVALID_METHOD_OVERRIDE_RETURN_TYPE
     if (overriddenFTReturnType != VoidTypeImpl.instance &&
-        !overridingFTReturnType.isAssignableTo(overriddenFTReturnType)) {
+        !_typeSystem.isAssignableTo(
+            overridingFTReturnType, overriddenFTReturnType)) {
       _errorReporter.reportTypeErrorForNode(
           !isGetter
               ? StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE
@@ -1379,7 +1386,8 @@
     }
     int parameterIndex = 0;
     for (int i = 0; i < overridingNormalPT.length; i++) {
-      if (!overridingNormalPT[i].isAssignableTo(overriddenNormalPT[i])) {
+      if (!_typeSystem.isAssignableTo(
+          overridingNormalPT[i], overriddenNormalPT[i])) {
         _errorReporter.reportTypeErrorForNode(
             !isSetter
                 ? StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE
@@ -1396,8 +1404,8 @@
     }
     // SWC.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE
     for (int i = 0; i < overriddenPositionalPT.length; i++) {
-      if (!overridingPositionalPT[i]
-          .isAssignableTo(overriddenPositionalPT[i])) {
+      if (!_typeSystem.isAssignableTo(
+          overridingPositionalPT[i], overriddenPositionalPT[i])) {
         _errorReporter.reportTypeErrorForNode(
             StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE,
             parameterLocations[parameterIndex], [
@@ -1419,7 +1427,7 @@
         continue;
       }
       DartType overriddenType = overriddenNamedPT[overriddenName];
-      if (!overriddenType.isAssignableTo(overridingType)) {
+      if (!_typeSystem.isAssignableTo(overriddenType, overridingType)) {
         // lookup the parameter for the error to select
         ParameterElement parameterToSelect = null;
         AstNode parameterLocationToSelect = null;
@@ -1746,7 +1754,8 @@
     //
     FunctionType constructorType = declaration.element.type;
     DartType constructorReturnType = constructorType.returnType;
-    if (!redirectedReturnType.isAssignableTo(constructorReturnType)) {
+    if (!_typeSystem.isAssignableTo(
+        redirectedReturnType, constructorReturnType)) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE,
           redirectedConstructor,
@@ -1756,7 +1765,7 @@
     //
     // Check parameters
     //
-    if (!redirectedType.isSubtypeOf(constructorType)) {
+    if (!_typeSystem.isSubtypeOf(redirectedType, constructorType)) {
       _errorReporter.reportErrorForNode(
           StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE,
           redirectedConstructor,
@@ -1803,8 +1812,8 @@
     // RETURN_WITHOUT_VALUE
     if (returnExpression == null) {
       if (_inGenerator ||
-          _computeReturnTypeForMethod(null)
-              .isAssignableTo(expectedReturnType)) {
+          _typeSystem.isAssignableTo(
+              _computeReturnTypeForMethod(null), expectedReturnType)) {
         return false;
       }
       _hasReturnWithoutValue = true;
@@ -1882,7 +1891,7 @@
     // Warning case: test static type information
     //
     if (actualStaticType != null && expectedStaticType != null) {
-      if (!actualStaticType.isAssignableTo(expectedStaticType)) {
+      if (!_typeSystem.isAssignableTo(actualStaticType, expectedStaticType)) {
         _errorReporter.reportTypeErrorForNode(
             errorCode, expression, [actualStaticType, expectedStaticType]);
         return true;
@@ -1971,7 +1980,7 @@
     if (expressionType == null) {
       return false;
     }
-    if (expressionType.isAssignableTo(type)) {
+    if (_typeSystem.isAssignableTo(expressionType, type)) {
       return false;
     }
     _errorReporter.reportErrorForNode(errorCode, expression, arguments);
@@ -3191,6 +3200,11 @@
     if (typeName.isSynthetic) {
       return false;
     }
+    // The SDK implementation may implement disallowed types. For example,
+    // JSNumber in dart2js and _Smi in Dart VM both implement int.
+    if (_currentLibrary.source.isInSystemLibrary) {
+      return false;
+    }
     DartType superType = typeName.type;
     for (InterfaceType disallowedType
         in _DISALLOWED_TYPES_TO_EXTEND_OR_IMPLEMENT) {
@@ -3250,7 +3264,7 @@
     if (staticType == null) {
       return false;
     }
-    if (staticType.isAssignableTo(fieldType)) {
+    if (_typeSystem.isAssignableTo(staticType, fieldType)) {
       return false;
     }
     // report problem
@@ -3400,22 +3414,22 @@
     }
     if (_enclosingFunction.isAsynchronous) {
       if (_enclosingFunction.isGenerator) {
-        if (!_enclosingFunction.returnType
-            .isAssignableTo(_typeProvider.streamDynamicType)) {
+        if (!_typeSystem.isAssignableTo(
+            _enclosingFunction.returnType, _typeProvider.streamDynamicType)) {
           _errorReporter.reportErrorForNode(
               StaticTypeWarningCode.ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE,
               returnType);
         }
       } else {
-        if (!_enclosingFunction.returnType
-            .isAssignableTo(_typeProvider.futureDynamicType)) {
+        if (!_typeSystem.isAssignableTo(
+            _enclosingFunction.returnType, _typeProvider.futureDynamicType)) {
           _errorReporter.reportErrorForNode(
               StaticTypeWarningCode.ILLEGAL_ASYNC_RETURN_TYPE, returnType);
         }
       }
     } else if (_enclosingFunction.isGenerator) {
-      if (!_enclosingFunction.returnType
-          .isAssignableTo(_typeProvider.iterableDynamicType)) {
+      if (!_typeSystem.isAssignableTo(
+          _enclosingFunction.returnType, _typeProvider.iterableDynamicType)) {
         _errorReporter.reportErrorForNode(
             StaticTypeWarningCode.ILLEGAL_SYNC_GENERATOR_RETURN_TYPE,
             returnType);
@@ -3788,7 +3802,7 @@
         ? getStaticType(lhs)
         : leftVariableElement.type;
     DartType staticRightType = getStaticType(rhs);
-    if (!staticRightType.isAssignableTo(leftType)) {
+    if (!_typeSystem.isAssignableTo(staticRightType, leftType)) {
       _errorReporter.reportTypeErrorForNode(
           StaticTypeWarningCode.INVALID_ASSIGNMENT,
           rhs,
@@ -3822,7 +3836,7 @@
     if (leftType == null || rightType == null) {
       return false;
     }
-    if (!rightType.isAssignableTo(leftType)) {
+    if (!_typeSystem.isAssignableTo(rightType, leftType)) {
       _errorReporter.reportTypeErrorForNode(
           StaticTypeWarningCode.INVALID_ASSIGNMENT, rhs, [rightType, leftType]);
       return true;
@@ -4096,7 +4110,7 @@
     // (if the getter is null, it is dynamic which is assignable to everything).
     if (setterType != null &&
         getterType != null &&
-        !getterType.isAssignableTo(setterType)) {
+        !_typeSystem.isAssignableTo(getterType, setterType)) {
       if (enclosingClassForCounterpart == null) {
         _errorReporter.reportTypeErrorForNode(
             StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
@@ -4494,7 +4508,7 @@
           FunctionType requiredMemberFT = _inheritanceManager
               .substituteTypeArgumentsInMemberFromInheritance(
                   requiredMemberType, memberName, enclosingType);
-          if (foundConcreteFT.isSubtypeOf(requiredMemberFT)) {
+          if (_typeSystem.isSubtypeOf(foundConcreteFT, requiredMemberFT)) {
             continue;
           }
         }
@@ -4589,7 +4603,8 @@
    */
   bool _checkForNonBoolCondition(Expression condition) {
     DartType conditionType = getStaticType(condition);
-    if (conditionType != null && !conditionType.isAssignableTo(_boolType)) {
+    if (conditionType != null &&
+        !_typeSystem.isAssignableTo(conditionType, _boolType)) {
       _errorReporter.reportErrorForNode(
           StaticTypeWarningCode.NON_BOOL_CONDITION, condition);
       return true;
@@ -4607,7 +4622,7 @@
     Expression expression = statement.condition;
     DartType type = getStaticType(expression);
     if (type is InterfaceType) {
-      if (!type.isAssignableTo(_boolType)) {
+      if (!_typeSystem.isAssignableTo(type, _boolType)) {
         _errorReporter.reportErrorForNode(
             StaticTypeWarningCode.NON_BOOL_EXPRESSION, expression);
         return true;
@@ -4615,7 +4630,7 @@
     } else if (type is FunctionType) {
       FunctionType functionType = type;
       if (functionType.typeArguments.length == 0 &&
-          !functionType.returnType.isAssignableTo(_boolType)) {
+          !_typeSystem.isAssignableTo(functionType.returnType, _boolType)) {
         _errorReporter.reportErrorForNode(
             StaticTypeWarningCode.NON_BOOL_EXPRESSION, expression);
         return true;
@@ -4631,7 +4646,8 @@
    */
   bool _checkForNonBoolNegationExpression(Expression expression) {
     DartType conditionType = getStaticType(expression);
-    if (conditionType != null && !conditionType.isAssignableTo(_boolType)) {
+    if (conditionType != null &&
+        !_typeSystem.isAssignableTo(conditionType, _boolType)) {
       _errorReporter.reportErrorForNode(
           StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION, expression);
       return true;
@@ -5027,7 +5043,7 @@
       ]);
       return true;
     }
-    if (staticReturnType.isAssignableTo(expectedReturnType)) {
+    if (_typeSystem.isAssignableTo(staticReturnType, expectedReturnType)) {
       return false;
     }
     _errorReporter.reportTypeErrorForNode(
@@ -5103,7 +5119,7 @@
       Expression caseExpression = switchCase.expression;
       DartType caseType = getStaticType(caseExpression);
       // check types
-      if (expressionType.isAssignableTo(caseType)) {
+      if (_typeSystem.isAssignableTo(expressionType, caseType)) {
         return false;
       }
       // report problem
@@ -5185,7 +5201,7 @@
             typeArguments.length == typeParameters.length) {
           boundType = boundType.substitute2(typeArguments, typeParameters);
         }
-        if (!argType.isSubtypeOf(boundType)) {
+        if (!_typeSystem.isSubtypeOf(argType, boundType)) {
           ErrorCode errorCode;
           if (_isInConstInstanceCreation) {
             errorCode = CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS;
@@ -5381,7 +5397,7 @@
                 [parameter.identifier.name]);
           } else if (declaredType != null &&
               fieldType != null &&
-              !declaredType.isAssignableTo(fieldType)) {
+              !_typeSystem.isAssignableTo(declaredType, fieldType)) {
             _errorReporter.reportTypeErrorForNode(
                 StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE,
                 parameter,
@@ -5542,7 +5558,7 @@
       impliedReturnType =
           _typeProvider.iterableType.substitute4(<DartType>[staticYieldedType]);
     }
-    if (!impliedReturnType.isAssignableTo(declaredReturnType)) {
+    if (!_typeSystem.isAssignableTo(impliedReturnType, declaredReturnType)) {
       _errorReporter.reportTypeErrorForNode(
           StaticTypeWarningCode.YIELD_OF_INVALID_TYPE,
           yieldExpression,
@@ -5559,7 +5575,7 @@
       } else {
         requiredReturnType = _typeProvider.iterableDynamicType;
       }
-      if (!impliedReturnType.isAssignableTo(requiredReturnType)) {
+      if (!_typeSystem.isAssignableTo(impliedReturnType, requiredReturnType)) {
         _errorReporter.reportTypeErrorForNode(
             StaticTypeWarningCode.YIELD_OF_INVALID_TYPE,
             yieldExpression,
@@ -5584,7 +5600,8 @@
     if (classElement == null) {
       return false;
     }
-    if (!classElement.type.isSubtypeOf(_typeProvider.functionType)) {
+    if (!_typeSystem.isSubtypeOf(
+        classElement.type, _typeProvider.functionType)) {
       return false;
     }
     // If there is a noSuchMethod method, then don't report the warning,
diff --git a/pkg/analyzer/lib/src/generated/incremental_resolver.dart b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
index 0341d59..46cd677 100644
--- a/pkg/analyzer/lib/src/generated/incremental_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
@@ -8,7 +8,7 @@
 import 'dart:math' as math;
 
 import 'package:analyzer/src/context/cache.dart'
-    show CacheEntry, Delta, DeltaResult, TargetedResult;
+    show CacheEntry, Delta, DeltaResult;
 import 'package:analyzer/src/generated/constant.dart';
 import 'package:analyzer/src/task/dart.dart';
 import 'package:analyzer/task/dart.dart';
@@ -857,6 +857,12 @@
   @override
   DeltaResult validate(InternalAnalysisContext context, AnalysisTarget target,
       ResultDescriptor descriptor) {
+    // A body change delta should never leak outside its source.
+    // It can cause invalidation of results (e.g. hints) in other sources,
+    // but only when a result in the updated source is INVALIDATE_NO_DELTA.
+    if (target.source != source) {
+      return DeltaResult.STOP;
+    }
     // don't invalidate results of standard Dart tasks
     bool isByTask(TaskDescriptor taskDescriptor) {
       return taskDescriptor.results.contains(descriptor);
@@ -864,6 +870,12 @@
     if (descriptor == CONTENT) {
       return DeltaResult.KEEP_CONTINUE;
     }
+    if (target is LibrarySpecificUnit && target.unit != source) {
+      if (isByTask(GatherUsedLocalElementsTask.DESCRIPTOR) ||
+          isByTask(GatherUsedImportedElementsTask.DESCRIPTOR)) {
+        return DeltaResult.KEEP_CONTINUE;
+      }
+    }
     if (isByTask(BuildCompilationUnitElementTask.DESCRIPTOR) ||
         isByTask(BuildDirectiveElementsTask.DESCRIPTOR) ||
         isByTask(BuildEnumMemberElementsTask.DESCRIPTOR) ||
@@ -874,9 +886,13 @@
         isByTask(BuildSourceImportExportClosureTask.DESCRIPTOR) ||
         isByTask(ComputeConstantDependenciesTask.DESCRIPTOR) ||
         isByTask(ComputeConstantValueTask.DESCRIPTOR) ||
+        isByTask(DartErrorsTask.DESCRIPTOR) ||
         isByTask(EvaluateUnitConstantsTask.DESCRIPTOR) ||
+        isByTask(GenerateHintsTask.DESCRIPTOR) ||
         isByTask(InferInstanceMembersInUnitTask.DESCRIPTOR) ||
         isByTask(InferStaticVariableTypesInUnitTask.DESCRIPTOR) ||
+        isByTask(LibraryErrorsReadyTask.DESCRIPTOR) ||
+        isByTask(LibraryUnitErrorsTask.DESCRIPTOR) ||
         isByTask(ParseDartTask.DESCRIPTOR) ||
         isByTask(PartiallyResolveUnitReferencesTask.DESCRIPTOR) ||
         isByTask(ScanDartTask.DESCRIPTOR) ||
@@ -889,7 +905,7 @@
       return DeltaResult.KEEP_CONTINUE;
     }
     // invalidate all the other results
-    return DeltaResult.INVALIDATE;
+    return DeltaResult.INVALIDATE_NO_DELTA;
   }
 }
 
@@ -914,6 +930,11 @@
   TypeProvider _typeProvider;
 
   /**
+   * The type system primitives.
+   */
+  TypeSystem _typeSystem;
+
+  /**
    * The element for the library containing the compilation unit being resolved.
    */
   LibraryElementImpl _definingLibrary;
@@ -992,6 +1013,7 @@
     _source = _definingUnit.source;
     _context = _definingUnit.context;
     _typeProvider = _context.typeProvider;
+    _typeSystem = _context.typeSystem;
   }
 
   /**
@@ -1099,8 +1121,8 @@
     // compute values
     {
       CompilationUnit unit = node.getAncestor((n) => n is CompilationUnit);
-      ConstantValueComputer computer = new ConstantValueComputer(
-          _context, _typeProvider, _context.declaredVariables);
+      ConstantValueComputer computer = new ConstantValueComputer(_context,
+          _typeProvider, _context.declaredVariables, null, _typeSystem);
       computer.add(unit, _source, _librarySource);
       computer.computeValues();
     }
@@ -1241,9 +1263,14 @@
 
   void _updateCache() {
     if (newSourceEntry != null) {
-      newSourceEntry.setState(CONTENT, CacheState.INVALID,
-          delta: new IncrementalBodyDelta(_source, _updateOffset, _updateEndOld,
-              _updateEndNew, _updateDelta));
+      LoggingTimer timer = logger.startTimer();
+      try {
+        newSourceEntry.setState(CONTENT, CacheState.INVALID,
+            delta: new IncrementalBodyDelta(_source, _updateOffset,
+                _updateEndOld, _updateEndNew, _updateDelta));
+      } finally {
+        timer.stop('invalidate cache with delta');
+      }
     }
   }
 
@@ -1267,7 +1294,6 @@
 
   void _updateEntry_NEW() {
     _updateErrors_NEW(INFER_STATIC_VARIABLE_TYPES_ERRORS, _resolveErrors);
-    _updateErrors_NEW(LIBRARY_UNIT_ERRORS, _resolveErrors);
     _updateErrors_NEW(PARTIALLY_RESOLVE_REFERENCES_ERRORS, _resolveErrors);
     _updateErrors_NEW(RESOLVE_FUNCTION_BODIES_ERRORS, _resolveErrors);
     _updateErrors_NEW(RESOLVE_TYPE_NAMES_ERRORS, []);
@@ -1312,7 +1338,7 @@
       List<AnalysisError> newErrors) {
     List<AnalysisError> oldErrors = newUnitEntry.getValue(descriptor);
     List<AnalysisError> errors = _updateErrors(oldErrors, newErrors);
-    newUnitEntry.setValueIncremental(descriptor, errors);
+    newUnitEntry.setValueIncremental(descriptor, errors, true);
   }
 
   void _updateErrors_OLD(DataDescriptor<List<AnalysisError>> descriptor,
@@ -1685,21 +1711,12 @@
   }
 
   void _updateEntry_NEW() {
-    _newSourceEntry.setState(DART_ERRORS, CacheState.INVALID);
     // scan results
-    List<TargetedResult> scanDeps = <TargetedResult>[
-      new TargetedResult(_unitSource, CONTENT)
-    ];
-    _newSourceEntry.setState(SCAN_ERRORS, CacheState.INVALID);
-    _newSourceEntry.setValue(SCAN_ERRORS, _newScanErrors, scanDeps);
-    _newSourceEntry.setValue(LINE_INFO, _newLineInfo, scanDeps);
+    _newSourceEntry.setValueIncremental(SCAN_ERRORS, _newScanErrors, true);
+    _newSourceEntry.setValueIncremental(LINE_INFO, _newLineInfo, false);
     // parse results
-    List<TargetedResult> parseDeps = <TargetedResult>[
-      new TargetedResult(_unitSource, TOKEN_STREAM)
-    ];
-    _newSourceEntry.setState(PARSE_ERRORS, CacheState.INVALID);
-    _newSourceEntry.setValue(PARSE_ERRORS, _newParseErrors, parseDeps);
-    _newSourceEntry.setValue(PARSED_UNIT, _oldUnit, parseDeps);
+    _newSourceEntry.setValueIncremental(PARSE_ERRORS, _newParseErrors, true);
+    _newSourceEntry.setValueIncremental(PARSED_UNIT, _oldUnit, false);
   }
 
   void _updateEntry_OLD() {
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 36d68f9..6061588 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -73,12 +73,19 @@
   final InterfaceType _futureNullType;
 
   /**
+   * The type system primitives
+   */
+  TypeSystem _typeSystem;
+
+  /**
    * Create a new instance of the [BestPracticesVerifier].
    *
    * @param errorReporter the error reporter
    */
-  BestPracticesVerifier(this._errorReporter, TypeProvider typeProvider)
-      : _futureNullType = typeProvider.futureNullType;
+  BestPracticesVerifier(this._errorReporter, TypeProvider typeProvider,
+      {TypeSystem typeSystem})
+      : _futureNullType = typeProvider.futureNullType,
+        _typeSystem = (typeSystem != null) ? typeSystem : new TypeSystemImpl();
 
   @override
   Object visitArgumentList(ArgumentList node) {
@@ -304,7 +311,7 @@
     // Warning case: test static type information
     //
     if (actualStaticType != null && expectedStaticType != null) {
-      if (!actualStaticType.isAssignableTo(expectedStaticType)) {
+      if (!_typeSystem.isAssignableTo(actualStaticType, expectedStaticType)) {
         // A warning was created in the ErrorVerifier, return false, don't
         // create a hint when a warning has already been created.
         return false;
@@ -320,7 +327,7 @@
     DartType actualBestType =
         actualPropagatedType != null ? actualPropagatedType : actualStaticType;
     if (actualBestType != null && expectedBestType != null) {
-      if (!actualBestType.isAssignableTo(expectedBestType)) {
+      if (!_typeSystem.isAssignableTo(actualBestType, expectedBestType)) {
         _errorReporter.reportTypeErrorForNode(
             hintCode, expression, [actualBestType, expectedBestType]);
         return true;
@@ -519,14 +526,14 @@
         ? ErrorVerifier.getStaticType(lhs)
         : leftVariableElement.type;
     DartType staticRightType = ErrorVerifier.getStaticType(rhs);
-    if (!staticRightType.isAssignableTo(leftType)) {
+    if (!_typeSystem.isAssignableTo(staticRightType, leftType)) {
       // The warning was generated on this rhs
       return false;
     }
     // Test for, and then generate the hint
     DartType bestRightType = rhs.bestType;
     if (leftType != null && bestRightType != null) {
-      if (!bestRightType.isAssignableTo(leftType)) {
+      if (!_typeSystem.isAssignableTo(bestRightType, leftType)) {
         _errorReporter.reportTypeErrorForNode(
             HintCode.INVALID_ASSIGNMENT, rhs, [bestRightType, leftType]);
         return true;
@@ -593,7 +600,8 @@
     }
     // For async, give no hint if Future<Null> is assignable to the return
     // type.
-    if (body.isAsynchronous && _futureNullType.isAssignableTo(returnTypeType)) {
+    if (body.isAsynchronous &&
+        _typeSystem.isAssignableTo(_futureNullType, returnTypeType)) {
       return false;
     }
     // Check the block for a return statement, if not, create the hint
@@ -839,6 +847,11 @@
   final TypeProvider _typeProvider;
 
   /**
+   * The type system in use.
+   */
+  final TypeSystem _typeSystem;
+
+  /**
    * The set of variables declared using '-D' on the command line.
    */
   final DeclaredVariables declaredVariables;
@@ -873,8 +886,10 @@
    *
    * @param errorReporter the error reporter by which errors will be reported
    */
-  ConstantVerifier(this._errorReporter, this._currentLibrary,
-      this._typeProvider, this.declaredVariables) {
+  ConstantVerifier(this._errorReporter, LibraryElement currentLibrary,
+      this._typeProvider, this.declaredVariables)
+      : _currentLibrary = currentLibrary,
+        _typeSystem = currentLibrary.context.typeSystem {
     this._boolType = _typeProvider.boolType;
     this._intType = _typeProvider.intType;
     this._numType = _typeProvider.numType;
@@ -932,7 +947,8 @@
       ConstructorElement constructor = node.staticElement;
       if (constructor != null) {
         ConstantEvaluationEngine evaluationEngine =
-            new ConstantEvaluationEngine(_typeProvider, declaredVariables);
+            new ConstantEvaluationEngine(_typeProvider, declaredVariables,
+                typeSystem: _typeSystem);
         ConstantVisitor constantVisitor =
             new ConstantVisitor(evaluationEngine, _errorReporter);
         evaluationEngine.evaluateConstructorCall(
@@ -1006,7 +1022,8 @@
         ErrorReporter subErrorReporter =
             new ErrorReporter(errorListener, _errorReporter.source);
         DartObjectImpl result = key.accept(new ConstantVisitor(
-            new ConstantEvaluationEngine(_typeProvider, declaredVariables),
+            new ConstantEvaluationEngine(_typeProvider, declaredVariables,
+                typeSystem: _typeSystem),
             subErrorReporter));
         if (result != null) {
           if (keys.contains(result)) {
@@ -1212,7 +1229,8 @@
     ErrorReporter subErrorReporter =
         new ErrorReporter(errorListener, _errorReporter.source);
     DartObjectImpl result = expression.accept(new ConstantVisitor(
-        new ConstantEvaluationEngine(_typeProvider, declaredVariables),
+        new ConstantEvaluationEngine(_typeProvider, declaredVariables,
+            typeSystem: _typeSystem),
         subErrorReporter));
     _reportErrors(errorListener.errors, errorCode);
     return result;
@@ -1320,8 +1338,8 @@
               ErrorReporter subErrorReporter =
                   new ErrorReporter(errorListener, _errorReporter.source);
               DartObjectImpl result = initializer.accept(new ConstantVisitor(
-                  new ConstantEvaluationEngine(
-                      _typeProvider, declaredVariables),
+                  new ConstantEvaluationEngine(_typeProvider, declaredVariables,
+                      typeSystem: _typeSystem),
                   subErrorReporter));
               if (result == null) {
                 _errorReporter.reportErrorForNode(
@@ -1350,7 +1368,8 @@
         new ErrorReporter(errorListener, _errorReporter.source);
     DartObjectImpl result = expression.accept(
         new _ConstantVerifier_validateInitializerExpression(_typeProvider,
-            subErrorReporter, this, parameterElements, declaredVariables));
+            subErrorReporter, this, parameterElements, declaredVariables,
+            typeSystem: _typeSystem));
     _reportErrors(errorListener.errors,
         CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER);
     if (result != null) {
@@ -1475,11 +1494,18 @@
   final ErrorReporter _errorReporter;
 
   /**
+   *  The type system for this visitor
+   */
+  final TypeSystem _typeSystem;
+
+  /**
    * Create a new instance of the [DeadCodeVerifier].
    *
    * @param errorReporter the error reporter
    */
-  DeadCodeVerifier(this._errorReporter);
+  DeadCodeVerifier(this._errorReporter, {TypeSystem typeSystem})
+      : this._typeSystem =
+            (typeSystem != null) ? typeSystem : new TypeSystemImpl();
 
   @override
   Object visitBinaryExpression(BinaryExpression node) {
@@ -1644,7 +1670,7 @@
             }
           }
           for (DartType type in visitedTypes) {
-            if (currentType.isSubtypeOf(type)) {
+            if (_typeSystem.isSubtypeOf(currentType, type)) {
               CatchClause lastCatchClause = catchClauses[numOfCatchClauses - 1];
               int offset = catchClause.offset;
               int length = lastCatchClause.end - offset;
@@ -4799,15 +4825,16 @@
     ErrorReporter errorReporter = new ErrorReporter(_errorListener, source);
     unit.accept(_usedImportedElementsVisitor);
     // dead code analysis
-    unit.accept(new DeadCodeVerifier(errorReporter));
+    unit.accept(
+        new DeadCodeVerifier(errorReporter, typeSystem: _context.typeSystem));
     unit.accept(_usedLocalElementsVisitor);
     // dart2js analysis
     if (_enableDart2JSHints) {
       unit.accept(new Dart2JSVerifier(errorReporter));
     }
     // Dart best practices
-    unit.accept(
-        new BestPracticesVerifier(errorReporter, _context.typeProvider));
+    unit.accept(new BestPracticesVerifier(errorReporter, _context.typeProvider,
+        typeSystem: _context.typeSystem));
     unit.accept(new OverrideVerifier(errorReporter, _manager));
     // Find to-do comments
     new ToDoFinder(errorReporter).findIn(unit);
@@ -6268,11 +6295,13 @@
               continue;
             }
             bool subtypeOfAllTypes = true;
+            TypeSystem typeSystem = _library.context.typeSystem;
             for (int j = 0;
                 j < numOfEltsWithMatchingNames && subtypeOfAllTypes;
                 j++) {
               if (i != j) {
-                if (!subtype.isSubtypeOf(executableElementTypes[j])) {
+                if (!typeSystem.isSubtypeOf(
+                    subtype, executableElementTypes[j])) {
                   subtypeOfAllTypes = false;
                   break;
                 }
@@ -7570,6 +7599,11 @@
   TypeProvider _typeProvider;
 
   /**
+   * The type system in use for the library
+   */
+  TypeSystem _typeSystem;
+
+  /**
    * A table mapping library sources to the information being maintained for those libraries.
    */
   HashMap<Source, Library> _libraryMap = new HashMap<Source, Library>();
@@ -7612,6 +7646,11 @@
   TypeProvider get typeProvider => _typeProvider;
 
   /**
+   * The type system in use.
+   */
+  TypeSystem get typeSystem => _typeSystem;
+
+  /**
    * Create an object to represent the information about the library defined by the compilation unit
    * with the given source.
    *
@@ -7696,6 +7735,7 @@
     }
     _buildDirectiveModels();
     _typeProvider = new TypeProviderImpl(coreElement, asyncElement);
+    _typeSystem = TypeSystem.create(analysisContext);
     _buildTypeHierarchies();
     //
     // Perform resolution and type analysis.
@@ -7774,6 +7814,7 @@
     }
     _buildDirectiveModels();
     _typeProvider = new TypeProviderImpl(coreElement, asyncElement);
+    _typeSystem = TypeSystem.create(analysisContext);
     _buildEnumMembers();
     _buildTypeHierarchies();
     //
@@ -8286,7 +8327,11 @@
   void _performConstantEvaluation() {
     PerformanceStatistics.resolve.makeCurrentWhile(() {
       ConstantValueComputer computer = new ConstantValueComputer(
-          analysisContext, _typeProvider, analysisContext.declaredVariables);
+          analysisContext,
+          _typeProvider,
+          analysisContext.declaredVariables,
+          null,
+          _typeSystem);
       for (Library library in _librariesInCycles) {
         for (Source source in library.compilationUnitSources) {
           try {
@@ -8419,6 +8464,11 @@
   TypeProvider _typeProvider;
 
   /**
+   * The type system in use for the library
+   */
+  TypeSystem _typeSystem;
+
+  /**
    * A table mapping library sources to the information being maintained for those libraries.
    */
   HashMap<Source, ResolvableLibrary> _libraryMap =
@@ -8508,6 +8558,7 @@
     }
     _buildDirectiveModels();
     _typeProvider = new TypeProviderImpl(coreElement, asyncElement);
+    _typeSystem = TypeSystem.create(analysisContext);
     _buildEnumMembers();
     _buildTypeHierarchies();
     //
@@ -8781,7 +8832,11 @@
   void _performConstantEvaluation() {
     PerformanceStatistics.resolve.makeCurrentWhile(() {
       ConstantValueComputer computer = new ConstantValueComputer(
-          analysisContext, _typeProvider, analysisContext.declaredVariables);
+          analysisContext,
+          _typeProvider,
+          analysisContext.declaredVariables,
+          null,
+          _typeSystem);
       for (ResolvableLibrary library in _librariesInCycle) {
         for (ResolvableCompilationUnit unit
             in library.resolvableCompilationUnits) {
@@ -10227,6 +10282,11 @@
    */
   StaticTypeAnalyzer typeAnalyzer;
 
+  /*
+  * The type system in use during resolution.
+  */
+  TypeSystem typeSystem;
+
   /**
    * The class element representing the class containing the current node,
    * or `null` if the current node is not contained in a class.
@@ -10307,6 +10367,7 @@
       this._inheritanceManager = inheritanceManager;
     }
     this.elementResolver = new ElementResolver(this);
+    this.typeSystem = definingLibrary.context.typeSystem;
     if (typeAnalyzerFactory == null) {
       this.typeAnalyzer = new StaticTypeAnalyzer(this);
     } else {
@@ -14897,14 +14958,25 @@
  */
 abstract class TypeSystem {
   /**
-   * Return the [TypeProvider] associated with this [TypeSystem].
+   * Create either a strong mode or regular type system based on context.
    */
-  TypeProvider get typeProvider;
+  static TypeSystem create(AnalysisContext context) {
+    return (context.analysisOptions.strongMode)
+        ? new StrongTypeSystemImpl()
+        : new TypeSystemImpl();
+  }
 
   /**
    * Compute the least upper bound of two types.
    */
-  DartType getLeastUpperBound(DartType type1, DartType type2);
+  DartType getLeastUpperBound(
+      TypeProvider typeProvider, DartType type1, DartType type2);
+
+  /**
+   * Return `true` if the [leftType] is assignable to the [rightType] (that is,
+   * if leftType <==> rightType).
+   */
+  bool isAssignableTo(DartType leftType, DartType rightType);
 
   /**
    * Return `true` if the [leftType] is a subtype of the [rightType] (that is,
@@ -14917,13 +14989,11 @@
  * Implementation of [TypeSystem] using the rules in the Dart specification.
  */
 class TypeSystemImpl implements TypeSystem {
-  @override
-  final TypeProvider typeProvider;
-
-  TypeSystemImpl(this.typeProvider);
+  TypeSystemImpl();
 
   @override
-  DartType getLeastUpperBound(DartType type1, DartType type2) {
+  DartType getLeastUpperBound(
+      TypeProvider typeProvider, DartType type1, DartType type2) {
     // The least upper bound relation is reflexive.
     if (identical(type1, type2)) {
       return type1;
@@ -15002,11 +15072,323 @@
   }
 
   @override
+  bool isAssignableTo(DartType leftType, DartType rightType) {
+    return leftType.isAssignableTo(rightType);
+  }
+
+  @override
   bool isSubtypeOf(DartType leftType, DartType rightType) {
     return leftType.isSubtypeOf(rightType);
   }
 }
 
+typedef bool _GuardedSubtypeChecker<T>(T t1, T t2, Set<Element> visited);
+typedef bool _SubtypeChecker<T>(T t1, T t2);
+
+/**
+ * Implementation of [TypeSystem] using the strong mode rules.
+ * https://github.com/dart-lang/dev_compiler/blob/master/STRONG_MODE.md
+ */
+class StrongTypeSystemImpl implements TypeSystem {
+  StrongTypeSystemImpl();
+
+  final _specTypeSystem = new TypeSystemImpl();
+
+  @override
+  DartType getLeastUpperBound(
+      TypeProvider typeProvider, DartType type1, DartType type2) {
+    // TODO(leafp): Implement a strong mode version of this.
+    return _specTypeSystem.getLeastUpperBound(typeProvider, type1, type2);
+  }
+
+  // TODO(leafp): Document the rules in play here
+  @override
+  bool isAssignableTo(DartType toType, DartType fromType) {
+    // An actual subtype
+    if (isSubtypeOf(fromType, toType)) {
+      return true;
+    }
+
+    // Don't allow implicit downcasts between function types
+    // and call method objects, as these will almost always fail.
+    if ((fromType is FunctionType && _getCallMethodType(toType) != null) ||
+        (toType is FunctionType && _getCallMethodType(fromType) != null)) {
+      return false;
+    }
+
+    // If the subtype relation goes the other way, allow the implicit downcast.
+    // 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)) {
+      // TODO(leafp): error if type is known to be exact (literal,
+      //  instance creation).
+      // TODO(leafp): Warn on composite downcast.
+      // TODO(leafp): hint on object/dynamic downcast.
+      // TODO(leafp): Consider allowing assignment casts.
+      return true;
+    }
+
+    return false;
+  }
+
+  bool _isBottom(DartType t, {bool dynamicIsBottom: false}) {
+    return (t.isDynamic && dynamicIsBottom) || t.isBottom;
+  }
+
+  bool _isTop(DartType t, {bool dynamicIsBottom: false}) {
+    return (t.isDynamic && !dynamicIsBottom) || t.isObject;
+  }
+
+  // Given a type t, if t is an interface type with a call method
+  // defined, return the function type for the call method, otherwise
+  // return null.
+  FunctionType _getCallMethodType(DartType t) {
+    if (t is InterfaceType) {
+      ClassElement element = t.element;
+      InheritanceManager manager = new InheritanceManager(element.library);
+      FunctionType callType = manager.lookupMemberType(t, "call");
+      return callType;
+    }
+    return null;
+  }
+
+  /**
+   * Check that [f1] is a subtype of [f2]. 
+   * [fuzzyArrows] indicates whether or not the f1 and f2 should be
+   * treated as fuzzy arrow types (and hence dynamic parameters to f2 treated
+   * as bottom).
+   */
+  bool _isFunctionSubtypeOf(FunctionType f1, FunctionType f2,
+      {bool fuzzyArrows: true}) {
+    final r1s = f1.normalParameterTypes;
+    final o1s = f1.optionalParameterTypes;
+    final n1s = f1.namedParameterTypes;
+    final r2s = f2.normalParameterTypes;
+    final o2s = f2.optionalParameterTypes;
+    final n2s = f2.namedParameterTypes;
+    final ret1 = f1.returnType;
+    final ret2 = f2.returnType;
+
+    // A -> B <: C -> D if C <: A and
+    // either D is void or B <: D
+    if (!ret2.isVoid && !isSubtypeOf(ret1, ret2)) {
+      return false;
+    }
+
+    // Reject if one has named and the other has optional
+    if (n1s.length > 0 && o2s.length > 0) {
+      return false;
+    }
+    if (n2s.length > 0 && o1s.length > 0) {
+      return false;
+    }
+
+    // Rebind _isSubtypeOf for convenience
+    _SubtypeChecker<DartType> parameterSubtype = (DartType t1, DartType t2) =>
+        _isSubtypeOf(t1, t2, null, dynamicIsBottom: fuzzyArrows);
+
+    // f2 has named parameters
+    if (n2s.length > 0) {
+      // Check that every named parameter in f2 has a match in f1
+      for (String k2 in n2s.keys) {
+        if (!n1s.containsKey(k2)) {
+          return false;
+        }
+        if (!parameterSubtype(n2s[k2], n1s[k2])) {
+          return false;
+        }
+      }
+    }
+    // If we get here, we either have no named parameters,
+    // or else the named parameters match and we have no optional
+    // parameters
+
+    // If f1 has more required parameters, reject
+    if (r1s.length > r2s.length) {
+      return false;
+    }
+
+    // If f2 has more required + optional parameters, reject
+    if (r2s.length + o2s.length > r1s.length + o1s.length) {
+      return false;
+    }
+
+    // The parameter lists must look like the following at this point
+    // where rrr is a region of required, and ooo is a region of optionals.
+    // f1: rrr ooo ooo ooo
+    // f2: rrr rrr ooo
+    int rr = r1s.length; // required in both
+    int or = r2s.length - r1s.length; // optional in f1, required in f2
+    int oo = o2s.length; // optional in both
+
+    for (int i = 0; i < rr; ++i) {
+      if (!parameterSubtype(r2s[i], r1s[i])) {
+        return false;
+      }
+    }
+    for (int i = 0, j = rr; i < or; ++i, ++j) {
+      if (!parameterSubtype(r2s[j], o1s[i])) {
+        return false;
+      }
+    }
+    for (int i = or, j = 0; i < oo; ++i, ++j) {
+      if (!parameterSubtype(o2s[j], o1s[i])) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  // Guard against loops in the class hierarchy
+  _GuardedSubtypeChecker<DartType> _guard(
+      _GuardedSubtypeChecker<DartType> check) {
+    return (DartType t1, DartType t2, Set<Element> visited) {
+      Element element = t1.element;
+      if (visited == null) {
+        visited = new HashSet<Element>();
+      }
+      if (element == null || !visited.add(element)) {
+        return false;
+      }
+      try {
+        return check(t1, t2, visited);
+      } finally {
+        visited.remove(element);
+      }
+    };
+  }
+
+  bool _isInterfaceSubtypeOf(
+      InterfaceType i1, InterfaceType i2, Set<Element> visited) {
+    // Guard recursive calls
+    _GuardedSubtypeChecker<InterfaceType> guardedInterfaceSubtype =
+        _guard(_isInterfaceSubtypeOf);
+
+    if (i1 == i2) {
+      return true;
+    }
+
+    if (i1.element == i2.element) {
+      List<DartType> tArgs1 = i1.typeArguments;
+      List<DartType> tArgs2 = i2.typeArguments;
+
+      assert(tArgs1.length == tArgs2.length);
+
+      for (int i = 0; i < tArgs1.length; i++) {
+        DartType t1 = tArgs1[i];
+        DartType t2 = tArgs2[i];
+        if (!isSubtypeOf(t1, t2)) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    if (i2.isDartCoreFunction && i1.element.getMethod("call") != null) {
+      return true;
+    }
+
+    if (i1.isObject) {
+      return false;
+    }
+
+    if (guardedInterfaceSubtype(i1.superclass, i2, visited)) {
+      return true;
+    }
+
+    for (final parent in i1.interfaces) {
+      if (guardedInterfaceSubtype(parent, i2, visited)) {
+        return true;
+      }
+    }
+
+    for (final parent in i1.mixins) {
+      if (guardedInterfaceSubtype(parent, i2, visited)) {
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+  bool _isSubtypeOf(DartType t1, DartType t2, Set<Element> visited,
+      {bool dynamicIsBottom: false}) {
+    // Guard recursive calls
+    _GuardedSubtypeChecker<DartType> guardedSubtype = _guard(_isSubtypeOf);
+
+    if (t1 == t2) {
+      return true;
+    }
+
+    // The types are void, dynamic, bottom, interface types, function types
+    // and type parameters.  We proceed by eliminating these different classes
+    // from consideration.
+
+    // Trivially true.
+    if (_isTop(t2, dynamicIsBottom: dynamicIsBottom) ||
+        _isBottom(t1, dynamicIsBottom: dynamicIsBottom)) {
+      return true;
+    }
+
+    // Trivially false.
+    if (_isTop(t1, dynamicIsBottom: dynamicIsBottom) ||
+        _isBottom(t2, dynamicIsBottom: dynamicIsBottom)) {
+      return false;
+    }
+
+    // S <: T where S is a type variable
+    //  T is not dynamic or object (handled above)
+    //  S != T (handled above)
+    //  So only true if bound of S is S' and
+    //  S' <: T
+    if (t1 is TypeParameterType) {
+      DartType bound = t1.element.bound;
+      if (bound == null) return false;
+      return guardedSubtype(bound, t2, visited);
+    }
+
+    if (t2 is TypeParameterType) {
+      return false;
+    }
+
+    if (t1.isVoid || t2.isVoid) {
+      return false;
+    }
+
+    // We've eliminated void, dynamic, bottom, and type parameters.  The only
+    // cases are the combinations of interface type and function type.
+
+    // A function type can only subtype an interface type if
+    // the interface type is Function
+    if (t1 is FunctionType && t2 is InterfaceType) {
+      return t2.isDartCoreFunction;
+    }
+
+    // An interface type can only subtype a function type if
+    // the interface type declares a call method with a type
+    // which is a super type of the function type.
+    if (t1 is InterfaceType && t2 is FunctionType) {
+      var callType = _getCallMethodType(t1);
+      return (callType != null) && _isFunctionSubtypeOf(callType, t2);
+    }
+
+    // Two interface types
+    if (t1 is InterfaceType && t2 is InterfaceType) {
+      return _isInterfaceSubtypeOf(t1, t2, visited);
+    }
+
+    return _isFunctionSubtypeOf(t1 as FunctionType, t2 as FunctionType);
+  }
+
+  // TODO(leafp): Document the rules in play here
+  @override
+  bool isSubtypeOf(DartType leftType, DartType rightType) {
+    return _isSubtypeOf(leftType, rightType, null);
+  }
+}
+
 /**
  * Instances of the class [UnusedLocalElementsVerifier] traverse an element
  * structure looking for cases of [HintCode.UNUSED_ELEMENT],
@@ -15409,13 +15791,19 @@
 
   List<ParameterElement> parameterElements;
 
+  TypeSystem _typeSystem;
+
   _ConstantVerifier_validateInitializerExpression(
       TypeProvider typeProvider,
       ErrorReporter errorReporter,
       this.verifier,
       this.parameterElements,
-      DeclaredVariables declaredVariables)
-      : super(new ConstantEvaluationEngine(typeProvider, declaredVariables),
+      DeclaredVariables declaredVariables,
+      {TypeSystem typeSystem})
+      : _typeSystem = (typeSystem != null) ? typeSystem : new TypeSystemImpl(),
+        super(
+            new ConstantEvaluationEngine(typeProvider, declaredVariables,
+                typeSystem: typeSystem),
             errorReporter);
 
   @override
@@ -15428,19 +15816,20 @@
           if (type.isDynamic) {
             return new DartObjectImpl(
                 verifier._typeProvider.objectType, DynamicState.DYNAMIC_STATE);
-          } else if (type.isSubtypeOf(verifier._boolType)) {
+          } else if (_typeSystem.isSubtypeOf(type, verifier._boolType)) {
             return new DartObjectImpl(
                 verifier._typeProvider.boolType, BoolState.UNKNOWN_VALUE);
-          } else if (type.isSubtypeOf(verifier._typeProvider.doubleType)) {
+          } else if (_typeSystem.isSubtypeOf(
+              type, verifier._typeProvider.doubleType)) {
             return new DartObjectImpl(
                 verifier._typeProvider.doubleType, DoubleState.UNKNOWN_VALUE);
-          } else if (type.isSubtypeOf(verifier._intType)) {
+          } else if (_typeSystem.isSubtypeOf(type, verifier._intType)) {
             return new DartObjectImpl(
                 verifier._typeProvider.intType, IntState.UNKNOWN_VALUE);
-          } else if (type.isSubtypeOf(verifier._numType)) {
+          } else if (_typeSystem.isSubtypeOf(type, verifier._numType)) {
             return new DartObjectImpl(
                 verifier._typeProvider.numType, NumState.UNKNOWN_VALUE);
-          } else if (type.isSubtypeOf(verifier._stringType)) {
+          } else if (_typeSystem.isSubtypeOf(type, verifier._stringType)) {
             return new DartObjectImpl(
                 verifier._typeProvider.stringType, StringState.UNKNOWN_VALUE);
           }
diff --git a/pkg/analyzer/lib/src/generated/source.dart b/pkg/analyzer/lib/src/generated/source.dart
index 31bd28a..1a47516 100644
--- a/pkg/analyzer/lib/src/generated/source.dart
+++ b/pkg/analyzer/lib/src/generated/source.dart
@@ -272,6 +272,9 @@
    * @param columnNumber the one-based index of the column containing the character
    */
   LineInfo_Location(this.lineNumber, this.columnNumber);
+
+  @override
+  String toString() => '$lineNumber:$columnNumber';
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
index 3da6e37..0dcd014 100644
--- a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
+++ b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
@@ -58,6 +58,11 @@
   InterfaceType thisType;
 
   /**
+   * Are we running in strong mode or not.
+   */
+  bool _strongMode;
+
+  /**
    * The object keeping track of which elements have had their types overridden.
    */
   TypeOverrideManager _overrideManager;
@@ -80,10 +85,11 @@
    */
   StaticTypeAnalyzer(this._resolver) {
     _typeProvider = _resolver.typeProvider;
+    _typeSystem = _resolver.typeSystem;
     _dynamicType = _typeProvider.dynamicType;
     _overrideManager = _resolver.overrideManager;
     _promoteManager = _resolver.promoteManager;
-    _typeSystem = new TypeSystemImpl(_typeProvider);
+    _strongMode = _resolver.definingLibrary.context.analysisOptions.strongMode;
   }
 
   /**
@@ -306,9 +312,10 @@
   @override
   Object visitDeclaredIdentifier(DeclaredIdentifier node) {
     super.visitDeclaredIdentifier(node);
-    if (_resolver.definingLibrary.context.analysisOptions.strongMode) {
+    if (_strongMode) {
       _inferForEachLoopVariableType(node);
     }
+    return null;
   }
 
   /**
@@ -618,6 +625,15 @@
     // Check for special cases.
     bool needPropagatedType = true;
     String methodName = methodNameNode.name;
+    if (_strongMode) {
+      // TODO(leafp): Revisit this.  It's here to associate a type with the
+      // method name, which is important to the DDC backend (but apparently
+      // no-one else).  Not sure that there's a problem having this here, but
+      // it's a little ad hoc.
+      visitSimpleIdentifier(methodNameNode);
+
+      _inferMethodInvocation(node);
+    }
     if (methodName == "then") {
       Expression target = node.realTarget;
       if (target != null) {
@@ -882,8 +898,11 @@
     } else if (staticElement is VariableElement) {
       staticType = staticElement.type;
     }
-    _recordStaticType(prefixedIdentifier, staticType);
-    _recordStaticType(node, staticType);
+    if (!(_strongMode &&
+        _inferObjectAccess(node, staticType, prefixedIdentifier))) {
+      _recordStaticType(prefixedIdentifier, staticType);
+      _recordStaticType(node, staticType);
+    }
     Element propagatedElement = prefixedIdentifier.propagatedElement;
     // HACK: special case for object getters ([hashCode] and [runtimeType]) on
     // dynamic expressions. More special cases in [visitMethodInvocation].
@@ -1011,8 +1030,10 @@
     } else {
       // TODO(brianwilkerson) Report this internal error.
     }
-    _recordStaticType(propertyName, staticType);
-    _recordStaticType(node, staticType);
+    if (!(_strongMode && _inferObjectAccess(node, staticType, propertyName))) {
+      _recordStaticType(propertyName, staticType);
+      _recordStaticType(node, staticType);
+    }
     Element propagatedElement = propertyName.propagatedElement;
     DartType propagatedType = _overrideManager.getType(propagatedElement);
     if (propagatedElement is MethodElement) {
@@ -1194,7 +1215,7 @@
   @override
   Object visitVariableDeclaration(VariableDeclaration node) {
     Expression initializer = node.initializer;
-    if (_resolver.definingLibrary.context.analysisOptions.strongMode) {
+    if (_strongMode) {
       _inferLocalVariableType(node, initializer);
     }
     if (initializer != null) {
@@ -1226,7 +1247,7 @@
       staticType2 = _dynamicType;
     }
     DartType staticType =
-        _typeSystem.getLeastUpperBound(staticType1, staticType2);
+        _typeSystem.getLeastUpperBound(_typeProvider, staticType1, staticType2);
     if (staticType == null) {
       staticType = _dynamicType;
     }
@@ -1240,8 +1261,8 @@
       if (propagatedType2 == null) {
         propagatedType2 = staticType2;
       }
-      DartType propagatedType =
-          _typeSystem.getLeastUpperBound(propagatedType1, propagatedType2);
+      DartType propagatedType = _typeSystem.getLeastUpperBound(
+          _typeProvider, propagatedType1, propagatedType2);
       _resolver.recordPropagatedTypeIfBetter(node, propagatedType);
     }
   }
@@ -1291,7 +1312,7 @@
     if (body is BlockFunctionBody) {
       _StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction visitor =
           new _StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction(
-              _typeSystem);
+              _typeProvider, _typeSystem);
       body.accept(visitor);
       return visitor.result;
     }
@@ -1655,6 +1676,12 @@
     return returnType;
   }
 
+  /**
+   * Given a declared identifier from a foreach loop, attempt to infer
+   * a type for it if one is not already present.  Inference is based
+   * on the type of the iterator or stream over which the foreach loop
+   * is defined.
+   */
   void _inferForEachLoopVariableType(DeclaredIdentifier loopVariable) {
     if (loopVariable != null &&
         loopVariable.type == null &&
@@ -1678,6 +1705,85 @@
     }
   }
 
+  /**
+   * Given a method invocation [node], attempt to infer a better
+   * type for the result.
+   */
+  bool _inferMethodInvocation(MethodInvocation node) {
+    return _inferMethodInvocationObject(node) ||
+        _inferMethodInvocationGeneric(node) ||
+        _inferMethodInvocationInlineJS(node);
+  }
+
+  /**
+   * Given a method invocation [node], attempt to infer a better
+   * type for the result using an ad-hoc list of psuedo-generic methods.
+   */
+  bool _inferMethodInvocationGeneric(MethodInvocation node) {
+    DartType inferredType = _matchGeneric(node);
+    // TODO(vsm): If the inferred type is not a subtype,
+    // should we use a GLB instead?
+    if (inferredType != null &&
+        _typeSystem.isSubtypeOf(inferredType, node.staticType)) {
+      _recordStaticType(node, inferredType);
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Given a method invocation [node], attempt to infer a better
+   * type for the result if it is an inline JS invocation
+   */
+  bool _inferMethodInvocationInlineJS(MethodInvocation node) {
+    Element e = node.methodName.staticElement;
+    if (e is FunctionElement &&
+        e.library.source.uri.toString() == 'dart:_foreign_helper' &&
+        e.name == 'JS') {
+      DartType returnType = _getFirstArgumentAsType(
+          _typeProvider.objectType.element.library, node.argumentList);
+      if (returnType != null) {
+        _recordStaticType(node, returnType);
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Given a method invocation [node], attempt to infer a better
+   * type for the result if the target is dynamic and the method
+   * being called is one of the object methods.
+   */
+  bool _inferMethodInvocationObject(MethodInvocation node) {
+    // Object methods called on dynamic targets can have their types improved.
+    String name = node.methodName.name;
+    MethodElement inferredElement =
+        _typeProvider.objectType.element.getMethod(name);
+    DartType inferredType = (inferredElement != null &&
+        !inferredElement.isStatic) ? inferredElement.type : null;
+    DartType nodeType = node.staticType;
+    if (nodeType != null &&
+        nodeType.isDynamic &&
+        inferredType is FunctionType &&
+        inferredType.parameters.isEmpty &&
+        node.argumentList.arguments.isEmpty &&
+        _typeProvider.nonSubtypableTypes.contains(inferredType.returnType)) {
+      //TODO(leafp): When we start marking dynamic calls for the backend, be
+      // sure that this does not get marked as dynamic.
+      _recordStaticType(node.methodName, inferredType);
+      _recordStaticType(node, inferredType.returnType);
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Given a local variable declaration and its initializer, attempt to infer
+   * a type for the local variable declaration based on the initializer.
+   * Inference is only done if an explicit type is not present, and if
+   * inferring a type improves the type.
+   */
   void _inferLocalVariableType(
       VariableDeclaration node, Expression initializer) {
     if (initializer != null &&
@@ -1692,6 +1798,35 @@
   }
 
   /**
+   * Given a property access [node], where [target] is the target of the access
+   * and [id] is the property name being accessed, infer a type for the
+   * access itself and its constituent components if the access is to one of the
+   * methods or getters of the built in 'Object' type, and if the result type is
+   * a sealed type. Returns true if inference succeeded.
+   */
+  bool _inferObjectAccess(
+      Expression node, DartType nodeType, SimpleIdentifier id) {
+    // Search for Object accesses.
+    String name = id.name;
+    PropertyAccessorElement inferredElement =
+        _typeProvider.objectType.element.getGetter(name);
+    DartType inferredType = (inferredElement != null &&
+        !inferredElement.isStatic) ? inferredElement.type.returnType : null;
+    if (nodeType != null &&
+        nodeType.isDynamic &&
+        inferredType != null &&
+        _typeProvider.nonSubtypableTypes.contains(inferredType)) {
+      // TODO(leafp): Eliminate the dynamic call here once we start
+      // annotating dynamic calls from this code.  Even if the type is not
+      // sealed we can eliminate the dynamic call.
+      _recordStaticType(id, inferredType);
+      _recordStaticType(node, inferredType);
+      return true;
+    }
+    return false;
+  }
+
+  /**
    * Return `true` if the given [Type] is the `Future` form the 'dart:async'
    * library.
    */
@@ -1736,6 +1871,91 @@
   }
 
   /**
+   * Return a more specialized type for a method invocation based on
+   * an ad-hoc list of pseudo-generic methids.
+   */
+  DartType _matchGeneric(MethodInvocation node) {
+    Element e = node.methodName.staticElement;
+
+    if (e == null || e.name == null) {
+      return null;
+    }
+
+    List<DartType> arguments =
+        node.argumentList.arguments.map((arg) => arg.staticType).toList();
+
+    bool matchInvocation(DartType t, int c) {
+      return (node.realTarget != null) &&
+          node.realTarget.staticType.isSubtypeOf(t) &&
+          arguments.length == c;
+    }
+
+    switch (e.name) {
+      case 'max':
+      case 'min':
+        if (e.library.source.uri.toString() == 'dart:math' &&
+            arguments.length == 2) {
+          DartType tx = arguments[0];
+          DartType ty = arguments[1];
+          if (tx == ty && tx == _typeProvider.intType ||
+              tx == _typeProvider.doubleType) {
+            return tx;
+          }
+        }
+        return null;
+      case 'wait':
+        if (matchInvocation(_typeProvider.futureType, 1)) {
+          DartType tx = arguments[0];
+          // Iterable<Future<T>> -> Future<List<T>>
+          DartType futureType =
+              _findIteratedType(tx, _typeProvider.iterableType);
+          if (futureType.element != _typeProvider.futureType.element) {
+            return null;
+          }
+          List<DartType> typeArguments =
+              (futureType as InterfaceType).typeArguments;
+          if (typeArguments.length != 1) {
+            return null;
+          }
+          DartType baseType = typeArguments[0];
+          if (baseType.isDynamic) {
+            return null;
+          }
+          return _typeProvider.futureType.substitute4([
+            _typeProvider.listType.substitute4([baseType])
+          ]);
+        }
+        return null;
+      case 'map':
+        if (matchInvocation(_typeProvider.iterableDynamicType, 1)) {
+          DartType tx = arguments[0];
+          return (tx is FunctionType)
+              ? _typeProvider.iterableType.substitute4([tx.returnType])
+              : null;
+        }
+        return null;
+      case 'fold':
+        if (matchInvocation(_typeProvider.iterableDynamicType, 2)) {
+          DartType tx = arguments[0];
+          DartType ty = arguments[1];
+          // TODO(vsm): LUB?
+          return (ty is FunctionType && tx == ty.returnType) ? tx : null;
+        }
+        return null;
+      case 'then':
+        if (matchInvocation(_typeProvider.futureDynamicType, 1)) {
+          DartType tx = arguments[0];
+          return (tx is FunctionType)
+              ? _typeProvider.futureType.substitute4([tx.returnType])
+              : null;
+        }
+        return null;
+      default:
+        return null;
+    }
+  }
+
+  /**
    * Record that the propagated type of the given node is the given type.
    *
    * @param expression the node whose type is to be recorded
@@ -2029,10 +2249,12 @@
 
 class _StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction
     extends GeneralizingAstVisitor<Object> {
-  final TypeSystem typeSystem;
+  final TypeSystem _typeSystem;
+  final TypeProvider _typeProvider;
   DartType result = null;
 
-  _StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction(this.typeSystem);
+  _StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction(
+      this._typeProvider, this._typeSystem);
 
   @override
   Object visitExpression(Expression node) => null;
@@ -2051,7 +2273,7 @@
     if (result == null) {
       result = type;
     } else {
-      result = typeSystem.getLeastUpperBound(result, type);
+      result = _typeSystem.getLeastUpperBound(_typeProvider, result, type);
     }
     return null;
   }
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index 58d7bae..9539d41 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -346,6 +346,40 @@
       functionElement4(
           functionName, null, normalParameters, names, namedParameters);
 
+  static FunctionElementImpl functionElement8(
+      List<DartType> parameters, DartType returnType,
+      {List<DartType> optional, Map<String, DartType> named}) {
+    List<ParameterElement> parameterElements = new List<ParameterElement>();
+    for (int i = 0; i < parameters.length; i++) {
+      ParameterElementImpl parameterElement =
+          new ParameterElementImpl("a$i", i);
+      parameterElement.type = parameters[i];
+      parameterElement.parameterKind = ParameterKind.REQUIRED;
+      parameterElements.add(parameterElement);
+    }
+    if (optional != null) {
+      int j = parameters.length;
+      for (int i = 0; i < optional.length; i++) {
+        ParameterElementImpl parameterElement =
+            new ParameterElementImpl("o$i", j);
+        parameterElement.type = optional[i];
+        parameterElement.parameterKind = ParameterKind.POSITIONAL;
+        parameterElements.add(parameterElement);
+        j++;
+      }
+    } else if (named != null) {
+      int j = parameters.length;
+      for (String s in named.keys) {
+        ParameterElementImpl parameterElement = new ParameterElementImpl(s, j);
+        parameterElement.type = named[s];
+        parameterElement.parameterKind = ParameterKind.NAMED;
+        parameterElements.add(parameterElement);
+      }
+    }
+
+    return functionElementWithParameters("f", returnType, parameterElements);
+  }
+
   static FunctionElementImpl functionElementWithParameters(String functionName,
       DartType returnType, List<ParameterElement> parameters) {
     FunctionElementImpl functionElement =
diff --git a/pkg/analyzer/lib/src/plugin/plugin_configuration.dart b/pkg/analyzer/lib/src/plugin/plugin_configuration.dart
new file mode 100644
index 0000000..b3a1d90
--- /dev/null
+++ b/pkg/analyzer/lib/src/plugin/plugin_configuration.dart
@@ -0,0 +1,119 @@
+// 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.src.plugin.plugin_configuration;
+
+import 'package:analyzer/plugin/options.dart';
+import 'package:yaml/yaml.dart';
+
+const _analyzerOptionScope = 'analyzer';
+
+const _pluginOptionScope = 'plugins';
+
+PluginInfo _processPluginMapping(dynamic name, dynamic details) {
+  if (name is String) {
+    if (details is String) {
+      return new PluginInfo(name: name, version: details);
+    }
+    if (details is YamlMap) {
+      return new PluginInfo(
+          name: name,
+          version: details['version'],
+          className: details['class_name'],
+          libraryUri: details['library_uri'],
+          packageName: details['package_name'],
+          path: details['path']);
+    }
+  }
+
+  return null;
+}
+
+PluginInfo _processPluginNode(dynamic node) {
+  if (node is String) {
+    return new PluginInfo(name: node);
+  }
+  if (node is YamlMap) {
+    if (node.length == 1) {
+      return new PluginInfo(name: node.keys.first, version: node.values.first);
+    }
+  }
+  return null;
+}
+
+typedef ErrorHandler(Exception);
+
+/// Describes plugin configuration information as extracted from an
+/// analysis options map.
+class PluginConfig {
+  final Iterable<PluginInfo> plugins;
+  PluginConfig(this.plugins);
+
+  /// Create a plugin configuration from an options map.
+  factory PluginConfig.fromOptions(Map<String, YamlNode> options) {
+    List<PluginInfo> plugins = [];
+    var analyzerOptions = options[_analyzerOptionScope];
+    if (analyzerOptions != null) {
+      if (analyzerOptions is YamlMap) {
+        var pluginConfig = analyzerOptions[_pluginOptionScope];
+        if (pluginConfig is YamlMap) {
+          pluginConfig.forEach((name, details) {
+            var plugin = _processPluginMapping(name, details);
+            if (plugin != null) {
+              plugins.add(plugin);
+            }
+          });
+        } else {
+          var plugin = _processPluginNode(pluginConfig);
+          if (plugin != null) {
+            plugins.add(plugin);
+          }
+        }
+      }
+    }
+
+    return new PluginConfig(plugins);
+  }
+}
+
+/// Extracts plugin config details from analysis options.
+class PluginConfigOptionsProcessor extends OptionsProcessor {
+  final ErrorHandler _errorHandler;
+
+  PluginConfig _config;
+
+  PluginConfigOptionsProcessor([this._errorHandler]);
+
+  /// The processed plugin config.
+  PluginConfig get config => _config;
+
+  @override
+  void onError(Exception exception) {
+    if (_errorHandler != null) {
+      _errorHandler(exception);
+    }
+  }
+
+  @override
+  void optionsProcessed(Map<String, YamlNode> options) {
+    _config = new PluginConfig.fromOptions(options);
+  }
+}
+
+/// Describes plugin information.
+class PluginInfo {
+  final String name;
+  final String className;
+  final String version;
+  final String libraryUri;
+  final String packageName;
+  final String path;
+  PluginInfo(
+      {this.name,
+      this.version,
+      this.className,
+      this.libraryUri,
+      this.packageName,
+      this.path});
+}
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart
index 88a5637..a21d94b 100644
--- a/pkg/analyzer/lib/src/task/dart.dart
+++ b/pkg/analyzer/lib/src/task/dart.dart
@@ -1519,7 +1519,8 @@
     // Compute dependencies.
     //
     List<ConstantEvaluationTarget> dependencies = <ConstantEvaluationTarget>[];
-    new ConstantEvaluationEngine(typeProvider, context.declaredVariables)
+    new ConstantEvaluationEngine(typeProvider, context.declaredVariables,
+            typeSystem: context.typeSystem)
         .computeDependencies(constant, dependencies.add);
     //
     // Record outputs.
@@ -1610,7 +1611,8 @@
     // cycle.
     //
     ConstantEvaluationEngine constantEvaluationEngine =
-        new ConstantEvaluationEngine(typeProvider, context.declaredVariables);
+        new ConstantEvaluationEngine(typeProvider, context.declaredVariables,
+            typeSystem: context.typeSystem);
     if (dependencyCycle == null) {
       constantEvaluationEngine.computeConstantValue(constant);
     } else {
@@ -2342,10 +2344,12 @@
         getRequiredInput(USED_LOCAL_ELEMENTS_INPUT);
     CompilationUnitElement unitElement = unit.element;
     LibraryElement libraryElement = unitElement.library;
+    TypeSystem typeSystem = context.typeSystem;
+
     //
     // Generate errors.
     //
-    unit.accept(new DeadCodeVerifier(errorReporter));
+    unit.accept(new DeadCodeVerifier(errorReporter, typeSystem: typeSystem));
     // Verify imports.
     {
       ImportsVerifier verifier = new ImportsVerifier();
@@ -2370,7 +2374,9 @@
     InheritanceManager inheritanceManager =
         new InheritanceManager(libraryElement);
     TypeProvider typeProvider = getRequiredInput(TYPE_PROVIDER_INPUT);
-    unit.accept(new BestPracticesVerifier(errorReporter, typeProvider));
+
+    unit.accept(new BestPracticesVerifier(errorReporter, typeProvider,
+        typeSystem: typeSystem));
     unit.accept(new OverrideVerifier(errorReporter, inheritanceManager));
     // Find to-do comments.
     new ToDoFinder(errorReporter).findIn(unit);
@@ -2459,8 +2465,8 @@
     // Infer instance members.
     //
     if (context.analysisOptions.strongMode) {
-      InstanceMemberInferrer inferrer =
-          new InstanceMemberInferrer(typeProvider);
+      InstanceMemberInferrer inferrer = new InstanceMemberInferrer(typeProvider,
+          typeSystem: context.typeSystem);
       inferrer.inferCompilationUnit(unit.element);
     }
     //
diff --git a/pkg/analyzer/lib/src/task/html.dart b/pkg/analyzer/lib/src/task/html.dart
index d169560..0ab546a 100644
--- a/pkg/analyzer/lib/src/task/html.dart
+++ b/pkg/analyzer/lib/src/task/html.dart
@@ -13,7 +13,6 @@
 import 'package:analyzer/src/generated/scanner.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/plugin/engine_plugin.dart';
-import 'package:analyzer/src/task/dart.dart';
 import 'package:analyzer/src/task/general.dart';
 import 'package:analyzer/task/dart.dart';
 import 'package:analyzer/task/general.dart';
@@ -280,7 +279,7 @@
       'ParseHtmlTask',
       createTask,
       buildInputs,
-      <ResultDescriptor>[HTML_DOCUMENT, HTML_DOCUMENT_ERRORS]);
+      <ResultDescriptor>[HTML_DOCUMENT, HTML_DOCUMENT_ERRORS, LINE_INFO]);
 
   /**
    * Initialize a newly created task to access the content of the source
@@ -312,10 +311,14 @@
         new AnalysisError(
             target.source, 0, 0, ScannerErrorCode.UNABLE_GET_CONTENT, [message])
       ];
+      outputs[LINE_INFO] = new LineInfo(<int>[0]);
     } else {
       HtmlParser parser = new HtmlParser(content, generateSpans: true);
       parser.compatMode = 'quirks';
       Document document = parser.parse();
+      //
+      // Convert errors.
+      //
       List<ParseError> parseErrors = parser.errors;
       List<AnalysisError> errors = <AnalysisError>[];
       for (ParseError parseError in parseErrors) {
@@ -323,9 +326,12 @@
         errors.add(new AnalysisError(target.source, span.start.offset,
             span.length, HtmlErrorCode.PARSE_ERROR, [parseError.message]));
       }
-
+      //
+      // Record outputs.
+      //
       outputs[HTML_DOCUMENT] = document;
       outputs[HTML_DOCUMENT_ERRORS] = errors;
+      outputs[LINE_INFO] = _computeLineInfo(content);
     }
   }
 
@@ -345,6 +351,19 @@
       AnalysisContext context, AnalysisTarget target) {
     return new ParseHtmlTask(context, target);
   }
+
+  /**
+   * Compute [LineInfo] for the given [content].
+   */
+  static LineInfo _computeLineInfo(String content) {
+    List<int> lineStarts = <int>[0];
+    for (int index = 0; index < content.length; index++) {
+      if (content.codeUnitAt(index) == 0x0A) {
+        lineStarts.add(index + 1);
+      }
+    }
+    return new LineInfo(lineStarts);
+  }
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/task/html_work_manager.dart b/pkg/analyzer/lib/src/task/html_work_manager.dart
index faedfb2..218b48a 100644
--- a/pkg/analyzer/lib/src/task/html_work_manager.dart
+++ b/pkg/analyzer/lib/src/task/html_work_manager.dart
@@ -18,7 +18,6 @@
 import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/utilities_collection.dart';
-import 'package:analyzer/src/task/driver.dart';
 import 'package:analyzer/src/task/html.dart';
 import 'package:analyzer/task/html.dart';
 import 'package:analyzer/task/model.dart';
@@ -133,12 +132,10 @@
     // Try to find a new HTML file to analyze.
     while (sourceQueue.isNotEmpty) {
       Source htmlSource = sourceQueue.first;
-      // Maybe done with this library.
       if (!_needsComputing(htmlSource, HTML_ERRORS)) {
         sourceQueue.remove(htmlSource);
         continue;
       }
-      // Analyze this library.
       return new TargetedResult(htmlSource, HTML_ERRORS);
     }
     // No results to compute.
diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
index a78d590..2db9914 100644
--- a/pkg/analyzer/lib/src/task/strong_mode.dart
+++ b/pkg/analyzer/lib/src/task/strong_mode.dart
@@ -112,9 +112,8 @@
   /**
    * Initialize a newly create inferrer.
    */
-  InstanceMemberInferrer(this.typeProvider) {
-    typeSystem = new TypeSystemImpl(typeProvider);
-  }
+  InstanceMemberInferrer(this.typeProvider, {TypeSystem typeSystem})
+      : typeSystem = (typeSystem != null) ? typeSystem : new TypeSystemImpl();
 
   /**
    * Infer type information for all of the instance members in the given
diff --git a/pkg/analyzer/lib/task/model.dart b/pkg/analyzer/lib/task/model.dart
index 833a6d3..018b349 100644
--- a/pkg/analyzer/lib/task/model.dart
+++ b/pkg/analyzer/lib/task/model.dart
@@ -591,6 +591,11 @@
   /**
    * Return the next [TargetedResult] that this work manager wants to be
    * computed, or `null` if this manager doesn't need any new results.
+   *
+   * Note, that it is not guaranteed that this result will be computed, it is
+   * up to the work manager to check whether the result is already computed
+   * (for example during the next [getNextResult] invocation) or computation
+   * of the same result should be requested again.
    */
   TargetedResult getNextResult();
 
diff --git a/pkg/analyzer/test/generated/all_the_rest_test.dart b/pkg/analyzer/test/generated/all_the_rest_test.dart
index 9765af9..e3edac3 100644
--- a/pkg/analyzer/test/generated/all_the_rest_test.dart
+++ b/pkg/analyzer/test/generated/all_the_rest_test.dart
@@ -868,8 +868,9 @@
     NodeList<VariableDeclaration> variables =
         (declaration as TopLevelVariableDeclaration).variables.variables;
     expect(variables, hasLength(1));
-    ConstantEvaluator evaluator =
-        new ConstantEvaluator(source, analysisContext.typeProvider);
+    ConstantEvaluator evaluator = new ConstantEvaluator(
+        source, analysisContext.typeProvider,
+        typeSystem: analysisContext.typeSystem);
     return evaluator.evaluate(variables[0].initializer);
   }
 }
@@ -2362,7 +2363,8 @@
         analysisContext2,
         analysisContext2.typeProvider,
         analysisContext2.declaredVariables,
-        validator);
+        validator,
+        analysisContext2.typeSystem);
     return validator.computer;
   }
 
@@ -2394,7 +2396,8 @@
         0,
         expression.accept(new ConstantVisitor(
             new ConstantEvaluationEngine(
-                new TestTypeProvider(), new DeclaredVariables()),
+                new TestTypeProvider(), new DeclaredVariables(),
+                typeSystem: new TypeSystemImpl()),
             errorReporter)));
     errorListener.assertNoErrors();
   }
@@ -2410,7 +2413,8 @@
         new ErrorReporter(errorListener, _dummySource());
     DartObjectImpl result = expression.accept(new ConstantVisitor(
         new ConstantEvaluationEngine(
-            new TestTypeProvider(), new DeclaredVariables()),
+            new TestTypeProvider(), new DeclaredVariables(),
+            typeSystem: new TypeSystemImpl()),
         errorReporter));
     expect(result, isNull);
     errorListener
@@ -2427,7 +2431,8 @@
         new ErrorReporter(errorListener, _dummySource());
     DartObjectImpl result = expression.accept(new ConstantVisitor(
         new ConstantEvaluationEngine(
-            new TestTypeProvider(), new DeclaredVariables()),
+            new TestTypeProvider(), new DeclaredVariables(),
+            typeSystem: new TypeSystemImpl()),
         errorReporter));
     expect(result, isNull);
     errorListener
@@ -2444,7 +2449,8 @@
         new ErrorReporter(errorListener, _dummySource());
     DartObjectImpl result = expression.accept(new ConstantVisitor(
         new ConstantEvaluationEngine(
-            new TestTypeProvider(), new DeclaredVariables()),
+            new TestTypeProvider(), new DeclaredVariables(),
+            typeSystem: new TypeSystemImpl()),
         errorReporter));
     expect(result, isNull);
     errorListener
@@ -2463,7 +2469,8 @@
         1,
         expression.accept(new ConstantVisitor(
             new ConstantEvaluationEngine(
-                new TestTypeProvider(), new DeclaredVariables()),
+                new TestTypeProvider(), new DeclaredVariables(),
+                typeSystem: new TypeSystemImpl()),
             errorReporter)));
     errorListener.assertNoErrors();
   }
@@ -2536,7 +2543,8 @@
     GatheringErrorListener errorListener = new GatheringErrorListener();
     ErrorReporter errorReporter = new ErrorReporter(errorListener, source);
     DartObjectImpl result = expression.accept(new ConstantVisitor(
-        new ConstantEvaluationEngine(typeProvider, new DeclaredVariables()),
+        new ConstantEvaluationEngine(typeProvider, new DeclaredVariables(),
+            typeSystem: typeSystem),
         errorReporter,
         lexicalEnvironment: lexicalEnvironment));
     errorListener.assertNoErrors();
diff --git a/pkg/analyzer/test/generated/ast_test.dart b/pkg/analyzer/test/generated/ast_test.dart
index 4f8142a..e7c2025 100644
--- a/pkg/analyzer/test/generated/ast_test.dart
+++ b/pkg/analyzer/test/generated/ast_test.dart
@@ -1697,7 +1697,7 @@
 
   void test_visitAwaitExpression() {
     _assertSource(
-        "await e;", AstFactory.awaitExpression(AstFactory.identifier3("e")));
+        "await e", AstFactory.awaitExpression(AstFactory.identifier3("e")));
   }
 
   void test_visitBinaryExpression() {
diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart
index e4746a4..310df94 100644
--- a/pkg/analyzer/test/generated/engine_test.dart
+++ b/pkg/analyzer/test/generated/engine_test.dart
@@ -5818,6 +5818,12 @@
   }
 
   @override
+  TypeSystem get typeSystem {
+    fail("Unexpected invocation of getTypeSystem");
+    return null;
+  }
+
+  @override
   TypeResolverVisitorFactory get typeResolverVisitorFactory {
     fail("Unexpected invocation of getTypeResolverVisitorFactory");
     return null;
diff --git a/pkg/analyzer/test/generated/incremental_resolver_test.dart b/pkg/analyzer/test/generated/incremental_resolver_test.dart
index a60941b..18a45f6 100644
--- a/pkg/analyzer/test/generated/incremental_resolver_test.dart
+++ b/pkg/analyzer/test/generated/incremental_resolver_test.dart
@@ -3435,11 +3435,19 @@
 ''');
   }
 
+  @override
   void setUp() {
+    AnalysisEngine.instance.useTaskModel = true;
     super.setUp();
     _resetWithIncremental(true);
   }
 
+  @override
+  void tearDown() {
+    super.tearDown();
+    AnalysisEngine.instance.useTaskModel = false;
+  }
+
   void test_computeConstants() {
     _resolveUnit(r'''
 int f() => 0;
@@ -4160,6 +4168,28 @@
 ''');
   }
 
+  void test_true_todoHint() {
+    _resolveUnit(r'''
+main() {
+  print(1);
+}
+foo() {
+ // TODO
+}
+''');
+    List<AnalysisError> oldErrors = analysisContext.computeErrors(source);
+    _updateAndValidate(r'''
+main() {
+  print(2);
+}
+foo() {
+ // TODO
+}
+''');
+    List<AnalysisError> newErrors = analysisContext.computeErrors(source);
+    _assertEqualErrors(newErrors, oldErrors);
+  }
+
   void test_unusedHint_add_wasUsedOnlyInPart() {
     Source partSource = addNamedSource(
         '/my_unit.dart',
@@ -4468,8 +4498,10 @@
       expect(newUnit.element, isNot(same(oldUnitElement)));
       return;
     }
-    // The existing CompilationUnitElement should be updated.
+    // The existing CompilationUnit[Element] should be updated.
+    expect(newUnit, same(oldUnit));
     expect(newUnit.element, same(oldUnitElement));
+    expect(analysisContext.parseCompilationUnit(source), same(oldUnit));
     // The only expected pending task should return the same resolved
     // "newUnit", so all clients will get it using the usual way.
     AnalysisResult analysisResult = analysisContext.performAnalysisTask();
diff --git a/pkg/analyzer/test/generated/java_io_test.dart b/pkg/analyzer/test/generated/java_io_test.dart
index 0a46feb..2bd611d 100644
--- a/pkg/analyzer/test/generated/java_io_test.dart
+++ b/pkg/analyzer/test/generated/java_io_test.dart
@@ -4,8 +4,6 @@
 
 library engine.java_io_test;
 
-import 'dart:io';
-
 import 'package:analyzer/src/generated/java_io.dart';
 import 'package:unittest/unittest.dart';
 
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index f5153cf..9027440 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -68,6 +68,7 @@
   runReflectiveTests(SimpleResolverTest);
   runReflectiveTests(StrictModeTest);
   runReflectiveTests(TypePropagationTest);
+  runReflectiveTests(StrongModeStaticTypeAnalyzer2Test);
   runReflectiveTests(StrongModeTypePropagationTest);
 }
 
@@ -193,7 +194,6 @@
     // Future
     ClassElementImpl futureElement =
         ElementFactory.classElement2("Future", ["T"]);
-    InterfaceType futureType = futureElement.type;
     //   factory Future.value([value])
     ConstructorElementImpl futureConstructor =
         ElementFactory.constructorElement2(futureElement, "value");
@@ -218,8 +218,10 @@
     FunctionTypeImpl aliasType = new FunctionTypeImpl.forTypedef(aliasElement);
     aliasElement.shareTypeParameters(futureElement.typeParameters);
     aliasType.typeArguments = futureElement.type.typeArguments;
+    DartType futureDynamicType =
+        futureElement.type.substitute4([provider.dynamicType]);
     MethodElement thenMethod = ElementFactory.methodElementWithParameters(
-        "then", futureElement.type.typeArguments, futureType, [
+        "then", futureElement.type.typeArguments, futureDynamicType, [
       ElementFactory.requiredParameter2("onValue", aliasType),
       ElementFactory.namedParameter2("onError", provider.functionType)
     ]);
@@ -338,6 +340,11 @@
         ClassElement.EMPTY_LIST);
     TopLevelVariableElement ln10Element = ElementFactory
         .topLevelVariableElement3("LN10", true, false, provider.doubleType);
+    FunctionElement maxElement = ElementFactory.functionElement3(
+        "max",
+        provider.numType.element,
+        <ClassElement>[provider.numType.element, provider.numType.element],
+        ClassElement.EMPTY_LIST);
     TopLevelVariableElement piElement = ElementFactory.topLevelVariableElement3(
         "PI", true, false, provider.doubleType);
     ClassElementImpl randomElement = ElementFactory.classElement2("Random");
@@ -364,7 +371,12 @@
       ln10Element.getter,
       piElement.getter
     ];
-    mathUnit.functions = <FunctionElement>[cosElement, sinElement, sqrtElement];
+    mathUnit.functions = <FunctionElement>[
+      cosElement,
+      maxElement,
+      sinElement,
+      sqrtElement
+    ];
     mathUnit.topLevelVariables = <TopLevelVariableElement>[
       ln10Element,
       piElement
@@ -7894,6 +7906,13 @@
   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
@@ -9955,14 +9974,35 @@
 }
 
 /**
- * Like [StaticTypeAnalyzerTest], but as end-to-end tests.
+ * Shared infrastructure for [StaticTypeAnalyzer2Test] and
+ * [StrongModeStaticTypeAnalyzer2Test].
  */
-@reflectiveTest
-class StaticTypeAnalyzer2Test extends ResolverTestCase {
+class _StaticTypeAnalyzer2TestShared extends ResolverTestCase {
   String testCode;
   Source testSource;
   CompilationUnit testUnit;
 
+  SimpleIdentifier _findIdentifier(String search) {
+    SimpleIdentifier identifier = EngineTestCase.findNode(
+        testUnit, testCode, search, (node) => node is SimpleIdentifier);
+    return identifier;
+  }
+
+  void _resolveTestUnit(String code) {
+    testCode = code;
+    testSource = addSource(testCode);
+    LibraryElement library = resolve2(testSource);
+    assertNoErrors(testSource);
+    verify([testSource]);
+    testUnit = resolveCompilationUnit(testSource, library);
+  }
+}
+
+/**
+ * Like [StaticTypeAnalyzerTest], but as end-to-end tests.
+ */
+@reflectiveTest
+class StaticTypeAnalyzer2Test extends _StaticTypeAnalyzer2TestShared {
   void test_FunctionExpressionInvocation_block() {
     String code = r'''
 main() {
@@ -10054,21 +10094,6 @@
       expect(type.name, 'Foo');
     }
   }
-
-  SimpleIdentifier _findIdentifier(String search) {
-    SimpleIdentifier identifier = EngineTestCase.findNode(
-        testUnit, testCode, search, (node) => node is SimpleIdentifier);
-    return identifier;
-  }
-
-  void _resolveTestUnit(String code) {
-    testCode = code;
-    testSource = addSource(testCode);
-    LibraryElement library = resolve2(testSource);
-    assertNoErrors(testSource);
-    verify([testSource]);
-    testUnit = resolveCompilationUnit(testSource, library);
-  }
 }
 
 @reflectiveTest
@@ -11879,6 +11904,151 @@
   }
 }
 
+/**
+ * Strong mode static analyzer end to end tests
+ */
+@reflectiveTest
+class StrongModeStaticTypeAnalyzer2Test extends _StaticTypeAnalyzer2TestShared {
+  void setUp() {
+    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+    options.strongMode = true;
+    resetWithOptions(options);
+  }
+
+  void test_ternaryOperator_null_right() {
+    String code = r'''
+main() {
+  var foo = (true) ? 3 : null;
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    expect(declaration.initializer.staticType.name, 'int');
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+
+  void test_ternaryOperator_null_left() {
+    String code = r'''
+main() {
+  var foo = (true) ? null : 3;
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    expect(declaration.initializer.staticType.name, 'int');
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+
+  void test_dynamicObjectMethod_toString() {
+    String code = r'''
+main() {
+  dynamic a = null;
+  var foo = a.toString();
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    expect(declaration.initializer.staticType.name, 'String');
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+
+  void test_dynamicObjectGetter_hashCode() {
+    String code = r'''
+main() {
+  dynamic a = null;
+  var foo = a.hashCode;
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    expect(declaration.initializer.staticType.name, 'int');
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+
+  void test_pseudoGeneric_max_intInt() {
+    String code = r'''
+import 'dart:math';
+main() {
+  var foo = max(1, 2);
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    expect(declaration.initializer.staticType.name, 'int');
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+
+  void test_pseudoGeneric_max_doubleDouble() {
+    String code = r'''
+import 'dart:math';
+main() {
+  var foo = max(1.0, 2.0);
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    expect(declaration.initializer.staticType.name, 'double');
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+
+  void test_pseudoGeneric_max_intDouble() {
+    String code = r'''
+import 'dart:math';
+main() {
+  var foo = max(1, 2.0);
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    expect(declaration.initializer.staticType.name, 'num');
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+
+  void test_pseudoGeneric_then() {
+    String code = r'''
+import 'dart:async';
+String toString(int x) => x.toString();
+main() {
+  Future<int> bar = null;
+  var foo = bar.then(toString);
+}
+''';
+    _resolveTestUnit(code);
+
+    SimpleIdentifier identifier = _findIdentifier('foo');
+    VariableDeclaration declaration =
+        identifier.getAncestor((node) => node is VariableDeclaration);
+    InterfaceType stringType = typeProvider.stringType;
+    InterfaceType futureType = typeProvider.futureType;
+    InterfaceType futureOfStringType =
+        futureType.substitute4(<DartType>[stringType]);
+
+    expect(declaration.initializer.staticType.toString(), "Future<String>");
+    expect(declaration.initializer.propagatedType, isNull);
+  }
+}
+
 @reflectiveTest
 class StrongModeTypePropagationTest extends ResolverTestCase {
   @override
@@ -11958,7 +12128,7 @@
     String code = r'''
 main() {
   var v = null;
-  return v; // marker
+  v; // marker
 }''';
     _assertPropagatedAssignedType(code, typeProvider.dynamicType, null);
     _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, null);
@@ -11968,7 +12138,7 @@
     String code = r'''
 main() {
   var v = 3;
-  return v; // marker
+  v; // marker
 }''';
     _assertPropagatedAssignedType(code, typeProvider.intType, null);
     _assertTypeOfMarkedExpression(code, typeProvider.intType, null);
@@ -11978,7 +12148,7 @@
     String code = r'''
 main() {
   dynamic v = 3;
-  return v; // marker
+  v; // marker
 }''';
     _assertPropagatedAssignedType(
         code, typeProvider.dynamicType, typeProvider.intType);
@@ -11991,7 +12161,7 @@
 main() {
   var v;
   v = 3;
-  return v; // marker
+  v; // marker
 }''';
     _assertPropagatedAssignedType(
         code, typeProvider.dynamicType, typeProvider.intType);
@@ -12074,7 +12244,7 @@
 main() {
   var x = <int>[3];
   var v = x[0];
-  return v; // marker
+  v; // marker
 }''';
     _assertPropagatedAssignedType(code, typeProvider.intType, null);
     _assertTypeOfMarkedExpression(code, typeProvider.intType, null);
@@ -12085,7 +12255,7 @@
 main() {
   var x = 3;
   var v = x;
-  return v; // marker
+  v; // marker
 }''';
     _assertPropagatedAssignedType(code, typeProvider.intType, null);
     _assertTypeOfMarkedExpression(code, typeProvider.intType, null);
@@ -12099,7 +12269,7 @@
 final x = 3;
 main() {
   var v = x;
-  return v; // marker
+  v; // marker
 }
 ''';
     _assertPropagatedAssignedType(code, typeProvider.intType, null);
@@ -12113,7 +12283,7 @@
     String code = r'''
 main() {
   var v = x;
-  return v; // marker
+  v; // marker
 }
 final x = 3;
 ''';
@@ -12126,7 +12296,7 @@
 int x = 3;
 main() {
   var v = x;
-  return v; // marker
+  v; // marker
 }
 ''';
     _assertPropagatedAssignedType(code, typeProvider.intType, null);
@@ -12137,7 +12307,7 @@
     String code = r'''
 main() {
   var v = x;
-  return v; // marker
+  v; // marker
 }
 int x = 3;
 ''';
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 a14e8c8..79ccd58 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
@@ -7,7 +7,6 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/source_io.dart';
-import 'package:unittest/unittest.dart';
 
 import '../reflective_tests.dart';
 import '../utils.dart';
diff --git a/pkg/analyzer/test/generated/type_system_test.dart b/pkg/analyzer/test/generated/type_system_test.dart
index c24297f..a6c552a 100644
--- a/pkg/analyzer/test/generated/type_system_test.dart
+++ b/pkg/analyzer/test/generated/type_system_test.dart
@@ -18,6 +18,8 @@
 main() {
   initializeTestEnvironment();
   runReflectiveTests(TypeSystemTest);
+  runReflectiveTests(StrongSubtypingTest);
+  runReflectiveTests(StrongAssignabilityTest);
 }
 
 @reflectiveTest
@@ -39,7 +41,7 @@
 
   void setUp() {
     typeProvider = new TestTypeProvider();
-    typeSystem = new TypeSystemImpl(typeProvider);
+    typeSystem = new TypeSystemImpl();
     FunctionTypeAliasElementImpl typeAlias =
         ElementFactory.functionTypeAliasElement('A');
     typeAlias.parameters = [];
@@ -160,14 +162,21 @@
     DartType typeParam = ElementFactory.typeParameterElement('T').type;
     DartType interfaceType = ElementFactory.classElement2('A', []).type;
     expect(
-        typeSystem.getLeastUpperBound(dynamicType, dynamicType), dynamicType);
-    expect(typeSystem.getLeastUpperBound(voidType, voidType), voidType);
-    expect(typeSystem.getLeastUpperBound(bottomType, bottomType), bottomType);
-    expect(typeSystem.getLeastUpperBound(typeParam, typeParam), typeParam);
-    expect(typeSystem.getLeastUpperBound(interfaceType, interfaceType),
+        typeSystem.getLeastUpperBound(typeProvider, dynamicType, dynamicType),
+        dynamicType);
+    expect(typeSystem.getLeastUpperBound(typeProvider, voidType, voidType),
+        voidType);
+    expect(typeSystem.getLeastUpperBound(typeProvider, bottomType, bottomType),
+        bottomType);
+    expect(typeSystem.getLeastUpperBound(typeProvider, typeParam, typeParam),
+        typeParam);
+    expect(
+        typeSystem.getLeastUpperBound(
+            typeProvider, interfaceType, interfaceType),
         interfaceType);
     expect(
-        typeSystem.getLeastUpperBound(simpleFunctionType, simpleFunctionType),
+        typeSystem.getLeastUpperBound(
+            typeProvider, simpleFunctionType, simpleFunctionType),
         simpleFunctionType);
   }
 
@@ -329,7 +338,9 @@
     // List<int>
     //
     InterfaceType listOfIntType = listType.substitute4(<DartType>[intType]);
-    expect(typeSystem.getLeastUpperBound(listOfIntType, listOfIntType),
+    expect(
+        typeSystem.getLeastUpperBound(
+            typeProvider, listOfIntType, listOfIntType),
         listOfIntType);
   }
 
@@ -353,6 +364,565 @@
 
   void _checkLeastUpperBound(
       DartType type1, DartType type2, DartType expectedResult) {
-    expect(typeSystem.getLeastUpperBound(type1, type2), expectedResult);
+    expect(typeSystem.getLeastUpperBound(typeProvider, type1, type2),
+        expectedResult);
+  }
+}
+
+class TypeBuilder {
+  static FunctionType functionType(
+      List<DartType> parameters, DartType returnType,
+      {List<DartType> optional, Map<String, DartType> named}) {
+    return ElementFactory
+        .functionElement8(parameters, returnType,
+            optional: optional, named: named)
+        .type;
+  }
+}
+
+@reflectiveTest
+class StrongSubtypingTest {
+  TypeProvider typeProvider;
+  TypeSystem typeSystem;
+
+  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 StrongTypeSystemImpl();
+  }
+
+  void test_isSubtypeOf_dynamic_isTop() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    List<DartType> equivalents = <DartType>[dynamicType, objectType];
+    List<DartType> subtypes = <DartType>[
+      intType,
+      doubleType,
+      numType,
+      stringType,
+      functionType,
+      interfaceType,
+      bottomType
+    ];
+    _checkGroups(dynamicType, equivalents: equivalents, subtypes: subtypes);
+  }
+
+  void test_isSubtypeOf_bottom_isBottom() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    List<DartType> equivalents = <DartType>[bottomType];
+    List<DartType> supertypes = <DartType>[
+      dynamicType,
+      objectType,
+      intType,
+      doubleType,
+      numType,
+      stringType,
+      functionType,
+      interfaceType
+    ];
+    _checkGroups(bottomType, equivalents: equivalents, supertypes: supertypes);
+  }
+
+  void test_isSubtypeOf_int() {
+    List<DartType> equivalents = <DartType>[intType];
+    List<DartType> supertypes = <DartType>[numType];
+    List<DartType> unrelated = <DartType>[doubleType];
+    _checkGroups(intType,
+        equivalents: equivalents, supertypes: supertypes, unrelated: unrelated);
+  }
+
+  void test_isSubtypeOf_double() {
+    List<DartType> equivalents = <DartType>[doubleType];
+    List<DartType> supertypes = <DartType>[numType];
+    List<DartType> unrelated = <DartType>[intType];
+    _checkGroups(doubleType,
+        equivalents: equivalents, supertypes: supertypes, unrelated: unrelated);
+  }
+
+  void test_isSubtypeOf_num() {
+    List<DartType> equivalents = <DartType>[numType];
+    List<DartType> supertypes = <DartType>[];
+    List<DartType> unrelated = <DartType>[stringType];
+    List<DartType> subtypes = <DartType>[intType, doubleType];
+    _checkGroups(numType,
+        equivalents: equivalents,
+        supertypes: supertypes,
+        unrelated: unrelated,
+        subtypes: subtypes);
+  }
+
+  void test_isSubtypeOf_classes() {
+    ClassElement classTop = ElementFactory.classElement2("A");
+    ClassElement classLeft = ElementFactory.classElement("B", classTop.type);
+    ClassElement classRight = ElementFactory.classElement("C", classTop.type);
+    ClassElement classBottom = ElementFactory.classElement("D", classLeft.type)
+      ..interfaces = <InterfaceType>[classRight.type];
+    InterfaceType top = classTop.type;
+    InterfaceType left = classLeft.type;
+    InterfaceType right = classRight.type;
+    InterfaceType bottom = classBottom.type;
+
+    _checkLattice(top, left, right, bottom);
+  }
+
+  void test_isSubtypeOf_simple_function() {
+    FunctionType top =
+        TypeBuilder.functionType(<DartType>[intType], objectType);
+    FunctionType left = TypeBuilder.functionType(<DartType>[intType], intType);
+    FunctionType right =
+        TypeBuilder.functionType(<DartType>[objectType], objectType);
+    FunctionType bottom =
+        TypeBuilder.functionType(<DartType>[objectType], intType);
+
+    _checkLattice(top, left, right, bottom);
+  }
+
+  void test_isSubtypeOf_call_method() {
+    ClassElementImpl classBottom = ElementFactory.classElement2("Bottom");
+    MethodElement methodBottom =
+        ElementFactory.methodElement("call", objectType, <DartType>[intType]);
+    classBottom.methods = <MethodElement>[methodBottom];
+
+    DartType top = TypeBuilder.functionType(<DartType>[intType], objectType);
+    InterfaceType bottom = classBottom.type;
+
+    _checkIsStrictSubtypeOf(bottom, top);
+  }
+
+  void test_isSubtypeOf_fuzzy_arrows() {
+    FunctionType top =
+        TypeBuilder.functionType(<DartType>[dynamicType], objectType);
+    FunctionType left =
+        TypeBuilder.functionType(<DartType>[objectType], objectType);
+    FunctionType right =
+        TypeBuilder.functionType(<DartType>[dynamicType], bottomType);
+    FunctionType bottom =
+        TypeBuilder.functionType(<DartType>[objectType], bottomType);
+
+    _checkLattice(top, left, right, bottom);
+  }
+
+  void test_isSubtypeOf_void_functions() {
+    FunctionType top = TypeBuilder.functionType(<DartType>[intType], voidType);
+    FunctionType bottom =
+        TypeBuilder.functionType(<DartType>[objectType], intType);
+
+    _checkIsStrictSubtypeOf(bottom, top);
+  }
+
+  void test_isSubtypeOf_named_optional() {
+    DartType r = TypeBuilder.functionType(<DartType>[intType], intType);
+    DartType o = TypeBuilder.functionType(<DartType>[], intType,
+        optional: <DartType>[intType]);
+    DartType n = TypeBuilder.functionType(<DartType>[], intType,
+        named: <String, DartType>{'x': intType});
+    DartType rr =
+        TypeBuilder.functionType(<DartType>[intType, intType], intType);
+    DartType ro = TypeBuilder.functionType(<DartType>[intType], intType,
+        optional: <DartType>[intType]);
+    DartType rn = TypeBuilder.functionType(<DartType>[intType], intType,
+        named: <String, DartType>{'x': intType});
+    DartType oo = TypeBuilder.functionType(<DartType>[], intType,
+        optional: <DartType>[intType, intType]);
+    DartType nn = TypeBuilder.functionType(<DartType>[], intType,
+        named: <String, DartType>{'x': intType, 'y': intType});
+    DartType nnn = TypeBuilder.functionType(<DartType>[], intType,
+        named: <String, DartType>{'x': intType, 'y': intType, 'z': intType});
+
+    _checkGroups(r,
+        equivalents: [r],
+        subtypes: [o, ro, rn, oo],
+        unrelated: [n, rr, nn, nnn]);
+    _checkGroups(o,
+        equivalents: [o], subtypes: [oo], unrelated: [n, rr, ro, rn, nn, nnn]);
+    _checkGroups(n,
+        equivalents: [n],
+        subtypes: [nn, nnn],
+        unrelated: [r, o, rr, ro, rn, oo]);
+    _checkGroups(rr,
+        equivalents: [rr],
+        subtypes: [ro, oo],
+        unrelated: [r, o, n, rn, nn, nnn]);
+    _checkGroups(ro,
+        equivalents: [ro], subtypes: [oo], unrelated: [o, n, rn, nn, nnn]);
+    _checkGroups(rn,
+        equivalents: [rn],
+        subtypes: [],
+        unrelated: [o, n, rr, ro, oo, nn, nnn]);
+    _checkGroups(oo,
+        equivalents: [oo], subtypes: [], unrelated: [n, rn, nn, nnn]);
+    _checkGroups(nn,
+        equivalents: [nn], subtypes: [nnn], unrelated: [r, o, rr, ro, rn, oo]);
+    _checkGroups(nnn,
+        equivalents: [nnn], subtypes: [], unrelated: [r, o, rr, ro, rn, oo]);
+  }
+
+  void test_isSubtypeOf_generics() {
+    ClassElementImpl LClass = ElementFactory.classElement2('L', ["T"]);
+    InterfaceType LType = LClass.type;
+    ClassElementImpl MClass = ElementFactory.classElement2('M', ["T"]);
+    DartType typeParam = MClass.typeParameters[0].type;
+    InterfaceType superType = LType.substitute4(<DartType>[typeParam]);
+    MClass.interfaces = <InterfaceType>[superType];
+    InterfaceType MType = MClass.type;
+
+    InterfaceType top = LType.substitute4(<DartType>[dynamicType]);
+    InterfaceType left = MType.substitute4(<DartType>[dynamicType]);
+    InterfaceType right = LType.substitute4(<DartType>[intType]);
+    InterfaceType bottom = MType.substitute4(<DartType>[intType]);
+
+    _checkLattice(top, left, right, bottom);
+  }
+
+  void _checkLattice(
+      DartType top, DartType left, DartType right, DartType bottom) {
+    _checkGroups(top,
+        equivalents: <DartType>[top],
+        subtypes: <DartType>[left, right, bottom]);
+    _checkGroups(left,
+        equivalents: <DartType>[left],
+        subtypes: <DartType>[bottom],
+        unrelated: <DartType>[right],
+        supertypes: <DartType>[top]);
+    _checkGroups(right,
+        equivalents: <DartType>[right],
+        subtypes: <DartType>[bottom],
+        unrelated: <DartType>[left],
+        supertypes: <DartType>[top]);
+    _checkGroups(bottom,
+        equivalents: <DartType>[bottom],
+        supertypes: <DartType>[top, left, right]);
+  }
+
+  void _checkGroups(DartType t1,
+      {List<DartType> equivalents,
+      List<DartType> unrelated,
+      List<DartType> subtypes,
+      List<DartType> supertypes}) {
+    if (equivalents != null) {
+      for (DartType t2 in equivalents) {
+        _checkEquivalent(t1, t2);
+      }
+    }
+    if (unrelated != null) {
+      for (DartType t2 in unrelated) {
+        _checkUnrelated(t1, t2);
+      }
+    }
+    if (subtypes != null) {
+      for (DartType t2 in subtypes) {
+        _checkIsStrictSubtypeOf(t2, t1);
+      }
+    }
+    if (supertypes != null) {
+      for (DartType t2 in supertypes) {
+        _checkIsStrictSubtypeOf(t1, t2);
+      }
+    }
+  }
+
+  void _checkUnrelated(DartType type1, DartType type2) {
+    _checkIsNotSubtypeOf(type1, type2);
+    _checkIsNotSubtypeOf(type2, type1);
+  }
+
+  void _checkEquivalent(DartType type1, DartType type2) {
+    _checkIsSubtypeOf(type1, type2);
+    _checkIsSubtypeOf(type2, type1);
+  }
+
+  void _checkIsStrictSubtypeOf(DartType type1, DartType type2) {
+    _checkIsSubtypeOf(type1, type2);
+    _checkIsNotSubtypeOf(type2, type1);
+  }
+
+  void _checkIsSubtypeOf(DartType type1, DartType type2) {
+    expect(typeSystem.isSubtypeOf(type1, type2), true);
+  }
+
+  void _checkIsNotSubtypeOf(DartType type1, DartType type2) {
+    expect(typeSystem.isSubtypeOf(type1, type2), false);
+  }
+}
+
+@reflectiveTest
+class StrongAssignabilityTest {
+  TypeProvider typeProvider;
+  TypeSystem typeSystem;
+
+  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 StrongTypeSystemImpl();
+  }
+
+  void test_isAssignableTo_dynamic_isTop() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    List<DartType> interassignable = <DartType>[
+      dynamicType,
+      objectType,
+      intType,
+      doubleType,
+      numType,
+      stringType,
+      interfaceType,
+      bottomType
+    ];
+    _checkGroups(dynamicType, interassignable: interassignable);
+  }
+
+  void test_isAssignableTo_bottom_isBottom() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    List<DartType> interassignable = <DartType>[
+      dynamicType,
+      objectType,
+      intType,
+      doubleType,
+      numType,
+      stringType,
+      interfaceType,
+      bottomType
+    ];
+
+    _checkGroups(bottomType, interassignable: interassignable);
+  }
+
+  void test_isAssignableTo_int() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    List<DartType> interassignable = <DartType>[
+      dynamicType,
+      objectType,
+      intType,
+      numType,
+      bottomType
+    ];
+    List<DartType> unrelated = <DartType>[
+      doubleType,
+      stringType,
+      interfaceType,
+    ];
+
+    _checkGroups(intType,
+        interassignable: interassignable, unrelated: unrelated);
+  }
+
+  void test_isAssignableTo_double() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    List<DartType> interassignable = <DartType>[
+      dynamicType,
+      objectType,
+      doubleType,
+      numType,
+      bottomType
+    ];
+    List<DartType> unrelated = <DartType>[intType, stringType, interfaceType,];
+
+    _checkGroups(doubleType,
+        interassignable: interassignable, unrelated: unrelated);
+  }
+
+  void test_isAssignableTo_num() {
+    DartType interfaceType = ElementFactory.classElement2('A', []).type;
+    List<DartType> interassignable = <DartType>[
+      dynamicType,
+      objectType,
+      numType,
+      intType,
+      doubleType,
+      bottomType
+    ];
+    List<DartType> unrelated = <DartType>[stringType, interfaceType,];
+
+    _checkGroups(numType,
+        interassignable: interassignable, unrelated: unrelated);
+  }
+
+  void test_isAssignableTo_classes() {
+    ClassElement classTop = ElementFactory.classElement2("A");
+    ClassElement classLeft = ElementFactory.classElement("B", classTop.type);
+    ClassElement classRight = ElementFactory.classElement("C", classTop.type);
+    ClassElement classBottom = ElementFactory.classElement("D", classLeft.type)
+      ..interfaces = <InterfaceType>[classRight.type];
+    InterfaceType top = classTop.type;
+    InterfaceType left = classLeft.type;
+    InterfaceType right = classRight.type;
+    InterfaceType bottom = classBottom.type;
+
+    _checkLattice(top, left, right, bottom);
+  }
+
+  void test_isAssignableTo_simple_function() {
+    FunctionType top =
+        TypeBuilder.functionType(<DartType>[intType], objectType);
+    FunctionType left = TypeBuilder.functionType(<DartType>[intType], intType);
+    FunctionType right =
+        TypeBuilder.functionType(<DartType>[objectType], objectType);
+    FunctionType bottom =
+        TypeBuilder.functionType(<DartType>[objectType], intType);
+
+    _checkCrossLattice(top, left, right, bottom);
+  }
+
+  void test_isAssignableTo_call_method() {
+    ClassElementImpl classBottom = ElementFactory.classElement2("B");
+    MethodElement methodBottom =
+        ElementFactory.methodElement("call", objectType, <DartType>[intType]);
+    classBottom.methods = <MethodElement>[methodBottom];
+
+    DartType top = TypeBuilder.functionType(<DartType>[intType], objectType);
+    InterfaceType bottom = classBottom.type;
+
+    _checkIsAssignableTo(top, bottom);
+  }
+
+  void test_isAssignableTo_fuzzy_arrows() {
+    FunctionType top =
+        TypeBuilder.functionType(<DartType>[dynamicType], objectType);
+    FunctionType left =
+        TypeBuilder.functionType(<DartType>[objectType], objectType);
+    FunctionType right =
+        TypeBuilder.functionType(<DartType>[dynamicType], bottomType);
+    FunctionType bottom =
+        TypeBuilder.functionType(<DartType>[objectType], bottomType);
+
+    _checkCrossLattice(top, left, right, bottom);
+  }
+
+  void test_isAssignableTo_void_functions() {
+    FunctionType top = TypeBuilder.functionType(<DartType>[intType], voidType);
+    FunctionType bottom =
+        TypeBuilder.functionType(<DartType>[objectType], intType);
+
+    _checkEquivalent(bottom, top);
+  }
+
+  void test_isAssignableTo_named_optional() {
+    DartType r = TypeBuilder.functionType(<DartType>[intType], intType);
+    DartType o = TypeBuilder.functionType(<DartType>[], intType,
+        optional: <DartType>[intType]);
+    DartType n = TypeBuilder.functionType(<DartType>[], intType,
+        named: <String, DartType>{'x': intType});
+    DartType rr =
+        TypeBuilder.functionType(<DartType>[intType, intType], intType);
+    DartType ro = TypeBuilder.functionType(<DartType>[intType], intType,
+        optional: <DartType>[intType]);
+    DartType rn = TypeBuilder.functionType(<DartType>[intType], intType,
+        named: <String, DartType>{'x': intType});
+    DartType oo = TypeBuilder.functionType(<DartType>[], intType,
+        optional: <DartType>[intType, intType]);
+    DartType nn = TypeBuilder.functionType(<DartType>[], intType,
+        named: <String, DartType>{'x': intType, 'y': intType});
+    DartType nnn = TypeBuilder.functionType(<DartType>[], intType,
+        named: <String, DartType>{'x': intType, 'y': intType, 'z': intType});
+
+    _checkGroups(r,
+        interassignable: [r, o, ro, rn, oo], unrelated: [n, rr, nn, nnn]);
+    _checkGroups(o,
+        interassignable: [o, oo], unrelated: [n, rr, ro, rn, nn, nnn]);
+    _checkGroups(n,
+        interassignable: [n, nn, nnn], unrelated: [r, o, rr, ro, rn, oo]);
+    _checkGroups(rr,
+        interassignable: [rr, ro, oo], unrelated: [r, o, n, rn, nn, nnn]);
+    _checkGroups(ro, interassignable: [ro, oo], unrelated: [o, n, rn, nn, nnn]);
+    _checkGroups(rn,
+        interassignable: [rn], unrelated: [o, n, rr, ro, oo, nn, nnn]);
+    _checkGroups(oo, interassignable: [oo], unrelated: [n, rn, nn, nnn]);
+    _checkGroups(nn,
+        interassignable: [nn, nnn], unrelated: [r, o, rr, ro, rn, oo]);
+    _checkGroups(nnn,
+        interassignable: [nnn], unrelated: [r, o, rr, ro, rn, oo]);
+  }
+
+  void test_isAssignableTo_generics() {
+    ClassElementImpl LClass = ElementFactory.classElement2('L', ["T"]);
+    InterfaceType LType = LClass.type;
+    ClassElementImpl MClass = ElementFactory.classElement2('M', ["T"]);
+    DartType typeParam = MClass.typeParameters[0].type;
+    InterfaceType superType = LType.substitute4(<DartType>[typeParam]);
+    MClass.interfaces = <InterfaceType>[superType];
+    InterfaceType MType = MClass.type;
+
+    InterfaceType top = LType.substitute4(<DartType>[dynamicType]);
+    InterfaceType left = MType.substitute4(<DartType>[dynamicType]);
+    InterfaceType right = LType.substitute4(<DartType>[intType]);
+    InterfaceType bottom = MType.substitute4(<DartType>[intType]);
+
+    _checkCrossLattice(top, left, right, bottom);
+  }
+
+  void _checkCrossLattice(
+      DartType top, DartType left, DartType right, DartType bottom) {
+    _checkGroups(top, interassignable: <DartType>[top, left, right, bottom]);
+    _checkGroups(left, interassignable: <DartType>[top, left, right, bottom]);
+    _checkGroups(right, interassignable: <DartType>[top, left, right, bottom]);
+    _checkGroups(bottom, interassignable: <DartType>[top, left, right, bottom]);
+  }
+
+  void _checkLattice(
+      DartType top, DartType left, DartType right, DartType bottom) {
+    _checkGroups(top, interassignable: <DartType>[top, left, right, bottom]);
+    _checkGroups(left,
+        interassignable: <DartType>[top, left, bottom],
+        unrelated: <DartType>[right]);
+    _checkGroups(right,
+        interassignable: <DartType>[top, right, bottom],
+        unrelated: <DartType>[left]);
+    _checkGroups(bottom, interassignable: <DartType>[top, left, right, bottom]);
+  }
+
+  void _checkGroups(DartType t1,
+      {List<DartType> interassignable, List<DartType> unrelated}) {
+    if (interassignable != null) {
+      for (DartType t2 in interassignable) {
+        _checkEquivalent(t1, t2);
+      }
+    }
+    if (unrelated != null) {
+      for (DartType t2 in unrelated) {
+        _checkUnrelated(t1, t2);
+      }
+    }
+  }
+
+  void _checkUnrelated(DartType type1, DartType type2) {
+    _checkIsNotAssignableTo(type1, type2);
+    _checkIsNotAssignableTo(type2, type1);
+  }
+
+  void _checkEquivalent(DartType type1, DartType type2) {
+    _checkIsAssignableTo(type1, type2);
+    _checkIsAssignableTo(type2, type1);
+  }
+
+  void _checkIsStrictAssignableTo(DartType type1, DartType type2) {
+    _checkIsAssignableTo(type1, type2);
+    _checkIsNotAssignableTo(type2, type1);
+  }
+
+  void _checkIsAssignableTo(DartType type1, DartType type2) {
+    expect(typeSystem.isAssignableTo(type1, type2), true);
+  }
+
+  void _checkIsNotAssignableTo(DartType type1, DartType type2) {
+    expect(typeSystem.isAssignableTo(type1, type2), false);
   }
 }
diff --git a/pkg/analyzer/test/src/context/cache_test.dart b/pkg/analyzer/test/src/context/cache_test.dart
index 21432ed..b012ffd 100644
--- a/pkg/analyzer/test/src/context/cache_test.dart
+++ b/pkg/analyzer/test/src/context/cache_test.dart
@@ -738,7 +738,7 @@
     expect(entry.getValue(result2), 222);
     expect(entry.getValue(result3), 333);
     // replace result1, keep "dependedOn", invalidate result3
-    entry.setValueIncremental(result2, 2222);
+    entry.setValueIncremental(result2, 2222, true);
     expect(entry.getState(result1), CacheState.VALID);
     expect(entry.getState(result2), CacheState.VALID);
     expect(entry.getState(result3), CacheState.INVALID);
diff --git a/pkg/analyzer/test/src/context/context_test.dart b/pkg/analyzer/test/src/context/context_test.dart
index acfb596..ab4df64 100644
--- a/pkg/analyzer/test/src/context/context_test.dart
+++ b/pkg/analyzer/test/src/context/context_test.dart
@@ -1795,7 +1795,7 @@
     // TODO(scheglov) no threads in Dart
 //    Source source = _addSource("/test.dart", "library lib;");
 //    int initialTime = _context.getModificationStamp(source);
-//    List<Source> sources = new List<Source>();
+//    List<Source> sources = <Source>[];
 //    sources.add(source);
 //    _context.analysisPriorityOrder = sources;
 //    _context.parseCompilationUnit(source);
@@ -1910,7 +1910,7 @@
 
   void test_setAnalysisPriorityOrder() {
     int priorityCount = 4;
-    List<Source> sources = new List<Source>();
+    List<Source> sources = <Source>[];
     for (int index = 0; index < priorityCount; index++) {
       sources.add(addSource("/lib.dart$index", ""));
     }
@@ -1919,15 +1919,28 @@
   }
 
   void test_setAnalysisPriorityOrder_empty() {
-    context.analysisPriorityOrder = new List<Source>();
+    context.analysisPriorityOrder = <Source>[];
   }
 
   void test_setAnalysisPriorityOrder_nonEmpty() {
-    List<Source> sources = new List<Source>();
+    List<Source> sources = <Source>[];
     sources.add(addSource("/lib.dart", "library lib;"));
     context.analysisPriorityOrder = sources;
   }
 
+  void test_setAnalysisPriorityOrder_resetAnalysisDriver() {
+    Source source = addSource('/lib.dart', 'library lib;');
+    // start analysis
+    context.performAnalysisTask();
+    expect(context.driver.currentWorkOrder, isNotNull);
+    // set priority sources, AnalysisDriver is reset
+    context.analysisPriorityOrder = <Source>[source];
+    expect(context.driver.currentWorkOrder, isNull);
+    // analysis continues
+    context.performAnalysisTask();
+    expect(context.driver.currentWorkOrder, isNotNull);
+  }
+
   Future test_setChangedContents_libraryWithPart() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     options.incremental = true;
@@ -2067,7 +2080,7 @@
     options.cacheSize = maxCacheSize;
     context.analysisOptions = options;
     int sourceCount = maxCacheSize + 2;
-    List<Source> sources = new List<Source>();
+    List<Source> sources = <Source>[];
     ChangeSet changeSet = new ChangeSet();
     for (int i = 0; i < sourceCount; i++) {
       Source source = addSource("/lib$i.dart", "library lib$i;");
@@ -2146,8 +2159,8 @@
     entry.setState(RESOLVED_UNIT, CacheState.FLUSHED);
   }
 
-  List<Source> _getPriorityOrder(AnalysisContextImpl context2) {
-    return context2.test_priorityOrder;
+  List<Source> _getPriorityOrder(AnalysisContextImpl context) {
+    return context.test_priorityOrder;
   }
 
   void _performPendingAnalysisTasks([int maxTasks = 512]) {
diff --git a/pkg/analyzer/test/src/plugin/plugin_config_test.dart b/pkg/analyzer/test/src/plugin/plugin_config_test.dart
new file mode 100644
index 0000000..809a1ec
--- /dev/null
+++ b/pkg/analyzer/test/src/plugin/plugin_config_test.dart
@@ -0,0 +1,49 @@
+// 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 test.src.plugin.plugin_config_test;
+
+import 'package:analyzer/source/analysis_options_provider.dart';
+import 'package:analyzer/src/plugin/plugin_configuration.dart';
+import 'package:unittest/unittest.dart';
+
+main() {
+  group('PluginConfig', () {
+    group('parsing', () {
+      test('plugin map', () {
+        const optionsSrc = '''
+analyzer:
+  plugins:
+    my_plugin1: ^0.1.0 #shorthand 
+    my_plugin2:
+      version: ^0.2.0
+    my_plugin3:
+      class_name: MyPlugin
+      library_uri: myplugin/myplugin.dart
+      path: '/u/disk/src/'
+''';
+        var config = parseConfig(optionsSrc);
+        var plugins = pluginsSortedByName(config);
+        expect(plugins, hasLength(3));
+        expect(plugins[0].name, equals('my_plugin1'));
+        expect(plugins[0].version, equals('^0.1.0'));
+        expect(plugins[1].name, equals('my_plugin2'));
+        expect(plugins[1].version, equals('^0.2.0'));
+        expect(plugins[2].name, equals('my_plugin3'));
+        expect(plugins[2].version, isNull);
+        expect(plugins[2].path, equals('/u/disk/src/'));
+        expect(plugins[2].libraryUri, equals('myplugin/myplugin.dart'));
+        expect(plugins[2].className, equals('MyPlugin'));
+      });
+    });
+  });
+}
+
+PluginConfig parseConfig(String optionsSrc) {
+  var options = new AnalysisOptionsProvider().getOptionsFromString(optionsSrc);
+  return new PluginConfig.fromOptions(options);
+}
+
+List<PluginInfo> pluginsSortedByName(PluginConfig config) =>
+    config.plugins.toList()..sort((p1, p2) => p1.name.compareTo(p2.name));
diff --git a/pkg/analyzer/test/src/task/dart_work_manager_test.dart b/pkg/analyzer/test/src/task/dart_work_manager_test.dart
index a5b6b26..d8b9cae 100644
--- a/pkg/analyzer/test/src/task/dart_work_manager_test.dart
+++ b/pkg/analyzer/test/src/task/dart_work_manager_test.dart
@@ -20,7 +20,6 @@
 import 'package:analyzer/src/generated/testing/ast_factory.dart';
 import 'package:analyzer/src/task/dart.dart';
 import 'package:analyzer/src/task/dart_work_manager.dart';
-import 'package:analyzer/src/task/driver.dart';
 import 'package:analyzer/task/dart.dart';
 import 'package:analyzer/task/general.dart';
 import 'package:analyzer/task/model.dart';
diff --git a/pkg/analyzer/test/src/task/html_test.dart b/pkg/analyzer/test/src/task/html_test.dart
index a07dc75..7d8da56 100644
--- a/pkg/analyzer/test/src/task/html_test.dart
+++ b/pkg/analyzer/test/src/task/html_test.dart
@@ -6,6 +6,7 @@
 
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/task/html.dart';
+import 'package:analyzer/task/general.dart';
 import 'package:analyzer/task/html.dart';
 import 'package:analyzer/task/model.dart';
 import 'package:unittest/unittest.dart';
@@ -294,9 +295,7 @@
   }
 
   test_perform() {
-    AnalysisTarget target = newSource(
-        '/test.html',
-        r'''
+    String code = r'''
 <!DOCTYPE html>
 <html>
   <head>
@@ -306,10 +305,34 @@
     <h1 Test>
   </body>
 </html>
-''');
+''';
+    AnalysisTarget target = newSource('/test.html', code);
     computeResult(target, HTML_DOCUMENT);
     expect(task, isParseHtmlTask);
     expect(outputs[HTML_DOCUMENT], isNotNull);
     expect(outputs[HTML_DOCUMENT_ERRORS], isNotEmpty);
+    // LINE_INFO
+    {
+      LineInfo lineInfo = outputs[LINE_INFO];
+      expect(lineInfo, isNotNull);
+      {
+        int offset = code.indexOf('<!DOCTYPE');
+        LineInfo_Location location = lineInfo.getLocation(offset);
+        expect(location.lineNumber, 1);
+        expect(location.columnNumber, 1);
+      }
+      {
+        int offset = code.indexOf('<html>');
+        LineInfo_Location location = lineInfo.getLocation(offset);
+        expect(location.lineNumber, 2);
+        expect(location.columnNumber, 1);
+      }
+      {
+        int offset = code.indexOf('<title>');
+        LineInfo_Location location = lineInfo.getLocation(offset);
+        expect(location.lineNumber, 4);
+        expect(location.columnNumber, 5);
+      }
+    }
   }
 }
diff --git a/pkg/analyzer/test/src/task/html_work_manager_test.dart b/pkg/analyzer/test/src/task/html_work_manager_test.dart
index 35bc13d..0785f97 100644
--- a/pkg/analyzer/test/src/task/html_work_manager_test.dart
+++ b/pkg/analyzer/test/src/task/html_work_manager_test.dart
@@ -17,7 +17,6 @@
     show AnalysisError, HtmlErrorCode;
 import 'package:analyzer/src/generated/java_engine.dart' show CaughtException;
 import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/task/driver.dart';
 import 'package:analyzer/src/task/html.dart';
 import 'package:analyzer/src/task/html_work_manager.dart';
 import 'package:analyzer/task/dart.dart';
diff --git a/pkg/analyzer/test/src/task/strong_mode_test.dart b/pkg/analyzer/test/src/task/strong_mode_test.dart
index 7b719ab..ccc274f 100644
--- a/pkg/analyzer/test/src/task/strong_mode_test.dart
+++ b/pkg/analyzer/test/src/task/strong_mode_test.dart
@@ -7,9 +7,7 @@
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/element.dart';
 import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/task/dart.dart';
 import 'package:analyzer/src/task/strong_mode.dart';
-import 'package:analyzer/task/dart.dart';
 import 'package:unittest/unittest.dart';
 
 import '../../reflective_tests.dart';
@@ -25,7 +23,8 @@
 @reflectiveTest
 class InstanceMemberInferrerTest extends AbstractContextTest {
   InstanceMemberInferrer get createInferrer =>
-      new InstanceMemberInferrer(context.typeProvider);
+      new InstanceMemberInferrer(context.typeProvider,
+          typeSystem: context.typeSystem);
 
   /**
    * Add a source with the given [content] and return the result of resolving
diff --git a/pkg/compiler/lib/src/apiimpl.dart b/pkg/compiler/lib/src/apiimpl.dart
index b9e48ed..357404f 100644
--- a/pkg/compiler/lib/src/apiimpl.dart
+++ b/pkg/compiler/lib/src/apiimpl.dart
@@ -116,6 +116,8 @@
             fatalWarnings: hasOption(options, Flags.fatalWarnings),
             enableExperimentalMirrors:
                 hasOption(options, Flags.enableExperimentalMirrors),
+            enableAssertMessage:
+                hasOption(options, Flags.enableAssertMessage),
             generateCodeWithCompileTimeErrors:
                 hasOption(options, Flags.generateCodeWithCompileTimeErrors),
             testMode: hasOption(options, Flags.testMode),
diff --git a/pkg/compiler/lib/src/closure.dart b/pkg/compiler/lib/src/closure.dart
index f7d74f8..0f8f218 100644
--- a/pkg/compiler/lib/src/closure.dart
+++ b/pkg/compiler/lib/src/closure.dart
@@ -786,8 +786,6 @@
     } else if (node.isTypeCast) {
       DartType type = elements.getType(node.arguments.head);
       analyzeType(type);
-    } else if (elements.isAssert(node) && !compiler.enableUserAssertions) {
-      return;
     }
     node.visitChildren(this);
   }
diff --git a/pkg/compiler/lib/src/commandline_options.dart b/pkg/compiler/lib/src/commandline_options.dart
index 4cd99ed..204bb2a 100644
--- a/pkg/compiler/lib/src/commandline_options.dart
+++ b/pkg/compiler/lib/src/commandline_options.dart
@@ -17,6 +17,7 @@
       '--disable-native-live-type-analysis';
   static const String disableTypeInference = '--disable-type-inference';
   static const String dumpInfo = '--dump-info';
+  static const String enableAssertMessage = '--assert-message';
   static const String enableCheckedMode = '--enable-checked-mode';
   static const String enableConcreteTypeInference =
       '--enable-concrete-type-inference';
diff --git a/pkg/compiler/lib/src/common.dart b/pkg/compiler/lib/src/common.dart
index b997eda..400ba5d 100644
--- a/pkg/compiler/lib/src/common.dart
+++ b/pkg/compiler/lib/src/common.dart
@@ -5,6 +5,9 @@
 library dart2js.common;
 
 
+export 'common/names.dart' show
+    Names;
+
 export 'common/tasks.dart' show
     CompilerTask;
 
@@ -32,7 +35,6 @@
 
 export 'elements/elements.dart' show
     ClassElement,
-    ClosureFieldElement,
     CompilationUnitElement,
     Element,
     Elements,
@@ -44,19 +46,17 @@
     TypedefElement,
     VariableElement;
 
-export 'resolution/resolution.dart' show
-    TreeElements;
-
 export 'tree/tree.dart' show
     Node;
 
 export 'types/types.dart' show
     TypeMask;
 
-export 'universe/universe.dart' show
-    CallStructure,
-    Selector,
-    SelectorKind;
+export 'universe/call_structure.dart' show
+    CallStructure;
+
+export 'universe/selector.dart' show
+    Selector;
 
 export 'util/util.dart' show
     Link;
diff --git a/pkg/compiler/lib/src/common/backend_api.dart b/pkg/compiler/lib/src/common/backend_api.dart
index 7af8750..71c8616 100644
--- a/pkg/compiler/lib/src/common/backend_api.dart
+++ b/pkg/compiler/lib/src/common/backend_api.dart
@@ -167,9 +167,6 @@
   void registerTypeVariableBoundsSubtypeCheck(DartType typeArgument,
                                               DartType bound) {}
 
-  /// Returns `true` if [element] represent the assert function.
-  bool isAssertMethod(Element element) => false;
-
   /**
    * Call this to register that an instantiated generic class has a call
    * method.
diff --git a/pkg/compiler/lib/src/common/codegen.dart b/pkg/compiler/lib/src/common/codegen.dart
index 323822b..9a95982 100644
--- a/pkg/compiler/lib/src/common/codegen.dart
+++ b/pkg/compiler/lib/src/common/codegen.dart
@@ -26,8 +26,9 @@
     JavaScriptBackend;
 import '../resolution/tree_elements.dart' show
     TreeElements;
+import '../universe/selector.dart' show
+    Selector;
 import '../universe/universe.dart' show
-    Selector,
     UniverseSelector;
 import '../util/util.dart' show
     Setlet;
@@ -56,6 +57,11 @@
   CodegenEnqueuer get world => compiler.enqueuer.codegen;
   JavaScriptBackend get backend => compiler.backend;
 
+  void registerAssert(bool hasMessage) {
+    // Codegen does not register asserts.  They have been lowered to calls.
+    assert(false);
+  }
+
   void registerDependency(Element element) {
     treeElements.registerDependency(element);
   }
diff --git a/pkg/compiler/lib/src/common/names.dart b/pkg/compiler/lib/src/common/names.dart
index 5d104ef..45c7b1f 100644
--- a/pkg/compiler/lib/src/common/names.dart
+++ b/pkg/compiler/lib/src/common/names.dart
@@ -9,8 +9,9 @@
 import '../elements/elements.dart' show
     Name,
     PublicName;
-import '../universe/universe.dart' show
-    CallStructure,
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
     Selector;
 
 /// [String]s commonly used.
@@ -62,6 +63,10 @@
 
   /// The name of the to-string method on 'Object'.
   static const Name toString_ = const PublicName('toString');
+
+  static const Name INDEX_NAME = const PublicName("[]");
+  static const Name INDEX_SET_NAME = const PublicName("[]=");
+  static const Name CALL_NAME = Names.call;
 }
 
 /// [Selector]s commonly used.
diff --git a/pkg/compiler/lib/src/common/registry.dart b/pkg/compiler/lib/src/common/registry.dart
index 1530bfe..47510b5 100644
--- a/pkg/compiler/lib/src/common/registry.dart
+++ b/pkg/compiler/lib/src/common/registry.dart
@@ -33,4 +33,6 @@
   void registerInstantiation(InterfaceType type);
 
   void registerGetOfStaticFunction(FunctionElement element);
+
+  void registerAssert(bool hasMessage);
 }
diff --git a/pkg/compiler/lib/src/common/resolution.dart b/pkg/compiler/lib/src/common/resolution.dart
index e43cf14..86a21bd 100644
--- a/pkg/compiler/lib/src/common/resolution.dart
+++ b/pkg/compiler/lib/src/common/resolution.dart
@@ -43,8 +43,8 @@
 
 /// Backend callbacks function specific to the resolution phase.
 class ResolutionCallbacks {
-  /// Register that [node] is a call to `assert`.
-  void onAssert(Send node, Registry registry) {}
+  /// Register that an assert has been seen.
+  void onAssert(bool hasMessage, Registry registry) {}
 
   /// Register that an 'await for' has been seen.
   void onAsyncForIn(AsyncForIn node, Registry registry) {}
diff --git a/pkg/compiler/lib/src/compile_time_constants.dart b/pkg/compiler/lib/src/compile_time_constants.dart
index 53d037a..2f95b7b 100644
--- a/pkg/compiler/lib/src/compile_time_constants.dart
+++ b/pkg/compiler/lib/src/compile_time_constants.dart
@@ -29,7 +29,7 @@
 import 'tree/tree.dart';
 import 'util/util.dart' show
     Link;
-import 'universe/universe.dart' show
+import 'universe/call_structure.dart' show
     CallStructure;
 
 /// A [ConstantEnvironment] provides access for constants compiled for variable
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index 747dc38..0ccc51a 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -69,8 +69,7 @@
     DeferredLoaderGetterElementX,
     MethodElementX,
     LibraryElementX,
-    PrefixElementX,
-    VoidElementX;
+    PrefixElementX;
 import 'enqueue.dart' show
     CodegenEnqueuer,
     Enqueuer,
@@ -94,7 +93,6 @@
 import 'parser/diet_parser_task.dart' show
     DietParserTask;
 import 'parser/parser_task.dart' show
-    DietParserTask,
     ParserTask;
 import 'patch_parser.dart' show
     PatchParserTask;
@@ -128,9 +126,11 @@
 import 'typechecker.dart' show
     TypeCheckerTask;
 import 'types/types.dart' as ti;
+import 'universe/call_structure.dart' show
+    CallStructure;
+import 'universe/selector.dart' show
+    Selector;
 import 'universe/universe.dart' show
-    CallStructure,
-    Selector,
     Universe;
 import 'util/util.dart' show
     Link,
@@ -189,6 +189,7 @@
   final bool dumpInfo;
   final bool useContentSecurityPolicy;
   final bool enableExperimentalMirrors;
+  final bool enableAssertMessage;
 
   /**
    * The maximum size of a concrete type before it widens to dynamic during
@@ -522,6 +523,7 @@
             this.fatalWarnings: false,
             bool hasIncrementalSupport: false,
             this.enableExperimentalMirrors: false,
+            this.enableAssertMessage: false,
             this.allowNativeExtensions: false,
             this.generateCodeWithCompileTimeErrors: false,
             this.testMode: false,
diff --git a/pkg/compiler/lib/src/constants/constant_constructors.dart b/pkg/compiler/lib/src/constants/constant_constructors.dart
index e3773cf..fa774e8 100644
--- a/pkg/compiler/lib/src/constants/constant_constructors.dart
+++ b/pkg/compiler/lib/src/constants/constant_constructors.dart
@@ -18,7 +18,8 @@
 import '../resolution/tree_elements.dart' show
     TreeElements;
 import '../tree/tree.dart';
-import '../universe/universe.dart' show CallStructure;
+import '../universe/call_structure.dart' show
+    CallStructure;
 import 'constructors.dart';
 import 'expressions.dart';
 
diff --git a/pkg/compiler/lib/src/constants/constructors.dart b/pkg/compiler/lib/src/constants/constructors.dart
index a13149a..7faf593 100644
--- a/pkg/compiler/lib/src/constants/constructors.dart
+++ b/pkg/compiler/lib/src/constants/constructors.dart
@@ -8,7 +8,8 @@
 import '../elements/elements.dart' show
     ConstructorElement,
     FieldElement;
-import '../universe/universe.dart' show CallStructure;
+import '../universe/call_structure.dart' show
+    CallStructure;
 import '../util/util.dart';
 import 'evaluation.dart';
 import 'expressions.dart';
diff --git a/pkg/compiler/lib/src/constants/evaluation.dart b/pkg/compiler/lib/src/constants/evaluation.dart
index 5b7c85d..176d736 100644
--- a/pkg/compiler/lib/src/constants/evaluation.dart
+++ b/pkg/compiler/lib/src/constants/evaluation.dart
@@ -6,7 +6,7 @@
 
 import '../compiler.dart' show
     Compiler;
-import '../universe/universe.dart' show
+import '../universe/call_structure.dart' show
     CallStructure;
 import 'expressions.dart';
 
diff --git a/pkg/compiler/lib/src/constants/expressions.dart b/pkg/compiler/lib/src/constants/expressions.dart
index fd0f68a..3edb116 100644
--- a/pkg/compiler/lib/src/constants/expressions.dart
+++ b/pkg/compiler/lib/src/constants/expressions.dart
@@ -17,8 +17,10 @@
     PrefixElement,
     VariableElement;
 import '../resolution/operators.dart';
-import '../tree/tree.dart' show DartString;
-import '../universe/universe.dart' show CallStructure;
+import '../tree/tree.dart' show
+    DartString;
+import '../universe/call_structure.dart' show
+    CallStructure;
 import 'evaluation.dart';
 import 'values.dart';
 
diff --git a/pkg/compiler/lib/src/cps_ir/cps_fragment.dart b/pkg/compiler/lib/src/cps_ir/cps_fragment.dart
index a9190dd..4a1f340 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_fragment.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_fragment.dart
@@ -6,7 +6,7 @@
 
 import 'cps_ir_nodes.dart';
 import '../constants/values.dart';
-import '../universe/universe.dart' show Selector;
+import '../universe/selector.dart' show Selector;
 import '../types/types.dart' show TypeMask;
 import '../io/source_information.dart';
 import '../elements/elements.dart';
@@ -112,11 +112,11 @@
     return letPrim(new ApplyBuiltinOperator(op, args, sourceInformation));
   }
 
-  Primitive invokeBuiltin(BuiltinMethod method, 
-                          Primitive receiver, 
+  Primitive invokeBuiltin(BuiltinMethod method,
+                          Primitive receiver,
                           List<Primitive> arguments,
                           {bool receiverIsNotNull: false}) {
-    ApplyBuiltinMethod apply = 
+    ApplyBuiltinMethod apply =
         new ApplyBuiltinMethod(method, receiver, arguments, sourceInformation);
     apply.receiverIsNotNull = receiverIsNotNull;
     return letPrim(apply);
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart
index e4cb699..ca34d15 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart
@@ -22,8 +22,9 @@
 import '../types/types.dart' show
     TypeMask;
 import '../closure.dart' hide ClosureScope;
-import '../universe/universe.dart' show
-    CallStructure,
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
     Selector,
     SelectorKind;
 import 'cps_ir_nodes.dart' as ir;
@@ -2805,8 +2806,13 @@
   ir.Node buildAwait(ir.Primitive value) {
     return _continueWithExpression((k) => new ir.Await(value, k));
   }
-}
 
+  void buildYield(ir.Primitive value, bool hasStar) {
+    _continueWithExpression((k) {
+      return new ir.Yield(value, hasStar, k);
+    });
+  }
+}
 
 /// Location of a variable relative to a given closure.
 class ClosureLocation {
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
index 8ad289f..6faf8d1 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
@@ -35,10 +35,10 @@
 import '../tree/tree.dart' as ast;
 import '../types/types.dart' show
     TypeMask;
-import '../universe/universe.dart' show
-    CallStructure,
-    Selector,
-    SelectorKind;
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 import '../constants/values.dart' show
     ConstantValue;
 import 'cps_ir_nodes.dart' as ir;
@@ -379,6 +379,11 @@
     return irBuilder.buildAwait(value);
   }
 
+  visitYield(ast.Yield node) {
+    ir.Primitive value = visit(node.expression);
+    return irBuilder.buildYield(value, node.hasStar);
+  }
+
   visitSyncForIn(ast.SyncForIn node) {
     // [node.declaredIdentifier] can be either an [ast.VariableDefinitions]
     // (defining a new local variable) or a send designating some existing
@@ -648,9 +653,8 @@
     return receiver;
   }
 
-  // ## Sends ##
   @override
-  ir.Primitive visitAssert(ast.Send node, ast.Node condition, _) {
+  ir.Primitive visitAssert(ast.Assert node) {
     assert(irBuilder.isOpen);
     if (compiler.enableUserAssertions) {
       return giveup(node, 'assert in checked mode not implemented');
@@ -663,6 +667,7 @@
     }
   }
 
+  // ## Sends ##
   @override
   void previsitDeferredAccess(ast.Send node, PrefixElement prefix, _) {
     giveup(node, 'deferred access is not implemented');
@@ -2011,7 +2016,7 @@
     String nameString = Elements.reconstructConstructorName(constructor);
     Name name = new Name(nameString, constructor.library);
     return buildStaticNoSuchMethod(
-        new Selector(SelectorKind.CALL, name, callStructure),
+        new Selector.call(name, callStructure),
         translateDynamicArguments(arguments, callStructure));
   }
 
@@ -2190,7 +2195,7 @@
     // Translate as a method call.
     List<ir.Primitive> args = arguments.nodes.mapToList(visit);
     return buildStaticNoSuchMethod(
-        new Selector(SelectorKind.CALL, setter.memberName, callStructure),
+        new Selector.call(setter.memberName, callStructure),
         args);
   }
 
@@ -2237,7 +2242,7 @@
     List<ir.Primitive> args =
         translateDynamicArguments(arguments, callStructure);
     return buildInstanceNoSuchMethod(
-        new Selector(SelectorKind.CALL, setter.memberName, callStructure),
+        new Selector.call(setter.memberName, callStructure),
         elements.getTypeMask(node),
         args);
   }
@@ -2399,6 +2404,7 @@
     currentFunction = elements[node];
 
     if (currentFunction.asyncMarker != AsyncMarker.SYNC &&
+        currentFunction.asyncMarker != AsyncMarker.SYNC_STAR &&
         currentFunction.asyncMarker != AsyncMarker.ASYNC) {
       giveup(node, "cannot handle sync*/async* functions");
     }
@@ -3370,9 +3376,9 @@
             'Isolate library and compiler mismatch.');
       }
       List<ir.Primitive> arguments = translateStaticArguments(argumentList,
-          element, CallStructure.TWO_ARGS);
+          element, callStructure);
       return irBuilder.buildStaticFunctionInvocation(element,
-          CallStructure.TWO_ARGS, arguments,
+          callStructure, arguments,
           sourceInformation:
                 sourceInformationBuilder.buildCall(node, node.selector));
     }
@@ -3521,12 +3527,12 @@
         if (!compiler.hasIsolateSupport) {
           // If the isolate library is not used, we just generate code
           // to fetch the current isolate.
-          continue GET_STATIC_STATE;
+          continue getStaticState;
         }
         return buildIsolateHelperInvocation('_currentIsolate',
             CallStructure.NO_ARGS);
 
-      GET_STATIC_STATE: case 'JS_GET_STATIC_STATE':
+      getStaticState: case 'JS_GET_STATIC_STATE':
         validateArgumentCount(exactly: 0);
 
         return irBuilder.buildForeignCode(
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
index 070aa60..4415214 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart
@@ -9,7 +9,7 @@
 import '../elements/elements.dart';
 import '../io/source_information.dart' show SourceInformation;
 import '../types/types.dart' show TypeMask;
-import '../universe/universe.dart' show Selector;
+import '../universe/selector.dart' show Selector;
 
 import 'builtin_operator.dart';
 export 'builtin_operator.dart';
@@ -86,7 +86,7 @@
 
 /// An expression without a continuation or a subexpression body.
 ///
-/// These break straight-line control flow and can be throught of as ending a
+/// These break straight-line control flow and can be thought of as ending a
 /// basic block.
 abstract class TailExpression extends Expression {
   Expression get next => null;
@@ -1261,6 +1261,21 @@
   }
 }
 
+class Yield extends CallExpression {
+  final Reference<Primitive> input;
+  final Reference<Continuation> continuation;
+  final bool hasStar;
+
+  Yield(Primitive input, this.hasStar, Continuation continuation)
+    : this.input = new Reference<Primitive>(input),
+      this.continuation = new Reference<Continuation>(continuation);
+
+  @override
+  accept(Visitor visitor) {
+    return visitor.visitYield(this);
+  }
+}
+
 List<Reference<Primitive>> _referenceList(Iterable<Primitive> definitions) {
   return definitions.map((e) => new Reference<Primitive>(e)).toList();
 }
@@ -1293,6 +1308,7 @@
   T visitSetField(SetField node);
   T visitUnreachable(Unreachable node);
   T visitAwait(Await node);
+  T visitYield(Yield node);
 
   // Definitions.
   T visitLiteralList(LiteralList node);
@@ -1602,6 +1618,13 @@
     processReference(node.continuation);
   }
 
+  processYield(Yield node) {}
+  visitYield(Yield node) {
+    processYield(node);
+    processReference(node.input);
+    processReference(node.continuation);
+  }
+
   processGetLength(GetLength node) {}
   visitGetLength(GetLength node) {
     processGetLength(node);
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
index 631e909..3fd8503 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart
@@ -7,7 +7,10 @@
 import '../constants/values.dart';
 import '../util/util.dart';
 import 'cps_ir_nodes.dart';
-import '../universe/universe.dart' show Selector, CallStructure;
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 
 /// A [Decorator] is a function used by [SExpressionStringifier] to augment the
 /// output produced for a node or reference.  It can be provided to the
@@ -73,24 +76,14 @@
     String conts;
     bool first = true;
     for (Continuation continuation in node.continuations) {
-      String name = newContinuationName(continuation);
-      if (continuation.isRecursive) name = 'rec $name';
-      // TODO(karlklose): this should be changed to `.map(visit).join(' ')`  and
-      // should recurse to [visit].  Currently we can't do that, because the
-      // unstringifier_test produces [LetConts] with dummy arguments on them.
-      String parameters = continuation.parameters
-          .map((p) => '${decorator(p, newValueName(p))}')
-          .join(' ');
-      String body =
-          indentBlock(() => indentBlock(() => visit(continuation.body)));
       if (first) {
         first = false;
-        conts = '($name ($parameters)\n$body)';
+        conts = visit(continuation);
       } else {
         // Each subsequent line is indented additional spaces to align it
         // with the previous continuation.
         String indent = '$indentation${' ' * '(LetCont ('.length}';
-        conts = '$conts\n$indent($name ($parameters)\n$body)';
+        conts = '$conts\n$indent${visit(continuation)}';
       }
     }
     String body = indentBlock(() => visit(node.body));
@@ -117,10 +110,12 @@
   }
 
   String formatArguments(CallStructure call,
-                         List<Reference<Primitive>> arguments) {
+                         List<Reference<Primitive>> arguments,
+                         {bool isIntercepted: false}) {
     int positionalArgumentCount = call.positionalArgumentCount;
-    List<String> args = new List<String>();
-    args.addAll(arguments.getRange(0, positionalArgumentCount).map(access));
+    if (isIntercepted) ++positionalArgumentCount;
+    List<String> args =
+        arguments.getRange(0, positionalArgumentCount).map(access).toList();
     List<String> argumentNames = call.getOrderedNamedArguments();
     for (int i = 0; i < argumentNames.length; ++i) {
       String name = argumentNames[i];
@@ -141,7 +136,8 @@
     String name = node.selector.name;
     String rcv = access(node.receiver);
     String cont = access(node.continuation);
-    String args = formatArguments(node.selector.callStructure, node.arguments);
+    String args = formatArguments(node.selector.callStructure, node.arguments,
+        isIntercepted: node.receiverIsIntercepted);
     return '$indentation(InvokeMethod $rcv $name $args $cont)';
   }
 
@@ -215,8 +211,16 @@
   }
 
   String visitContinuation(Continuation node) {
-    // Continuations are visited directly in visitLetCont.
-    return '(Unexpected Continuation)';
+    String name = newContinuationName(node);
+    if (node.isRecursive) name = 'rec $name';
+    // TODO(karlklose): this should be changed to `.map(visit).join(' ')`  and
+    // should recurse to [visit].  Currently we can't do that, because the
+    // unstringifier_test produces [LetConts] with dummy arguments on them.
+    String parameters = node.parameters
+        .map((p) => '${decorator(p, newValueName(p))}')
+        .join(' ');
+    String body = indentBlock(() => indentBlock(() => visit(node.body)));
+    return '($name ($parameters)\n$body)';
   }
 
   String visitGetMutable(GetMutable node) {
@@ -291,7 +295,7 @@
     String className = node.classElement.name;
     String arguments = node.arguments.map(access).join(' ');
     String typeInformation = node.typeInformation.map(access).join(' ');
-    return '(CreateInstance $className ($arguments)$typeInformation)';
+    return '(CreateInstance $className ($arguments) ($typeInformation))';
   }
 
   String visitInterceptor(Interceptor node) {
@@ -364,6 +368,12 @@
   }
 
   @override
+  String visitYield(Yield node) {
+    String value = access(node.input);
+    String continuation = access(node.continuation);
+    return '(Yield $value $continuation)';
+  }
+
   String visitRefinement(Refinement node) {
     String value = access(node.value);
     return '(Refinement $value ${node.type})';
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
index 5240db9..a969bdb 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart
@@ -5,7 +5,7 @@
 library dart2js.ir_tracer;
 
 import 'dart:async' show EventSink;
-import 'cps_ir_nodes.dart' as cps_ir hide Function;
+import 'cps_ir_nodes.dart' as cps_ir;
 import '../tracer.dart';
 
 /**
@@ -119,7 +119,7 @@
         String name = names.name(cont);
         return cont.isRecursive ? '$name*' : name;
       }
-      
+
       String ids = node.continuations.map(nameContinuation).join(', ');
       printStmt(dummy, "LetCont $ids");
     }
@@ -397,6 +397,13 @@
   }
 
   @override
+  visitYield(cps_ir.Yield node) {
+    String value = formatReference(node.input);
+    String continuation = formatReference(node.continuation);
+    return 'Yield $value $continuation';
+  }
+
+  @override
   visitRefinement(cps_ir.Refinement node) {
     String value = formatReference(node.value);
     return 'Refinement $value ${node.type}';
@@ -675,9 +682,15 @@
 
   @override
   visitAwait(cps_ir.Await node) {
-    unexpectedNode(node);
+    addEdgeToContinuation(node.continuation);
   }
 
+  @override
+  visitYield(cps_ir.Yield node) {
+    addEdgeToContinuation(node.continuation);
+  }
+
+  @override
   visitRefinement(cps_ir.Refinement node) {
     unexpectedNode(node);
   }
diff --git a/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart b/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart
index fb6b539..18bb14d 100644
--- a/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart
+++ b/pkg/compiler/lib/src/cps_ir/scalar_replacement.dart
@@ -8,7 +8,7 @@
 import 'dart:collection' show Queue;
 
 import '../closure.dart' show
-    ClosureClassElement, Identifiers;
+    ClosureClassElement;
 import '../common/names.dart' show
     Selectors, Identifiers;
 import '../compiler.dart' as dart2js show
diff --git a/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart b/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart
index 0e61782..4aa4ba0 100644
--- a/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart
+++ b/pkg/compiler/lib/src/cps_ir/shrinking_reductions.dart
@@ -697,6 +697,11 @@
   processRefinement(Refinement node) {
     node.value.parent = node;
   }
+
+  processYield(Yield node) {
+    node.continuation.parent = node;
+    node.input.parent = node;
+  }
 }
 
 class _ReductionKind {
diff --git a/pkg/compiler/lib/src/cps_ir/type_mask_system.dart b/pkg/compiler/lib/src/cps_ir/type_mask_system.dart
index e05db65..c911b5f 100644
--- a/pkg/compiler/lib/src/cps_ir/type_mask_system.dart
+++ b/pkg/compiler/lib/src/cps_ir/type_mask_system.dart
@@ -4,7 +4,7 @@
 
 library dart2js.type_mask_system;
 
-import '../closure.dart' show ClosureClassElement, Identifiers;
+import '../closure.dart' show ClosureClassElement;
 import '../common/names.dart' show Selectors, Identifiers;
 import '../compiler.dart' as dart2js show Compiler;
 import '../constants/constant_system.dart';
@@ -15,7 +15,7 @@
 import '../js_backend/js_backend.dart' show JavaScriptBackend;
 import '../types/types.dart';
 import '../types/constants.dart' show computeTypeMask;
-import '../universe/universe.dart';
+import '../universe/selector.dart' show Selector;
 import '../world.dart' show World;
 
 enum AbstractBool {
diff --git a/pkg/compiler/lib/src/cps_ir/type_propagation.dart b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
index 631aaf2..8c37b3a 100644
--- a/pkg/compiler/lib/src/cps_ir/type_propagation.dart
+++ b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
@@ -6,9 +6,10 @@
 import 'optimizers.dart';
 
 import '../closure.dart' show
-    ClosureClassElement, Identifiers;
+    ClosureClassElement;
 import '../common/names.dart' show
-    Selectors, Identifiers;
+    Identifiers,
+    Selectors;
 import '../compiler.dart' as dart2js show
     Compiler;
 import '../constants/constant_system.dart';
@@ -17,16 +18,21 @@
 import '../diagnostics/invariant.dart' as dart2js show
     InternalErrorFunction;
 import '../elements/elements.dart';
-import '../io/source_information.dart' show SourceInformation;
-import '../js_backend/js_backend.dart' show JavaScriptBackend;
-import '../js_backend/codegen/task.dart' show CpsFunctionCompiler;
+import '../io/source_information.dart' show
+    SourceInformation;
+import '../js_backend/js_backend.dart' show
+    JavaScriptBackend;
+import '../js_backend/codegen/task.dart' show
+    CpsFunctionCompiler;
 import '../resolution/access_semantics.dart';
 import '../resolution/operators.dart';
 import '../resolution/send_structure.dart';
 import '../tree/tree.dart' as ast;
 import '../types/types.dart';
-import '../types/constants.dart' show computeTypeMask;
-import '../universe/universe.dart';
+import '../types/constants.dart' show
+    computeTypeMask;
+import '../universe/selector.dart' show
+    Selector;
 import '../world.dart' show World;
 import 'cps_fragment.dart';
 import 'cps_ir_nodes.dart';
@@ -379,8 +385,6 @@
         _internalError);
     transformer.transform(root);
   }
-
-  getType(Node node) => _values[node];
 }
 
 final Map<String, BuiltinOperator> NumBinaryBuiltins =
@@ -978,8 +982,7 @@
         CpsFragment cps = new CpsFragment(sourceInfo);
         cps.invokeBuiltin(BuiltinMethod.Push,
             list,
-            <Primitive>[addedItem],
-            receiverIsNotNull: listValue.isDefinitelyNotNull);
+            <Primitive>[addedItem]);
         cps.invokeContinuation(cont, [cps.makeNull()]);
         replaceSubtree(node, cps.result);
         push(cps.result);
@@ -1002,8 +1005,7 @@
             [list, fail.makeConstant(new IntConstantValue(-1))]);
         Primitive removedItem = cps.invokeBuiltin(BuiltinMethod.Pop,
             list,
-            <Primitive>[],
-            receiverIsNotNull: listValue.isDefinitelyNotNull);
+            <Primitive>[]);
         cps.invokeContinuation(cont, [removedItem]);
         replaceSubtree(node, cps.result);
         push(cps.result);
@@ -1027,8 +1029,7 @@
         CpsFragment cps = new CpsFragment(sourceInfo);
         cps.invokeBuiltin(BuiltinMethod.Push,
             list,
-            addedLiteral.values.map((ref) => ref.definition).toList(),
-            receiverIsNotNull: listValue.isDefinitelyNotNull);
+            addedLiteral.values.map((ref) => ref.definition).toList());
         cps.invokeContinuation(cont, [cps.makeNull()]);
         replaceSubtree(node, cps.result);
         push(cps.result);
@@ -1075,7 +1076,7 @@
             !node.selector.isCall) return false;
         assert(node.selector.positionalArgumentCount == 1);
         assert(node.selector.namedArgumentCount == 0);
-        FunctionDefinition target = functionCompiler.compileToCpsIR(element);
+        FunctionDefinition target = functionCompiler.compileToCpsIr(element);
 
         node.receiver.definition.substituteFor(target.thisParameter);
         for (int i = 0; i < node.arguments.length; ++i) {
@@ -1344,7 +1345,7 @@
 
       InvokeMethod invoke = new InvokeMethod.byReference(
         new Reference<Primitive>(object),
-        new Selector(SelectorKind.CALL, getter.memberName, call.callStructure),
+        new Selector.call(getter.memberName, call.callStructure),
         type,
         node.arguments,
         node.continuation,
@@ -1421,7 +1422,7 @@
     if (functionElement.resolvedAst.elements.containsTryStatement) return false;
 
     FunctionDefinition target =
-        functionCompiler.compileToCpsIR(functionElement);
+        functionCompiler.compileToCpsIr(functionElement);
 
     // Accesses to closed-over values are field access primitives.  We we don't
     // inline if there are other uses of 'this' since that could be an escape or
@@ -1476,7 +1477,6 @@
     if (specializeClosureCall(node)) return;
 
     AbstractValue receiver = getValue(node.receiver.definition);
-    node.receiverIsNotNull = receiver.isDefinitelyNotNull;
 
     if (node.receiverIsIntercepted &&
         node.receiver.definition.sameValue(node.arguments[0].definition)) {
@@ -1646,7 +1646,7 @@
 
     if (!shouldInline()) return false;
 
-    FunctionDefinition target = functionCompiler.compileToCpsIR(node.target);
+    FunctionDefinition target = functionCompiler.compileToCpsIr(node.target);
     for (int i = 0; i < node.arguments.length; ++i) {
       node.arguments[i].definition.substituteFor(target.parameters[i]);
     }
@@ -1833,14 +1833,6 @@
     return null;
   }
 
-  void visitGetField(GetField node) {
-    node.objectIsNotNull = getValue(node.object.definition).isDefinitelyNotNull;
-  }
-
-  void visitGetLength(GetLength node) {
-    node.objectIsNotNull = getValue(node.object.definition).isDefinitelyNotNull;
-  }
-
   Primitive visitInterceptor(Interceptor node) {
     AbstractValue value = getValue(node.input.definition);
     // If the exact class of the input is known, replace with a constant
@@ -2111,7 +2103,7 @@
   }
 
   void visitInvokeStatic(InvokeStatic node) {
-    if (node.target.library.isInternalLibrary) {
+    if (node.target.library != null && node.target.library.isInternalLibrary) {
       switch (node.target.name) {
         case InternalMethod.Stringify:
           AbstractValue argValue = getValue(node.arguments[0].definition);
@@ -2139,6 +2131,7 @@
 
   void visitInvokeMethod(InvokeMethod node) {
     AbstractValue receiver = getValue(node.receiver.definition);
+    node.receiverIsNotNull = receiver.isDefinitelyNotNull;
     if (receiver.isNothing) {
       return;  // And come back later.
     }
@@ -2443,6 +2436,7 @@
   }
 
   void visitGetField(GetField node) {
+    node.objectIsNotNull = getValue(node.object.definition).isDefinitelyNotNull;
     setValue(node, nonConstant(typeSystem.getFieldType(node.field)));
   }
 
@@ -2488,6 +2482,7 @@
   @override
   void visitGetLength(GetLength node) {
     AbstractValue input = getValue(node.object.definition);
+    node.objectIsNotNull = getValue(node.object.definition).isDefinitelyNotNull;
     int length = typeSystem.getContainerLength(input.type);
     if (length != null) {
       // TODO(asgerf): Constant-folding the length might degrade the VM's
@@ -2511,8 +2506,12 @@
 
   @override
   void visitAwait(Await node) {
-    Continuation continuation = node.continuation.definition;
-    setReachable(continuation);
+    setResult(node, nonConstant());
+  }
+
+  @override
+  visitYield(Yield node) {
+    setReachable(node.continuation.definition);
   }
 
   @override
diff --git a/pkg/compiler/lib/src/dart2js.dart b/pkg/compiler/lib/src/dart2js.dart
index 31c62c7..c250be1 100644
--- a/pkg/compiler/lib/src/dart2js.dart
+++ b/pkg/compiler/lib/src/dart2js.dart
@@ -356,6 +356,7 @@
     new OptionHandler(Flags.showPackageWarnings, passThrough),
     new OptionHandler(Flags.useContentSecurityPolicy, passThrough),
     new OptionHandler(Flags.enableExperimentalMirrors, passThrough),
+    new OptionHandler(Flags.enableAssertMessage, passThrough),
     new OptionHandler('--enable-async', (_) {
       diagnosticHandler.info(
           "Option '--enable-async' is no longer needed. "
diff --git a/pkg/compiler/lib/src/dart_backend/dart_backend.dart b/pkg/compiler/lib/src/dart_backend/dart_backend.dart
index 2e754f8..9c42e1d 100644
--- a/pkg/compiler/lib/src/dart_backend/dart_backend.dart
+++ b/pkg/compiler/lib/src/dart_backend/dart_backend.dart
@@ -52,8 +52,9 @@
 import '../tokens/keyword.dart' show
     Keyword;
 import '../tree/tree.dart';
+import '../universe/selector.dart' show
+    Selector;
 import '../universe/universe.dart' show
-    Selector,
     UniverseSelector;
 import '../util/util.dart';
 import 'backend_ast_to_frontend_ast.dart' as backend2frontend;
diff --git a/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart b/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart
index ed0c6bc..b15e76a 100644
--- a/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart
+++ b/pkg/compiler/lib/src/dart_backend/placeholder_collector.dart
@@ -45,9 +45,7 @@
 
   visitSend(Send node) {
     Element element = elements[node];
-    if (elements.isAssert(node)) {
-      return;
-    } else if (elements.isTypeLiteral(node)) {
+    if (elements.isTypeLiteral(node)) {
       DartType type = elements.getTypeLiteralType(node);
       if (!type.isDynamic) {
         if (type is TypeVariableType) {
@@ -139,7 +137,6 @@
         collector.currentElement, element, node);
 
     if (Elements.isUnresolved(element)
-        || elements.isAssert(node)
         || element.isDeferredLoaderGetter) {
       return;
     }
diff --git a/pkg/compiler/lib/src/deferred_load.dart b/pkg/compiler/lib/src/deferred_load.dart
index 949a37b..bd9c01a 100644
--- a/pkg/compiler/lib/src/deferred_load.dart
+++ b/pkg/compiler/lib/src/deferred_load.dart
@@ -34,8 +34,7 @@
     MetadataAnnotation,
     PrefixElement,
     ScopeContainerElement,
-    TypedefElement,
-    VoidElement;
+    TypedefElement;
 import 'js_backend/js_backend.dart' show
     JavaScriptBackend;
 import 'resolution/resolution.dart' show
diff --git a/pkg/compiler/lib/src/diagnostics/messages.dart b/pkg/compiler/lib/src/diagnostics/messages.dart
index 8fabdf8..33a6ba3 100644
--- a/pkg/compiler/lib/src/diagnostics/messages.dart
+++ b/pkg/compiler/lib/src/diagnostics/messages.dart
@@ -184,10 +184,13 @@
   DUPLICATED_RESOURCE,
   EMPTY_CATCH_DECLARATION,
   EMPTY_ENUM_DECLARATION,
+  EMPTY_HIDE,
   EQUAL_MAP_ENTRY_KEY,
+  EMPTY_SHOW,
   EXISTING_DEFINITION,
   EXISTING_LABEL,
   EXPECTED_IDENTIFIER_NOT_RESERVED_WORD,
+  EXPERIMENTAL_ASSERT_MESSAGE,
   EXPONENT_MISSING,
   EXPORT_BEFORE_PARTS,
   EXTERNAL_WITH_BODY,
@@ -822,7 +825,7 @@
       MessageKind.DUPLICATE_EXPORT:
         const MessageTemplate(MessageKind.DUPLICATE_EXPORT,
           "Duplicate export of '#{name}'.",
-          howToFix: "Trying adding 'hide #{name}' to one of the exports.",
+          howToFix: "Try adding 'hide #{name}' to one of the exports.",
           examples: const [const {
 'main.dart': """
 export 'decl1.dart';
@@ -840,6 +843,40 @@
         const MessageTemplate(MessageKind.DUPLICATE_EXPORT_DECL,
           "The exported '#{name}' from export #{uriString} is defined here."),
 
+      MessageKind.EMPTY_HIDE:
+        const MessageTemplate(MessageKind.EMPTY_HIDE,
+            "Library '#{uri}' doesn't export a '#{name}' declaration.",
+      howToFix: "Try removing '#{name}' the 'hide' clause.",
+      examples: const [
+        const {
+            'main.dart': """
+import 'dart:core' hide Foo;
+
+main() {}"""},
+        const {
+'main.dart': """
+export 'dart:core' hide Foo;
+
+main() {}"""},
+]),
+
+      MessageKind.EMPTY_SHOW:
+        const MessageTemplate(MessageKind.EMPTY_SHOW,
+            "Library '#{uri}' doesn't export a '#{name}' declaration.",
+      howToFix: "Try removing '#{name}' from the 'show' clause.",
+      examples: const [
+        const {
+            'main.dart': """
+import 'dart:core' show Foo;
+
+main() {}"""},
+        const {
+'main.dart': """
+export 'dart:core' show Foo;
+
+main() {}"""},
+]),
+
       MessageKind.NOT_A_TYPE:
         const MessageTemplate(MessageKind.NOT_A_TYPE,
           "'#{node}' is not a type."),
@@ -3269,6 +3306,19 @@
   // Patch errors end.
   //////////////////////////////////////////////////////////////////////////////
 
+      MessageKind.EXPERIMENTAL_ASSERT_MESSAGE:
+        const MessageTemplate(MessageKind.EXPERIMENTAL_ASSERT_MESSAGE,
+          "Experimental language feature 'assertion with message'"
+          " is not supported.",
+          howToFix:
+            "Use option '--assert-message' to use assertions with messages.",
+          examples: const [r'''
+main() {
+  int n = -7;
+  assert(n > 0, 'must be positive: $n');
+}
+''']),
+
       MessageKind.IMPORT_EXPERIMENTAL_MIRRORS:
         const MessageTemplate(MessageKind.IMPORT_EXPERIMENTAL_MIRRORS, r'''
 
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index adf558d..88d1be1 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -30,7 +30,6 @@
     Emitter;
 import 'js/js.dart' as jsAst;
 import 'universe/universe.dart' show
-    Selector,
     UniverseSelector;
 
 class ElementInfoCollector extends BaseElementVisitor<Info, dynamic> {
diff --git a/pkg/compiler/lib/src/elements/modelx.dart b/pkg/compiler/lib/src/elements/modelx.dart
index de3c11f..8c20320 100644
--- a/pkg/compiler/lib/src/elements/modelx.dart
+++ b/pkg/compiler/lib/src/elements/modelx.dart
@@ -1403,7 +1403,7 @@
     if (isPatch) {
       ConstantVariableMixin originVariable = origin;
       originVariable.constant = value;
-      return null;
+      return;
     }
     assert(invariant(
         this, constantCache == null || constantCache == value,
diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
index 6ad5177..35b5640 100644
--- a/pkg/compiler/lib/src/enqueue.dart
+++ b/pkg/compiler/lib/src/enqueue.dart
@@ -55,6 +55,8 @@
     Send;
 import 'types/types.dart' show
     TypeMaskStrategy;
+import 'universe/selector.dart' show
+    Selector;
 import 'universe/universe.dart';
 import 'util/util.dart' show
     Link,
diff --git a/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
index 474f71f..4bb654a 100644
--- a/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
@@ -25,7 +25,11 @@
     TypeMask,
     TypesInferrer,
     UnionTypeMask;
-import '../universe/universe.dart';
+import '../universe/selector.dart' show
+    Selector,
+    SelectorKind;
+import '../universe/side_effects.dart' show
+    SideEffects;
 import '../world.dart' show
     ClassWorld;
 
@@ -2011,7 +2015,7 @@
                                      SideEffects sideEffects,
                                      bool inLoop) {
     caller = getRealCaller(caller);
-    if ((selector == null) || (selector.kind == SelectorKind.CALL)) {
+    if ((selector == null) || (selector.isCall)) {
       callee = callee.implementation;
       if (selector != null && selector.name == 'JS') {
         return null;
@@ -2044,7 +2048,7 @@
         }
         return getSendReturnType(selector, callee, receiverClass, arguments);
       }
-    } else if (selector.kind == SelectorKind.GETTER) {
+    } else if (selector.isGetter) {
       if (callee.isField) {
         addFieldReader(callee, caller);
         return getFieldType(selector, callee);
@@ -2058,7 +2062,7 @@
         addClosure(callee, null, null);
         return singletonConcreteType(baseTypes.functionBaseType);
       }
-    } else if (selector.kind == SelectorKind.SETTER) {
+    } else if (selector.isSetter) {
       ConcreteType argumentType = arguments.positional.first;
       if (callee.isField) {
         augmentFieldType(callee, argumentType);
diff --git a/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart b/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart
index e542d49..08fa945 100644
--- a/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart
+++ b/pkg/compiler/lib/src/inferrer/inferrer_visitor.dart
@@ -26,7 +26,10 @@
     TypeMask;
 import '../types/constants.dart' show
     computeTypeMask;
-import '../universe/universe.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 import '../util/util.dart';
 import '../world.dart' show
     ClassWorld;
@@ -755,6 +758,14 @@
 
   T handleDynamicInvoke(Send node);
 
+  T visitAssert(Assert node) {
+    // Avoid pollution from assert statement unless enabled.
+    if (compiler.enableUserAssertions) {
+      super.visitAssert(node);
+    }
+    return null;
+  }
+
   T visitAsyncForIn(AsyncForIn node);
 
   T visitSyncForIn(SyncForIn node);
@@ -793,17 +804,6 @@
     return types.dynamicType;
   }
 
-  @override
-  T visitAssert(Send node, Node expression, _) {
-    if (!compiler.enableUserAssertions) {
-      return types.nullType;
-    }
-    return handleAssert(node, expression);
-  }
-
-  /// Handle an enabled assertion of [expression].
-  T handleAssert(Send node, Node expression);
-
   T visitNode(Node node) {
     return node.visitChildren(this);
   }
diff --git a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
index fccfb80..ec61e4b 100644
--- a/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart
@@ -35,16 +35,15 @@
     FlatTypeMask,
     TypeMask,
     ContainerTypeMask,
-    ElementTypeMask,
-    ValueTypeMask,
-    TypeSystem,
-    MinimalInferrerEngine;
+    ValueTypeMask;
 import '../util/util.dart' show
     Link,
     Setlet;
-import '../universe/universe.dart' show
-    CallStructure,
-    Selector,
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
+import '../universe/side_effects.dart' show
     SideEffects;
 import '../world.dart' show ClassWorld;
 
@@ -1572,20 +1571,6 @@
   }
 
   @override
-  T handleAssert(ast.Send node, ast.Node expression) {
-    js.JavaScriptBackend backend = compiler.backend;
-    Element element = backend.assertMethod;
-    ArgumentsTypes<T> arguments =
-        new ArgumentsTypes<T>(<T>[expression.accept(this)], null);
-    return handleStaticSend(
-        node,
-        new Selector.fromElement(element),
-        null,
-        element,
-        arguments);
-  }
-
-  @override
   T handleTypeLiteralInvoke(ast.NodeList arguments) {
     // This is reached when users forget to put a `new` in front of a type
     // literal. The emitter will generate an actual call (even though it is
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
index cf7e1cc..efaae28 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
@@ -47,11 +47,12 @@
     ValueTypeMask;
 import '../types/constants.dart' show
     computeTypeMask;
-import '../universe/universe.dart' show
-    CallStructure,
-    Selector,
-    SideEffects,
-    TypedSelector;
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
+import '../universe/side_effects.dart' show
+    SideEffects;
 import '../util/util.dart' show
     ImmutableEmptySet,
     Setlet;
@@ -1036,16 +1037,16 @@
       if (parameter.functionDeclaration.isInstanceMember) {
         ParameterAssignments assignments = info.assignments;
         assignments.replace(existing, type);
-        type.addUser(info);
       } else {
         List<TypeInformation> assignments = info.assignments;
         for (int i = 0; i < assignments.length; i++) {
           if (assignments[i] == existing) {
             assignments[i] = type;
-            type.addUser(info);
           }
         }
       }
+      // Also forward all users.
+      type.addUsersOf(existing);
     } else {
       assert(existing == null);
     }
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
index 900bd47..9b2123e 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
@@ -88,6 +88,10 @@
     users.add(user);
   }
 
+  void addUsersOf(TypeInformation other) {
+    users.addAll(other.users);
+  }
+
   void removeUser(TypeInformation user) {
     assert(!user.isConcrete);
     users.remove(user);
@@ -524,6 +528,10 @@
   void tagAsTearOffClosureParameter(TypeGraphInferrerEngine inferrer) {
     assert(element.isParameter);
     isTearOffClosureParameter = true;
+    // We have to add a flow-edge for the default value (if it exists), as we
+    // might not see all call-sites and thus miss the use of it.
+    TypeInformation defaultType = inferrer.getDefaultTypeOfParameter(element);
+    if (defaultType != null) defaultType.addUser(this);
   }
 
   // TODO(herhut): Cleanup into one conditional.
@@ -540,8 +548,7 @@
     // initializing formals.
     if (element.isInitializingFormal) return null;
 
-    FunctionElement function = element.functionDeclaration;
-    if ((isTearOffClosureParameter || function.isLocal) &&
+    if ((isTearOffClosureParameter || declaration.isLocal) &&
         disableInferenceForClosures) {
       // Do not infer types for parameters of closures. We do not
       // clear the assignments in case the closure is successfully
@@ -549,16 +556,20 @@
       giveUp(inferrer, clearAssignments: false);
       return safeType(inferrer);
     }
-    if (function.isInstanceMember &&
-        (function.name == Identifiers.noSuchMethod_ ||
-        (function.name == Identifiers.call &&
+    if (declaration.isInstanceMember &&
+        (declaration.name == Identifiers.noSuchMethod_ ||
+        (declaration.name == Identifiers.call &&
          disableInferenceForClosures))) {
       // Do not infer types for parameters of [noSuchMethod] and
       // [call] instance methods.
       giveUp(inferrer);
       return safeType(inferrer);
     }
-    if (function == inferrer.mainElement) {
+    if (inferrer.compiler.world.getMightBePassedToApply(declaration)) {
+      giveUp(inferrer);
+      return safeType(inferrer);
+    }
+    if (declaration == inferrer.mainElement) {
       // The implicit call to main is not seen by the inferrer,
       // therefore we explicitly set the type of its parameters as
       // dynamic.
@@ -1070,6 +1081,11 @@
     // needs to notify its users.
   }
 
+  void addUsersOf(TypeInformation other) {
+    // Nothing to do, a concrete type does not get updated so never
+    // needs to notify its users.
+  }
+
   void removeUser(TypeInformation user) {
   }
 
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index bb88478..a8d66e0 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -278,7 +278,10 @@
 
   ClassElement closureClass;
   ClassElement boundClosureClass;
-  Element assertMethod;
+  Element assertTestMethod;
+  Element assertThrowMethod;
+  Element assertHelperMethod;
+  Element assertUnreachableMethod;
   Element invokeOnMethod;
 
   ClassElement jsInterceptorClass;
@@ -1195,6 +1198,7 @@
       assert(traceHelper != null);
       enqueueInResolution(traceHelper, registry);
     }
+    enqueueInResolution(assertUnreachableMethod, registry);
     registerCheckedModeHelpers(registry);
   }
 
@@ -1357,8 +1361,6 @@
     }
   }
 
-  bool isAssertMethod(Element element) => element == assertMethod;
-
   void registerRequiredType(DartType type, Element enclosingElement) {
     // If [argument] has type variables or is a type variable, this method
     // registers a RTI dependency between the class where the type variable is
@@ -2121,7 +2123,10 @@
         jsMutableIndexableClass = findClass('JSMutableIndexable');
       } else if (uri == DART_JS_HELPER) {
         initializeHelperClasses();
-        assertMethod = findHelper('assertHelper');
+        assertTestMethod = findHelper('assertTest');
+        assertThrowMethod = findHelper('assertThrow');
+        assertHelperMethod = findHelper('assertHelper');
+        assertUnreachableMethod = findHelper('assertUnreachable');
 
         typeLiteralClass = findClass('TypeImpl');
         constMapLiteralClass = findClass('ConstantMap');
@@ -2921,8 +2926,13 @@
     registry.registerInstantiation(element.rawType);
   }
 
-  void onAssert(Send node, Registry registry) {
-    registerBackendStaticInvocation(backend.assertMethod, registry);
+  void onAssert(bool hasMessage, Registry registry) {
+    if (hasMessage) {
+      registerBackendStaticInvocation(backend.assertTestMethod, registry);
+      registerBackendStaticInvocation(backend.assertThrowMethod, registry);
+    } else {
+      registerBackendStaticInvocation(backend.assertHelperMethod, registry);
+    }
   }
 
   void onAsyncForIn(AsyncForIn node, Registry registry) {
diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
index 878145d..963f1d7 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
@@ -18,8 +18,9 @@
 import '../../tree_ir/tree_ir_nodes.dart' as tree_ir;
 import '../../tree_ir/tree_ir_nodes.dart' show BuiltinOperator, BuiltinMethod;
 import '../../types/types.dart' show TypeMask;
+import '../../universe/selector.dart' show
+    Selector;
 import '../../universe/universe.dart' show
-    Selector,
     UniverseSelector;
 import '../../util/maplet.dart';
 
@@ -129,7 +130,7 @@
       jsVariables.add(jsVariable);
 
       // Remove the initializer from the for loop.
-      accumulator[accumulatorIndex] = 
+      accumulator[accumulatorIndex] =
           new js.For(null, forLoop.condition, forLoop.update, forLoop.body);
     }
 
@@ -572,7 +573,7 @@
       loopNode = new js.While(condition, body);
     } else { // Compile as a for loop.
       js.Expression init;
-      if (accumulator.isNotEmpty && 
+      if (accumulator.isNotEmpty &&
           accumulator.last is js.ExpressionStatement) {
         // Take the preceding expression from the accumulator and use
         // it as the initializer expression.
@@ -837,6 +838,12 @@
   }
 
   @override
+  void visitYield(tree_ir.Yield node) {
+    js.Expression value = visitExpression(node.input);
+    accumulator.add(new js.DartYield(value, node.hasStar));
+  }
+
+  @override
   js.Expression visitApplyBuiltinOperator(tree_ir.ApplyBuiltinOperator node) {
     List<js.Expression> args = visitExpressionList(node.arguments);
     switch (node.operator) {
@@ -890,7 +897,7 @@
   }
 
   /// The JS name of a built-in method.
-  static final Map<BuiltinMethod, String> builtinMethodName = 
+  static final Map<BuiltinMethod, String> builtinMethodName =
     const <BuiltinMethod, String>{
       BuiltinMethod.Push: 'push',
       BuiltinMethod.Pop: 'pop',
diff --git a/pkg/compiler/lib/src/js_backend/codegen/glue.dart b/pkg/compiler/lib/src/js_backend/codegen/glue.dart
index 8472318..37dd0ae 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/glue.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/glue.dart
@@ -19,7 +19,7 @@
 import '../../elements/elements.dart';
 import '../../js_emitter/js_emitter.dart';
 import '../../js/js.dart' as js;
-import '../../universe/universe.dart' show
+import '../../universe/selector.dart' show
     Selector;
 import '../../world.dart' show
     ClassWorld;
diff --git a/pkg/compiler/lib/src/js_backend/codegen/task.dart b/pkg/compiler/lib/src/js_backend/codegen/task.dart
index 16093d3..4bae7de 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/task.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/task.dart
@@ -84,10 +84,10 @@
         if (tracer != null) {
           tracer.traceCompilation(element.name, null);
         }
-        cps.FunctionDefinition cpsFunction = compileToCpsIR(element);
-        cpsFunction = optimizeCpsIR(cpsFunction);
-        tree_ir.FunctionDefinition treeFunction = compileToTreeIR(cpsFunction);
-        treeFunction = optimizeTreeIR(treeFunction);
+        cps.FunctionDefinition cpsFunction = compileToCpsIr(element);
+        cpsFunction = optimizeCpsIr(cpsFunction);
+        tree_ir.FunctionDefinition treeFunction = compileToTreeIr(cpsFunction);
+        treeFunction = optimizeTreeIr(treeFunction);
         return compileToJavaScript(work, treeFunction);
       } on CodegenBailout catch (e) {
         String message = "Unable to compile $element with the new compiler.\n"
@@ -107,23 +107,29 @@
     }
   }
 
-  cps.FunctionDefinition compileToCpsIR(AstElement element) {
-    cps.FunctionDefinition cpsNode = irBuilderTask.buildNode(element);
-    if (cpsNode == null) {
+  void applyCpsPass(cps_opt.Pass pass, cps.FunctionDefinition cpsFunction) {
+    pass.rewrite(cpsFunction);
+    traceGraph(pass.passName, cpsFunction);
+    dumpTypedIr(pass.passName, cpsFunction);
+    assert(checkCpsIntegrity(cpsFunction));
+  }
+
+  cps.FunctionDefinition compileToCpsIr(AstElement element) {
+    cps.FunctionDefinition cpsFunction = irBuilderTask.buildNode(element);
+    if (cpsFunction == null) {
       if (irBuilderTask.bailoutMessage == null) {
         giveUp('unable to build cps definition of $element');
       } else {
         giveUp(irBuilderTask.bailoutMessage);
       }
     }
-    traceGraph("IR Builder", cpsNode);
+    traceGraph('IR Builder', cpsFunction);
+    dumpTypedIr('IR Builder', cpsFunction);
     // Eliminating redundant phis before the unsugaring pass will make it
     // insert fewer getInterceptor calls.
-    new RedundantPhiEliminator().rewrite(cpsNode);
-    traceGraph("Redundant phi elimination", cpsNode);
-    new UnsugarVisitor(glue).rewrite(cpsNode);
-    traceGraph("Unsugaring", cpsNode);
-    return cpsNode;
+    applyCpsPass(new RedundantPhiEliminator(), cpsFunction);
+    applyCpsPass(new UnsugarVisitor(glue), cpsFunction);
+    return cpsFunction;
   }
 
   static const Pattern PRINT_TYPED_IR_FILTER = null;
@@ -143,19 +149,20 @@
     throw 'unsupported: $type';
   }
 
-  void dumpTypedIR(cps.FunctionDefinition cpsNode,
-                   TypePropagator typePropagator) {
+  void dumpTypedIr(String passName, cps.FunctionDefinition cpsFunction) {
     if (PRINT_TYPED_IR_FILTER != null &&
-        PRINT_TYPED_IR_FILTER.matchAsPrefix(cpsNode.element.name) != null) {
+        PRINT_TYPED_IR_FILTER.matchAsPrefix(cpsFunction.element.name) != null) {
       String printType(nodeOrRef, String s) {
         cps.Node node = nodeOrRef is cps.Reference
             ? nodeOrRef.definition
             : nodeOrRef;
-        var type = typePropagator.getType(node);
-        return type == null ? s : "$s:${formatTypeMask(type.type)}";
+        return node is cps.Variable && node.type != null
+            ? '$s:${formatTypeMask(node.type)}'
+            : s;
       }
       DEBUG_MODE = true;
-      print(new SExpressionStringifier(printType).visit(cpsNode));
+      print(';;; ==== After $passName ====');
+      print(new SExpressionStringifier(printType).visit(cpsFunction));
     }
   }
 
@@ -164,38 +171,28 @@
     return true; // So this can be used from assert().
   }
 
-  cps.FunctionDefinition optimizeCpsIR(cps.FunctionDefinition cpsNode) {
-    // Transformations on the CPS IR.
-    void applyCpsPass(cps_opt.Pass pass) {
-      pass.rewrite(cpsNode);
-      traceGraph(pass.passName, cpsNode);
-      assert(checkCpsIntegrity(cpsNode));
-    }
-
+  cps.FunctionDefinition optimizeCpsIr(cps.FunctionDefinition cpsFunction) {
     TypeMaskSystem typeSystem = new TypeMaskSystem(compiler);
 
-    applyCpsPass(new RedundantJoinEliminator());
-    applyCpsPass(new RedundantPhiEliminator());
-    applyCpsPass(new InsertRefinements(typeSystem));
-    TypePropagator typePropagator =
-        new TypePropagator(compiler, typeSystem, this);
-    applyCpsPass(typePropagator);
-    dumpTypedIR(cpsNode, typePropagator);
-    applyCpsPass(new RemoveRefinements());
-    applyCpsPass(new ShrinkingReducer());
-    applyCpsPass(new ScalarReplacer(compiler));
-    applyCpsPass(new MutableVariableEliminator());
-    applyCpsPass(new RedundantJoinEliminator());
-    applyCpsPass(new RedundantPhiEliminator());
-    applyCpsPass(new ShrinkingReducer());
-    applyCpsPass(new LoopInvariantCodeMotion());
-    applyCpsPass(new ShareInterceptors());
-    applyCpsPass(new ShrinkingReducer());
+    applyCpsPass(new RedundantJoinEliminator(), cpsFunction);
+    applyCpsPass(new RedundantPhiEliminator(), cpsFunction);
+    applyCpsPass(new InsertRefinements(typeSystem), cpsFunction);
+    applyCpsPass(new TypePropagator(compiler, typeSystem, this), cpsFunction);
+    applyCpsPass(new RemoveRefinements(), cpsFunction);
+    applyCpsPass(new ShrinkingReducer(), cpsFunction);
+    applyCpsPass(new ScalarReplacer(compiler), cpsFunction);
+    applyCpsPass(new MutableVariableEliminator(), cpsFunction);
+    applyCpsPass(new RedundantJoinEliminator(), cpsFunction);
+    applyCpsPass(new RedundantPhiEliminator(), cpsFunction);
+    applyCpsPass(new ShrinkingReducer(), cpsFunction);
+    applyCpsPass(new LoopInvariantCodeMotion(), cpsFunction);
+    applyCpsPass(new ShareInterceptors(), cpsFunction);
+    applyCpsPass(new ShrinkingReducer(), cpsFunction);
 
-    return cpsNode;
+    return cpsFunction;
   }
 
-  tree_ir.FunctionDefinition compileToTreeIR(cps.FunctionDefinition cpsNode) {
+  tree_ir.FunctionDefinition compileToTreeIr(cps.FunctionDefinition cpsNode) {
     tree_builder.Builder builder = new tree_builder.Builder(
         compiler.internalError);
     tree_ir.FunctionDefinition treeNode = builder.buildFunction(cpsNode);
@@ -210,7 +207,7 @@
     return true; // So this can be used from assert().
   }
 
-  tree_ir.FunctionDefinition optimizeTreeIR(tree_ir.FunctionDefinition node) {
+  tree_ir.FunctionDefinition optimizeTreeIr(tree_ir.FunctionDefinition node) {
     void applyTreePass(tree_opt.Pass pass) {
       pass.rewrite(node);
       traceGraph(pass.passName, node);
diff --git a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
index 6209cda..3f68eed 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/unsugar.dart
@@ -2,12 +2,12 @@
 
 import '../../cps_ir/cps_ir_nodes.dart';
 
-import '../../cps_ir/optimizers.dart' show ParentVisitor;
+import '../../cps_ir/optimizers.dart' show ParentVisitor, Pass;
 import '../../constants/values.dart';
 import '../../elements/elements.dart';
 import '../../io/source_information.dart';
 import '../../js_backend/codegen/glue.dart';
-import '../../universe/universe.dart' show Selector;
+import '../../universe/selector.dart' show Selector;
 import '../../cps_ir/cps_ir_builder.dart' show ThisParameterLocal;
 
 class ExplicitReceiverParameterEntity implements Local {
@@ -35,7 +35,7 @@
 ///  - Add explicit receiver argument for methods that are called in interceptor
 ///    calling convention.
 ///  - Convert two-parameter exception handlers to one-parameter ones.
-class UnsugarVisitor extends RecursiveVisitor {
+class UnsugarVisitor extends RecursiveVisitor implements Pass {
   Glue _glue;
   ParentVisitor _parentVisitor = new ParentVisitor();
 
@@ -49,10 +49,12 @@
 
   UnsugarVisitor(this._glue);
 
+  String get passName => 'Unsugaring';
+
   bool methodUsesReceiverArgument(FunctionElement function) {
     assert(_glue.isInterceptedMethod(function));
     ClassElement clazz = function.enclosingClass.declaration;
-    return _glue.isInterceptorClass(clazz) || 
+    return _glue.isInterceptorClass(clazz) ||
            _glue.isUsedAsMixin(clazz);
   }
 
diff --git a/pkg/compiler/lib/src/js_backend/js_backend.dart b/pkg/compiler/lib/src/js_backend/js_backend.dart
index af8df51..d616728 100644
--- a/pkg/compiler/lib/src/js_backend/js_backend.dart
+++ b/pkg/compiler/lib/src/js_backend/js_backend.dart
@@ -63,12 +63,10 @@
     JavaScriptSourceInformationStrategy;
 import '../js/rewrite_async.dart';
 import '../js_emitter/js_emitter.dart' show
-    ClassBuilder,
     CodeEmitterTask,
     Emitter,
     MetadataCollector,
     Placeholder,
-    TokenFinalizer,
     USE_LAZY_EMITTER;
 import '../library_loader.dart' show LibraryLoader, LoadedLibraries;
 import '../native/native.dart' as native;
@@ -79,6 +77,11 @@
 import '../ssa/ssa.dart';
 import '../tree/tree.dart';
 import '../types/types.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector,
+    SelectorKind;
 import '../universe/universe.dart';
 import '../util/characters.dart';
 import '../util/util.dart';
diff --git a/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart b/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart
index 4f372c3..fa70021 100644
--- a/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart
+++ b/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart
@@ -25,7 +25,6 @@
     FunctionSignature,
     LibraryElement,
     VariableElement;
-import '../enqueue.dart' show Enqueuer;
 import 'js_backend.dart' show JavaScriptBackend;
 import '../dart_types.dart' show DynamicType, InterfaceType;
 import 'package:pub_semver/pub_semver.dart';
diff --git a/pkg/compiler/lib/src/js_backend/type_variable_handler.dart b/pkg/compiler/lib/src/js_backend/type_variable_handler.dart
index 5d779a0..82b4fe5 100644
--- a/pkg/compiler/lib/src/js_backend/type_variable_handler.dart
+++ b/pkg/compiler/lib/src/js_backend/type_variable_handler.dart
@@ -43,8 +43,7 @@
       // On first encounter, we have to ensure that the support classes get
       // resolved.
       if (!_seenClassesWithTypeVariables) {
-        _backend.enqueueClass(
-            enqueuer, _typeVariableClass, registry);
+        _backend.enqueueClass(enqueuer, _typeVariableClass, registry);
         _typeVariableClass.ensureResolved(_compiler);
         Link constructors = _typeVariableClass.constructors;
         if (constructors.isEmpty && constructors.tail.isEmpty) {
@@ -53,9 +52,9 @@
         }
         _typeVariableConstructor = _typeVariableClass.constructors.head;
         _backend.enqueueInResolution(_typeVariableConstructor, registry);
-        enqueuer.registerInstantiatedType(_typeVariableClass.rawType,
-                                          registry);
-        enqueuer.registerStaticUse(_backend.getCreateRuntimeType());
+        enqueuer.registerInstantiatedType(_typeVariableClass.rawType, registry);
+        enqueuer.registerStaticUse(
+            _backend.registerBackendUse(_backend.getCreateRuntimeType()));
         _seenClassesWithTypeVariables = true;
       }
     } else {
diff --git a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
index c8d478b..1ea0be0 100644
--- a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
@@ -48,7 +48,7 @@
    * Invariant: [member] must be a declaration element.
    */
   Map<jsAst.Name, jsAst.Expression> generateCallStubsForGetter(
-      Element member, Map<Selector, ReceiverMaskSet> selectors) {
+      Element member, Map<Selector, SelectorConstraints> selectors) {
     assert(invariant(member, member.isDeclaration));
 
     // If the method is intercepted, the stub gets the
@@ -124,9 +124,9 @@
     }
 
     void addNoSuchMethodHandlers(String ignore,
-                                 Map<Selector, ReceiverMaskSet> selectors) {
+                                 Map<Selector, SelectorConstraints> selectors) {
       for (Selector selector in selectors.keys) {
-        ReceiverMaskSet maskSet = selectors[selector];
+        SelectorConstraints maskSet = selectors[selector];
         if (maskSet.needsNoSuchMethodHandling(selector, compiler.world)) {
           jsAst.Name jsName = namer.invocationMirrorInternalName(selector);
           jsNames[jsName] = selector;
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
index b6b04b8..c5723ae 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
@@ -49,7 +49,7 @@
       // We add a special getter here to allow for tearing off a closure from
       // itself.
       jsAst.Fun function = js('function() { return this; }');
-      jsAst.Name name = namer.getterForMember(Selector.CALL_NAME);
+      jsAst.Name name = namer.getterForMember(Names.call);
       builder.addProperty(name, function);
     }
 
diff --git a/pkg/compiler/lib/src/js_emitter/js_emitter.dart b/pkg/compiler/lib/src/js_emitter/js_emitter.dart
index 2f2dffd..1472e53 100644
--- a/pkg/compiler/lib/src/js_emitter/js_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/js_emitter.dart
@@ -61,8 +61,7 @@
 import 'startup_emitter/emitter.dart' as startup_js_emitter;
 
 import '../universe/universe.dart' show
-    ReceiverMaskSet,
-    TypedSelector;
+    SelectorConstraints;
 
 import '../util/util.dart' show
     Setlet;
diff --git a/pkg/compiler/lib/src/js_emitter/lazy_emitter/model_emitter.dart b/pkg/compiler/lib/src/js_emitter/lazy_emitter/model_emitter.dart
index ad3b1cb..3982bf8 100644
--- a/pkg/compiler/lib/src/js_emitter/lazy_emitter/model_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/lazy_emitter/model_emitter.dart
@@ -18,7 +18,7 @@
     Namer,
     ConstantEmitter;
 
-import '../js_emitter.dart' show AstContainer, NativeEmitter;
+import '../js_emitter.dart' show NativeEmitter;
 
 import 'package:js_runtime/shared/embedded_names.dart' show
     CREATE_NEW_ISOLATE,
diff --git a/pkg/compiler/lib/src/js_emitter/model.dart b/pkg/compiler/lib/src/js_emitter/model.dart
index 7e4703e..15a1271 100644
--- a/pkg/compiler/lib/src/js_emitter/model.dart
+++ b/pkg/compiler/lib/src/js_emitter/model.dart
@@ -10,7 +10,7 @@
 
 import '../deferred_load.dart' show OutputUnit;
 
-import 'js_emitter.dart' show MetadataCollector, TokenFinalizer;
+import 'js_emitter.dart' show MetadataCollector;
 
 import '../common.dart';
 
diff --git a/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
index 07398b3..f632f90 100644
--- a/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
@@ -60,8 +60,8 @@
     // If the method is intercepted, we need to also pass the actual receiver.
     int extraArgumentCount = isInterceptedMethod ? 1 : 0;
     // Use '$receiver' to avoid clashes with other parameter names. Using
-    // '$receiver' works because namer.safeVariableName used for getting parameter
-    // names never returns a name beginning with a single '$'.
+    // '$receiver' works because namer.safeVariableName used for getting
+    // parameter names never returns a name beginning with a single '$'.
     String receiverArgumentName = r'$receiver';
 
     // The parameters that this stub takes.
@@ -200,14 +200,14 @@
     // The set of selectors that apply to `member`. For example, for
     // a member `foo(x, [y])` the following selectors may apply:
     // `foo(x)`, and `foo(x, y)`.
-    Map<Selector, ReceiverMaskSet> selectors;
+    Map<Selector, SelectorConstraints> selectors;
     // The set of selectors that apply to `member` if it's name was `call`.
     // This happens when a member is torn off. In that case calls to the
     // function use the name `call`, and we must be able to handle every
     // `call` invocation that matches the signature. For example, for
     // a member `foo(x, [y])` the following selectors would be possible
     // call-selectors: `call(x)`, and `call(x, y)`.
-    Map<Selector, ReceiverMaskSet> callSelectors;
+    Map<Selector, SelectorConstraints> callSelectors;
 
     // Only instance members (not static methods) need stubs.
     if (member.isInstanceMember) {
@@ -220,9 +220,9 @@
     }
 
     assert(emptySelectorSet.isEmpty);
-    if (selectors == null) selectors = const <Selector, ReceiverMaskSet>{};
+    if (selectors == null) selectors = const <Selector, SelectorConstraints>{};
     if (callSelectors == null) callSelectors =
-        const <Selector, ReceiverMaskSet>{};
+        const <Selector, SelectorConstraints>{};
 
     List<ParameterStubMethod> stubs = <ParameterStubMethod>[];
 
@@ -243,8 +243,7 @@
     // Start with the callSelectors since they imply the generation of the
     // non-call version.
     for (Selector selector in callSelectors.keys) {
-      Selector renamedSelector = new Selector(
-          SelectorKind.CALL,
+      Selector renamedSelector = new Selector.call(
           member.memberName,
           selector.callStructure);
       renamedCallSelectors.add(renamedSelector);
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
index b10abf2a..54e15f9 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
@@ -30,7 +30,7 @@
     MethodElement,
     ParameterElement;
 
-import '../../universe/universe.dart' show Universe, ReceiverMaskSet;
+import '../../universe/universe.dart' show Universe, SelectorConstraints;
 import '../../deferred_load.dart' show DeferredLoadTask, OutputUnit;
 
 part 'collector.dart';
@@ -385,7 +385,7 @@
         if (method != null) methods.add(method);
       }
       if (member.isGetter || member.isField) {
-        Map<Selector, ReceiverMaskSet> selectors =
+        Map<Selector, SelectorConstraints> selectors =
             _compiler.codegenWorld.invocationsByName(member.name);
         if (selectors != null && !selectors.isEmpty) {
 
@@ -422,7 +422,7 @@
     if (element == backend.closureClass) {
       // We add a special getter here to allow for tearing off a closure from
       // itself.
-      js.Name name = namer.getterForMember(Selector.CALL_NAME);
+      js.Name name = namer.getterForMember(Names.call);
       js.Fun function = js.js('function() { return this; }');
       callStubs.add(_buildStubMethod(name, function));
     }
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
index 8ce9e34..7885940 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
@@ -38,7 +38,7 @@
     relativize;
 
 import '../headers.dart';
-import '../js_emitter.dart' show AstContainer, NativeEmitter;
+import '../js_emitter.dart' show NativeEmitter;
 
 import 'package:js_runtime/shared/embedded_names.dart' show
     CLASS_FIELDS_EXTRACTOR,
diff --git a/pkg/compiler/lib/src/library_loader.dart b/pkg/compiler/lib/src/library_loader.dart
index 9984f05d..dbdd3a0 100644
--- a/pkg/compiler/lib/src/library_loader.dart
+++ b/pkg/compiler/lib/src/library_loader.dart
@@ -874,7 +874,14 @@
     }
   }
 
-  void registerHandledExports(LibraryElement exportedLibraryElement,
+  /// Register the already computed export scope of [exportedLibraryElement] to
+  /// export from the library of this node through the [export]  declaration
+  /// with the given combination [filter].
+  ///
+  /// Additionally, check that all names in the show/hide combinators are in the
+  /// export scope of [exportedLibraryElement].
+  void registerHandledExports(DiagnosticListener listener,
+                              LibraryElement exportedLibraryElement,
                               ExportElementX export,
                               CombinatorFilter filter) {
     assert(invariant(library, exportedLibraryElement.exportsHandled));
@@ -886,6 +893,9 @@
         pendingExportMap[exportedElement] = exports.prepend(export);
       }
     });
+    listener.withCurrentElement(library, () {
+      checkLibraryDependency(listener, export.node, exportedLibraryElement);
+    });
   }
 
   /**
@@ -1011,6 +1021,45 @@
     }
     return changed;
   }
+
+  /// Check that all names in the show/hide combinators of imports and exports
+  /// are in the export scope of the imported/exported libraries.
+  void checkCombinators(DiagnosticListener listener) {
+    listener.withCurrentElement(library, () {
+      for (ImportLink importLink in imports) {
+        checkLibraryDependency(
+            listener, importLink.import.node, importLink.importedLibrary);
+      }
+    });
+    for (ExportLink exportLink in dependencies) {
+      listener.withCurrentElement(exportLink.exportNode.library, () {
+        checkLibraryDependency(listener, exportLink.export.node, library);
+      });
+    }
+  }
+
+  /// Check that all names in the show/hide combinators of [tag] are in the
+  /// export scope of [library].
+  void checkLibraryDependency(DiagnosticListener listener,
+                              LibraryDependency tag,
+                              LibraryElement library) {
+    if (tag == null || tag.combinators == null) return;
+    for (Combinator combinator in tag.combinators) {
+      for (Identifier identifier in combinator.identifiers) {
+        String name = identifier.source;
+        Element element = library.findExported(name);
+        if (element == null) {
+          listener.reportHint(
+              identifier,
+              combinator.isHide
+                  ? MessageKind.EMPTY_HIDE : MessageKind.EMPTY_SHOW,
+              {'uri': library.canonicalUri,
+               'name': name});
+        }
+      }
+    }
+  }
+
 }
 
 /**
@@ -1084,6 +1133,10 @@
     nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) {
       node.registerImports(compiler);
     });
+
+    nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) {
+      node.checkCombinators(compiler);
+    });
   }
 
   /// Registers that [library] depends on [loadedLibrary] through
@@ -1099,7 +1152,7 @@
         CombinatorFilter combinatorFilter =
             new CombinatorFilter.fromTag(libraryDependency.node);
         exportingNode.registerHandledExports(
-            loadedLibrary, libraryDependency, combinatorFilter);
+            compiler, loadedLibrary, libraryDependency, combinatorFilter);
         return;
       }
       LibraryDependencyNode exportedNode = nodeMap[loadedLibrary];
diff --git a/pkg/compiler/lib/src/native/native.dart b/pkg/compiler/lib/src/native/native.dart
index ebe88a9..fe1659e 100644
--- a/pkg/compiler/lib/src/native/native.dart
+++ b/pkg/compiler/lib/src/native/native.dart
@@ -48,7 +48,8 @@
     EOF_TOKEN,
     STRING_TOKEN;
 import '../tree/tree.dart';
-import '../universe/universe.dart' show SideEffects;
+import '../universe/side_effects.dart' show
+    SideEffects;
 import '../util/util.dart';
 
 part 'behavior.dart';
diff --git a/pkg/compiler/lib/src/parser/listener.dart b/pkg/compiler/lib/src/parser/listener.dart
index 5252d46..ec8274d 100644
--- a/pkg/compiler/lib/src/parser/listener.dart
+++ b/pkg/compiler/lib/src/parser/listener.dart
@@ -489,7 +489,8 @@
   void handleEmptyStatement(Token token) {
   }
 
-  void handleAssertStatement(Token assertKeyword, Token semicolonToken) {
+  void handleAssertStatement(Token assertKeyword,
+                             Token commaToken, Token semicolonToken) {
   }
 
   /** Called with either the token containing a double literal, or
diff --git a/pkg/compiler/lib/src/parser/node_listener.dart b/pkg/compiler/lib/src/parser/node_listener.dart
index 455f53e..d8383f3 100644
--- a/pkg/compiler/lib/src/parser/node_listener.dart
+++ b/pkg/compiler/lib/src/parser/node_listener.dart
@@ -763,11 +763,16 @@
     }
   }
 
-  void handleAssertStatement(Token assertKeyword, Token semicolonToken) {
-    NodeList arguments = popNode();
-    Node selector = new Identifier(assertKeyword);
-    Node send = new Send(null, selector, arguments);
-    pushNode(new ExpressionStatement(send, semicolonToken));
+  void handleAssertStatement(Token assertKeyword,
+                             Token commaToken, Token semicolonToken) {
+    Node message;
+    Node condition;
+    if (commaToken != null) {
+      message = popNode();
+    }
+    condition = popNode();
+    pushNode(new Assert(assertKeyword, condition,
+                        message, semicolonToken));
   }
 
   void endUnnamedFunction(Token token) {
diff --git a/pkg/compiler/lib/src/parser/parser.dart b/pkg/compiler/lib/src/parser/parser.dart
index 68f96bc..6ed2657 100644
--- a/pkg/compiler/lib/src/parser/parser.dart
+++ b/pkg/compiler/lib/src/parser/parser.dart
@@ -2697,10 +2697,20 @@
 
   Token parseAssertStatement(Token token) {
     Token assertKeyword = token;
+    Token commaToken = null;
     token = expect('assert', token);
-    expect('(', token);
-    token = parseArguments(token);
-    listener.handleAssertStatement(assertKeyword, token);
+    token = expect('(', token);
+    bool old = mayParseFunctionExpressions;
+    mayParseFunctionExpressions = true;
+    token = parseExpression(token);
+    if (optional(',', token)) {
+      commaToken = token;
+      token = token.next;
+      token = parseExpression(token);
+    }
+    token = expect(')', token);
+    mayParseFunctionExpressions = old;
+    listener.handleAssertStatement(assertKeyword, commaToken, token);
     return expectSemicolon(token);
   }
 
diff --git a/pkg/compiler/lib/src/resolution/class_hierarchy.dart b/pkg/compiler/lib/src/resolution/class_hierarchy.dart
index 5b26ba0..738761d 100644
--- a/pkg/compiler/lib/src/resolution/class_hierarchy.dart
+++ b/pkg/compiler/lib/src/resolution/class_hierarchy.dart
@@ -25,9 +25,8 @@
 import '../util/util.dart' show
     Link,
     Setlet;
-import '../universe/universe.dart' show
-    CallStructure,
-    Selector;
+import '../universe/call_structure.dart' show
+    CallStructure;
 
 import 'enum_creator.dart';
 import 'members.dart' show
diff --git a/pkg/compiler/lib/src/resolution/constructors.dart b/pkg/compiler/lib/src/resolution/constructors.dart
index 66af813..8528ca0 100644
--- a/pkg/compiler/lib/src/resolution/constructors.dart
+++ b/pkg/compiler/lib/src/resolution/constructors.dart
@@ -28,8 +28,9 @@
 import '../tree/tree.dart';
 import '../util/util.dart' show
     Link;
-import '../universe/universe.dart' show
-    CallStructure,
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
     Selector;
 
 import 'members.dart' show
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
index 9d8b71e..168013c 100644
--- a/pkg/compiler/lib/src/resolution/members.dart
+++ b/pkg/compiler/lib/src/resolution/members.dart
@@ -38,9 +38,11 @@
 import '../tree/tree.dart';
 import '../util/util.dart' show
     Link;
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 import '../universe/universe.dart' show
-    CallStructure,
-    Selector,
     UniverseSelector;
 
 import 'access_semantics.dart';
@@ -499,6 +501,20 @@
     }
   }
 
+  ResolutionResult visitAssert(Assert node) {
+    if (!compiler.enableAssertMessage) {
+      if (node.hasMessage) {
+        compiler.reportError(node, MessageKind.EXPERIMENTAL_ASSERT_MESSAGE);
+      }
+    }
+    // TODO(sra): We could completely ignore the assert in production mode if we
+    // didn't need it to be resolved for type checking.
+    registry.registerAssert(node.hasMessage);
+    visit(node.condition);
+    visit(node.message);
+    return const NoneResult();
+  }
+
   ResolutionResult visitCascade(Cascade node) {
     visit(node.expression);
     return const NoneResult();
@@ -1526,34 +1542,6 @@
     return const NoneResult();
   }
 
-  /// Handle a, possibly invalid, assertion, like `assert(cond)` or `assert()`.
-  ResolutionResult handleAssert(Send node) {
-    assert(invariant(node, node.isCall,
-        message: "Unexpected assert: $node"));
-    // If this send is of the form "assert(expr);", then
-    // this is an assertion.
-
-    CallStructure callStructure =
-        resolveArguments(node.argumentsNode).callStructure;
-    SendStructure sendStructure = const AssertStructure();
-    if (callStructure.argumentCount != 1) {
-      compiler.reportError(
-          node.selector,
-          MessageKind.WRONG_NUMBER_OF_ARGUMENTS_FOR_ASSERT,
-          {'argumentCount': callStructure.argumentCount});
-      sendStructure = const InvalidAssertStructure();
-    } else if (callStructure.namedArgumentCount != 0) {
-      compiler.reportError(
-          node.selector,
-          MessageKind.ASSERT_IS_GIVEN_NAMED_ARGUMENTS,
-          {'argumentCount': callStructure.namedArgumentCount});
-      sendStructure = const InvalidAssertStructure();
-    }
-    registry.registerAssert(node);
-    registry.registerSendStructure(node, sendStructure);
-    return const AssertResult();
-  }
-
   /// Handle access of a property of [name] on `this`, like `this.name` and
   /// `this.name()`, or `name` and `name()` in instance context.
   ResolutionResult handleThisPropertyAccess(Send node, Name name) {
@@ -3031,10 +3019,7 @@
       return handleExpressionInvoke(node);
     }
     String text = selector.source;
-    if (text == 'assert') {
-      // `assert()`.
-      return handleAssert(node);
-    } else if (text == 'this') {
+    if (text == 'this') {
       // `this()`.
       return handleThisAccess(node);
     }
diff --git a/pkg/compiler/lib/src/resolution/operators.dart b/pkg/compiler/lib/src/resolution/operators.dart
index b25f898..6486262 100644
--- a/pkg/compiler/lib/src/resolution/operators.dart
+++ b/pkg/compiler/lib/src/resolution/operators.dart
@@ -5,8 +5,9 @@
 library dart2js.operators;
 
 import '../elements/elements.dart';
-import '../universe/universe.dart' show
-    CallStructure,
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
     Selector,
     SelectorKind;
 
diff --git a/pkg/compiler/lib/src/resolution/registry.dart b/pkg/compiler/lib/src/resolution/registry.dart
index 625f8f0..64089c0 100644
--- a/pkg/compiler/lib/src/resolution/registry.dart
+++ b/pkg/compiler/lib/src/resolution/registry.dart
@@ -21,10 +21,9 @@
 import '../tree/tree.dart';
 import '../util/util.dart' show
     Setlet;
+import '../universe/selector.dart' show
+    Selector;
 import '../universe/universe.dart' show
-    CallStructure,
-    Selector,
-    SelectorKind,
     UniverseSelector;
 import '../world.dart' show World;
 
@@ -55,6 +54,11 @@
   Iterable<Element> get otherDependencies => mapping.otherDependencies;
 
   @override
+  void registerAssert(bool hasMessage) {
+    // TODO(johnniwinther): Do something here?
+  }
+
+  @override
   void registerDependency(Element element) {
     mapping.registerDependency(element);
   }
@@ -579,13 +583,8 @@
     world.registerInstantiatedType(type, this);
   }
 
-  void registerAssert(Send node) {
-    mapping.setAssert(node);
-    backend.resolutionCallbacks.onAssert(node, this);
-  }
-
-  bool isAssert(Send node) {
-    return mapping.isAssert(node);
+  void registerAssert(bool hasMessage) {
+    backend.resolutionCallbacks.onAssert(hasMessage, this);
   }
 
   void registerSendStructure(Send node, SendStructure sendStructure) {
diff --git a/pkg/compiler/lib/src/resolution/resolution_result.dart b/pkg/compiler/lib/src/resolution/resolution_result.dart
index f4192e9..6168025 100644
--- a/pkg/compiler/lib/src/resolution/resolution_result.dart
+++ b/pkg/compiler/lib/src/resolution/resolution_result.dart
@@ -8,7 +8,7 @@
 import '../dart_types.dart';
 import '../elements/elements.dart';
 import '../tree/tree.dart';
-import '../universe/universe.dart' show
+import '../universe/call_structure.dart' show
     CallStructure;
 
 enum ResultKind {
@@ -83,15 +83,6 @@
   String toString() => 'TypeResult($type)';
 }
 
-/// The result for the resolution of the `assert` method.
-class AssertResult extends ResolutionResult {
-  const AssertResult();
-
-  ResultKind get kind => ResultKind.ASSERT;
-
-  String toString() => 'AssertResult()';
-}
-
 /// The result for resolving a constant expression.
 class ConstantResult extends ResolutionResult {
   final Node node;
@@ -143,4 +134,4 @@
       return result.constant;
     }).toList();
   }
-}
\ No newline at end of file
+}
diff --git a/pkg/compiler/lib/src/resolution/semantic_visitor.dart b/pkg/compiler/lib/src/resolution/semantic_visitor.dart
index 6ef3a4b..f87664b 100644
--- a/pkg/compiler/lib/src/resolution/semantic_visitor.dart
+++ b/pkg/compiler/lib/src/resolution/semantic_visitor.dart
@@ -11,7 +11,10 @@
     SpannableAssertionFailure;
 import '../tree/tree.dart';
 import '../elements/elements.dart';
-import '../universe/universe.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 
 import 'operators.dart';
 import 'send_resolver.dart';
@@ -1297,32 +1300,6 @@
       Node rhs,
       A arg);
 
-  /// Call to `assert` with [expression] as the condition.
-  ///
-  /// For instance:
-  ///
-  ///     m() { assert(expression); }
-  ///
-  R visitAssert(
-      Send node,
-      Node expression,
-      A arg);
-
-  /// Call to `assert` with the wrong number of [arguments].
-  ///
-  /// For instance:
-  ///
-  ///     m() { assert(); }
-  ///
-  /// or
-  ///
-  ///     m() { assert(expression1, expression2); }
-  ///
-  R errorInvalidAssert(
-      Send node,
-      NodeList arguments,
-      A arg);
-
   /// Binary expression `left operator right` where [operator] is a user
   /// definable operator. Binary expressions using operator `==` are handled
   /// by [visitEquals] and index operations `a[b]` are handled by [visitIndex].
diff --git a/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart b/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
index fce1179..5e15a7d 100644
--- a/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
+++ b/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
@@ -27,14 +27,6 @@
   }
 
   @override
-  R errorInvalidAssert(
-      Send node,
-      NodeList arguments,
-      A arg) {
-    return bulkHandleError(node, null, arg);
-  }
-
-  @override
   R errorNonConstantConstructorInvoke(
       NewExpression node,
       Element element,
@@ -2943,14 +2935,6 @@
   }
 
   @override
-  R visitAssert(
-      Send node,
-      Node expression,
-      A arg) {
-    return bulkHandleNode(node, 'Assert `#` unhandled.', arg);
-  }
-
-  @override
   R visitIs(
       Send node,
       Node expression,
@@ -4535,15 +4519,6 @@
   }
 
   @override
-  R visitAssert(
-      Send node,
-      Node expression,
-      A arg) {
-    apply(expression, arg);
-    return null;
-  }
-
-  @override
   R visitBinary(
       Send node,
       Node left,
diff --git a/pkg/compiler/lib/src/resolution/send_resolver.dart b/pkg/compiler/lib/src/resolution/send_resolver.dart
index 49369cc..93297f6 100644
--- a/pkg/compiler/lib/src/resolution/send_resolver.dart
+++ b/pkg/compiler/lib/src/resolution/send_resolver.dart
@@ -13,7 +13,10 @@
     SpannableAssertionFailure;
 import '../elements/elements.dart';
 import '../tree/tree.dart';
-import '../universe/universe.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 
 import 'access_semantics.dart';
 import 'semantic_visitor.dart';
diff --git a/pkg/compiler/lib/src/resolution/send_structure.dart b/pkg/compiler/lib/src/resolution/send_structure.dart
index f2850ce..a427db9 100644
--- a/pkg/compiler/lib/src/resolution/send_structure.dart
+++ b/pkg/compiler/lib/src/resolution/send_structure.dart
@@ -10,7 +10,10 @@
 import '../constants/expressions.dart';
 import '../elements/elements.dart';
 import '../tree/tree.dart';
-import '../universe/universe.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 
 import 'access_semantics.dart';
 import 'operators.dart';
@@ -32,35 +35,6 @@
   R dispatch(SemanticSendVisitor<R, A> visitor, Send send, A arg);
 }
 
-/// The structure for a [Send] of the form `assert(e)`.
-class AssertStructure<R, A> implements SendStructure<R, A> {
-  const AssertStructure();
-
-  R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
-    return visitor.visitAssert(
-        node,
-        node.arguments.single,
-        arg);
-  }
-
-  String toString() => 'assert';
-}
-
-/// The structure for a [Send] of the form an `assert` with less or more than
-/// one argument.
-class InvalidAssertStructure<R, A> implements SendStructure<R, A> {
-  const InvalidAssertStructure();
-
-  R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
-    return visitor.errorInvalidAssert(
-        node,
-        node.argumentsNode,
-        arg);
-  }
-
-  String toString() => 'invalid assert';
-}
-
 /// The structure for a [Send] of the form `a ?? b`.
 class IfNullStructure<R, A> implements SendStructure<R, A> {
   const IfNullStructure();
diff --git a/pkg/compiler/lib/src/resolution/tree_elements.dart b/pkg/compiler/lib/src/resolution/tree_elements.dart
index 3fed5c3..1204017 100644
--- a/pkg/compiler/lib/src/resolution/tree_elements.dart
+++ b/pkg/compiler/lib/src/resolution/tree_elements.dart
@@ -15,10 +15,11 @@
     TypeMask;
 import '../tree/tree.dart';
 import '../util/util.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
 import '../universe/universe.dart' show
-    CallStructure,
-    Selector,
-    SelectorKind,
     UniverseSelector;
 
 import 'secret_tree_element.dart' show getTreeElement, setTreeElement;
@@ -71,7 +72,6 @@
   void setCurrentTypeMask(ForIn node, TypeMask mask);
   void setConstant(Node node, ConstantExpression constant);
   ConstantExpression getConstant(Node node);
-  bool isAssert(Send send);
 
   /// Returns the [FunctionElement] defined by [node].
   FunctionElement getFunctionDefinition(FunctionExpression node);
@@ -140,7 +140,6 @@
   Map<VariableElement, List<Node>> _potentiallyMutatedInClosure;
   Map<Node, Map<VariableElement, List<Node>>> _accessedByClosureIn;
   Setlet<Element> _elements;
-  Setlet<Send> _asserts;
   Maplet<Send, SendStructure> _sendStructureMap;
   Setlet<DartType> _requiredTypes;
   bool containsTryStatement = false;
@@ -412,17 +411,6 @@
     }
   }
 
-  void setAssert(Send node) {
-    if (_asserts == null) {
-      _asserts = new Setlet<Send>();
-    }
-    _asserts.add(node);
-  }
-
-  bool isAssert(Send node) {
-    return _asserts != null && _asserts.contains(node);
-  }
-
   FunctionElement getFunctionDefinition(FunctionExpression node) {
     return this[node];
   }
diff --git a/pkg/compiler/lib/src/scanner/string_scanner.dart b/pkg/compiler/lib/src/scanner/string_scanner.dart
index aec14a0..21bc2bb 100644
--- a/pkg/compiler/lib/src/scanner/string_scanner.dart
+++ b/pkg/compiler/lib/src/scanner/string_scanner.dart
@@ -9,7 +9,6 @@
 import '../tokens/precedence.dart' show
     PrecedenceInfo;
 import '../tokens/token.dart' show
-    PrecedenceInfo,
     StringToken,
     Token;
 
diff --git a/pkg/compiler/lib/src/serialization/constant_serialization.dart b/pkg/compiler/lib/src/serialization/constant_serialization.dart
index d2d2dd4..3af1b4f 100644
--- a/pkg/compiler/lib/src/serialization/constant_serialization.dart
+++ b/pkg/compiler/lib/src/serialization/constant_serialization.dart
@@ -7,9 +7,11 @@
 import '../constants/constructors.dart';
 import '../constants/expressions.dart';
 import '../dart_types.dart';
-import '../elements/elements.dart' show FieldElement;
+import '../elements/elements.dart' show
+    FieldElement;
 import '../resolution/operators.dart';
-import '../universe/universe.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
 import 'serialization.dart';
 import 'keys.dart';
 
diff --git a/pkg/compiler/lib/src/serialization/element_serialization.dart b/pkg/compiler/lib/src/serialization/element_serialization.dart
index 9ef5187..71dffef 100644
--- a/pkg/compiler/lib/src/serialization/element_serialization.dart
+++ b/pkg/compiler/lib/src/serialization/element_serialization.dart
@@ -10,7 +10,6 @@
 import '../diagnostics/source_span.dart' show
     SourceSpan;
 import '../elements/elements.dart';
-import '../tree/tree.dart';
 import 'constant_serialization.dart';
 import 'keys.dart';
 import 'modelz.dart';
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index bf19f70..a853635 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -1363,14 +1363,16 @@
 
     bool doesNotContainCode() {
       // A function with size 1 does not contain any code.
-      return InlineWeeder.canBeInlined(function, 1, true);
+      return InlineWeeder.canBeInlined(function, 1, true,
+          enableUserAssertions: compiler.enableUserAssertions);
     }
 
     bool reductiveHeuristic() {
       // The call is on a path which is executed rarely, so inline only if it
       // does not make the program larger.
       if (isCalledOnce(element)) {
-        return InlineWeeder.canBeInlined(function, -1, false);
+        return InlineWeeder.canBeInlined(function, -1, false,
+            enableUserAssertions: compiler.enableUserAssertions);
       }
       // TODO(sra): Measure if inlining would 'reduce' the size.  One desirable
       // case we miss by doing nothing is inlining very simple constructors
@@ -1408,7 +1410,8 @@
         // We may have forced the inlining of some methods. Therefore check
         // if we can inline this method regardless of size.
         assert(InlineWeeder.canBeInlined(function, -1, false,
-                                         allowLoops: true));
+                allowLoops: true,
+                enableUserAssertions: compiler.enableUserAssertions));
         return true;
       }
 
@@ -1431,7 +1434,8 @@
       }
       bool canInline;
       canInline = InlineWeeder.canBeInlined(
-          function, maxInliningNodes, useMaxInliningNodes);
+          function, maxInliningNodes, useMaxInliningNodes,
+          enableUserAssertions: compiler.enableUserAssertions);
       if (canInline) {
         backend.inlineCache.markAsInlinable(element, insideLoop: insideLoop);
       } else {
@@ -1628,15 +1632,9 @@
       var emptyParameters = parameters.values.where((p) =>
           p.instructionType.isEmpty && !p.instructionType.isNullable);
       if (emptyParameters.length > 0) {
-        String message = compiler.enableMinification
-            ? 'unreachable'
-            : 'unreachable: ${functionElement} because: ${emptyParameters}';
-        // TODO(sra): Use a library function that throws a proper error object.
-        push(new HForeignCode(
-            js.js.parseForeignJS('throw "$message"'),
-            backend.dynamicType,
-            <HInstruction>[],
-            isStatement: true));
+        addComment('${emptyParameters} inferred as [empty]');
+        pushInvokeStatic(function.body, backend.assertUnreachableMethod, []);
+        pop();
         return closeFunction();
       }
     }
@@ -1644,6 +1642,19 @@
     return closeFunction();
   }
 
+  /// Adds a JavaScript comment to the output. The comment will be omitted in
+  /// minified mode.  Each line in [text] is preceded with `//` and indented.
+  /// Use sparingly. In order for the comment to be retained it is modeled as
+  /// having side effects which will inhibit code motion.
+  // TODO(sra): Figure out how to keep comment anchored without effects.
+  void addComment(String text) {
+    add(new HForeignCode(
+        js.js.statementTemplateYielding(new js.Comment(text)),
+        backend.dynamicType,
+        <HInstruction>[],
+        isStatement: true));
+  }
+
   HGraph buildCheckedSetter(VariableElement field) {
     openFunction(field, field.node);
     HInstruction thisInstruction = localsHandler.readThis();
@@ -2608,6 +2619,37 @@
     return pop();
   }
 
+  visitAssert(ast.Assert node) {
+    if (!compiler.enableUserAssertions) return;
+
+    if (!node.hasMessage) {
+      // Generate:
+      //
+      //     assertHelper(condition);
+      //
+      visit(node.condition);
+      pushInvokeStatic(node, backend.assertHelperMethod, [pop()]);
+      pop();
+      return;
+    }
+    // Assert has message. Generate:
+    //
+    //     if (assertTest(condition)) assertThrow(message);
+    //
+    void buildCondition() {
+      visit(node.condition);
+      pushInvokeStatic(node, backend.assertTestMethod, [pop()]);
+    }
+    void fail() {
+      visit(node.message);
+      pushInvokeStatic(node, backend.assertThrowMethod, [pop()]);
+      pop();
+    }
+    handleIf(node,
+             visitCondition: buildCondition,
+             visitThen: fail);
+  }
+
   visitBlock(ast.Block node) {
     assert(!isAborted());
     if (!isReachable) return;  // This can only happen when inlining.
@@ -4032,6 +4074,7 @@
     // Don't visit the first argument, which is the type, and the second
     // argument, which is the foreign code.
     if (link.isEmpty || link.tail.isEmpty) {
+      // We should not get here because the call should be compiled to NSM.
       compiler.internalError(node.argumentsNode,
           'At least two arguments expected.');
     }
@@ -4041,6 +4084,16 @@
     List<HInstruction> inputs = <HInstruction>[];
     addGenericSendArgumentsToList(link.tail.tail, inputs);
 
+    if (nativeBehavior.codeTemplate.positionalArgumentCount != inputs.length) {
+      compiler.reportError(
+          node, MessageKind.GENERIC,
+          {'text':
+            'Mismatch between number of placeholders'
+            ' and number of arguments.'});
+      stack.add(graph.addConstantNull(compiler));  // Result expected on stack.
+      return;
+    }
+
     TypeMask ssaType =
         TypeMaskFactory.fromNativeBehavior(nativeBehavior, compiler);
 
@@ -5183,18 +5236,6 @@
     return false;
   }
 
-  @override
-  visitAssert(ast.Send node, ast.Node expression, _) {
-    if (!compiler.enableUserAssertions) {
-      stack.add(graph.addConstantNull(compiler));
-      return;
-    }
-    assert(invariant(node, node.arguments.tail.isEmpty,
-        message: "Invalid assertion: $node"));
-    generateStaticFunctionInvoke(
-        node, backend.assertMethod, CallStructure.ONE_ARG);
-  }
-
   visitStaticSend(ast.Send node) {
     internalError(node, "Unexpected visitStaticSend");
   }
@@ -8311,14 +8352,6 @@
   }
 
   @override
-  void errorInvalidAssert(
-      ast.Send node,
-      ast.NodeList arguments,
-      _) {
-    visitNode(node);
-  }
-
-  @override
   void errorUndefinedBinaryExpression(
       ast.Send node,
       ast.Node left,
@@ -8457,19 +8490,24 @@
   final int maxInliningNodes;
   final bool useMaxInliningNodes;
   final bool allowLoops;
+  final bool enableUserAssertions;
 
   InlineWeeder(this.maxInliningNodes,
                this.useMaxInliningNodes,
-               this.allowLoops);
+               this.allowLoops,
+               this.enableUserAssertions);
 
   static bool canBeInlined(FunctionElement function,
                            int maxInliningNodes,
                            bool useMaxInliningNodes,
-                           {bool allowLoops: false}) {
+                           {bool allowLoops: false,
+                            bool enableUserAssertions: null}) {
+    assert(enableUserAssertions is bool); // Ensure we passed it.
     if (function.resolvedAst.elements.containsTryStatement) return false;
 
     InlineWeeder weeder =
-        new InlineWeeder(maxInliningNodes, useMaxInliningNodes, allowLoops);
+        new InlineWeeder(maxInliningNodes, useMaxInliningNodes, allowLoops,
+            enableUserAssertions);
     ast.FunctionExpression functionExpression = function.node;
     weeder.visit(functionExpression.initializers);
     weeder.visit(functionExpression.body);
@@ -8501,6 +8539,13 @@
   }
 
   @override
+  void visitAssert(ast.Assert node) {
+    if (enableUserAssertions) {
+      visitNode(node);
+    }
+  }
+
+  @override
   void visitAsyncModifier(ast.AsyncModifier node) {
     if (node.isYielding || node.isAsynchronous) {
       tooDifficult = true;
diff --git a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
index be3406f..e0c5611 100644
--- a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
+++ b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
@@ -27,11 +27,11 @@
   Operation operation(ConstantSystem constantSystem) => null;
 
   static InvokeDynamicSpecializer lookupSpecializer(Selector selector) {
-    if (selector.kind == SelectorKind.INDEX) {
-      return selector.name == '[]'
-          ? const IndexSpecializer()
-          : const IndexAssignSpecializer();
-    } else if (selector.kind == SelectorKind.OPERATOR) {
+    if (selector.isIndex) {
+      return const IndexSpecializer();
+    } else if (selector.isIndexSet) {
+      return const IndexAssignSpecializer();
+    } else if (selector.isOperator) {
       if (selector.name == 'unary-') {
         return const UnaryNegateSpecializer();
       } else if (selector.name == '~') {
@@ -69,7 +69,7 @@
       } else if (selector.name == '>=') {
         return const GreaterEqualSpecializer();
       }
-    } else if (selector.kind == SelectorKind.CALL) {
+    } else if (selector.isCall) {
       if (selector.argumentCount == 1 && selector.namedArguments.length == 0) {
         if (selector.name == 'codeUnitAt') {
           return const CodeUnitAtSpecializer();
@@ -238,8 +238,7 @@
                                      Compiler compiler) {
     if (selector.name == name) return selector;
     JavaScriptBackend backend = compiler.backend;
-    return new Selector(
-        SelectorKind.CALL, new Name(name, backend.interceptorsLibrary),
+    return new Selector.call(new Name(name, backend.interceptorsLibrary),
         new CallStructure(selector.argumentCount));
   }
 }
diff --git a/pkg/compiler/lib/src/ssa/ssa.dart b/pkg/compiler/lib/src/ssa/ssa.dart
index 2318c31..77322c9 100644
--- a/pkg/compiler/lib/src/ssa/ssa.dart
+++ b/pkg/compiler/lib/src/ssa/ssa.dart
@@ -52,7 +52,14 @@
 import '../types/types.dart';
 import '../types/constants.dart' show
     computeTypeMask;
-import '../universe/universe.dart';
+import '../universe/call_structure.dart' show
+    CallStructure;
+import '../universe/selector.dart' show
+    Selector;
+import '../universe/side_effects.dart' show
+    SideEffects;
+import '../universe/universe.dart' show
+    UniverseSelector;
 import '../util/util.dart';
 import '../world.dart' show
     ClassWorld,
diff --git a/pkg/compiler/lib/src/tree/nodes.dart b/pkg/compiler/lib/src/tree/nodes.dart
index 6c4516b..7ef28dc 100644
--- a/pkg/compiler/lib/src/tree/nodes.dart
+++ b/pkg/compiler/lib/src/tree/nodes.dart
@@ -9,6 +9,7 @@
 
   R visitNode(Node node);
 
+  R visitAssert(Assert node) => visitStatement(node);
   R visitAsyncForIn(AsyncForIn node) => visitLoop(node);
   R visitAsyncModifier(AsyncModifier node) => visitNode(node);
   R visitAwait(Await node) => visitExpression(node);
@@ -146,6 +147,7 @@
 
   Token getEndToken();
 
+  Assert asAssert() => null;
   AsyncModifier asAsyncModifier() => null;
   Await asAwait() => null;
   Block asBlock() => null;
@@ -1211,6 +1213,30 @@
   Token getEndToken() => expression.getEndToken();
 }
 
+class Assert extends Statement {
+  final Token assertToken;
+  final Expression condition;
+  /** Message may be `null`. */
+  final Expression message;
+  final Token semicolonToken;
+
+  Assert(this.assertToken, this.condition, this.message, this.semicolonToken);
+
+  Assert asAssert() => this;
+
+  bool get hasMessage => message != null;
+
+  accept(Visitor visitor) => visitor.visitAssert(this);
+
+  visitChildren(Visitor visitor) {
+    condition.accept(visitor);
+    if (message != null) message.accept(visitor);
+  }
+
+  Token getBeginToken() => assertToken;
+  Token getEndToken() => semicolonToken;
+}
+
 class Rethrow extends Statement {
   final Token throwToken;
   final Token endToken;
diff --git a/pkg/compiler/lib/src/tree/prettyprint.dart b/pkg/compiler/lib/src/tree/prettyprint.dart
index ab4c87c..5096e74 100644
--- a/pkg/compiler/lib/src/tree/prettyprint.dart
+++ b/pkg/compiler/lib/src/tree/prettyprint.dart
@@ -39,6 +39,10 @@
     closeNode();
   }
 
+  visitAssert(Assert node) {
+    visitNodeWithChildren(node, "Assert");
+  }
+
   visitAsyncModifier(AsyncModifier node) {
     openAndCloseNode(node, "AsyncModifier",
         {'asyncToken': node.asyncToken,
diff --git a/pkg/compiler/lib/src/tree/unparser.dart b/pkg/compiler/lib/src/tree/unparser.dart
index a0156be..6f141fd 100644
--- a/pkg/compiler/lib/src/tree/unparser.dart
+++ b/pkg/compiler/lib/src/tree/unparser.dart
@@ -58,6 +58,18 @@
     if (node != null) node.accept(this);
   }
 
+  visitAssert(Assert node) {
+    write(node.assertToken.value);
+    write('(');
+    visit(node.condition);
+    if (node.hasMessage) {
+      write(',');
+      space();
+      visit(node.message);
+    }
+    write(');');
+  }
+
   visitBlock(Block node) => unparseBlockStatements(node.statements);
 
   unparseBlockStatements(NodeList statements) {
diff --git a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
index f6b6a72..00487ee 100644
--- a/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
+++ b/pkg/compiler/lib/src/tree_ir/optimization/statement_rewriter.dart
@@ -1135,6 +1135,13 @@
 
   @override
   Expression visitAwait(Await node) {
+    node.input = visitExpression(node.input);
+    return node;
+  }
+
+  @override
+  Statement visitYield(Yield node) {
+    node.input = visitExpression(node.input);
     return node;
   }
 }
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart
index c4b993b..8adf3a9 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart
@@ -436,6 +436,19 @@
     return makeCallExpression(node, value);
   }
 
+  @override
+  NodeCallback visitYield(cps_ir.Yield node) {
+    return (Statement next) {
+      return new Yield(getVariableUse(node.input), node.hasStar, next);
+    };
+  }
+
+  @override
+  NodeCallback visitAwait(cps_ir.Await node) {
+    Expression value = new Await(getVariableUse(node.input));
+    return makeCallExpression(node, value);
+  }
+
 
   /************************** TAIL EXPRESSIONS  **************************/
   //
@@ -670,12 +683,6 @@
   }
 
   @override
-  NodeCallback visitAwait(cps_ir.Await node) {
-    Expression value = new Await(getVariableUse(node.input));
-    return makeCallExpression(node, value);
-  }
-
-  @override
   Expression visitRefinement(cps_ir.Refinement node) {
     throw 'Unexpected Refinement node in tree builder';
   }
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
index 7c41a53..3aef3a6 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_nodes.dart
@@ -9,7 +9,7 @@
 import '../elements/elements.dart';
 import '../io/source_information.dart' show SourceInformation;
 import '../types/types.dart' show TypeMask;
-import '../universe/universe.dart' show Selector;
+import '../universe/selector.dart' show Selector;
 
 import '../cps_ir/builtin_operator.dart';
 export '../cps_ir/builtin_operator.dart';
@@ -372,7 +372,7 @@
 
   bool receiverIsNotNull;
 
-  ApplyBuiltinMethod(this.method, 
+  ApplyBuiltinMethod(this.method,
                      this.receiver,
                      this.arguments,
                      {this.receiverIsNotNull: false});
@@ -501,7 +501,7 @@
 /**
  * A loop with a condition and update expressions. If there are any update
  * expressions, this generates a for loop, otherwise a while loop.
- * 
+ *
  * When the condition is false, control resumes at the [next] statement.
  *
  * It is NOT valid to target this statement with a [Break].
@@ -938,6 +938,22 @@
   }
 }
 
+class Yield extends Statement {
+  Statement next;
+  Expression input;
+  final bool hasStar;
+
+  Yield(this.input, this.hasStar, this.next);
+
+  accept(StatementVisitor visitor) {
+    return visitor.visitYield(this);
+  }
+
+  accept1(StatementVisitor1 visitor, arg) {
+    return visitor.visitYield(this, arg);
+  }
+}
+
 abstract class ExpressionVisitor<E> {
   E visitExpression(Expression node) => node.accept(this);
   E visitVariableUse(VariableUse node);
@@ -1027,6 +1043,7 @@
   S visitTry(Try node);
   S visitUnreachable(Unreachable node);
   S visitForeignStatement(ForeignStatement node);
+  S visitYield(Yield node);
 }
 
 abstract class StatementVisitor1<S, A> {
@@ -1044,6 +1061,7 @@
   S visitTry(Try node, A arg);
   S visitUnreachable(Unreachable node, A arg);
   S visitForeignStatement(ForeignStatement node, A arg);
+  S visitYield(Yield node, A arg);
 }
 
 abstract class RecursiveVisitor implements StatementVisitor, ExpressionVisitor {
@@ -1253,6 +1271,11 @@
   visitAwait(Await node) {
     visitExpression(node.input);
   }
+
+  visitYield(Yield node) {
+    visitExpression(node.input);
+    visitStatement(node.next);
+  }
 }
 
 abstract class Transformer implements ExpressionVisitor<Expression>,
@@ -1432,6 +1455,7 @@
 
   visitCreateInstance(CreateInstance node) {
     _replaceExpressions(node.arguments);
+    _replaceExpressions(node.typeInformation);
     return node;
   }
 
@@ -1507,6 +1531,11 @@
     node.input = visitExpression(node.input);
     return node;
   }
+
+  visitYield(Yield node) {
+    node.input = visitExpression(node.input);
+    return node;
+  }
 }
 
 class FallthroughTarget {
diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart
index 86a24b6..01b5847 100644
--- a/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart
+++ b/pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart
@@ -178,6 +178,11 @@
   visitForeignStatement(ForeignStatement node) {
     _addStatement(node);
   }
+
+  @override
+  visitYield(Yield node) {
+    _addStatement(node);
+  }
 }
 
 class TreeTracer extends TracerUtil with StatementVisitor {
@@ -336,6 +341,11 @@
   visitForeignStatement(ForeignStatement node) {
     printStatement(null, 'foreign ${node.codeTemplate.source}');
   }
+
+  @override
+  visitYield(Yield node) {
+    printStatement(null, 'yield ${expr(node.input)}');
+  }
 }
 
 class SubexpressionVisitor extends ExpressionVisitor<String> {
@@ -569,6 +579,12 @@
     String value = visitExpression(node.input);
     return 'Await($value)';
   }
+
+  @override
+  String visitYield(Yield node) {
+    String value = visitExpression(node.input);
+    return 'Yield($value)';
+  }
 }
 
 /**
diff --git a/pkg/compiler/lib/src/typechecker.dart b/pkg/compiler/lib/src/typechecker.dart
index cb64d9b..323c19d 100644
--- a/pkg/compiler/lib/src/typechecker.dart
+++ b/pkg/compiler/lib/src/typechecker.dart
@@ -146,25 +146,6 @@
   String toString() => 'DynamicAccess';
 }
 
-/// An access of the `assert` method.
-class AssertAccess implements ElementAccess {
-  const AssertAccess();
-
-  Element get element => null;
-
-  String get name => 'assert';
-
-  DartType computeType(Compiler compiler) {
-    return new FunctionType.synthesized(
-        const VoidType(),
-        <DartType>[const DynamicType()]);
-  }
-
-  bool isCallable(Compiler compiler) => true;
-
-  String toString() => 'AssertAccess';
-}
-
 /**
  * An access of a resolved top-level or static property or function, or an
  * access of a resolved element through [:this:].
@@ -614,6 +595,12 @@
     return type;
   }
 
+  DartType visitAssert(Assert node) {
+    analyze(node.condition);
+    if (node.hasMessage) analyze(node.message);
+    return const StatementType();
+  }
+
   DartType visitBlock(Block node) {
     return analyze(node.statements);
   }
@@ -1165,10 +1152,6 @@
   }
 
   DartType visitSend(Send node) {
-    if (elements.isAssert(node)) {
-      return analyzeInvocation(node, const AssertAccess());
-    }
-
     Element element = elements[node];
 
     if (element != null && element.isConstructor) {
diff --git a/pkg/compiler/lib/src/types/type_mask.dart b/pkg/compiler/lib/src/types/type_mask.dart
index 65cf596..7cbecc5 100644
--- a/pkg/compiler/lib/src/types/type_mask.dart
+++ b/pkg/compiler/lib/src/types/type_mask.dart
@@ -4,10 +4,10 @@
 
 part of types;
 
-/// An implementation of a [UniverseReceiverMaskSet] that is consists if an only
+/// An implementation of a [UniverseSelectorConstraints] that is consists if an only
 /// increasing set of [TypeMask]s, that is, once a mask is added it cannot be
 /// removed.
-class IncreasingTypeMaskSet extends UniverseReceiverMaskSet {
+class IncreasingTypeMaskSet extends UniverseSelectorConstraints {
   bool isAll = false;
   Set<TypeMask> _masks;
 
@@ -37,7 +37,7 @@
   }
 
   @override
-  bool addReceiverMask(TypeMask mask) {
+  bool addReceiverConstraint(TypeMask mask) {
     if (isAll) return false;
     if (mask == null) {
       isAll = true;
@@ -61,11 +61,11 @@
   }
 }
 
-class TypeMaskStrategy implements ReceiverMaskStrategy {
+class TypeMaskStrategy implements SelectorConstraintsStrategy {
   const TypeMaskStrategy();
 
   @override
-  UniverseReceiverMaskSet createReceiverMaskSet(Selector selector) {
+  UniverseSelectorConstraints createSelectorConstraints(Selector selector) {
     return new IncreasingTypeMaskSet();
   }
 }
@@ -75,7 +75,7 @@
  * operations on it are not guaranteed to be precise and they may
  * yield conservative answers that contain too many classes.
  */
-abstract class TypeMask implements ReceiverMask {
+abstract class TypeMask implements ReceiverConstraint {
   factory TypeMask(ClassElement base,
                    int kind,
                    bool isNullable,
diff --git a/pkg/compiler/lib/src/types/types.dart b/pkg/compiler/lib/src/types/types.dart
index a06404b..b99a368 100644
--- a/pkg/compiler/lib/src/types/types.dart
+++ b/pkg/compiler/lib/src/types/types.dart
@@ -15,11 +15,18 @@
 import '../diagnostics/spannable.dart' show
     NO_LOCATION_SPANNABLE;
 import '../elements/elements.dart';
-import '../inferrer/concrete_types_inferrer.dart' show ConcreteTypesInferrer;
-import '../inferrer/type_graph_inferrer.dart' show TypeGraphInferrer;
+import '../inferrer/concrete_types_inferrer.dart' show
+    ConcreteTypesInferrer;
+import '../inferrer/type_graph_inferrer.dart' show
+    TypeGraphInferrer;
 import '../tree/tree.dart';
 import '../util/util.dart';
-import '../universe/universe.dart';
+import '../universe/selector.dart' show
+    Selector;
+import '../universe/universe.dart' show
+    ReceiverConstraint,
+    UniverseSelectorConstraints,
+    SelectorConstraintsStrategy;
 import '../world.dart' show
     ClassWorld,
     World;
diff --git a/pkg/compiler/lib/src/universe/call_structure.dart b/pkg/compiler/lib/src/universe/call_structure.dart
index 12e4fd8..d37d2c9 100644
--- a/pkg/compiler/lib/src/universe/call_structure.dart
+++ b/pkg/compiler/lib/src/universe/call_structure.dart
@@ -2,7 +2,31 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of universe;
+library dart2js.call_structure;
+
+import 'dart:collection';
+
+import '../common/names.dart' show
+    Identifiers,
+    Names,
+    Selectors;
+import '../compiler.dart' show
+    Compiler;
+import '../diagnostics/invariant.dart' show
+    invariant;
+import '../diagnostics/spannable.dart' show
+    SpannableAssertionFailure;
+import '../elements/elements.dart';
+import '../dart_types.dart';
+import '../tree/tree.dart';
+import '../types/types.dart';
+import '../util/util.dart';
+import '../world.dart' show
+    ClassWorld,
+    World;
+
+import 'selector.dart' show
+    Selector;
 
 /// The structure of the arguments at a call-site.
 // TODO(johnniwinther): Should these be cached?
@@ -48,9 +72,7 @@
 
   String toString() => 'CallStructure(${structureToString()})';
 
-  Selector get callSelector {
-    return new Selector(SelectorKind.CALL, Selector.CALL_NAME, this);
-  }
+  Selector get callSelector => new Selector.call(Names.call, this);
 
   bool match(CallStructure other) {
     if (identical(this, other)) return true;
diff --git a/pkg/compiler/lib/src/universe/function_set.dart b/pkg/compiler/lib/src/universe/function_set.dart
index 5f8dedd..72a1813 100644
--- a/pkg/compiler/lib/src/universe/function_set.dart
+++ b/pkg/compiler/lib/src/universe/function_set.dart
@@ -2,7 +2,23 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of universe;
+library universe.function_set;
+
+import '../common/names.dart' show
+    Identifiers,
+    Selectors;
+import '../compiler.dart' show
+    Compiler;
+import '../elements/elements.dart';
+import '../types/types.dart';
+import '../util/util.dart' show
+    Hashing,
+    Setlet;
+import '../world.dart' show
+    ClassWorld;
+
+import 'selector.dart' show
+    Selector;
 
 // TODO(kasperl): This actually holds getters and setters just fine
 // too and stricly they aren't functions. Maybe this needs a better
diff --git a/pkg/compiler/lib/src/universe/selector.dart b/pkg/compiler/lib/src/universe/selector.dart
index 94fa6b4..357055a 100644
--- a/pkg/compiler/lib/src/universe/selector.dart
+++ b/pkg/compiler/lib/src/universe/selector.dart
@@ -2,7 +2,27 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of universe;
+library dart2js.selector;
+
+import '../common/names.dart' show
+    Names;
+import '../diagnostics/spannable.dart' show
+    SpannableAssertionFailure;
+import '../elements/elements.dart' show
+    Element,
+    Elements,
+    FunctionElement,
+    FunctionSignature,
+    Name,
+    LibraryElement,
+    PublicName;
+import '../util/util.dart' show
+    Hashing;
+import '../world.dart' show
+    World;
+
+import 'call_structure.dart' show
+    CallStructure;
 
 class SelectorKind {
   final String name;
@@ -34,16 +54,13 @@
 
   LibraryElement get library => memberName.library;
 
-  static const Name INDEX_NAME = const PublicName("[]");
-  static const Name INDEX_SET_NAME = const PublicName("[]=");
-  static const Name CALL_NAME = Names.call;
-
   Selector.internal(this.kind,
                     this.memberName,
                     this.callStructure,
                     this.hashCode) {
     assert(kind == SelectorKind.INDEX ||
-           (memberName != INDEX_NAME && memberName != INDEX_SET_NAME));
+           (memberName != Names.INDEX_NAME &&
+            memberName != Names.INDEX_SET_NAME));
     assert(kind == SelectorKind.OPERATOR ||
            kind == SelectorKind.INDEX ||
            !Elements.isOperatorName(memberName.text) ||
@@ -82,9 +99,9 @@
   factory Selector.fromElement(Element element) {
     Name name = new Name(element.name, element.library);
     if (element.isFunction) {
-      if (name == INDEX_NAME) {
+      if (name == Names.INDEX_NAME) {
         return new Selector.index();
-      } else if (name == INDEX_SET_NAME) {
+      } else if (name == Names.INDEX_SET_NAME) {
         return new Selector.indexSet();
       }
       FunctionSignature signature =
@@ -141,22 +158,22 @@
       CallStructure.ONE_ARG);
 
   factory Selector.index()
-      => new Selector(SelectorKind.INDEX, INDEX_NAME,
+      => new Selector(SelectorKind.INDEX, Names.INDEX_NAME,
                       CallStructure.ONE_ARG);
 
   factory Selector.indexSet()
-      => new Selector(SelectorKind.INDEX, INDEX_SET_NAME,
+      => new Selector(SelectorKind.INDEX, Names.INDEX_SET_NAME,
                       CallStructure.TWO_ARGS);
 
   factory Selector.call(Name name, CallStructure callStructure)
       => new Selector(SelectorKind.CALL, name, callStructure);
 
   factory Selector.callClosure(int arity, [List<String> namedArguments])
-      => new Selector(SelectorKind.CALL, CALL_NAME,
+      => new Selector(SelectorKind.CALL, Names.call,
                       new CallStructure(arity, namedArguments));
 
   factory Selector.callClosureFrom(Selector selector)
-      => new Selector(SelectorKind.CALL, CALL_NAME, selector.callStructure);
+      => new Selector(SelectorKind.CALL, Names.call, selector.callStructure);
 
   factory Selector.callConstructor(Name name,
                                    [int arity = 0,
@@ -173,7 +190,7 @@
   bool get isGetter => kind == SelectorKind.GETTER;
   bool get isSetter => kind == SelectorKind.SETTER;
   bool get isCall => kind == SelectorKind.CALL;
-  bool get isClosureCall => isCall && memberName == CALL_NAME;
+  bool get isClosureCall => isCall && memberName == Names.CALL_NAME;
 
   bool get isIndex => kind == SelectorKind.INDEX && argumentCount == 1;
   bool get isIndexSet => kind == SelectorKind.INDEX && argumentCount == 2;
@@ -181,9 +198,6 @@
   bool get isOperator => kind == SelectorKind.OPERATOR;
   bool get isUnaryOperator => isOperator && argumentCount == 0;
 
-  /** Check whether this is a call to 'assert'. */
-  bool get isAssert => isCall && identical(name, "assert");
-
   /**
    * The member name for invocation mirrors created from this selector.
    */
@@ -236,9 +250,7 @@
 
   bool sameNameHack(Element element, World world) {
     // TODO(ngeoffray): Remove workaround checks.
-    return element.isConstructor ||
-           name == element.name ||
-           name == 'assert' && world.isAssertMethod(element);
+    return element.isConstructor || name == element.name;
   }
 
   bool applies(Element element, World world) {
diff --git a/pkg/compiler/lib/src/universe/side_effects.dart b/pkg/compiler/lib/src/universe/side_effects.dart
index 66b4aa7..4c5a719 100644
--- a/pkg/compiler/lib/src/universe/side_effects.dart
+++ b/pkg/compiler/lib/src/universe/side_effects.dart
@@ -2,7 +2,31 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of universe;
+library universe.side_effects;
+
+import 'dart:collection';
+
+import '../common/names.dart' show
+    Identifiers,
+    Names,
+    Selectors;
+import '../compiler.dart' show
+    Compiler;
+import '../diagnostics/invariant.dart' show
+    invariant;
+import '../diagnostics/spannable.dart' show
+    SpannableAssertionFailure;
+import '../elements/elements.dart';
+import '../dart_types.dart';
+import '../tree/tree.dart';
+import '../types/types.dart';
+import '../util/util.dart';
+import '../world.dart' show
+    ClassWorld,
+    World;
+
+import 'selector.dart' show
+    Selector;
 
 class SideEffects {
   // Changes flags.
diff --git a/pkg/compiler/lib/src/universe/universe.dart b/pkg/compiler/lib/src/universe/universe.dart
index 5268be3..e7d15be 100644
--- a/pkg/compiler/lib/src/universe/universe.dart
+++ b/pkg/compiler/lib/src/universe/universe.dart
@@ -25,14 +25,15 @@
     ClassWorld,
     World;
 
-part 'call_structure.dart';
-part 'function_set.dart';
-part 'selector.dart';
-part 'side_effects.dart';
+import 'call_structure.dart';
+import 'selector.dart' show
+    Selector;
+import 'function_set.dart';
+import 'side_effects.dart';
 
 class UniverseSelector {
   final Selector selector;
-  final ReceiverMask mask;
+  final ReceiverConstraint mask;
 
   UniverseSelector(this.selector, this.mask);
 
@@ -44,31 +45,62 @@
   String toString() => '$selector,$mask';
 }
 
-/// A potential receiver for a dynamic call site.
-abstract class ReceiverMask {
+/// The known constraint on receiver for a dynamic call site.
+///
+/// This can for instance be used to constrain this dynamic call to `foo` to
+/// 'receivers of the exact instance `Bar`':
+///
+///     class Bar {
+///        void foo() {}
+///     }
+///     main() => new Bar().foo();
+///
+abstract class ReceiverConstraint {
   /// Returns whether [element] is a potential target when being
-  /// invoked on this receiver mask. [selector] is used to ensure library
-  /// privacy is taken into account.
+  /// invoked on a receiver with this constraint. [selector] is used to ensure
+  /// library privacy is taken into account.
   bool canHit(Element element, Selector selector, ClassWorld classWorld);
 }
 
-/// A set of potential receivers for the dynamic call sites of the same
+/// The combined constraints on receivers all the dynamic call sites of the same
 /// selector.
 ///
 /// For instance for these calls
 ///
+///     class A {
+///        foo(a, b) {}
+///     }
+///     class B {
+///        foo(a, b) {}
+///     }
+///     class C {
+///        foo(a, b) {}
+///     }
 ///     new A().foo(a, b);
 ///     new B().foo(0, 42);
 ///
-/// the receiver mask set for dynamic calls to 'foo' with to positional
-/// arguments will contain receiver masks abstracting `new A()` and `new B()`.
-abstract class ReceiverMaskSet {
-  /// Returns `true` if [selector] applies to any of the potential receivers
-  /// in this set given the closed [world].
+/// the selector constaints for dynamic calls to 'foo' with two positional
+/// arguments could be 'receiver of exact instance `A` or `B`'.
+abstract class SelectorConstraints {
+  /// Returns `true` if [selector] applies to [element] under these constraints
+  /// given the closed [world].
+  ///
+  /// Consider for instance in this world:
+  ///
+  ///     class A {
+  ///        foo(a, b) {}
+  ///     }
+  ///     class B {
+  ///        foo(a, b) {}
+  ///     }
+  ///     new A().foo(a, b);
+  ///
+  /// Ideally the selector constraints for calls `foo` with two positional
+  /// arguments apply to `A.foo` but `B.foo`.
   bool applies(Element element, Selector selector, ClassWorld world);
 
-  /// Returns `true` if any potential receivers in this set given the closed
-  /// [world] have no implementation matching [selector].
+  /// Returns `true` if at least one of the receivers matching these constraints
+  /// in the closed [world] have no implementation matching [selector].
   ///
   /// For instance for this code snippet
   ///
@@ -76,23 +108,24 @@
   ///     class B { foo() {} }
   ///     m(b) => (b ? new A() : new B()).foo();
   ///
-  /// the potential receiver `new A()` have no implementation of `foo` and thus
-  /// needs to handle the call though its `noSuchMethod` handler.
+  /// the potential receiver `new A()` has no implementation of `foo` and thus
+  /// needs to handle the call through its `noSuchMethod` handler.
   bool needsNoSuchMethodHandling(Selector selector, ClassWorld world);
 }
 
-/// A mutable [ReceiverMaskSet] used in [Universe].
-abstract class UniverseReceiverMaskSet extends ReceiverMaskSet {
-  /// Adds [mask] to this set of potential receivers. Return `true` if the
-  /// set expanded due to the new mask.
-  bool addReceiverMask(ReceiverMask mask);
+/// A mutable [SelectorConstraints] used in [Universe].
+abstract class UniverseSelectorConstraints extends SelectorConstraints {
+  /// Adds [constraint] to these selector constraints. Return `true` if the set
+  /// of potential receivers expanded due to the new constraint.
+  bool addReceiverConstraint(ReceiverConstraint constraint);
 }
 
-/// Strategy for computing potential receivers of dynamic call sites.
-abstract class ReceiverMaskStrategy {
-  /// Create a [UniverseReceiverMaskSet] to represent the potential receiver for
-  /// a dynamic call site with [selector].
-  UniverseReceiverMaskSet createReceiverMaskSet(Selector selector);
+/// Strategy for computing the constraints on potential receivers of dynamic
+/// call sites.
+abstract class SelectorConstraintsStrategy {
+  /// Create a [UniverseSelectorConstraints] to represent the global receiver
+  /// constraints for dynamic call sites with [selector].
+  UniverseSelectorConstraints createSelectorConstraints(Selector selector);
 }
 
 class Universe {
@@ -132,12 +165,12 @@
       new Set<FunctionElement>();
   final Set<FunctionElement> methodsNeedingSuperGetter =
       new Set<FunctionElement>();
-  final Map<String, Map<Selector, ReceiverMaskSet>> _invokedNames =
-      <String, Map<Selector, ReceiverMaskSet>>{};
-  final Map<String, Map<Selector, ReceiverMaskSet>> _invokedGetters =
-      <String, Map<Selector, ReceiverMaskSet>>{};
-  final Map<String, Map<Selector, ReceiverMaskSet>> _invokedSetters =
-      <String, Map<Selector, ReceiverMaskSet>>{};
+  final Map<String, Map<Selector, SelectorConstraints>> _invokedNames =
+      <String, Map<Selector, SelectorConstraints>>{};
+  final Map<String, Map<Selector, SelectorConstraints>> _invokedGetters =
+      <String, Map<Selector, SelectorConstraints>>{};
+  final Map<String, Map<Selector, SelectorConstraints>> _invokedSetters =
+      <String, Map<Selector, SelectorConstraints>>{};
 
   /**
    * Fields accessed. Currently only the codegen knows this
@@ -179,9 +212,9 @@
    */
   final Set<Element> closurizedMembers = new Set<Element>();
 
-  final ReceiverMaskStrategy receiverMaskStrategy;
+  final SelectorConstraintsStrategy selectorConstraintsStrategy;
 
-  Universe(this.receiverMaskStrategy);
+  Universe(this.selectorConstraintsStrategy);
 
   /// All directly instantiated classes, that is, classes with a generative
   /// constructor that has been called directly and not only through a
@@ -244,13 +277,13 @@
     });
   }
 
-  bool _hasMatchingSelector(Map<Selector, ReceiverMaskSet> selectors,
+  bool _hasMatchingSelector(Map<Selector, SelectorConstraints> selectors,
                             Element member,
                             World world) {
     if (selectors == null) return false;
     for (Selector selector in selectors.keys) {
       if (selector.appliesUnnamed(member, world)) {
-        ReceiverMaskSet masks = selectors[selector];
+        SelectorConstraints masks = selectors[selector];
         if (masks.applies(member, selector, world)) {
           return true;
         }
@@ -285,47 +318,47 @@
 
   bool _registerNewSelector(
       UniverseSelector universeSelector,
-      Map<String, Map<Selector, ReceiverMaskSet>> selectorMap) {
+      Map<String, Map<Selector, SelectorConstraints>> selectorMap) {
     Selector selector = universeSelector.selector;
     String name = selector.name;
-    ReceiverMask mask = universeSelector.mask;
-    Map<Selector, ReceiverMaskSet> selectors = selectorMap.putIfAbsent(
-        name, () => new Maplet<Selector, ReceiverMaskSet>());
-    UniverseReceiverMaskSet masks = selectors.putIfAbsent(
-        selector, () => receiverMaskStrategy.createReceiverMaskSet(selector));
-    return masks.addReceiverMask(mask);
+    ReceiverConstraint mask = universeSelector.mask;
+    Map<Selector, SelectorConstraints> selectors = selectorMap.putIfAbsent(
+        name, () => new Maplet<Selector, SelectorConstraints>());
+    UniverseSelectorConstraints constraints = selectors.putIfAbsent(
+        selector, () => selectorConstraintsStrategy.createSelectorConstraints(selector));
+    return constraints.addReceiverConstraint(mask);
   }
 
-  Map<Selector, ReceiverMaskSet> _asUnmodifiable(
-      Map<Selector, ReceiverMaskSet> map) {
+  Map<Selector, SelectorConstraints> _asUnmodifiable(
+      Map<Selector, SelectorConstraints> map) {
     if (map == null) return null;
     return new UnmodifiableMapView(map);
   }
 
-  Map<Selector, ReceiverMaskSet> invocationsByName(String name) {
+  Map<Selector, SelectorConstraints> invocationsByName(String name) {
     return _asUnmodifiable(_invokedNames[name]);
   }
 
-  Map<Selector, ReceiverMaskSet> getterInvocationsByName(String name) {
+  Map<Selector, SelectorConstraints> getterInvocationsByName(String name) {
     return _asUnmodifiable(_invokedGetters[name]);
   }
 
-  Map<Selector, ReceiverMaskSet> setterInvocationsByName(String name) {
+  Map<Selector, SelectorConstraints> setterInvocationsByName(String name) {
     return _asUnmodifiable(_invokedSetters[name]);
   }
 
   void forEachInvokedName(
-      f(String name, Map<Selector, ReceiverMaskSet> selectors)) {
+      f(String name, Map<Selector, SelectorConstraints> selectors)) {
     _invokedNames.forEach(f);
   }
 
   void forEachInvokedGetter(
-      f(String name, Map<Selector, ReceiverMaskSet> selectors)) {
+      f(String name, Map<Selector, SelectorConstraints> selectors)) {
     _invokedGetters.forEach(f);
   }
 
   void forEachInvokedSetter(
-      f(String name, Map<Selector, ReceiverMaskSet> selectors)) {
+      f(String name, Map<Selector, SelectorConstraints> selectors)) {
     _invokedSetters.forEach(f);
   }
 
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index 6cfa45f..12bb5dc 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -11,10 +11,7 @@
 import 'common/registry.dart' show
     Registry;
 import 'compiler.dart' show
-    invariant,
-    Backend,
-    Compiler,
-    Registry;
+    Compiler;
 import 'dart_types.dart';
 import 'diagnostics/invariant.dart' show
     invariant;
@@ -27,11 +24,13 @@
     VariableElement;
 import 'ordered_typeset.dart';
 import 'types/types.dart' as ti;
-import 'universe/universe.dart' show
-    FunctionSet,
-    Selector,
-    SideEffects;
 import 'universe/class_set.dart';
+import 'universe/function_set.dart' show
+    FunctionSet;
+import 'universe/selector.dart' show
+    Selector;
+import 'universe/side_effects.dart' show
+    SideEffects;
 import 'util/util.dart' show
     Link;
 
@@ -378,11 +377,6 @@
   bool get isClosed => compiler.phase > Compiler.PHASE_RESOLVING;
 
   // Used by selectors.
-  bool isAssertMethod(Element element) {
-    return compiler.backend.isAssertMethod(element);
-  }
-
-  // Used by selectors.
   bool isForeign(Element element) {
     return compiler.backend.isForeign(element);
   }
diff --git a/pkg/dart2js_incremental/lib/library_updater.dart b/pkg/dart2js_incremental/lib/library_updater.dart
index faca103..3499f4f 100644
--- a/pkg/dart2js_incremental/lib/library_updater.dart
+++ b/pkg/dart2js_incremental/lib/library_updater.dart
@@ -110,7 +110,7 @@
     FieldElementX,
     LibraryElementX;
 
-import 'package:compiler/src/universe/universe.dart' show
+import 'package:compiler/src/universe/selector.dart' show
     Selector;
 
 import 'package:compiler/src/constants/values.dart' show
diff --git a/pkg/docgen/LICENSE b/pkg/docgen/LICENSE
deleted file mode 100644
index 5c60afe..0000000
--- a/pkg/docgen/LICENSE
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright 2014, the Dart project authors. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials provided
-      with the distribution.
-    * Neither the name of Google Inc. nor the names of its
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/pkg/docgen/README.md b/pkg/docgen/README.md
deleted file mode 100644
index de80e8c..0000000
--- a/pkg/docgen/README.md
+++ /dev/null
@@ -1,140 +0,0 @@
-docgen
-======
-
-**Deprecated** please use https://pub.dartlang.org/packages/dartdoc instead.
-
-A documentation generator for Dart.
-
-- - -
-The docgen tool takes in a file or directory as input and produces documentation
-for all `.dart` file it finds as YAML or JSON files. This outputs information 
-about all classes, variables, functions, and methods defined in the library and 
-its imported libraries.
-
-### Quick Start: Common Commands 
-
-##### To only generate documentation, while standing in the `bin` directory:
-
-`dartdoc.py` generates all documentation and runs a local server with your html
-pages.
-
-`dartdoc.py -d` ONLY generates documentation for the SDK and all packages (no
-html pages generated and no server).
-
-`dartdoc.py -d -o package/to/document` ONLY generates documenation for the
-specified package.
-
-##### To generate documentation and view it through the webpage:
-- Install [Google App Engine SDK for Python][GAE] (one time setup) and agree to
-   add symlinks so that dev\_appserver.py can be found on your PATH.
-- Run `dartdoc.py`.
-
-### Generating files & uploading to Cloud Storage
-
-The viewer uses YAML files generated by the docgen package as the data 
-being displayed. These files are stored in Google Cloud Storage.
-
- - Run `python upload_docgen.py` to generate these files and upload them to 
- Cloud Storage as a new version.
-- - -
-These tasks can be done separately if necessary:
-
-##### 
-
-#### Generating YAML files
-
-YAML files can be generated using the docgen package in the dart repository. 
-
-###### Usage 
-
-Run  `dart docgen.dart [OPTIONS] <path to directory or file>`
-
-###### Options available
-
-- `-h`, `--help` Prints help and usage information.
-- `-v`, `--verbose` Output more logging information.
-- `-j`, `--[no-]json` Outputs to JSON. Files are outputted to YAML by default. 
-If `--append` is used, it takes the file-format of the previous run stated in 
-library_list.json ignoring the flag.
-- `--include-private` Flag to include private declarations.
-- `--include-sdk` Flag to parse SDK Library files imported.
-- `--parse-sdk` Parses the SDK libraries only. (Ignores the path passed in.)
-- `--package-root` Sets the package root of the library being analyzed.
-- `--append` Appends to the docs folder, library_list.json, and index.txt.
-- `--introduction` Adds the provided markdown text file as the introduction
-for the outputted documentation.
-
-
-###### Output directory
-Documented libraries will be located at bin/docs in either YAML or JSON format 
-depending on options specified. There will also be a library\_list.json, 
-containing a list of all the libraries inside the docs folder. 
-
-To get more information on how to use the outputted documentation with 
-dartdoc-viewer, please take a look at the 
-[dartdoc-viewer documentation][dartdoc-viewer].
-
-#### Uploading to Cloud Storage
-
-To push new files to Google Cloud Storage for use by the viewer, use the 
-`gsutil` tool located at third_party/gsutil/gsutil in the Dart repository.
-
- - Run `python gsutil -m cp -q -a public-read -r <folder> gs://dartlang-docgen`
- to upload the specified folder to the viewer's bucket. Be sure to also upload 
- a new VERSION file if the uploaded folder is to be used.**
-
-**Note that the bucket contains several numbered folders for each version of 
-the documentation. Run `python gsutil ls gs://dartlang-docgen` to see the file 
-layout. Follow this convention and update a new VERSION file when uploading 
-a new version of documentation. You can see the format of the VERSION file 
-by running `python gsutil cat gs://dartlang-docgen/VERSION`.
-
-### Viewing generated documentation
-
-Docgen's generated YAML files can be used by the 
-[Dart Documentation Viewer][dartdoc-viewer] for easy viewing and navigation 
-through a project. 
-
----
-
-#### Using dartdoc.py
-
-The `dartdoc.py` script located in the `bin` directory is a useful tool for 
-creating documentation for a Dart project and running it locally. 
-
-##### Setup
-
-The `dartdoc.py` script makes use of the 
-[Google App Engine SDK for Python][GAE]'s development server to serve the 
-documentation viewer. Install a recent version of the SDK before running 
-`dartdoc.py`.
-
-##### Running dartdoc.py
-
-######Common Options
-
-The following options are the most used:
-
-    python dartdoc.py --gae-sdk=<path to SDK>
-      --options=<path to files>
-      --options=--parse-sdk
-      --options='--include-sdk <path to files>'
-      --options='--append <path to files>'
-
-######All Options
-
-Run `python dartdoc.py -h` from the `bin` directory for all available options. 
-The two required options are as follows:
- 
- 1. The `--options` option describes any options being passed into `docgen.dart`.
- If more then one option is desired, separate the options with a space 
- (ex. `--options='--include-sdk files'`).
- 2. The `--gae-sdk` option gives the absolute path to the 
- [Google App Engine SDK][GAE]. 
-
-Running `python dartdoc.py --options=<docgen options> --gae-sdk=<path to SDK>` 
-will serve files generated by `docgen.dart` in your browser.
-
-[dartdoc-viewer]: https://github.com/dart-lang/dartdoc-viewer "Dartdoc-Viewer"
-[GAE]: https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python  "Google App Engine SDK for Python"
-
diff --git a/pkg/docgen/bin/docgen.dart b/pkg/docgen/bin/docgen.dart
deleted file mode 100644
index 6ed8392..0000000
--- a/pkg/docgen/bin/docgen.dart
+++ /dev/null
@@ -1,173 +0,0 @@
-// 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:io';
-
-import 'package:args/args.dart';
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as path;
-
-// Must use relative paths because library imports mirrors via relative paths
-import '../lib/docgen.dart';
-
-/**
- * Analyzes Dart files and generates a representation of included libraries,
- * classes, and members.
- */
-void main(List<String> arguments) {
-  var options = _initArgParser().parse(arguments);
-  var files = options.rest.map(path.normalize).toList();
-  if (files.isEmpty) _printHelpAndExit();
-  var startPage = options['start-page'];
-  if (_singlePackage(files) && startPage == null) {
-    startPage = _defaultStartPageFor(files);
-    _printDeprecatedMessage();
-    print("Using default options for documenting a single package: "
-        "--start-page=$startPage");
-  }
-  var includeSdk = options['parse-sdk'] || options['include-sdk'];
-  var scriptDir = path.dirname(Platform.script.toFilePath());
-  var introduction = includeSdk ? '' : options['introduction'];
-
-  var pubScript =
-      options['sdk'] != null ? path.join(options['sdk'], 'bin', 'pub') : 'pub';
-
-  var dartBinary = options['sdk'] != null
-      ? path.join(options['sdk'], 'bin', 'dart')
-      : 'dart';
-
-  var excludedLibraries = options['exclude-lib'];
-  if (excludedLibraries == null) excludedLibraries = [];
-
-  var indentJSON = options['indent-json'] as bool;
-
-  docgen(files,
-      packageRoot: options['package-root'],
-      includePrivate: options['include-private'],
-      includeSdk: includeSdk,
-      parseSdk: options['parse-sdk'],
-      introFileName: introduction,
-      out: options['out'],
-      excludeLibraries: excludedLibraries,
-      includeDependentPackages: options['include-dependent-packages'],
-      compile: options['compile'],
-      serve: options['serve'],
-      dartBinary: dartBinary,
-      pubScript: pubScript,
-      noDocs: options['no-docs'],
-      startPage: startPage,
-      indentJSON: indentJSON,
-      sdk: options['sdk']);
-}
-
-/**
- * Print help if we are passed the help option or invalid arguments.
- */
-void _printHelpAndExit() {
-  _printDeprecatedMessage();
-  print(_initArgParser().usage);
-  print('Usage: dartdocgen [OPTIONS] fooDir/barFile');
-  exit(0);
-}
-
-void _printDeprecatedMessage() {
-  print(
-      '\nDeprecated: please use https://pub.dartlang.org/packages/dartdoc instead.');
-  print('Dart SDK 1.12 will be the last release to ship with docgen.\n');
-}
-
-/**
- * If the user seems to have given us a single package to document, use some
- * reasonable arguments for what they probably meant.
- */
-bool _singlePackage(List files) {
-  if (files.length != 1) return false;
-  var pubspec = new File(path.join(files.first, 'pubspec.yaml'));
-  if (!pubspec.existsSync()) return false;
-  return true;
-}
-
-/**
- * If we've specified just a package and no other command-line options,
- * use the single package name as the start page.
- */
-String _defaultStartPageFor(files) {
-  var pubspec = new File(path.join(files.first, 'pubspec.yaml'));
-  if (!pubspec.existsSync()) return null;
-  return packageNameFor(files.first);
-}
-
-/**
- * Creates parser for docgen command line arguments.
- */
-ArgParser _initArgParser() {
-  var parser = new ArgParser();
-  parser.addFlag('help',
-      abbr: 'h',
-      help: 'Prints help and usage information.',
-      negatable: false, callback: (help) {
-    if (help) _printHelpAndExit();
-  });
-  parser.addFlag('verbose',
-      abbr: 'v',
-      help: 'Output more logging information.',
-      negatable: false, callback: (verbose) {
-    if (verbose) Logger.root.level = Level.FINEST;
-  });
-  parser.addFlag('include-private',
-      help: 'Flag to include private declarations.', negatable: false);
-  parser.addFlag('include-sdk',
-      help: 'Flag to parse SDK Library files.',
-      defaultsTo: false,
-      negatable: true);
-  parser.addFlag('parse-sdk',
-      help: 'Parses the SDK libraries only.',
-      defaultsTo: false,
-      negatable: false);
-  parser.addOption('package-root',
-      help: 'Sets the package root of the library being analyzed.');
-  parser.addFlag('compile',
-      help: 'Clone the documentation viewer repo locally '
-          '(if not already present) and compile with dart2js',
-      defaultsTo: false,
-      negatable: false);
-  parser.addFlag('serve',
-      help: 'Clone the documentation viewer repo locally '
-          '(if not already present), compile with dart2js, '
-          'and start a simple server',
-      defaultsTo: false,
-      negatable: false);
-  parser.addFlag('no-docs',
-      help: 'Do not generate any new documentation',
-      defaultsTo: false,
-      negatable: false);
-  parser.addOption('introduction',
-      help: 'Adds the provided markdown text file as the introduction'
-          ' for the generated documentation.',
-      defaultsTo: '');
-  parser.addOption('out',
-      help: 'The name of the output directory.', defaultsTo: 'docs');
-  parser.addOption('exclude-lib',
-      help: 'Exclude the library by this name from the documentation',
-      allowMultiple: true);
-  parser.addFlag('include-dependent-packages',
-      help: 'Assumes we are documenting a single package and are running '
-          'in the directory with its pubspec. Includes documentation for all '
-          'of its dependent packages.',
-      defaultsTo: true,
-      negatable: true);
-  parser.addOption('sdk', help: 'SDK directory', defaultsTo: null);
-  parser.addOption('start-page',
-      help: 'By default the viewer will start at the SDK introduction page. '
-          'To start at some other page, e.g. for a package, provide the name '
-          'of the package in this argument, e.g. --start-page=intl will make '
-          'the start page of the viewer be the intl package.',
-      defaultsTo: null);
-  parser.addFlag('indent-json',
-      help: 'Indents each level of JSON output by two spaces',
-      defaultsTo: false,
-      negatable: true);
-
-  return parser;
-}
diff --git a/pkg/docgen/lib/docgen.dart b/pkg/docgen/lib/docgen.dart
deleted file mode 100644
index a9f171a..0000000
--- a/pkg/docgen/lib/docgen.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// 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.
-
-/// **docgen** is a tool for creating machine readable representations of Dart
-/// code metadata, including: classes, members, comments and annotations.
-///
-/// docgen is run on a `.dart` file or a directory containing `.dart` files.
-///
-///      $ dart docgen.dart [OPTIONS] [FILE/DIR]
-///
-/// This creates files called `docs/<library_name>.yaml` in your current
-/// working directory.
-library docgen;
-
-import 'dart:async';
-
-import 'src/generator.dart' as gen;
-import 'src/viewer.dart' as viewer;
-
-export 'src/generator.dart' show getMirrorSystem;
-export 'src/library_helpers.dart' show getDocgenObject;
-export 'src/models.dart';
-export 'src/package_helpers.dart' show packageNameFor;
-
-/// Docgen constructor initializes the link resolver for markdown parsing.
-/// Also initializes the command line arguments.
-///
-/// [packageRoot] is the packages directory of the directory being analyzed.
-/// If [includeSdk] is `true`, then any SDK libraries explicitly imported will
-/// also be documented.
-/// If [parseSdk] is `true`, then all Dart SDK libraries will be documented.
-/// This option is useful when only the SDK libraries are needed.
-/// If [compile] is `true`, then after generating the documents, compile the
-/// viewer with dart2js.
-/// If [serve] is `true`, then after generating the documents we fire up a
-/// simple server to view the documentation.
-///
-/// Returned Future completes with true if document generation is successful.
-Future<bool> docgen(List<String> files, {String packageRoot,
-    bool includePrivate: false, bool includeSdk: false, bool parseSdk: false,
-    String introFileName: '', String out: gen.DEFAULT_OUTPUT_DIRECTORY,
-    List<String> excludeLibraries: const [],
-    bool includeDependentPackages: false, bool compile: false,
-    bool serve: false, bool noDocs: false, String startPage,
-    String pubScript : 'pub', String dartBinary: 'dart',
-    bool indentJSON: false, String sdk}) {
-  var result;
-  if (!noDocs) {
-    viewer.ensureMovedViewerCode();
-    result = gen.generateDocumentation(files, packageRoot: packageRoot,
-        includePrivate: includePrivate,
-        includeSdk: includeSdk, parseSdk: parseSdk,
-        introFileName: introFileName, out: out,
-        excludeLibraries: excludeLibraries,
-        includeDependentPackages: includeDependentPackages,
-        startPage: startPage, pubScriptValue: pubScript,
-        dartBinaryValue: dartBinary, indentJSON: indentJSON, sdk: sdk);
-    viewer.addBackViewerCode();
-    if (compile || serve) {
-      result.then((success) {
-        if (success) {
-          viewer.createViewer(serve);
-        }
-      });
-    }
-  } else if (compile || serve) {
-    gen.pubScript = pubScript;
-    gen.dartBinary = dartBinary;
-    viewer.createViewer(serve);
-  }
-  return result;
-}
diff --git a/pkg/docgen/lib/src/exports/dart2js_mirrors.dart b/pkg/docgen/lib/src/exports/dart2js_mirrors.dart
deleted file mode 100644
index d99a98c..0000000
--- a/pkg/docgen/lib/src/exports/dart2js_mirrors.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.exports.dart2js_mirrors;
-
-export 'package:compiler/src/mirrors/dart2js_mirrors.dart';
diff --git a/pkg/docgen/lib/src/exports/libraries.dart b/pkg/docgen/lib/src/exports/libraries.dart
deleted file mode 100644
index 7e48c79..0000000
--- a/pkg/docgen/lib/src/exports/libraries.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.exports.libraries;
-
-export 'package:sdk_library_metadata/libraries.dart';
diff --git a/pkg/docgen/lib/src/exports/mirrors_util.dart b/pkg/docgen/lib/src/exports/mirrors_util.dart
deleted file mode 100644
index f02b55e..0000000
--- a/pkg/docgen/lib/src/exports/mirrors_util.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.exports.mirrors_util;
-
-export 'package:compiler/src/mirrors/mirrors_util.dart';
diff --git a/pkg/docgen/lib/src/exports/source_mirrors.dart b/pkg/docgen/lib/src/exports/source_mirrors.dart
deleted file mode 100644
index 5f2f1ff..0000000
--- a/pkg/docgen/lib/src/exports/source_mirrors.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.exports.source_mirrors;
-
-export 'package:compiler/src/mirrors/source_mirrors.dart'
-    hide SourceLocation;
diff --git a/pkg/docgen/lib/src/generator.dart b/pkg/docgen/lib/src/generator.dart
deleted file mode 100644
index 18ed895..0000000
--- a/pkg/docgen/lib/src/generator.dart
+++ /dev/null
@@ -1,487 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.generator;
-
-import 'dart:async';
-import 'dart:collection';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:markdown/markdown.dart' as markdown;
-import 'package:path/path.dart' as path;
-
-import 'package:compiler/compiler.dart' as api;
-import 'package:compiler/src/filenames.dart';
-import 'package:compiler/src/mirrors/analyze.dart'
-    as dart2js;
-import 'package:compiler/src/source_file_provider.dart';
-
-import 'exports/dart2js_mirrors.dart' as dart2js_mirrors;
-import 'exports/libraries.dart';
-import 'exports/mirrors_util.dart' as dart2js_util;
-import 'exports/source_mirrors.dart';
-
-import 'io.dart';
-import 'library_helpers.dart';
-import 'models.dart';
-import 'package_helpers.dart';
-
-const String DEFAULT_OUTPUT_DIRECTORY = 'docs';
-
-/// The directory where the output docs are generated.
-String get outputDirectory => _outputDirectory;
-String _outputDirectory;
-
-/// Library names to explicitly exclude.
-///
-///   Set from the command line option
-/// --exclude-lib.
-List<String> _excluded;
-
-/// The path of the pub script.
-String pubScript;
-
-/// The path of Dart binary.
-String dartBinary;
-
-/// Docgen constructor initializes the link resolver for markdown parsing.
-/// Also initializes the command line arguments.
-///
-/// [packageRoot] is the packages directory of the directory being analyzed.
-/// If [includeSdk] is `true`, then any SDK libraries explicitly imported will
-/// also be documented.
-/// If [parseSdk] is `true`, then all Dart SDK libraries will be documented.
-/// This option is useful when only the SDK libraries are needed.
-///
-/// Returned Future completes with true if document generation is successful.
-Future<bool> generateDocumentation(List<String> files, {String packageRoot,
-    bool outputToYaml: true, bool includePrivate: false, bool includeSdk: false,
-    bool parseSdk: false, String introFileName: '',
-    out: DEFAULT_OUTPUT_DIRECTORY, List<String> excludeLibraries: const [], bool
-    includeDependentPackages: false, String startPage, String dartBinaryValue,
-    String pubScriptValue, bool indentJSON: false, String sdk}) {
-  _excluded = excludeLibraries;
-  dartBinary = dartBinaryValue;
-  pubScript = pubScriptValue;
-
-  logger.onRecord.listen((record) => print(record.message));
-
-  _ensureOutputDirectory(out);
-  var updatedPackageRoot = _obtainPackageRoot(packageRoot, parseSdk, files);
-
-  var requestedLibraries = _findLibrariesToDocument(files,
-      includeDependentPackages);
-
-  var allLibraries = []..addAll(requestedLibraries);
-  if (includeSdk) {
-    allLibraries.addAll(_listSdk());
-  }
-
-  return getMirrorSystem(allLibraries, includePrivate,
-      packageRoot: updatedPackageRoot, parseSdk: parseSdk, sdkRoot: sdk)
-      .then((MirrorSystem mirrorSystem) {
-    if (mirrorSystem.libraries.isEmpty) {
-      throw new StateError('No library mirrors were created.');
-    }
-    initializeTopLevelLibraries(mirrorSystem);
-
-    var availableLibraries = mirrorSystem.libraries.values
-        .where((each) => each.uri.scheme == 'file');
-    var availableLibrariesByPath =
-        new Map.fromIterables(availableLibraries.map((each) => each.uri),
-            availableLibraries);
-    var librariesToDocument = requestedLibraries
-          .map((each) {
-            return availableLibrariesByPath
-                .putIfAbsent(each, () => throw "Missing library $each");
-    }).toList();
-    librariesToDocument.addAll((includeSdk || parseSdk) ? sdkLibraries : []);
-    librariesToDocument.removeWhere((x) => _excluded.contains(
-        dart2js_util.nameOf(x)));
-    _documentLibraries(librariesToDocument, includeSdk, parseSdk, introFileName,
-        startPage, indentJSON);
-    return true;
-  });
-}
-
-
-/// Analyzes set of libraries by getting a mirror system and triggers the
-/// documentation of the libraries.
-Future<MirrorSystem> getMirrorSystem(List<Uri> libraries,
-    bool includePrivate, {String packageRoot, bool parseSdk: false,
-    String sdkRoot}) {
-  if (libraries.isEmpty) throw new StateError('No Libraries.');
-
-  includePrivateMembers = includePrivate;
-
-  // Finds the root of SDK library based off the location of docgen.
-  // We have two different places to look, depending if we're in a development
-  // repo or in a built SDK, either sdk or dart-sdk respectively
-  if (sdkRoot == null) {
-    var root = rootDirectory;
-    sdkRoot = path.normalize(path.absolute(path.join(root, 'sdk')));
-    if (!new Directory(sdkRoot).existsSync()) {
-      sdkRoot = path.normalize(path.absolute(path.join(root, 'dart-sdk')));
-    }
-  }
-  logger.info('SDK Root: ${sdkRoot}');
-  return analyzeLibraries(libraries, sdkRoot, packageRoot: packageRoot);
-}
-
-/// Writes [text] to a file in the output directory.
-void _writeToFile(String text, String filename) {
-  if (text == null) return;
-
-  var filePath = path.join(_outputDirectory, filename);
-
-  var parentDir = new Directory(path.dirname(filePath));
-  if (!parentDir.existsSync()) parentDir.createSync(recursive: true);
-
-  try {
-    new File(filePath)
-        .writeAsStringSync(text, mode: FileMode.WRITE);
-  } on FileSystemException catch (e) {
-    print('Failed to write to the path $filePath. Do you have write '
-        'permissions to that directory? If not, please specify a different '
-        'output directory using the --out option.');
-    exit(1);
-  }
-}
-
-/// Resolve all the links in the introductory comments for a given library or
-/// package as specified by [filename].
-String _readIntroductionFile(String fileName, bool includeSdk) {
-  var linkResolver = (name) => globalFixReference(name);
-  var defaultText = includeSdk ? _DEFAULT_SDK_INTRODUCTION : '';
-  var introText = defaultText;
-  if (fileName.isNotEmpty) {
-    var introFile = new File(fileName);
-    introText = introFile.existsSync() ? introFile.readAsStringSync() :
-        defaultText;
-  }
-  return markdown.markdownToHtml(introText, linkResolver: linkResolver,
-      inlineSyntaxes: MARKDOWN_SYNTAXES);
-}
-
-int _indexableComparer(Indexable a, Indexable b) {
-  if (a is Library && b is Library) {
-    var compare = a.packageName.compareTo(b.packageName);
-    if (compare == 0) {
-      compare = a.name.compareTo(b.name);
-    }
-    return compare;
-  }
-
-  if (a is Library) return -1;
-  if (b is Library) return 1;
-
-  return a.qualifiedName.compareTo(b.qualifiedName);
-}
-
-/// Creates documentation for filtered libraries.
-void _documentLibraries(List<LibraryMirror> libs, bool includeSdk,
-  bool parseSdk, String introFileName, String startPage, bool indentJson) {
-  libs.forEach((lib) {
-    // Files belonging to the SDK have a uri that begins with 'dart:'.
-    if (includeSdk || !lib.uri.toString().startsWith('dart:')) {
-      generateLibrary(lib);
-    }
-  });
-
-  var filteredEntities = new SplayTreeSet<Indexable>(_indexableComparer);
-  for (Indexable item in allIndexables) {
-    if (isFullChainVisible(item)) {
-      if (item is! Method ||
-          (item is Method && item.methodInheritedFrom == null)) {
-        filteredEntities.add(item);
-      }
-    }
-  }
-
-  // Outputs a JSON file with all libraries and their preview comments.
-  // This will help the viewer know what libraries are available to read in.
-  Map<String, dynamic> libraryMap = {
-      'libraries': filteredEntities.where((e) => e is Library).map((e) =>
-          e.previewMap).toList(),
-      'introduction': _readIntroductionFile(introFileName, includeSdk),
-      'filetype': 'json',
-      'sdkVersion': packageVersion(coreLibrary.mirror)
-    };
-
-  var encoder = new JsonEncoder.withIndent(indentJson ? '  ' : null);
-
-  _writeOutputFiles(libraryMap, filteredEntities, startPage, encoder);
-}
-
-/// Output all of the libraries and classes into json files for consumption by a
-/// viewer.
-void _writeOutputFiles(Map<String, dynamic> libraryMap, Iterable<Indexable>
-    filteredEntities, String startPage, JsonEncoder encoder) {
-  if (startPage != null) libraryMap['start-page'] = startPage;
-
-  _writeToFile(encoder.convert(libraryMap), 'library_list.json');
-
-  // Output libraries and classes to file after all information is generated.
-  filteredEntities.where((e) => e is Class || e is Library).forEach((output) {
-    _writeIndexableToFile(output, encoder);
-  });
-
-  // Outputs all the qualified names documented with their type.
-  // This will help generate search results.
-  var sortedEntities = filteredEntities
-      .map((e) => '${e.qualifiedName} ${e.typeName}')
-      .toList();
-
-  sortedEntities.sort();
-
-  var buffer = new StringBuffer()
-      ..writeAll(sortedEntities, '\n')
-      ..write('\n');
-
-  _writeToFile(buffer.toString(), 'index.txt');
-
-  var index = new SplayTreeMap.fromIterable(filteredEntities,
-      key: (e) => e.qualifiedName, value: (e) => e.typeName);
-
-  _writeToFile(encoder.convert(index), 'index.json');
-}
-
-/// Helper method to serialize the given Indexable out to a file.
-void _writeIndexableToFile(Indexable result, JsonEncoder encoder) {
-  var outputFile = result.fileName + '.json';
-  var output = encoder.convert(result.toMap());
-  _writeToFile(output, outputFile);
-}
-
-/// Set the location of the ouput directory, and ensure that the location is
-/// available on the file system.
-void _ensureOutputDirectory(String outputDirectory) {
-  _outputDirectory = outputDirectory;
-  var dir = new Directory(_outputDirectory);
-  if (dir.existsSync()) dir.deleteSync(recursive: true);
-}
-
-/// Analyzes set of libraries and provides a mirror system which can be used
-/// for static inspection of the source code.
-Future<MirrorSystem> analyzeLibraries(List<Uri> libraries, String
-    libraryRoot, {String packageRoot}) {
-  SourceFileProvider provider = new CompilerSourceFileProvider();
-  api.DiagnosticHandler diagnosticHandler = new FormattingDiagnosticHandler(
-      provider)
-      ..showHints = false
-      ..showWarnings = false;
-  Uri libraryUri = new Uri.file(appendSlash(libraryRoot));
-  Uri packageUri = null;
-  if (packageRoot == null) {
-    packageRoot = Platform.packageRoot;
-  }
-  packageUri = new Uri.file(appendSlash(packageRoot));
-  return dart2js.analyze(libraries, libraryUri, packageUri,
-      provider.readStringFromUri, diagnosticHandler, ['--preserve-comments',
-      '--categories=Client,Server'])..catchError((error) {
-        logger.severe('Error: Failed to create mirror system. ');
-        // TODO(janicejl): Use the stack trace package when bug is resolved.
-        // Currently, a string is thrown when it fails to create a mirror
-        // system, and it is not possible to use the stack trace. BUG(#11622)
-        // To avoid printing the stack trace.
-        exit(1);
-      });
-}
-
-/// For this run of docgen, determine the packageRoot value.
-///
-/// If packageRoot is not explicitly passed, we examine the files we're
-/// documenting to attempt to find a package root.
-String _obtainPackageRoot(String packageRoot, bool parseSdk,
-    List<String> files) {
-  if (packageRoot == null && !parseSdk) {
-    var type = FileSystemEntity.typeSync(files.first);
-    if (type == FileSystemEntityType.DIRECTORY) {
-      var files2 = listDir(files.first, recursive: true);
-      // Return '' means that there was no pubspec.yaml and therefore no
-      // packageRoot.
-      packageRoot = files2.firstWhere((f) => f.endsWith(
-          '${path.separator}pubspec.yaml'), orElse: () => '');
-      if (packageRoot != '') {
-        packageRoot = path.join(path.dirname(packageRoot), 'packages');
-      }
-    } else if (type == FileSystemEntityType.FILE) {
-      logger.warning('WARNING: No package root defined. If Docgen fails, try '
-          'again by setting the --package-root option.');
-    }
-  }
-  logger.info('Package Root: ${packageRoot}');
-  return path.normalize(path.absolute(packageRoot));
-}
-
-/// Given the user provided list of items to document, expand all directories
-/// to document out into specific files and add any dependent packages for
-/// documentation if desired.
-List<Uri> _findLibrariesToDocument(List<String> args, bool
-    includeDependentPackages) {
-  if (includeDependentPackages) {
-    args.addAll(_allDependentPackageDirs(args.first));
-  }
-
-  var libraries = new List<Uri>();
-  for (var arg in args) {
-    if (FileSystemEntity.typeSync(arg) == FileSystemEntityType.FILE) {
-      if (arg.endsWith('.dart')) {
-        var lib = new Uri.file(path.absolute(arg));
-        libraries.add(lib);
-        logger.info('Added to libraries: $lib');
-      }
-    } else {
-      libraries.addAll(_findFilesToDocumentInPackage(arg));
-    }
-  }
-  return libraries;
-}
-
-/// Given a package name, explore the directory and pull out all top level
-/// library files in the "lib" directory to document.
-List<Uri> _findFilesToDocumentInPackage(String packageDir) {
-  var libraries = [];
-  // To avoid anaylzing package files twice, only files with paths not
-  // containing '/packages' will be added. The only exception is if the file
-  // to analyze already has a '/package' in its path.
-  var files = listDir(packageDir, recursive: true, listDir: _packageDirList)
-      .where((f) => f.endsWith('.dart') &&
-        (!f.contains('${path.separator}packages') ||
-            packageDir.contains('${path.separator}packages')))
-      .toList();
-
-  var packageLibDir = path.join(packageDir, 'lib');
-  var packageLibSrcDir = path.join(packageLibDir, 'src');
-
-  files.forEach((String lib) {
-    // Only include libraries within the lib dir that are not in lib/src
-    if (path.isWithin(packageLibDir, lib) &&
-        !path.isWithin(packageLibSrcDir, lib)) {
-      // Only add the file if it does not contain 'part of'
-      // TODO(janicejl): Remove when Issue(12406) is resolved.
-      var contents = new File(lib).readAsStringSync();
-
-
-      if (contents.contains(new RegExp('\npart of ')) ||
-          contents.startsWith(new RegExp('part of '))) {
-        logger.warning('Skipping part "$lib". '
-            'Part files should be in "lib/src".');
-      } else {
-        libraries.add(new Uri.file(path.normalize(path.absolute(lib))));
-        logger.info('Added to libraries: $lib');
-      }
-    }
-  });
-  return libraries;
-}
-
-/// If [dir] contains both a `lib` directory and a `pubspec.yaml` file treat
-/// it like a package and only return the `lib` dir.
-///
-/// This ensures that packages don't have non-`lib` content documented.
-List<FileSystemEntity> _packageDirList(Directory dir) {
-  var entities = dir.listSync();
-
-  var pubspec = entities.firstWhere((e) => e is File &&
-      path.basename(e.path) == 'pubspec.yaml', orElse: () => null);
-
-  var libDir = entities.firstWhere((e) => e is Directory &&
-      path.basename(e.path) == 'lib', orElse: () => null);
-
-  if (pubspec != null && libDir != null) {
-    return [libDir];
-  } else {
-    return entities;
-  }
-}
-
-/// All of the directories for our dependent packages
-/// If this is not a package, return an empty list.
-List<String> _allDependentPackageDirs(String packageDirectory) {
-  var packageName = packageNameFor(packageDirectory);
-  if (packageName == '') return [];
-  var dependentsJson = Process.runSync(pubScript, ['list-package-dirs'],
-      workingDirectory: packageDirectory, runInShell: true);
-  if (dependentsJson.exitCode != 0) {
-    print(dependentsJson.stderr);
-  }
-  var dependents = JSON.decode(dependentsJson.stdout)['packages'];
-  return dependents != null ? dependents.values.toList() : [];
-}
-
-/// For all the libraries, return a list of the libraries that are part of
-/// the SDK.
-List<Uri> _listSdk() {
-  var sdk = new List<Uri>();
-  LIBRARIES.forEach((String name, LibraryInfo info) {
-    if (info.documented) {
-      sdk.add(Uri.parse('dart:$name'));
-      logger.info('Add to SDK: ${sdk.last}');
-    }
-  });
-  return sdk;
-}
-
-/// Currently left public for testing purposes. :-/
-void generateLibrary(dart2js_mirrors.Dart2JsLibraryMirror library) {
-  var result = new Library(library);
-  result.updateLibraryPackage(library);
-  logger.fine('Generated library for ${result.name}');
-}
-
-/// If we can't find the SDK introduction text, which will happen if running
-/// from a snapshot and using --parse-sdk or --include-sdk, then use this
-/// hard-coded version. This should be updated to be consistent with the text
-/// in docgen/doc/sdk-introduction.md
-// TODO(alanknight): It would be better if we could resolve the references to
-// dart:core etc. at load-time in the viewer. dartbug.com/20112
-const _DEFAULT_SDK_INTRODUCTION =
-    """
-Welcome to the Dart API reference documentation,
-covering the official Dart API libraries.
-Some of the most fundamental Dart libraries include:
-
-* [dart:core](./dart:core):
-  Core functionality such as strings, numbers, collections, errors,
-  dates, and URIs.
-* [dart:html](./dart:html):
-  DOM manipulation for web apps.
-* [dart:io](./dart:io):
-  I/O for command-line apps.
-
-Except for dart:core, you must import a library before you can use it.
-Here's an example of importing dart:html, dart:math, and a
-third popular library called
-[polymer.dart](http://www.dartlang.org/polymer-dart/):
-
-    import 'dart:html';
-    import 'dart:math';
-    import 'package:polymer/polymer.dart';
-
-Polymer.dart is an example of a library that isn't
-included in the Dart download,
-but is easy to get and update using the _pub package manager_.
-For information on finding, using, and publishing libraries (and more)
-with pub, see
-[pub.dartlang.org](http://pub.dartlang.org).
-
-The main site for learning and using Dart is
-[www.dartlang.org](http://www.dartlang.org).
-Check out these pages:
-
-  * [Dart homepage](http://www.dartlang.org)
-  * [Tutorials](http://www.dartlang.org/docs/tutorials/)
-  * [Programmer's Guide](http://www.dartlang.org/docs/)
-  * [Samples](http://www.dartlang.org/samples/)
-  * [A Tour of the Dart Libraries](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html)
-
-This API reference is automatically generated from the source code in the
-[Dart project](https://code.google.com/p/dart/).
-If you'd like to contribute to this documentation, see
-[Contributing](https://code.google.com/p/dart/wiki/Contributing)
-and
-[Writing API Documentation](https://code.google.com/p/dart/wiki/WritingApiDocumentation).
-""";
diff --git a/pkg/docgen/lib/src/io.dart b/pkg/docgen/lib/src/io.dart
deleted file mode 100644
index 65e69e8..0000000
--- a/pkg/docgen/lib/src/io.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// This is a helper library to make working with io easier.
-library docgen.io;
-
-// TODO(janicejl): listDir, canonicalize, resolveLink, and linkExists are from
-// pub/lib/src/io.dart. If the io.dart file becomes a package, should remove
-// copy of the functions.
-
-import 'dart:io';
-import 'package:path/path.dart' as path;
-
-/// Lists the contents of [dir].
-///
-/// If [recursive] is `true`, lists subdirectory contents (defaults to `false`).
-///
-/// Excludes files and directories beginning with `.`
-///
-/// The returned paths are guaranteed to begin with [dir].
-List<String> listDir(String dir, {bool recursive: false,
-  List<FileSystemEntity> listDir(Directory dir)}) {
-  if (listDir == null) listDir = (Directory dir) => dir.listSync();
-
-  return _doList(dir, new Set<String>(), recursive, listDir);
-}
-
-List<String> _doList(String dir, Set<String> listedDirectories, bool recurse,
-    List<FileSystemEntity> listDir(Directory dir)) {
-  var contents = <String>[];
-
-  // Avoid recursive symlinks.
-  var resolvedPath = new Directory(dir).resolveSymbolicLinksSync();
-  if (listedDirectories.contains(resolvedPath)) return [];
-
-  listedDirectories = new Set<String>.from(listedDirectories);
-  listedDirectories.add(resolvedPath);
-
-  var children = <String>[];
-  for (var entity in listDir(new Directory(dir))) {
-    // Skip hidden files and directories
-    if (path.basename(entity.path).startsWith('.')) {
-      continue;
-    }
-
-    contents.add(entity.path);
-    if (entity is Directory) {
-      // TODO(nweiz): don't manually recurse once issue 4794 is fixed.
-      // Note that once we remove the manual recursion, we'll need to
-      // explicitly filter out files in hidden directories.
-      if (recurse) {
-        children.addAll(_doList(entity.path, listedDirectories, recurse,
-            listDir));
-      }
-    }
-  }
-
-  contents.addAll(children);
-  return contents;
-}
diff --git a/pkg/docgen/lib/src/library_helpers.dart b/pkg/docgen/lib/src/library_helpers.dart
deleted file mode 100644
index 24e89d3..0000000
--- a/pkg/docgen/lib/src/library_helpers.dart
+++ /dev/null
@@ -1,220 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.library_helpers;
-
-import 'package:logging/logging.dart';
-import 'package:markdown/markdown.dart' as markdown;
-
-import 'exports/source_mirrors.dart';
-import 'exports/mirrors_util.dart' as dart2js_util;
-
-import 'models/indexable.dart';
-import 'models/library.dart';
-import 'models/dummy_mirror.dart';
-
-typedef DeclarationMirror LookupFunction(DeclarationSourceMirror declaration,
-    String name);
-
-/// Support for [:foo:]-style code comments to the markdown parser.
-final List<markdown.InlineSyntax> MARKDOWN_SYNTAXES =
-  [new markdown.CodeSyntax(r'\[:\s?((?:.|\n)*?)\s?:\]')];
-
-bool get includePrivateMembers {
-  if (_includePrivate == null) {
-    throw new StateError('includePrivate has not been set');
-  }
-  return _includePrivate;
-}
-
-void set includePrivateMembers(bool value) {
-  if (value == null) throw new ArgumentError('includePrivate cannot be null');
-  _includePrivate = value;
-}
-
-bool _includePrivate;
-
-/// Return true if this item and all of its owners are all visible.
-bool isFullChainVisible(Indexable item) {
-  return includePrivateMembers || (!item.isPrivate && (item.owner != null ?
-      isFullChainVisible(item.owner) : true));
-}
-
-/// Logger for printing out progress of documentation generation.
-final Logger logger = new Logger('Docgen');
-
-/// The dart:core library, which contains all types that are always available
-/// without import.
-Library coreLibrary;
-
-/// Set of libraries declared in the SDK, so libraries that can be accessed
-/// when running dart by default.
-Iterable<LibraryMirror> get sdkLibraries => _sdkLibraries;
-Iterable<LibraryMirror> _sdkLibraries;
-
-////// Top level resolution functions
-/// Converts all [foo] references in comments to <a>libraryName.foo</a>.
-markdown.Node globalFixReference(String name) {
-  // Attempt the look up the whole name up in the scope.
-  String elementName = findElementInScopeWithPrefix(name, '');
-  if (elementName != null) {
-    return new markdown.Element.text('a', elementName);
-  }
-  return fixComplexReference(name);
-}
-
-/// This is a more complex reference. Try to break up if its of the form A<B>
-/// where A is an alphanumeric string and B is an A, a list of B ("B, B, B"),
-/// or of the form A<B>. Note: unlike other the other markdown-style links,
-/// all text inside the square brackets is treated as part of the link (aka
-/// the * is interpreted literally as a *, not as a indicator for bold <em>.
-///
-/// Example: [foo&lt;_bar_>] will produce
-/// <a>resolvedFoo</a>&lt;<a>resolved_bar_</a>> rather than an italicized
-/// version of resolvedBar.
-markdown.Node fixComplexReference(String name) {
-  // Parse into multiple elements we can try to resolve.
-  var tokens = _tokenizeComplexReference(name);
-
-  // Produce an html representation of our elements. Group unresolved and
-  // plain text are grouped into "link" elements so they display as code.
-  final textElements = [' ', ',', '>', _LESS_THAN];
-  var accumulatedHtml = '';
-
-  for (var token in tokens) {
-    bool added = false;
-    if (!textElements.contains(token)) {
-      String elementName = findElementInScopeWithPrefix(token, '');
-      if (elementName != null) {
-        accumulatedHtml += markdown.renderToHtml([new markdown.Element.text('a',
-            elementName)]);
-        added = true;
-      }
-    }
-    if (!added) {
-      accumulatedHtml += token;
-    }
-  }
-  return new markdown.Text(accumulatedHtml);
-}
-
-String findElementInScopeWithPrefix(String name, String packagePrefix) {
-  var lookupFunc = determineLookupFunc(name);
-  // Look in the dart core library scope.
-  var coreScope = coreLibrary == null ? null : lookupFunc(coreLibrary.mirror,
-      name);
-  if (coreScope != null) return packagePrefix + coreLibrary.docName;
-
-  // If it's a reference that starts with a another library name, then it
-  // looks for a match of that library name in the other sdk libraries.
-  if (name.contains('.')) {
-    var index = name.indexOf('.');
-    var libraryName = name.substring(0, index);
-    var remainingName = name.substring(index + 1);
-    foundLibraryName(library) => library.uri.pathSegments[0] == libraryName;
-
-    if (_sdkLibraries.any(foundLibraryName)) {
-      var library = _sdkLibraries.singleWhere(foundLibraryName);
-      // Look to see if it's a fully qualified library name.
-      var scope = determineLookupFunc(remainingName)(library, remainingName);
-      if (scope != null) {
-        var result = getDocgenObject(scope);
-        if (result is DummyMirror) {
-          return packagePrefix + result.docName;
-        } else {
-          return result.packagePrefix + result.docName;
-        }
-      }
-    }
-  }
-  return null;
-}
-
-/// Given a Dart2jsMirror, find the corresponding Docgen [MirrorBased] object.
-///
-/// We have this global lookup function to avoid re-implementing looking up
-/// the scoping rules for comment resolution here (it is currently done in
-/// mirrors). If no corresponding MirrorBased object is found, we return a
-/// [DummyMirror] that simply returns the original mirror's qualifiedName
-/// while behaving like a MirrorBased object.
-Indexable getDocgenObject(DeclarationMirror mirror, [Indexable owner]) {
-  Map<String, Indexable> docgenObj = lookupIndexableMap(mirror);
-
-  if (docgenObj == null) {
-    return new DummyMirror(mirror, owner);
-  }
-
-  var setToExamine = new Set();
-  if (owner != null) {
-    var firstSet = docgenObj[owner.docName];
-    if (firstSet != null) setToExamine.add(firstSet);
-    if (coreLibrary != null && docgenObj[coreLibrary.docName] != null) {
-      setToExamine.add(docgenObj[coreLibrary.docName]);
-    }
-  } else {
-    setToExamine.addAll(docgenObj.values);
-  }
-
-  Set<Indexable> results = new Set<Indexable>();
-  for (Indexable indexable in setToExamine) {
-    if (indexable.mirror.qualifiedName == mirror.qualifiedName &&
-        indexable.isValidMirror(mirror)) {
-      results.add(indexable);
-    }
-  }
-
-  if (results.length > 0) {
-    // This might occur if we didn't specify an "owner."
-    return results.first;
-  }
-  return new DummyMirror(mirror, owner);
-}
-
-void initializeTopLevelLibraries(MirrorSystem mirrorSystem) {
-  _sdkLibraries = mirrorSystem.libraries.values.where(
-      (each) => each.uri.scheme == 'dart');
-  coreLibrary = new Library(_sdkLibraries.singleWhere((lib) =>
-      lib.uri.toString().startsWith('dart:core')));
-}
-
-/// For a given name, determine if we need to resolve it as a qualified name
-/// or a simple name in the source mirors.
-LookupFunction determineLookupFunc(String name) => name.contains('.') ?
-  dart2js_util.lookupQualifiedInScope :
-    (mirror, name) => mirror.lookupInScope(name);
-
-/// Chunk the provided name into individual parts to be resolved. We take a
-/// simplistic approach to chunking, though, we break at " ", ",", "&lt;"
-/// and ">". All other characters are grouped into the name to be resolved.
-/// As a result, these characters will all be treated as part of the item to
-/// be resolved (aka the * is interpreted literally as a *, not as an
-/// indicator for bold <em>.
-List<String> _tokenizeComplexReference(String name) {
-  var tokens = [];
-  var append = false;
-  var index = 0;
-  while (index < name.length) {
-    if (name.indexOf(_LESS_THAN, index) == index) {
-      tokens.add(_LESS_THAN);
-      append = false;
-      index += _LESS_THAN.length;
-    } else if (name[index] == ' ' || name[index] == ',' || name[index] == '>') {
-      tokens.add(name[index]);
-      append = false;
-      index++;
-    } else {
-      if (append) {
-        tokens[tokens.length - 1] = tokens.last + name[index];
-      } else {
-        tokens.add(name[index]);
-        append = true;
-      }
-      index++;
-    }
-  }
-  return tokens;
-}
-
-// HTML escaped version of '<' character.
-const _LESS_THAN = '&lt;';
diff --git a/pkg/docgen/lib/src/mdn.dart b/pkg/docgen/lib/src/mdn.dart
deleted file mode 100644
index f5fd69b..0000000
--- a/pkg/docgen/lib/src/mdn.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.mdn;
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as p;
-
-// TODO(janicejl): Make MDN content generic or pluggable.
-
-/// Map of all the comments for dom elements from MDN.
-Map<String, dynamic> _mdn;
-
-/// Generates MDN comments from database.json.
-String mdnComment(String root, Logger logger, String domName) {
-  //Check if MDN is loaded.
-  if (_mdn == null) {
-    // Reading in MDN related json file.
-    var mdnPath = p.join(root, 'utils/apidoc/mdn/database.json');
-    var mdnFile = new File(mdnPath);
-    if (mdnFile.existsSync()) {
-      _mdn = JSON.decode(mdnFile.readAsStringSync());
-    } else {
-      logger.warning("Cannot find MDN docs expected at $mdnPath");
-      _mdn = {};
-    }
-  }
-
-  var parts = domName.split('.');
-  if (parts.length == 2) return _mdnMemberComment(parts[0], parts[1]);
-  if (parts.length == 1) return _mdnTypeComment(parts[0]);
-
-  throw new StateError('More than two items is not supported: $parts');
-}
-
-/// Generates the MDN Comment for variables and method DOM elements.
-String _mdnMemberComment(String type, String member) {
-  var mdnType = _mdn[type];
-  if (mdnType == null) return '';
-  var mdnMember = mdnType['members'].firstWhere((e) => e['name'] == member,
-      orElse: () => null);
-  if (mdnMember == null) return '';
-  if (mdnMember['help'] == null || mdnMember['help'] == '') return '';
-  if (mdnMember['url'] == null) return '';
-  return _htmlifyMdn(mdnMember['help'], mdnMember['url']);
-}
-
-/// Generates the MDN Comment for class DOM elements.
-String _mdnTypeComment(String type) {
-  var mdnType = _mdn[type];
-  if (mdnType == null) return '';
-  if (mdnType['summary'] == null || mdnType['summary'] == "") return '';
-  if (mdnType['srcUrl'] == null) return '';
-  return _htmlifyMdn(mdnType['summary'], mdnType['srcUrl']);
-}
-
-/// Encloses the given content in an MDN div and the original source link.
-String _htmlifyMdn(String content, String url) {
-  return '<div class="mdn">' + content.trim() + '<p class="mdn-note">'
-      '<a href="' + url.trim() + '">from Mdn</a></p></div>';
-}
diff --git a/pkg/docgen/lib/src/models.dart b/pkg/docgen/lib/src/models.dart
deleted file mode 100644
index ad61145..0000000
--- a/pkg/docgen/lib/src/models.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models;
-
-export 'models/class.dart';
-export 'models/indexable.dart';
-export 'models/library.dart';
-export 'models/method.dart';
-export 'models/parameter.dart';
-export 'models/typedef.dart';
-export 'models/variable.dart';
diff --git a/pkg/docgen/lib/src/models/annotation.dart b/pkg/docgen/lib/src/models/annotation.dart
deleted file mode 100644
index 766939c..0000000
--- a/pkg/docgen/lib/src/models/annotation.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.annotation;
-
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-
-import 'library.dart';
-import 'mirror_based.dart';
-
-import 'dart:mirrors';
-
-/// Holds the name of the annotation, and its parameters.
-class Annotation extends MirrorBased<ClassMirror> {
-  /// The class of this annotation.
-  DeclarationMirror mirror;
-  final Library owningLibrary;
-  List<String> parameters;
-
-  Annotation(this.owningLibrary, this.mirror,
-             [List<String> this.parameters = const <String>[]]);
-
-  Map toMap() => {
-    'name': owningLibrary.packagePrefix +
-        getDocgenObject(mirror, owningLibrary).docName,
-    'parameters': parameters
-  };
-}
-
diff --git a/pkg/docgen/lib/src/models/class.dart b/pkg/docgen/lib/src/models/class.dart
deleted file mode 100644
index f323eb5..0000000
--- a/pkg/docgen/lib/src/models/class.dart
+++ /dev/null
@@ -1,245 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.clazz;
-
-import '../exports/dart2js_mirrors.dart' as dart2js_mirrors;
-import '../exports/mirrors_util.dart' as dart2js_util;
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-
-import 'dummy_mirror.dart';
-import 'generic.dart';
-import 'library.dart';
-import 'method.dart';
-import 'model_helpers.dart';
-import 'owned_indexable.dart';
-import 'variable.dart';
-
-/// A class containing contents of a Dart class.
-class Class extends OwnedIndexable<dart2js_mirrors.Dart2JsInterfaceTypeMirror>
-    implements Comparable<Class> {
-
-  /// List of the names of interfaces that this class implements.
-  List<Class> interfaces = [];
-
-  /// Names of classes that extends or implements this class.
-  Set<Class> subclasses = new Set<Class>();
-
-  /// Top-level variables in the class.
-  Map<String, Variable> variables;
-
-  /// Inherited variables in the class.
-  final Map<String, Variable> inheritedVariables = {};
-
-  /// Methods in the class.
-  Map<String, Method> methods;
-
-  final Map<String, Method> inheritedMethods = new Map<String, Method>();
-
-  /// Generic infomation about the class.
-  final Map<String, Generic> generics;
-
-  Class _superclass;
-  bool get isAbstract => mirror.isAbstract;
-
-  /// Make sure that we don't check for inherited comments more than once.
-  bool _commentsEnsured = false;
-
-  /// Returns the [Class] for the given [mirror] if it has already been created,
-  /// else creates it.
-  factory Class(ClassMirror mirror, Library owner) {
-    var clazz = getDocgenObject(mirror, owner);
-    if (clazz is DummyMirror) {
-      clazz = new Class._(mirror, owner);
-    }
-    return clazz;
-  }
-
-  /// Called when we are constructing a superclass or interface class, but it
-  /// is not known if it belongs to the same owner as the original class. In
-  /// this case, we create an object whose owner is what the original mirror
-  /// says it is.
-  factory Class._possiblyDifferentOwner(ClassMirror mirror,
-      Library originalOwner) {
-    var realOwner = getDocgenObject(mirror.owner);
-    if (realOwner is Library) {
-      return new Class(mirror, realOwner);
-    } else {
-      return new Class(mirror, originalOwner);
-    }
-  }
-
-  Class._(ClassSourceMirror classMirror, Library owner)
-      : generics = createGenerics(classMirror),
-        super(classMirror, owner) {
-
-    // The reason we do this madness is the superclass and interface owners may
-    // not be this class's owner!! Example: BaseClient in http pkg.
-    var superinterfaces = classMirror.superinterfaces.map(
-        (interface) => new Class._possiblyDifferentOwner(interface, owner));
-    this._superclass = classMirror.superclass == null? null :
-        new Class._possiblyDifferentOwner(classMirror.superclass, owner);
-
-    interfaces = superinterfaces.toList();
-    variables = createVariables(
-        dart2js_util.variablesOf(classMirror.declarations), this);
-    methods = createMethods(dart2js_util.anyMethodOf(classMirror.declarations),
-        this);
-
-    // Tell superclass that you are a subclass, unless you are not
-    // visible or an intermediary mixin class.
-    if (!classMirror.isNameSynthetic && isVisible && _superclass != null) {
-      _superclass.addSubclass(this);
-    }
-
-    if (this._superclass != null) addInherited(_superclass);
-    interfaces.forEach((interface) => addInherited(interface));
-  }
-
-  String _lookupInClassAndSuperclasses(String name) {
-    var lookupFunc = determineLookupFunc(name);
-    var classScope = this;
-    while (classScope != null) {
-      var classFunc = lookupFunc(classScope.mirror, name);
-      if (classFunc != null) {
-        return packagePrefix + getDocgenObject(classFunc, owner).docName;
-      }
-      classScope = classScope._superclass;
-    }
-    return null;
-  }
-
-  /// Look for the specified name starting with the current member, and
-  /// progressively working outward to the current library scope.
-  String findElementInScope(String name) {
-    var lookupFunc = determineLookupFunc(name);
-    var result = _lookupInClassAndSuperclasses(name);
-    if (result != null) {
-      return result;
-    }
-    result = owner.findElementInScope(name);
-    return result == null ? super.findElementInScope(name) : result;
-  }
-
-  String get typeName => 'class';
-
-  /// Add all inherited variables and methods from the provided superclass.
-  /// If [_includePrivate] is true, it also adds the variables and methods from
-  /// the superclass.
-  void addInherited(Class superclass) {
-    inheritedVariables.addAll(superclass.inheritedVariables);
-    inheritedVariables.addAll(_allButStatics(superclass.variables));
-    addInheritedMethod(superclass, this);
-  }
-
-  /** [newParent] refers to the actual class is currently using these methods.
-   * which may be different because with the mirror system, we only point to the
-   * original canonical superclasse's method.
-   */
-  void addInheritedMethod(Class parent, Class newParent) {
-    parent.inheritedMethods.forEach((name, method) {
-      if (!method.mirror.isConstructor) {
-        inheritedMethods[name] = new Method(method.mirror, newParent, method);
-      }
-    });
-    _allButStatics(parent.methods).forEach((name, method) {
-      if (!method.mirror.isConstructor) {
-        inheritedMethods[name] = new Method(method.mirror, newParent, method);
-      }
-    });
-  }
-
-  /// Remove statics from the map of inherited items before adding them.
-  Map _allButStatics(Map items) {
-    var result = {};
-    items.forEach((name, item) {
-      if (!item.isStatic) {
-        result[name] = item;
-      }
-    });
-    return result;
-  }
-
-  /// Add the subclass to the class.
-  ///
-  /// If [this] is private (or an intermediary mixin class), it will add the
-  /// subclass to the list of subclasses in the superclasses.
-  void addSubclass(Class subclass) {
-    if (docName == 'dart:core.Object') return;
-
-    if (!includePrivateMembers && isPrivate || mirror.isNameSynthetic) {
-      if (_superclass != null) _superclass.addSubclass(subclass);
-      interfaces.forEach((interface) {
-        interface.addSubclass(subclass);
-      });
-    } else {
-      subclasses.add(subclass);
-    }
-  }
-
-  /// Check if this [Class] is an error or exception.
-  bool isError() {
-    if (qualifiedName == 'dart:core.Error' ||
-        qualifiedName == 'dart:core.Exception')
-      return true;
-    for (var interface in interfaces) {
-      if (interface.isError()) return true;
-    }
-    if (_superclass == null) return false;
-    return _superclass.isError();
-  }
-
-  /// Makes sure that all methods with inherited equivalents have comments.
-  void ensureComments() {
-    if (_commentsEnsured) return;
-    _commentsEnsured = true;
-    if (_superclass != null) _superclass.ensureComments();
-    inheritedMethods.forEach((qualifiedName, inheritedMethod) {
-      var method = methods[qualifiedName];
-      if (method != null) {
-        // if we have overwritten this method in this class, we still provide
-        // the opportunity to inherit the comments.
-        method.ensureCommentFor(inheritedMethod);
-      }
-    });
-    // we need to populate the comments for all methods. so that the subclasses
-    // can get for their inherited versions the comments.
-    methods.forEach((qualifiedName, method) {
-      if (!method.mirror.isConstructor) method.ensureCommentFor(method);
-    });
-  }
-
-  /// If a class extends a private superclass, find the closest public
-  /// superclass of the private superclass.
-  String validSuperclass() {
-    if (_superclass == null) return 'dart:core.Object';
-    if (_superclass.isVisible) return _superclass.qualifiedName;
-    return _superclass.validSuperclass();
-  }
-
-  /// Generates a map describing the [Class] object.
-  Map toMap() => {
-    'name': name,
-    'qualifiedName': qualifiedName,
-    'comment': comment,
-    'isAbstract' : isAbstract,
-    'superclass': validSuperclass(),
-    'implements': interfaces.where((i) => i.isVisible)
-        .map((e) => e.qualifiedName).toList(),
-    'subclass': (subclasses.toList()..sort())
-        .map((x) => x.qualifiedName).toList(),
-    'variables': recurseMap(variables),
-    'inheritedVariables': recurseMap(inheritedVariables),
-    'methods': expandMethodMap(methods),
-    'inheritedMethods': expandMethodMap(inheritedMethods),
-    'annotations': annotations.map((a) => a.toMap()).toList(),
-    'generics': recurseMap(generics)
-  };
-
-  int compareTo(Class other) => name.compareTo(other.name);
-
-  bool isValidMirror(DeclarationMirror mirror) => mirror is ClassMirror;
-}
diff --git a/pkg/docgen/lib/src/models/closure.dart b/pkg/docgen/lib/src/models/closure.dart
deleted file mode 100644
index 2fcfa19..0000000
--- a/pkg/docgen/lib/src/models/closure.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.closure;
-
-import '../exports/source_mirrors.dart';
-
-import 'doc_gen_type.dart';
-import 'indexable.dart';
-import 'mirror_based.dart';
-import 'model_helpers.dart';
-import 'parameter.dart';
-
-/// A class containing the properties of a function to be called (used in our
-/// case specifically to illustrate evidence of the type of function for a
-/// parameter).
-class Closure extends MirrorBased<FunctionTypeMirror> {
-
-  /// Parameters for this method.
-  final Map<String, Parameter> parameters;
-  final DocGenType returnType;
-  final FunctionTypeMirror mirror;
-
-  Closure(FunctionTypeMirror mirror, Indexable owner)
-    : returnType = new DocGenType(mirror.returnType, owner.owningLibrary),
-      parameters = createParameters(mirror.parameters, owner),
-      mirror = mirror;
-
-  /// Generates a map describing the [Method] object.
-  Map toMap() => {
-    'return': [returnType.toMap()],
-    'parameters': recurseMap(parameters),
-  };
-}
\ No newline at end of file
diff --git a/pkg/docgen/lib/src/models/doc_gen_type.dart b/pkg/docgen/lib/src/models/doc_gen_type.dart
deleted file mode 100644
index 47fc99b..0000000
--- a/pkg/docgen/lib/src/models/doc_gen_type.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.doc_gen_type;
-
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-
-import 'library.dart';
-import 'mirror_based.dart';
-
-/// Docgen wrapper around the mirror for a return type, and/or its generic
-/// type parameters.
-///
-/// Return types are of a form [outer]<[inner]>.
-/// If there is no [inner] part, [inner] will be an empty list.
-///
-/// For example:
-///        int size()
-///          "return" :
-///            - "outer" : "dart:core.int"
-///              "inner" :
-///
-///        List<String> toList()
-///          "return" :
-///            - "outer" : "dart:core.List"
-///              "inner" :
-///                - "outer" : "dart:core.String"
-///                  "inner" :
-///
-///        Map<String, List<int>>
-///          "return" :
-///            - "outer" : "dart:core.Map"
-///              "inner" :
-///                - "outer" : "dart:core.String"
-///                  "inner" :
-///                - "outer" : "dart:core.List"
-///                  "inner" :
-///                    - "outer" : "dart:core.int"
-///                      "inner" :
-class DocGenType extends MirrorBased {
-  final TypeMirror mirror;
-  final Library owningLibrary;
-
-  DocGenType(this.mirror, this.owningLibrary);
-
-  Map toMap() {
-    var result = getDocgenObject(mirror, owningLibrary);
-    return {
-      // We may encounter types whose corresponding library has not been
-      // processed yet, so look up with the owningLibrary at the last moment.
-      'outer': result.packagePrefix + result.docName,
-      'inner': _createTypeGenerics(mirror).map((e) => e.toMap()).toList(),
-    };
-  }
-
-  /// Returns a list of [DocGenType] objects constructed from TypeMirrors.
-  List<DocGenType> _createTypeGenerics(TypeMirror mirror) {
-    if (mirror is! ClassMirror) return [];
-    return mirror.typeArguments
-        .map((e) => new DocGenType(e, owningLibrary))
-        .toList();
-  }
-}
diff --git a/pkg/docgen/lib/src/models/dummy_mirror.dart b/pkg/docgen/lib/src/models/dummy_mirror.dart
deleted file mode 100644
index 9ad612a..0000000
--- a/pkg/docgen/lib/src/models/dummy_mirror.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.dummy_mirror;
-
-import '../exports/mirrors_util.dart' as dart2js_util;
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-
-import 'indexable.dart';
-import 'model_helpers.dart';
-
-/// For types that we do not explicitly create or have not yet created in our
-/// entity map (like core types).
-class DummyMirror implements Indexable {
-  final DeclarationMirror mirror;
-  /// The library that contains this element, if any. Used as a hint to help
-  /// determine which object we're referring to when looking up this mirror in
-  /// our map.
-  final Indexable owner;
-
-  DummyMirror(this.mirror, [this.owner]);
-
-  String get docName {
-    if (mirror is LibraryMirror) {
-      return getLibraryDocName(mirror);
-    }
-    var mirrorOwner = mirror.owner;
-    if (mirrorOwner == null) return dart2js_util.qualifiedNameOf(mirror);
-    var simpleName = dart2js_util.nameOf(mirror);
-    if (mirror is MethodMirror && (mirror as MethodMirror).isConstructor) {
-      // We name constructors specially -- repeating the class name and a
-      // "-" to separate the constructor from its name (if any).
-      simpleName = '${dart2js_util.nameOf(mirrorOwner)}-$simpleName';
-    }
-    return getDocgenObject(mirrorOwner, owner).docName + '.' +
-        simpleName;
-  }
-
-  bool get isPrivate => mirror.isPrivate;
-
-  String get packageName {
-    var libMirror = _getOwningLibraryFromMirror(mirror);
-    if (libMirror != null) {
-      return getPackageName(libMirror);
-    }
-    return '';
-  }
-
-  String get packagePrefix => packageName == null || packageName.isEmpty ?
-      '' : '$packageName/';
-
-  // This is a known incomplete implementation of Indexable
-  // overriding noSuchMethod to remove static warnings
-  noSuchMethod(Invocation invocation) {
-    throw new UnimplementedError(invocation.memberName.toString());
-  }
-}
-
-LibraryMirror _getOwningLibraryFromMirror(DeclarationMirror mirror) {
-  if (mirror == null) return null;
-  if (mirror is LibraryMirror) return mirror;
-  return _getOwningLibraryFromMirror(mirror.owner);
-}
diff --git a/pkg/docgen/lib/src/models/generic.dart b/pkg/docgen/lib/src/models/generic.dart
deleted file mode 100644
index 46a48a1..0000000
--- a/pkg/docgen/lib/src/models/generic.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.generic;
-
-import '../exports/source_mirrors.dart';
-import '../exports/mirrors_util.dart' as dart2js_util;
-
-import 'mirror_based.dart';
-
-/// A Docgen wrapper around the dart2js mirror for a generic type.
-class Generic extends MirrorBased<TypeVariableMirror> {
-  final TypeVariableMirror mirror;
-
-  Generic(this.mirror);
-
-  Map toMap() => {
-    'name': dart2js_util.nameOf(mirror),
-    'type': dart2js_util.qualifiedNameOf(mirror.upperBound)
-  };
-}
diff --git a/pkg/docgen/lib/src/models/indexable.dart b/pkg/docgen/lib/src/models/indexable.dart
deleted file mode 100644
index 1c14a79..0000000
--- a/pkg/docgen/lib/src/models/indexable.dart
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.indexable;
-
-import 'dart:collection';
-
-import 'package:markdown/markdown.dart' as markdown;
-
-import '../exports/mirrors_util.dart' as dart2js_util;
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-import 'library.dart';
-import 'mirror_based.dart';
-import 'model_helpers.dart';
-
-/// An item that is categorized in our mirrorToDocgen map, as a distinct,
-/// searchable element.
-///
-/// These are items that refer to concrete entities (a Class, for example,
-/// but not a Type, which is a "pointer" to a class) that we wish to be
-/// globally resolvable. This includes things such as class methods and
-/// variables, but parameters for methods are not "Indexable" as we do not want
-/// the user to be able to search for a method based on its parameter names!
-/// The set of indexable items also includes Typedefs, since the user can refer
-/// to them as concrete entities in a particular scope.
-abstract class Indexable<TMirror extends DeclarationMirror>
-    extends MirrorBased<TMirror> {
-
-  Library get owningLibrary => owner.owningLibrary;
-
-  /// The reference to this element based on where it is printed as a
-  /// documentation file and also the unique URL to refer to this item.
-  ///
-  /// The qualified name (for URL purposes) and the file name are the same,
-  /// of the form packageName/ClassName or packageName/ClassName.methodName.
-  /// This defines both the URL and the directory structure.
-  String get qualifiedName => packagePrefix + ownerPrefix + name;
-
-  /// The name of the file we write this object's data into. The same as the
-  /// qualified name but with leading colons (i.e. dart:)
-  /// replaced by hyphens because of Windows.
-  String get fileName => qualifiedName.replaceFirst(":", "-");
-
-  final TMirror mirror;
-  final bool isPrivate;
-  /// The comment text pre-resolution. We keep this around because inherited
-  /// methods need to resolve links differently from the superclass.
-  String unresolvedComment = '';
-
-  Indexable(TMirror mirror)
-      : this.mirror = mirror,
-        this.isPrivate = isHidden(mirror as DeclarationSourceMirror) {
-
-    var mirrorQualifiedName = dart2js_util.qualifiedNameOf(this.mirror);
-
-    var map = _mirrorToDocgen.putIfAbsent(mirrorQualifiedName,
-        () => new HashMap<String, Indexable>());
-
-    var added = false;
-    map.putIfAbsent(owner.docName, () {
-      added = true;
-      return this;
-    });
-
-    if (!added) {
-      throw new StateError('An indexable has already been stored for '
-          '${owner.docName}');
-    }
-  }
-
-  /// Returns this object's qualified name, but following the conventions
-  /// we're using in Dartdoc, which is that library names with dots in them
-  /// have them replaced with hyphens.
-  String get docName;
-
-  /// Converts all [foo] references in comments to <a>libraryName.foo</a>.
-  markdown.Node fixReference(String name) {
-    // Attempt the look up the whole name up in the scope.
-    String elementName = findElementInScope(name);
-    if (elementName != null) {
-      return new markdown.Element.text('a', elementName);
-    }
-    return fixComplexReference(name);
-  }
-
-  /// Look for the specified name starting with the current member, and
-  /// progressively working outward to the current library scope.
-  String findElementInScope(String name) =>
-      findElementInScopeWithPrefix(name, packagePrefix);
-
-  /// The full docName of the owner element, appended with a '.' for this
-  /// object's name to be appended.
-  String get ownerPrefix => owner.docName != '' ? owner.docName + '.' : '';
-
-  /// The prefix String to refer to the package that this item is in, for URLs
-  /// and comment resolution.
-  ///
-  /// The prefix can be prepended to a qualified name to get a fully unique
-  /// name among all packages.
-  String get packagePrefix;
-
-  /// Documentation comment with converted markdown and all links resolved.
-  String commentField;
-
-  /// Accessor to documentation comment with markdown converted to html and all
-  /// links resolved.
-  String get comment {
-    if (commentField != null) return commentField;
-
-    commentField = commentToHtml();
-    if (commentField.isEmpty) {
-      commentField = getMdnComment();
-    }
-    return commentField;
-  }
-
-  void set comment(x) {
-    commentField = x;
-  }
-
-  /// The simple name to refer to this item.
-  String get name => dart2js_util.nameOf(mirror);
-
-  /// Accessor to the parent item that owns this item.
-  ///
-  /// "Owning" is defined as the object one scope-level above which this item
-  /// is defined. Ex: The owner for a top level class, would be its enclosing
-  /// library. The owner of a local variable in a method would be the enclosing
-  /// method.
-  Indexable get owner;
-
-  /// Generates MDN comments from database.json.
-  String getMdnComment();
-
-  /// The type of this member to be used in index.txt.
-  String get typeName;
-
-  /// Creates a [Map] with this [Indexable]'s name and a preview comment.
-  Map get previewMap {
-    var finalMap = { 'name' : name, 'qualifiedName' : qualifiedName };
-    var pre = preview;
-    if (pre != null) finalMap['preview'] = pre;
-    return finalMap;
-  }
-
-  String get preview {
-    if (comment != '') {
-      var index = comment.indexOf('</p>');
-      return index > 0 ?
-          '${comment.substring(0, index)}</p>' :
-          '<p><i>Comment preview not available</i></p>';
-    }
-    return null;
-  }
-
-  /// Accessor to obtain the raw comment text for a given item, _without_ any
-  /// of the links resolved.
-  String get _commentText {
-    String commentText;
-    mirror.metadata.forEach((metadata) {
-      if (metadata is CommentInstanceMirror) {
-        CommentInstanceMirror comment = metadata;
-        if (comment.isDocComment) {
-          if (commentText == null) {
-            commentText = comment.trimmedText;
-          } else {
-            commentText = '$commentText\n${comment.trimmedText}';
-          }
-        }
-      }
-    });
-    return commentText;
-  }
-
-  /// Returns any documentation comments associated with a mirror with
-  /// simple markdown converted to html.
-  ///
-  /// By default we resolve any comment references within our own scope.
-  /// However, if a method is inherited, we want the inherited comments, but
-  /// links to the subclasses's version of the methods.
-  String commentToHtml([Indexable resolvingScope]) {
-    if (resolvingScope == null) resolvingScope = this;
-    var commentText = _commentText;
-    unresolvedComment = commentText;
-
-    commentText = commentText == null ? '' :
-        markdown.markdownToHtml(commentText.trim(),
-            linkResolver: resolvingScope.fixReference,
-            inlineSyntaxes: MARKDOWN_SYNTAXES);
-    return commentText;
-  }
-
-  /// Return a map representation of this type.
-  Map toMap();
-
-  /// Accessor to determine if this item and all of its owners are visible.
-  bool get isVisible => isFullChainVisible(this);
-
-  /// Returns true if [mirror] is the correct type of mirror that this Docgen
-  /// object wraps. (Workaround for the fact that Types are not first class.)
-  bool isValidMirror(DeclarationMirror mirror);
-}
-
-/// Index of all the dart2js mirrors examined to corresponding MirrorBased
-/// docgen objects.
-///
-/// Used for lookup because of the dart2js mirrors exports
-/// issue. The second level map is indexed by owner docName for faster lookup.
-/// Why two levels of lookup? Speed, man. Speed.
-final Map<String, Map<String, Indexable>> _mirrorToDocgen =
-    new HashMap<String, Map<String, Indexable>>();
-
-Iterable<Indexable> get allIndexables =>
-    _mirrorToDocgen.values.expand((map) => map.values);
-
-Map<String, Indexable> lookupIndexableMap(DeclarationMirror mirror) {
-  return _mirrorToDocgen[dart2js_util.qualifiedNameOf(mirror)];
-}
diff --git a/pkg/docgen/lib/src/models/library.dart b/pkg/docgen/lib/src/models/library.dart
deleted file mode 100644
index 9403239..0000000
--- a/pkg/docgen/lib/src/models/library.dart
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.library;
-
-import 'dart:io';
-
-import 'package:markdown/markdown.dart' as markdown;
-
-import '../exports/source_mirrors.dart';
-import '../exports/mirrors_util.dart' as dart2js_util;
-
-import '../library_helpers.dart';
-import '../package_helpers.dart';
-
-import 'class.dart';
-import 'dummy_mirror.dart';
-import 'indexable.dart';
-import 'method.dart';
-import 'model_helpers.dart';
-import 'typedef.dart';
-import 'variable.dart';
-
-/// A class containing contents of a Dart library.
-class Library extends Indexable {
-  final Map<String, Class> classes = {};
-  final Map<String, Typedef> typedefs = {};
-  final Map<String, Class> errors = {};
-
-  /// Top-level variables in the library.
-  Map<String, Variable> variables;
-
-  /// Top-level functions in the library.
-  Map<String, Method> functions;
-
-  String packageName = '';
-  bool _hasBeenCheckedForPackage = false;
-  String packageIntro;
-
-  Indexable get owner => const _LibraryOwner();
-
-  Library get owningLibrary => this;
-
-  /// Returns the [Library] for the given [mirror] if it has already been
-  /// created, else creates it.
-  factory Library(LibraryMirror mirror) {
-    var library = getDocgenObject(mirror);
-    if (library is DummyMirror) {
-      library = new Library._(mirror);
-    }
-    return library;
-  }
-
-  Library._(LibraryMirror libraryMirror) : super(libraryMirror) {
-    var exported = calcExportedItems(libraryMirror, {});
-    var exportedClasses = addAll(exported['classes'],
-        dart2js_util.typesOf(libraryMirror.declarations));
-    updateLibraryPackage(mirror);
-    exportedClasses.forEach((String mirrorName, TypeMirror mirror) {
-      if (mirror is TypedefMirror) {
-        // This is actually a Dart2jsTypedefMirror, and it does define value,
-        // but we don't have visibility to that type.
-        if (includePrivateMembers || !mirror.isPrivate) {
-          typedefs[dart2js_util.nameOf(mirror)] = new Typedef(mirror, this);
-        }
-      } else if (mirror is ClassMirror) {
-        var clazz = new Class(mirror, this);
-
-        if (clazz.isError()) {
-          errors[dart2js_util.nameOf(mirror)] = clazz;
-        } else {
-          classes[dart2js_util.nameOf(mirror)] = clazz;
-        }
-      } else {
-        throw new ArgumentError(
-            '${dart2js_util.nameOf(mirror)} - no class type match. ');
-      }
-    });
-    this.functions = createMethods(addAll(exported['methods'],
-        libraryMirror.declarations.values.where(
-            (mirror) => mirror is MethodMirror)).values, this);
-    this.variables = createVariables(addAll(exported['variables'],
-        dart2js_util.variablesOf(libraryMirror.declarations)).values, this);
-  }
-
-  /// Look for the specified name starting with the current member, and
-  /// progressively working outward to the current library scope.
-  String findElementInScope(String name) {
-    var lookupFunc = determineLookupFunc(name);
-    var libraryScope = lookupFunc(mirror, name);
-    if (libraryScope != null) {
-      var result = getDocgenObject(libraryScope, this);
-      if (result is DummyMirror) return packagePrefix + result.docName;
-      return result.packagePrefix + result.docName;
-    }
-    return super.findElementInScope(name);
-  }
-
-  String getMdnComment() => '';
-
-  /// For a library's [mirror], determine the name of the package (if any) we
-  /// believe it came from (because of its file URI).
-  ///
-  /// If no package could be determined, we return an empty string.
-  void updateLibraryPackage(LibraryMirror mirror) {
-    if (mirror == null) return;
-    if (_hasBeenCheckedForPackage) return;
-    _hasBeenCheckedForPackage = true;
-    if (mirror.uri.scheme != 'file') return;
-    packageName = getPackageName(mirror);
-    // Associate the package readme with all the libraries. This is a bit
-    // wasteful, but easier than trying to figure out which partial match
-    // is best.
-    packageIntro = _packageIntro(getPackageDirectory(mirror));
-  }
-
-  String _packageIntro(packageDir) {
-    if (packageDir == null) return null;
-    var dir = new Directory(packageDir);
-    var files = dir.listSync();
-    var readmes = files.where((FileSystemEntity each) => (each is File &&
-        each.path.substring(packageDir.length + 1, each.path.length)
-          .startsWith('README'))).toList();
-    if (readmes.isEmpty) return '';
-    // If there are multiples, pick the shortest name.
-    readmes.sort((a, b) => a.path.length.compareTo(b.path.length));
-    var readme = readmes.first;
-    var linkResolver = (name) => globalFixReference(name);
-    var contents = markdown.markdownToHtml(readme
-      .readAsStringSync(), linkResolver: linkResolver,
-      inlineSyntaxes: MARKDOWN_SYNTAXES);
-    return contents;
-  }
-
-  String get packagePrefix => packageName == null || packageName.isEmpty ?
-      '' : '$packageName/';
-
-  Map get previewMap {
-    var map = {'packageName': packageName};
-    map.addAll(super.previewMap);
-    if (packageIntro != null) {
-      map['packageIntro'] = packageIntro;
-    }
-    var version = packageVersion(mirror);
-    if (version != '' && version != null) map['version'] = version;
-    return map;
-  }
-
-  String get name => docName;
-
-  String get docName => getLibraryDocName(mirror);
-
-  /// Generates a map describing the [Library] object.
-  Map toMap() => {
-    'name': name,
-    'qualifiedName': qualifiedName,
-    'comment': comment,
-    'variables': recurseMap(variables),
-    'functions': expandMethodMap(functions),
-    'classes': {
-      'class': classes.values.where((c) => c.isVisible)
-        .map((e) => e.previewMap).toList(),
-      'typedef': recurseMap(typedefs),
-      'error': errors.values.where((e) => e.isVisible)
-          .map((e) => e.previewMap).toList()
-    },
-    'packageName': packageName,
-    'packageIntro': packageIntro
-  };
-
-  String get typeName => 'library';
-
-  bool isValidMirror(DeclarationMirror mirror) => mirror is LibraryMirror;
-}
-
-/// Dummy implementation of Indexable to represent the owner of a Library.
-class _LibraryOwner implements Indexable {
-  const _LibraryOwner();
-
-  String get docName => '';
-
-  bool get isPrivate => false;
-
-  Indexable get owner => null;
-
-  // This is a known incomplete implementation of Indexable
-  // overriding noSuchMethod to remove static warnings
-  noSuchMethod(Invocation invocation) {
-    throw new UnimplementedError(invocation.memberName.toString());
-  }
-}
diff --git a/pkg/docgen/lib/src/models/method.dart b/pkg/docgen/lib/src/models/method.dart
deleted file mode 100644
index f25d53b..0000000
--- a/pkg/docgen/lib/src/models/method.dart
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.method;
-
-import 'package:markdown/markdown.dart' as markdown;
-
-import '../exports/mirrors_util.dart' as dart2js_util;
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-
-import 'class.dart';
-import 'doc_gen_type.dart';
-import 'dummy_mirror.dart';
-import 'indexable.dart';
-import 'model_helpers.dart';
-import 'owned_indexable.dart';
-import 'parameter.dart';
-
-
-/// A class containing properties of a Dart method.
-class Method extends OwnedIndexable<MethodMirror> {
-
-  /// Parameters for this method.
-  final Map<String, Parameter> parameters;
-
-  final bool isStatic;
-  final bool isAbstract;
-  final bool isConst;
-  final DocGenType returnType;
-  Method methodInheritedFrom;
-
-  /// Qualified name to state where the comment is inherited from.
-  String commentInheritedFrom = "";
-
-  factory Method(MethodMirror mirror, Indexable owner,
-      [Method methodInheritedFrom]) {
-    var method = getDocgenObject(mirror, owner);
-    if (method is DummyMirror) {
-      method = new Method._(mirror, owner, methodInheritedFrom);
-    }
-    return method;
-  }
-
-  Method._(MethodMirror mirror, Indexable owner, this.methodInheritedFrom)
-      : returnType = new DocGenType(mirror.returnType, owner.owningLibrary),
-        isStatic = mirror.isStatic,
-        isAbstract = mirror.isAbstract,
-        isConst = mirror.isConstConstructor,
-        parameters = createParameters(mirror.parameters, owner),
-        super(mirror, owner);
-
-  Method get originallyInheritedFrom => methodInheritedFrom == null ?
-      this : methodInheritedFrom.originallyInheritedFrom;
-
-  /// Look for the specified name starting with the current member, and
-  /// progressively working outward to the current library scope.
-  String findElementInScope(String name) {
-    var lookupFunc = determineLookupFunc(name);
-
-    var memberScope = lookupFunc(this.mirror, name);
-    if (memberScope != null) {
-      // do we check for a dummy mirror returned here and look up with an owner
-      // higher ooooor in getDocgenObject do we include more things in our
-      // lookup
-      var result = getDocgenObject(memberScope, owner);
-      if (result is DummyMirror && owner.owner != null
-          && owner.owner is! DummyMirror) {
-        var aresult = getDocgenObject(memberScope, owner.owner);
-        if (aresult is! DummyMirror) result = aresult;
-      }
-      if (result is DummyMirror) return packagePrefix + result.docName;
-      return result.packagePrefix + result.docName;
-    }
-
-    if (owner != null) {
-      var result = owner.findElementInScope(name);
-      if (result != null) return result;
-    }
-    return super.findElementInScope(name);
-  }
-
-  String get docName {
-    if (mirror.isConstructor) {
-      // We name constructors specially -- including the class name again and a
-      // "-" to separate the constructor from its name (if any).
-      return '${owner.docName}.${dart2js_util.nameOf(mirror.owner)}-'
-          '${dart2js_util.nameOf(mirror)}';
-    }
-    return super.docName;
-  }
-
-  String get qualifiedName => packagePrefix + docName;
-
-  /// Makes sure that the method with an inherited equivalent have comments.
-  void ensureCommentFor(Method inheritedMethod) {
-    if (comment.isNotEmpty) return;
-
-    comment = inheritedMethod.commentToHtml(this);
-    unresolvedComment = inheritedMethod.unresolvedComment;
-    commentInheritedFrom = inheritedMethod.commentInheritedFrom == '' ?
-        new DummyMirror(inheritedMethod.mirror).docName :
-        inheritedMethod.commentInheritedFrom;
-  }
-
-  /// Generates a map describing the [Method] object.
-  Map toMap() => {
-    'name': name,
-    'qualifiedName': qualifiedName,
-    'comment': comment,
-    'commentFrom': (methodInheritedFrom != null &&
-        commentInheritedFrom == methodInheritedFrom.docName ? ''
-        : commentInheritedFrom),
-    'inheritedFrom': (methodInheritedFrom == null? '' :
-        originallyInheritedFrom.docName),
-    'static': isStatic,
-    'abstract': isAbstract,
-    'constant': isConst,
-    'return': [returnType.toMap()],
-    'parameters': recurseMap(parameters),
-    'annotations': annotations.map((a) => a.toMap()).toList()
-  };
-
-  String get typeName {
-    if (mirror.isConstructor) return 'constructor';
-    if (mirror.isGetter) return 'getter';
-    if (mirror.isSetter) return 'setter';
-    if (mirror.isOperator) return 'operator';
-    return 'method';
-  }
-
-  String get comment {
-    if (commentField != null) return commentField;
-    if (owner is Class) {
-      (owner as Class).ensureComments();
-    }
-    var result = super.comment;
-    if (result == '' && methodInheritedFrom != null) {
-      // This should be NOT from the MIRROR, but from the COMMENT.
-      methodInheritedFrom.comment; // Ensure comment field has been populated.
-      unresolvedComment = methodInheritedFrom.unresolvedComment;
-
-      comment = unresolvedComment == null ? '' :
-        markdown.markdownToHtml(unresolvedComment.trim(),
-            linkResolver: fixReference, inlineSyntaxes: MARKDOWN_SYNTAXES);
-      commentInheritedFrom = comment != '' ?
-          methodInheritedFrom.commentInheritedFrom : '';
-      result = comment;
-    }
-    return result;
-  }
-
-  bool isValidMirror(DeclarationMirror mirror) => mirror is MethodMirror;
-}
\ No newline at end of file
diff --git a/pkg/docgen/lib/src/models/mirror_based.dart b/pkg/docgen/lib/src/models/mirror_based.dart
deleted file mode 100644
index eceac68..0000000
--- a/pkg/docgen/lib/src/models/mirror_based.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.mirror_based;
-
-import '../exports/source_mirrors.dart';
-
-/// Docgen representation of an item to be documented, that wraps around a
-/// dart2js mirror.
-abstract class MirrorBased<TMirror extends DeclarationMirror> {
-  /// The original dart2js mirror around which this object wraps.
-  TMirror get mirror;
-
-  /// Return an informative [Object.toString] for debugging.
-  String toString() => "${super.toString()} - $mirror";
-}
diff --git a/pkg/docgen/lib/src/models/model_helpers.dart b/pkg/docgen/lib/src/models/model_helpers.dart
deleted file mode 100644
index 0aa8c9f..0000000
--- a/pkg/docgen/lib/src/models/model_helpers.dart
+++ /dev/null
@@ -1,443 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.model_helpers;
-
-import 'dart:collection';
-
-import 'package:compiler/src/constants/expressions.dart';
-
-import '../exports/dart2js_mirrors.dart' as dart2js_mirrors;
-import '../exports/mirrors_util.dart' as dart2js_util;
-import '../exports/source_mirrors.dart';
-import '../exports/libraries.dart';
-
-import '../library_helpers.dart' show includePrivateMembers;
-import '../package_helpers.dart';
-
-import 'annotation.dart';
-import 'generic.dart';
-import 'indexable.dart';
-import 'library.dart';
-import 'method.dart';
-import 'parameter.dart';
-import 'variable.dart';
-
-String getLibraryDocName(LibraryMirror mirror) {
-  var dotsFixed = dart2js_util.qualifiedNameOf(mirror).replaceAll('.', '-');
-  if (dotsFixed.startsWith('dart-dom-')) {
-    return dotsFixed.replaceFirst("dart-dom-", "dart:");
-  } else if (dotsFixed.startsWith("dart-")) {
-    return dotsFixed.replaceFirst("dart-", "dart:");
-  } else {
-    return dotsFixed;
-  }
-}
-
-/// Expand the method map [mapToExpand] into a more detailed map that
-/// separates out setters, getters, constructors, operators, and methods.
-Map expandMethodMap(Map<String, Method> mapToExpand) => {
-  'setters': recurseMap(_filterMap(mapToExpand,
-      (key, val) => val.mirror.isSetter)),
-  'getters': recurseMap(_filterMap(mapToExpand,
-      (key, val) => val.mirror.isGetter)),
-  'constructors': recurseMap(_filterMap(mapToExpand,
-      (key, val) => val.mirror.isConstructor)),
-  'operators': recurseMap(_filterMap(mapToExpand,
-      (key, val) => val.mirror.isOperator)),
-  'methods': recurseMap(_filterMap(mapToExpand,
-      (key, val) => val.mirror.isRegularMethod && !val.mirror.isOperator))
-};
-
-String getDefaultValue(ParameterMirror mirror) {
-  if (!mirror.hasDefaultValue) return null;
-  return '${mirror.defaultValue}';
-}
-
-/// Returns a list of meta annotations assocated with a mirror.
-List<Annotation> createAnnotations(DeclarationMirror mirror,
-    Library owningLibrary) {
-  var annotations = [];
-  var info = new AnnotationInfo(mirror, owningLibrary);
-  for (var expr in dart2js_mirrors.BackDoor.metadataSyntaxOf(mirror)) {
-    var docgenAnnotation = expr.accept(const AnnotationCreator(), info);
-    if (docgenAnnotation != null &&
-        !_SKIPPED_ANNOTATIONS.contains(
-            dart2js_util.qualifiedNameOf(docgenAnnotation.mirror))) {
-      annotations.add(docgenAnnotation);
-    }
-  }
-  return annotations;
-}
-
-class AnnotationInfo {
-  final Mirror mirror;
-  final Library owningLibrary;
-
-  AnnotationInfo(this.mirror, this.owningLibrary);
-}
-
-class AnnotationCreator
-    extends ConstantExpressionVisitor<Annotation, AnnotationInfo> {
-
-  const AnnotationCreator();
-
-  Annotation createAnnotation(var element,
-                              AnnotationInfo context,
-                              [List<String> parameters = const <String>[]]) {
-    var mirror =
-        dart2js_mirrors.BackDoor.getMirrorFromElement(context.mirror, element);
-    if (mirror != null) {
-      return new Annotation(context.owningLibrary, mirror, parameters);
-    }
-    return null;
-  }
-
-  @override
-  Annotation visitBinary(BinaryConstantExpression exp,
-                         AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitIdentical(IdenticalConstantExpression exp,
-                            AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitConcatenate(ConcatenateConstantExpression exp,
-                              AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitConditional(ConditionalConstantExpression exp,
-                              AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitConstructed(ConstructedConstantExpression exp,
-                              AnnotationInfo context) {
-    return createAnnotation(exp.target, context,
-        exp.arguments.map((a) => a.getText()).toList());
-  }
-
-  @override
-  Annotation visitFunction(FunctionConstantExpression exp,
-                           AnnotationInfo context) {
-    return createAnnotation(exp.element, context);
-  }
-
-  @override
-  Annotation visitList(ListConstantExpression exp,
-                       AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitMap(MapConstantExpression exp,
-                      AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitSymbol(SymbolConstantExpression exp,
-                         AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitType(TypeConstantExpression exp,
-                       AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitUnary(UnaryConstantExpression exp,
-                        AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitVariable(VariableConstantExpression exp,
-                           AnnotationInfo context) {
-    return createAnnotation(exp.element, context);
-  }
-
-  @override
-  Annotation visitBool(BoolConstantExpression exp,
-                       AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitBoolFromEnvironment(BoolFromEnvironmentConstantExpression exp,
-                                      AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitDouble(DoubleConstantExpression exp,
-                         AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitInt(IntConstantExpression exp,
-                      AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitIntFromEnvironment(IntFromEnvironmentConstantExpression exp,
-                                     AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitNamed(NamedArgumentReference exp,
-                        AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitNull(NullConstantExpression exp,
-                       AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitPositional(PositionalArgumentReference exp,
-                             AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitString(StringConstantExpression exp,
-                         AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitStringFromEnvironment(
-      StringFromEnvironmentConstantExpression exp,
-      AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitStringLength(StringLengthConstantExpression exp,
-                               AnnotationInfo context) {
-    return null;
-  }
-
-  @override
-  Annotation visitDeferred(DeferredConstantExpression exp,
-                           AnnotationInfo context) {
-    return exp.expression.accept(this, context);
-  }
-}
-
-/// A declaration is private if itself is private, or the owner is private.
-bool isHidden(DeclarationSourceMirror mirror) {
-  if (mirror is LibraryMirror) {
-    return _isLibraryPrivate(mirror);
-  } else if (mirror.owner is LibraryMirror) {
-    return (mirror.isPrivate || _isLibraryPrivate(mirror.owner) ||
-        mirror.isNameSynthetic);
-  } else {
-    return (mirror.isPrivate || isHidden(mirror.owner) ||
-        mirror.isNameSynthetic);
-  }
-}
-
-/// Transforms the map by calling toMap on each value in it.
-Map recurseMap(Map inputMap) {
-  var outputMap = new LinkedHashMap();
-  inputMap.forEach((key, value) {
-    if (value is Map) {
-      outputMap[key] = recurseMap(value);
-    } else {
-      outputMap[key] = value.toMap();
-    }
-  });
-  return outputMap;
-}
-
-/// Read a pubspec and return the library name given a [LibraryMirror].
-String getPackageName(LibraryMirror mirror) {
-  if (mirror.uri.scheme != 'file') return '';
-  var rootdir = getPackageDirectory(mirror);
-  if (rootdir == null) return '';
-  return packageNameFor(rootdir);
-}
-
-
-/// Helper that maps [mirrors] to their simple name in map.
-Map addAll(Map map, Iterable<DeclarationMirror> mirrors) {
-  for (var mirror in mirrors) {
-    map[dart2js_util.nameOf(mirror)] = mirror;
-  }
-  return map;
-}
-
-/// For the given library determine what items (if any) are exported.
-///
-/// Returns a Map with three keys: "classes", "methods", and "variables" the
-/// values of which point to a map of exported name identifiers with values
-/// corresponding to the actual DeclarationMirror.
-Map<String, Map<String, DeclarationMirror>> calcExportedItems(
-    LibrarySourceMirror library, Map visited) {
-  var exports = {};
-  visited[library] = exports;
-  exports['classes'] = new SplayTreeMap();
-  exports['methods'] = new SplayTreeMap();
-  exports['variables'] = new SplayTreeMap();
-
-  // Determine the classes, variables and methods that are exported for a
-  // specific dependency.
-  void _populateExports(LibraryDependencyMirror export, bool showExport) {
-    if (visited[export.targetLibrary] != null) return;
-    var transitiveExports = calcExportedItems(export.targetLibrary, visited);
-    exports['classes'].addAll(transitiveExports['classes']);
-    exports['methods'].addAll(transitiveExports['methods']);
-    exports['variables'].addAll(transitiveExports['variables']);
-    // If there is a show in the export, add only the show items to the
-    // library. Ex: "export foo show bar"
-    // Otherwise, add all items, and then remove the hidden ones.
-    // Ex: "export foo hide bar"
-
-    if (!showExport) {
-      // Add all items, and then remove the hidden ones.
-      // Ex: "export foo hide bar"
-      addAll(exports['classes'],
-          dart2js_util.typesOf(export.targetLibrary.declarations));
-      addAll(exports['methods'],
-          export.targetLibrary.declarations.values.where(
-              (mirror) => mirror is MethodMirror));
-      addAll(exports['variables'],
-          dart2js_util.variablesOf(export.targetLibrary.declarations));
-    }
-    for (CombinatorMirror combinator in export.combinators) {
-      for (String identifier in combinator.identifiers) {
-        var librarySourceMirror =
-            export.targetLibrary as DeclarationSourceMirror;
-        var declaration = librarySourceMirror.lookupInScope(identifier);
-        if (declaration == null) {
-          // Technically this should be a bug, but some of our packages
-          // (such as the polymer package) are curently broken in this
-          // way, so we just produce a warning.
-          print('Warning identifier $identifier not found in library '
-              '${dart2js_util.qualifiedNameOf(export.targetLibrary)}');
-        } else {
-          var subMap = exports['classes'];
-          if (declaration is MethodMirror) {
-            subMap = exports['methods'];
-          } else if (declaration is VariableMirror) {
-            subMap = exports['variables'];
-          }
-          if (showExport) {
-            subMap[identifier] = declaration;
-          } else {
-            subMap.remove(identifier);
-          }
-        }
-      }
-    }
-  }
-
-  Iterable<LibraryDependencyMirror> exportList =
-      library.libraryDependencies.where((lib) => lib.isExport);
-  for (LibraryDependencyMirror export in exportList) {
-    _populateExports(export,
-        export.combinators.any((combinator) => combinator.isShow));
-  }
-  return exports;
-}
-
-
-/// Returns a map of [Variable] objects constructed from [mirrorMap].
-/// The optional parameter [containingLibrary] is contains data for variables
-/// defined at the top level of a library (potentially for exporting
-/// purposes).
-Map<String, Variable> createVariables(Iterable<VariableMirror> mirrors,
-    Indexable owner) {
-  var data = new SplayTreeMap<String, Variable>();
-  // TODO(janicejl): When map to map feature is created, replace the below
-  // with a filter. Issue(#9590).
-  mirrors.forEach((dart2js_mirrors.Dart2JsFieldMirror mirror) {
-    if (includePrivateMembers || !isHidden(mirror)) {
-      var mirrorName = dart2js_util.nameOf(mirror);
-      data[mirrorName] = new Variable(mirrorName, mirror, owner);
-    }
-  });
-  return data;
-}
-
-/// Returns a map of [Method] objects constructed from [mirrorMap].
-/// The optional parameter [containingLibrary] is contains data for variables
-/// defined at the top level of a library (potentially for exporting
-/// purposes).
-Map<String, Method> createMethods(Iterable<MethodMirror> mirrors,
-    Indexable owner) {
-  var group = new SplayTreeMap<String, Method>();
-  mirrors.forEach((MethodMirror mirror) {
-    if (includePrivateMembers || !mirror.isPrivate) {
-      group[dart2js_util.nameOf(mirror)] = new Method(mirror, owner);
-    }
-  });
-  return group;
-}
-
-/// Returns a map of [Parameter] objects constructed from [mirrorList].
-Map<String, Parameter> createParameters(List<ParameterMirror> mirrorList,
-    Indexable owner) {
-  var data = {};
-  mirrorList.forEach((ParameterMirror mirror) {
-    data[dart2js_util.nameOf(mirror)] =
-        new Parameter(mirror, owner.owningLibrary);
-  });
-  return data;
-}
-
-/// Returns a map of [Generic] objects constructed from the class mirror.
-Map<String, Generic> createGenerics(TypeMirror mirror) {
-  return new Map.fromIterable(mirror.typeVariables,
-      key: (e) => dart2js_util.nameOf(e),
-      value: (e) => new Generic(e));
-}
-
-Map _filterMap(Map map, bool test(k, v)) {
-  var exported = new SplayTreeMap();
-  map.forEach((key, value) {
-    if (test(key, value)) exported[key] = value;
-  });
-  return exported;
-}
-
-/// Annotations that we do not display in the viewer.
-const List<String> _SKIPPED_ANNOTATIONS = const [
-  'metadata.DocsEditable', '_js_helper.JSName', '_js_helper.Creates',
-  '_js_helper.Returns'
-];
-
-/// Returns true if a library name starts with an underscore, and false
-/// otherwise.
-///
-/// An example that starts with _ is _js_helper.
-/// An example that contains ._ is dart._collection.dev
-bool _isLibraryPrivate(dart2js_mirrors.Dart2JsLibraryMirror mirror) {
-  // This method is needed because LibraryMirror.isPrivate returns `false` all
-  // the time.
-  var sdkLibrary = LIBRARIES[dart2js_util.nameOf(mirror)];
-  if (sdkLibrary != null) {
-    return !sdkLibrary.documented;
-  } else if (dart2js_util.nameOf(mirror).startsWith('_') || dart2js_util.nameOf(
-      mirror).contains('._')) {
-    return true;
-  }
-  return false;
-}
diff --git a/pkg/docgen/lib/src/models/owned_indexable.dart b/pkg/docgen/lib/src/models/owned_indexable.dart
deleted file mode 100644
index ea3335d..0000000
--- a/pkg/docgen/lib/src/models/owned_indexable.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.owned_indexable;
-
-import '../exports/mirrors_util.dart' as dart2js_util;
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-import '../mdn.dart';
-import '../package_helpers.dart';
-
-import 'annotation.dart';
-import 'dummy_mirror.dart';
-import 'indexable.dart';
-import 'model_helpers.dart';
-
-abstract class OwnedIndexable<TMirror extends DeclarationMirror>
-    extends Indexable<TMirror> {
-  /// List of the meta annotations on this item.
-  final List<Annotation> annotations;
-
-  /// The object one scope-level above which this item is defined.
-  ///
-  /// Ex: The owner for a top level class, would be its enclosing library.
-  /// The owner of a local variable in a method would be the enclosing method.
-  final Indexable owner;
-
-  /// Returns this object's qualified name, but following the conventions
-  /// we're using in Dartdoc, which is that library names with dots in them
-  /// have them replaced with hyphens.
-  String get docName => owner.docName + '.' + dart2js_util.nameOf(mirror);
-
-  OwnedIndexable(DeclarationMirror mirror, Indexable owner)
-      : annotations = createAnnotations(mirror, owner.owningLibrary),
-        this.owner = owner,
-        super(mirror);
-
-  /// Generates MDN comments from database.json.
-  String getMdnComment() {
-    var domAnnotation = this.annotations.firstWhere(
-        (e) => e.mirror.qualifiedName == #metadata.DomName,
-        orElse: () => null);
-    if (domAnnotation == null) return '';
-    var domName = domAnnotation.parameters.single;
-
-    return mdnComment(rootDirectory, logger, domName);
-  }
-
-  String get packagePrefix => owner.packagePrefix;
-
-  String findElementInScope(String name) {
-    var lookupFunc = determineLookupFunc(name);
-    var result = lookupFunc(mirror, name);
-    if (result != null) {
-      result = getDocgenObject(result);
-      if (result is DummyMirror) return packagePrefix + result.docName;
-      return result.packagePrefix + result.docName;
-    }
-
-    if (owner != null) {
-      var result = owner.findElementInScope(name);
-      if (result != null) {
-        return result;
-      }
-    }
-    return super.findElementInScope(name);
-  }
-}
diff --git a/pkg/docgen/lib/src/models/parameter.dart b/pkg/docgen/lib/src/models/parameter.dart
deleted file mode 100644
index ef9d9ab..0000000
--- a/pkg/docgen/lib/src/models/parameter.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.parameter;
-
-import '../exports/mirrors_util.dart' as dart2js_util;
-import '../exports/source_mirrors.dart';
-
-import 'annotation.dart';
-import 'closure.dart';
-import 'doc_gen_type.dart';
-import 'library.dart';
-import 'mirror_based.dart';
-import 'model_helpers.dart';
-
-/// Docgen wrapper around the dart2js mirror for a Dart
-/// method/function parameter.
-class Parameter extends MirrorBased {
-  final ParameterMirror mirror;
-  final String name;
-  final bool isOptional;
-  final bool isNamed;
-  final bool hasDefaultValue;
-  final DocGenType type;
-  final String defaultValue;
-  /// List of the meta annotations on the parameter.
-  final List<Annotation> annotations;
-  final Library owningLibrary;
-  // Only non-null if this parameter is a function declaration.
-  Closure functionDeclaration;
-
-  Parameter(ParameterMirror mirror, Library owningLibrary)
-      : this.mirror = mirror,
-        name = dart2js_util.nameOf(mirror),
-        isOptional = mirror.isOptional,
-        isNamed = mirror.isNamed,
-        hasDefaultValue = mirror.hasDefaultValue,
-        defaultValue = getDefaultValue(mirror),
-        type = new DocGenType(mirror.type, owningLibrary),
-        annotations = createAnnotations(mirror, owningLibrary),
-        owningLibrary = owningLibrary {
-    if (mirror.type is FunctionTypeMirror) {
-      functionDeclaration =
-          new Closure(mirror.type as FunctionTypeMirror, owningLibrary);
-    }
-  }
-
-  /// Generates a map describing the [Parameter] object.
-  Map toMap() {
-    var map = {
-      'name': name,
-      'optional': isOptional,
-      'named': isNamed,
-      'default': hasDefaultValue,
-      'type': new List.filled(1, type.toMap()),
-      'value': defaultValue,
-      'annotations': annotations.map((a) => a.toMap()).toList()
-    };
-    if (functionDeclaration != null) {
-      map['functionDeclaration'] = functionDeclaration.toMap();
-    }
-    return map;
-  }
-}
\ No newline at end of file
diff --git a/pkg/docgen/lib/src/models/typedef.dart b/pkg/docgen/lib/src/models/typedef.dart
deleted file mode 100644
index 17e4208..0000000
--- a/pkg/docgen/lib/src/models/typedef.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.typedef;
-
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-
-import 'dummy_mirror.dart';
-import 'library.dart';
-import 'model_helpers.dart';
-import 'generic.dart';
-import 'parameter.dart';
-import 'owned_indexable.dart';
-
-class Typedef extends OwnedIndexable<TypedefMirror> {
-  final String returnType;
-
-  final Map<String, Parameter> parameters;
-
-  /// Generic information about the typedef.
-  final Map<String, Generic> generics;
-
-  /// Returns the [Library] for the given [mirror] if it has already been
-  /// created, else creates it.
-  factory Typedef(TypedefMirror mirror, Library owningLibrary) {
-    var aTypedef = getDocgenObject(mirror, owningLibrary);
-    if (aTypedef is DummyMirror) {
-      aTypedef = new Typedef._(mirror, owningLibrary);
-    }
-    return aTypedef;
-  }
-
-  Typedef._(TypedefMirror mirror, Library owningLibrary)
-      : returnType = getDocgenObject(mirror.referent.returnType).docName,
-        generics = createGenerics(mirror),
-        parameters = createParameters(mirror.referent.parameters,
-            owningLibrary),
-        super(mirror, owningLibrary);
-
-  Map toMap() {
-    var map = {
-      'name': name,
-      'qualifiedName': qualifiedName,
-      'comment': comment,
-      'return': returnType,
-      'parameters': recurseMap(parameters),
-      'annotations': annotations.map((a) => a.toMap()).toList(),
-      'generics': recurseMap(generics)
-    };
-
-    // Typedef is displayed on the library page as a class, so a preview is
-    // added manually
-    var pre = preview;
-    if (pre != null) map['preview'] = pre;
-
-    return map;
-  }
-
-  String get typeName => 'typedef';
-
-  bool isValidMirror(DeclarationMirror mirror) => mirror is TypedefMirror;
-}
diff --git a/pkg/docgen/lib/src/models/variable.dart b/pkg/docgen/lib/src/models/variable.dart
deleted file mode 100644
index b4b83ac..0000000
--- a/pkg/docgen/lib/src/models/variable.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.models.variable;
-
-import '../exports/source_mirrors.dart';
-
-import '../library_helpers.dart';
-
-import 'class.dart';
-import 'doc_gen_type.dart';
-import 'dummy_mirror.dart';
-import 'indexable.dart';
-import 'owned_indexable.dart';
-
-
-/// A class containing properties of a Dart variable.
-class Variable extends OwnedIndexable<VariableMirror> {
-  final bool isFinal;
-  final bool isStatic;
-  final bool isConst;
-  final DocGenType type;
-  final String name;
-
-  factory Variable(String name, VariableMirror mirror, Indexable owner) {
-    var variable = getDocgenObject(mirror, owner);
-    if (variable is DummyMirror) {
-      return new Variable._(name, mirror, owner);
-    }
-    return variable;
-  }
-
-  Variable._(this.name, VariableMirror mirror, Indexable owner)
-      : isFinal = mirror.isFinal,
-        isStatic = mirror.isStatic,
-        isConst = mirror.isConst,
-        type = new DocGenType(mirror.type, owner.owningLibrary),
-        super(mirror, owner);
-
-  /// Generates a map describing the [Variable] object.
-  Map toMap() => {
-    'name': name,
-    'qualifiedName': qualifiedName,
-    'comment': comment,
-    'final': isFinal,
-    'static': isStatic,
-    'constant': isConst,
-    'type': new List.filled(1, type.toMap()),
-    'annotations': annotations.map((a) => a.toMap()).toList()
-  };
-
-  String get typeName => 'property';
-
-  String get comment {
-    if (commentField != null) return commentField;
-    if (owner is Class) {
-      (owner as Class).ensureComments();
-    }
-    return super.comment;
-  }
-
-  bool isValidMirror(DeclarationMirror mirror) => mirror is VariableMirror;
-}
diff --git a/pkg/docgen/lib/src/package_helpers.dart b/pkg/docgen/lib/src/package_helpers.dart
deleted file mode 100644
index f437166..0000000
--- a/pkg/docgen/lib/src/package_helpers.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.package_helpers;
-
-import 'exports/source_mirrors.dart';
-import 'generator.dart' show pubScript;
-
-import 'dart:io';
-import 'package:path/path.dart' as path;
-import 'package:yaml/yaml.dart';
-
-/// Helper accessor to determine the full pathname of the root of the dart
-/// checkout if we are running without the --sdk parameter specified. That
-/// normally means we are running directly from source, and we expect to
-/// find the root as the directory above 'pkg'. The only other time this
-/// would happen is running a snapshot directly, rather than from the
-/// dartdocgen script, where we look for the dart-sdk directory. If not
-/// using the script and not in a normal directory structure, you'll need
-/// to pass the --sdk parameter.
-String get rootDirectory {
-  if (_rootDirectoryCache != null) return _rootDirectoryCache;
-  var scriptDir = path.absolute(path.dirname(Platform.script.toFilePath()));
-  var root = scriptDir;
-  var base = path.basename(root);
-  while (base != 'dart-sdk' && base != 'pkg') {
-    root = path.dirname(root);
-    base = path.basename(root);
-    if (root == base) {
-      // We have reached the root of the filesystem without finding anything.
-      throw new FileSystemException("Cannot find SDK directory starting from ",
-          scriptDir);
-    }
-  }
-  _rootDirectoryCache = path.dirname(root);
-  return _rootDirectoryCache;
-}
-String _rootDirectoryCache;
-
-/// Given a LibraryMirror that is a library, return the name of the directory
-/// holding the package information for that library. If the library is not
-/// part of a package, return null.
-String getPackageDirectory(LibraryMirror mirror) {
-  var file = mirror.uri.toFilePath();
-  // Any file that's in a package will be in a directory of the form
-  // packagename/lib/.../filename.dart, so we know that a possible
-  // package directory is at least in the directory above the one containing
-  // [file]
-  var directoryAbove = path.dirname(path.dirname(file));
-  var possiblePackage = _packageDirectoryFor(directoryAbove);
-  // We only want components that are somewhere underneath the lib directory.
-  var subPath = path.relative(file, from: possiblePackage);
-  var subPathComponents = path.split(subPath);
-  if (subPathComponents.isNotEmpty && subPathComponents.first == 'lib') {
-    return possiblePackage;
-  } else {
-    return null;
-  }
-}
-
-Map _getPubspec(String directoryName) {
-  var pubspecName = path.join(directoryName, 'pubspec.yaml');
-  File pubspec = new File(pubspecName);
-  if (!pubspec.existsSync()) return {'name': ''};
-  var contents = pubspec.readAsStringSync();
-  return loadYaml(contents);
-}
-
-/// Read a pubspec and return the library name, given a directory
-String packageNameFor(String directoryName) =>
-    _getPubspec(directoryName)['name'];
-
-/// Read a pubspec and return the library name, given a directory
-String _packageVersionFor(String directoryName) {
-  var spec = _getPubspec(directoryName);
-  return '${spec['name']}-${spec['version']}';
-}
-
-/// Look in the pubspec.lock to determine what version of a package we are
-/// documenting (null if not applicable).
-String packageVersion(LibraryMirror mirror) {
-  if (mirror.uri.scheme == 'file') {
-    String packageDirectory = getPackageDirectory(mirror);
-    if (packageDirectory == null) return '';
-    if (packageDirectory.contains('.pub-cache')) {
-      return path.basename(packageDirectory);
-    }
-    String packageName = packageNameFor(packageDirectory);
-    return _packageVersionFor(packageDirectory);
-  } else if (mirror.uri.scheme == 'dart') {
-    // If this item is from the SDK, use what version of pub we're running to
-    // ascertain the SDK version.
-    var pubVersion = Process.runSync(pubScript, ['--version'],
-        runInShell: true);
-    if (pubVersion.exitCode != 0) {
-      print(pubVersion.stderr);
-    }
-    return pubVersion.stdout.replaceAll('Pub ', '').trim();
-  }
-  return '';
-}
-
-String _packageVersionHelper(String packageDirectory, String packageName) {
-  var publockName = path.join(packageDirectory, 'pubspec.lock');
-  File publock = new File(publockName);
-  if (!publock.existsSync()) return '';
-  var contents = publock.readAsStringSync();
-  var spec = loadYaml(contents);
-  return spec['packages'][packageName];
-}
-
-/// Recursively walk up from directory name looking for a pubspec. Return
-/// the directory that contains it, or null if none is found.
-String _packageDirectoryFor(String directoryName) {
-  var dir = directoryName;
-  while (!_pubspecFor(dir).existsSync()) {
-    var newDir = path.dirname(dir);
-    if (newDir == dir) return null;
-    dir = newDir;
-  }
-  return dir;
-}
-
-File _pubspecFor(String directoryName) =>
-    new File(path.join(directoryName, 'pubspec.yaml'));
diff --git a/pkg/docgen/lib/src/viewer.dart b/pkg/docgen/lib/src/viewer.dart
deleted file mode 100644
index f5b7172..0000000
--- a/pkg/docgen/lib/src/viewer.dart
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// Convenience methods wrapped up in a class to pull down the docgen viewer for
-/// a viewable website, and start up a server for viewing.
-library docgen.viewer;
-
-import 'dart:io';
-
-import 'package:path/path.dart' as path;
-
-import 'generator.dart' as gen;
-import 'package_helpers.dart' show rootDirectory;
-
-final String _dartdocViewerString =
-    path.join(Directory.current.path, 'dartdoc-viewer');
-
-final Directory _dartdocViewerDir = new Directory(_dartdocViewerString);
-
-Directory _topLevelTempDir;
-Directory _webDocsDir;
-bool _movedViewerCode = false;
-
-void createViewer(bool serve) {
-  _clone();
-  _compile();
-  if (serve) {
-    _runServer();
-  }
-}
-
-/*
- * dartdoc-viewer currently has the web app code under a 'client' directory
- *
- * This is confusing for folks that want to clone and modify the code.
- * It also includes a number of python files and other content related to
- * app engine hosting that are not needed.
- *
- * This logic exists to support the current model and a (future) updated
- * dartdoc-viewer repo where the 'client' content exists at the root of the
- * project and the other content is removed.
- */
-String get _viewerCodePath {
-  if (_viewerCodePathCache == null) {
-    var pubspecFileName = 'pubspec.yaml';
-
-    var thePath = _dartdocViewerDir.path;
-
-    if (!FileSystemEntity.isFileSync(path.join(thePath, pubspecFileName))) {
-      thePath = path.join(thePath, 'client');
-      if (!FileSystemEntity.isFileSync(path.join(thePath, pubspecFileName))) {
-        throw new StateError('Could not find a pubspec file');
-      }
-    }
-
-    _viewerCodePathCache = thePath;
-  }
-  return _viewerCodePathCache;
-}
-String _viewerCodePathCache;
-
-/// If our dartdoc-viewer code is already checked out, move it to a temporary
-/// directory outside of the package directory, so we don't try to process it
-/// for documentation.
-void ensureMovedViewerCode() {
-  // TODO(efortuna): This will need to be modified to run on anyone's package
-  // outside of the checkout!
-  if (_dartdocViewerDir.existsSync()) {
-    _topLevelTempDir = new Directory(rootDirectory).createTempSync();
-    _dartdocViewerDir.renameSync(_topLevelTempDir.path);
-  }
-}
-
-/// Move the dartdoc-viewer code back into place for "webpage deployment."
-void addBackViewerCode() {
-  if (_movedViewerCode) _dartdocViewerDir.renameSync(_dartdocViewerString);
-}
-
-/// Serve up our generated documentation for viewing in a browser.
-void _clone() {
-  // If the viewer code is already there, then don't clone again.
-  if (_dartdocViewerDir.existsSync()) {
-    _moveDirectoryAndServe();
-  } else {
-    var processResult = Process.runSync('git', ['clone', '-b', 'master',
-        'https://github.com/dart-lang/dartdoc-viewer.git'], runInShell: true);
-
-    if (processResult.exitCode == 0) {
-      /// Move the generated json/yaml docs directory to the dartdoc-viewer
-      /// directory, to run as a webpage.
-      var processResult = Process.runSync(gen.pubScript, ['get'],
-          runInShell: true, workingDirectory: _viewerCodePath);
-      print('process output: ${processResult.stdout}');
-      print('process stderr: ${processResult.stderr}');
-
-      var dir = new Directory(gen.outputDirectory == null ? 'docs' :
-          gen.outputDirectory);
-      _webDocsDir = new Directory(path.join(_viewerCodePath, 'web', 'docs'));
-      if (dir.existsSync()) {
-        // Move the docs folder to dartdoc-viewer/client/web/docs
-        dir.renameSync(_webDocsDir.path);
-      }
-    } else {
-      print('Error cloning git repository:');
-      print('process output: ${processResult.stdout}');
-      print('process stderr: ${processResult.stderr}');
-    }
-  }
-}
-
-/// Move the generated json/yaml docs directory to the dartdoc-viewer
-/// directory, to run as a webpage.
-void _moveDirectoryAndServe() {
-  var processResult = Process.runSync(gen.pubScript, ['upgrade'], runInShell:
-      true, workingDirectory: path.join(_dartdocViewerDir.path, 'client'));
-  print('process output: ${processResult.stdout}');
-  print('process stderr: ${processResult.stderr}');
-
-  var dir = new Directory(gen.outputDirectory == null ? 'docs' :
-      gen.outputDirectory);
-  var webDocsDir = new Directory(path.join(_dartdocViewerDir.path, 'client',
-      'web', 'docs'));
-  if (dir.existsSync()) {
-    // Move the docs folder to dartdoc-viewer/client/web/docs
-    dir.renameSync(webDocsDir.path);
-  }
-
-  if (webDocsDir.existsSync()) {
-    // Compile the code to JavaScript so we can run on any browser.
-    print('Compiling the app to JavaScript.');
-    var processResult = Process.runSync(gen.dartBinary, ['deploy.dart'],
-        workingDirectory: path.join(_dartdocViewerDir.path, 'client'),
-        runInShell: true);
-    print('process output: ${processResult.stdout}');
-    print('process stderr: ${processResult.stderr}');
-    _runServer();
-  }
-}
-
-void _compile() {
-  if (_webDocsDir.existsSync()) {
-    // Compile the code to JavaScript so we can run on any browser.
-    print('Compiling the app to JavaScript.');
-    var processResult = Process.runSync(gen.dartBinary, ['deploy.dart'],
-        workingDirectory: _viewerCodePath, runInShell: true);
-    print('process output: ${processResult.stdout}');
-    print('process stderr: ${processResult.stderr}');
-    var outputDir = path.join(_viewerCodePath, 'out', 'web');
-    print('Docs are available at $outputDir');
-  }
-}
-
-/// A simple HTTP server. Implemented here because this is part of the SDK,
-/// so it shouldn't have any external dependencies.
-void _runServer() {
-  // Launch a server to serve out of the directory dartdoc-viewer/client/web.
-  HttpServer.bind(InternetAddress.ANY_IP_V6, 8080).then((HttpServer httpServer)
-      {
-    print('Server launched. Navigate your browser to: '
-        'http://localhost:${httpServer.port}');
-    httpServer.listen((HttpRequest request) {
-      var response = request.response;
-      var basePath = path.join(_viewerCodePath, 'out', 'web');
-      var requestPath = path.join(basePath, request.uri.path.substring(1));
-      bool found = true;
-      var file = new File(requestPath);
-      if (file.existsSync()) {
-        // Set the correct header type.
-        if (requestPath.endsWith('.html')) {
-          response.headers.set('Content-Type', 'text/html');
-        } else if (requestPath.endsWith('.js')) {
-          response.headers.set('Content-Type', 'application/javascript');
-        } else if (requestPath.endsWith('.dart')) {
-          response.headers.set('Content-Type', 'application/dart');
-        } else if (requestPath.endsWith('.css')) {
-          response.headers.set('Content-Type', 'text/css');
-        }
-      } else {
-        if (requestPath == basePath) {
-          response.headers.set('Content-Type', 'text/html');
-          file = new File(path.join(basePath, 'index.html'));
-        } else {
-          print('Path not found: $requestPath');
-          found = false;
-          response.statusCode = HttpStatus.NOT_FOUND;
-          response.close();
-        }
-      }
-
-      if (found) {
-        // Serve up file contents.
-        file.openRead().pipe(response).catchError((e) {
-          print('HttpServer: error while closing the response stream $e');
-        });
-      }
-    }, onError: (e) {
-      print('HttpServer: an error occured $e');
-    });
-  });
-}
diff --git a/pkg/docgen/pubspec.yaml b/pkg/docgen/pubspec.yaml
deleted file mode 100644
index d34a4d8..0000000
--- a/pkg/docgen/pubspec.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-name: docgen
-author: Dart Team <misc@dartlang.org>
-description: A documentation generator for the Dart repository.
-homepage: https://www.dartlang.org/
-dependencies:
-  args: '>=0.9.0 <0.14.0'
-  logging: '>=0.9.0 <0.12.0'
-  markdown: ^0.7.1+2
-  path: '>=0.9.0 <2.0.0'
-  yaml: '>=0.9.0 <3.0.0'
-dev_dependencies:
-  scheduled_test: '>=0.10.0 <0.12.0'
-  unittest: '>=0.9.0 <0.12.0'
diff --git a/pkg/docgen/test/async_await_test.dart b/pkg/docgen/test/async_await_test.dart
deleted file mode 100644
index e129455..0000000
--- a/pkg/docgen/test/async_await_test.dart
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library async_await_test;
-
-import 'dart:io';
-
-import 'package:path/path.dart' as path;
-import 'package:unittest/unittest.dart';
-
-import '../lib/src/exports/mirrors_util.dart' as dart2js_util;
-import '../lib/docgen.dart';
-
-const String DART_LIBRARY = '''
-  library test;
-  /**
-   * Doc comment for class [A].
-   *
-   * Multiline Test
-   */
-  /*
-   * Normal comment for class A.
-   */
-  class A {
-    m1() sync* {
-      yield 0;
-    }
-
-    m2() async {
-      await 0;
-      await for (var e in m1()) {}
-    }
-
-    m3() async* {
-      yield* m1();
-    }
-  }
-
-  m1() sync* {
-    yield 0;
-  }
-
-  m2() async {
-    await 0;
-    await for (var e in m1()) {}
-  }
-
-  m3() async* {
-    yield* m1();
-  }
-
-  main() {
-    m1();
-    m2();
-    m3();
-    A a = new A();
-    a.m1();
-    a.m2();
-    a.m3();
-  }
-''';
-
-main() {
-  group('Generate docs for', () {
-    test('file with async/await.', () {
-      var temporaryDir = Directory.systemTemp.createTempSync('single_library_');
-      var fileName = path.join(temporaryDir.path, 'temp.dart');
-      var file = new File(fileName);
-      file.writeAsStringSync(DART_LIBRARY);
-
-      return getMirrorSystem([new Uri.file(fileName)], false)
-        .then((mirrorSystem) {
-          var testLibraryUri = new Uri.file(path.absolute(fileName),
-                                            windows: Platform.isWindows);
-          var library = new Library(mirrorSystem.libraries[testLibraryUri]);
-          expect(library is Library, isTrue);
-
-          var classTypes = library.classes;
-          var classes = [];
-          classes.addAll(classTypes.values);
-          classes.addAll(library.errors.values);
-          expect(classes.every((e) => e is Class), isTrue);
-
-          expect(library.typedefs.values.every((e) => e is Typedef), isTrue);
-
-          var classMethodTypes = [];
-          classes.forEach((e) {
-            classMethodTypes.add(e.methods);
-            classMethodTypes.add(e.inheritedMethods);
-          });
-          expect(classMethodTypes.every((e) => e is Map<String, Method>),
-                 isTrue);
-
-          var classMethods = [];
-          classMethodTypes.forEach((e) {
-            classMethods.addAll(e.values);
-          });
-          expect(classMethods.every((e) => e is Method), isTrue);
-
-          var methodParameters = [];
-          classMethods.forEach((e) {
-            methodParameters.addAll(e.parameters.values);
-          });
-          expect(methodParameters.every((e) => e is Parameter), isTrue);
-
-          var functionTypes = library.functions;
-          expect(functionTypes is Map<String, Method>, isTrue);
-
-          var functions = [];
-          functions.addAll(functionTypes.values);
-          expect(functions.every((e) => e is Method), isTrue);
-
-          var functionParameters = [];
-          functions.forEach((e) {
-            functionParameters.addAll(e.parameters.values);
-          });
-          expect(functionParameters.every((e) => e is Parameter), isTrue);
-
-          var variables = library.variables.values;
-          expect(variables.every((e) => e is Variable), isTrue);
-
-          /// Testing fixReference
-          // Testing Doc comment for class [A].
-          var libraryMirror = mirrorSystem.libraries[testLibraryUri];
-          var classMirror =
-              dart2js_util.classesOf(libraryMirror.declarations).first;
-          var classDocComment = library.fixReference('A').children.first.text;
-          expect(classDocComment, 'test.A');
-
-          // Test for linking to parameter [A]
-          var method = getDocgenObject(
-              classMirror.declarations[dart2js_util.symbolOf('m1')]);
-
-          // Testing trying to refer to m1 method
-          var methodDocComment = method.fixReference(
-              'm1').children.first.text;
-          expect(methodDocComment, 'test.A.m1');
-
-          // Testing something with no reference
-          var libraryDocComment = method.fixReference('foobar').text;
-          expect(libraryDocComment, 'foobar');
-
-          // Testing trying to refer to m1 function
-          libraryDocComment = library.fixReference('m1').children.first.text;
-          expect(libraryDocComment, 'test.m1');
-        }).whenComplete(() => temporaryDir.deleteSync(recursive: true));
-    });
-  });
-}
diff --git a/pkg/docgen/test/constant_argument_test.dart b/pkg/docgen/test/constant_argument_test.dart
deleted file mode 100644
index bf5a84a..0000000
--- a/pkg/docgen/test/constant_argument_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.test.typedef;
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:path/path.dart' as p;
-import 'package:scheduled_test/descriptor.dart' as d;
-import 'package:scheduled_test/scheduled_test.dart';
-
-import 'util.dart';
-import '../lib/docgen.dart' as dg;
-
-void main() {
-
-  setUp(() {
-    scheduleTempDir();
-  });
-
-  test('argument default values', () {
-    schedule(() {
-      var codeDir = getMultiLibraryCodePath();
-      expect(FileSystemEntity.isDirectorySync(codeDir), isTrue);
-      return dg.docgen([codeDir], out: p.join(d.defaultRoot, 'docs'));
-    });
-
-    schedule(() {
-      var path = p.join(d.defaultRoot, 'docs', 'test_lib.json');
-      var dartCoreJson = new File(path).readAsStringSync();
-
-      var testLibBar = JSON.decode(dartCoreJson) as Map<String, dynamic>;
-
-      //
-      // Validate function doc references
-      //
-      var functionDef =
-          testLibBar['functions']['methods']['positionalDefaultValues']
-          as Map<String, dynamic>;
-
-      var params = functionDef['parameters'] as Map<String, dynamic>;
-
-      expect(params.keys, orderedEquals(_PARAM_NAME_ORDER),
-          reason: 'parameter order  must be maintained');
-
-      var vals = {};
-      params.forEach((paramName, paramHash) {
-        expect(_PARAM_VALUES, contains(paramName));
-        expect(paramHash['value'], _PARAM_VALUES[paramName],
-            reason: 'Value for $paramName should match expected');
-      });
-    });
-  });
-}
-
-final _PARAM_VALUES = {
-  "intConst": "42",
-  "boolConst": "true",
-  "listConst": 'const [true, 42, "Shanna", null, 3.14, const []]',
-  "stringConst": "\"Shanna\"",
-  "mapConst": 'const {"a": 1, 2: true, "c": const [1, null, true]}',
-  "emptyMap": 'const {}',
-  "referencedConst": "INT_CONST",
-  "constructedConstant1": "const ConstClass<int>(0, true)",
-  "constructedConstant2": 'const ConstClass(1, false, str: "str")'
-};
-
-const _PARAM_NAME_ORDER = const [
-  "intConst",
-  "boolConst",
-  "listConst",
-  "stringConst",
-  "mapConst",
-  "emptyMap",
-  "referencedConst",
-  "constructedConstant1",
-  "constructedConstant2"
-];
diff --git a/pkg/docgen/test/generate_json_test.dart b/pkg/docgen/test/generate_json_test.dart
deleted file mode 100644
index c22ae13..0000000
--- a/pkg/docgen/test/generate_json_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.generate_json_test;
-
-import 'dart:io';
-
-import 'package:path/path.dart' as p;
-import 'package:scheduled_test/descriptor.dart' as d;
-import 'package:scheduled_test/scheduled_test.dart';
-
-import 'util.dart';
-import '../lib/docgen.dart' as dg;
-
-void main() {
-
-  setUp(() {
-    scheduleTempDir();
-  });
-
-  test('json output', () {
-    schedule(() {
-      var codeDir = getMultiLibraryCodePath();
-      expect(FileSystemEntity.isDirectorySync(codeDir), isTrue);
-      return dg.docgen([codeDir], out: p.join(d.defaultRoot, 'docs'));
-    });
-
-    d.dir('docs', [
-        d.matcherFile('index.json', isJsonMap),
-        d.matcherFile('index.txt', hasSortedLines),
-        d.matcherFile('library_list.json', isJsonMap),
-        d.matcherFile('library_list.json',
-            startsWith(_LIBRARY_LIST_UNINDENT_START)),
-        d.matcherFile('sub_lib.json', isJsonMap),
-        d.matcherFile('sub_lib.SubLibClass.json', isJsonMap),
-        d.matcherFile('sub_lib.SubLibPart.json', isJsonMap),
-        d.matcherFile('test_lib-bar.C.json', isJsonMap),
-        d.matcherFile('test_lib-bar.json', isJsonMap),
-        d.matcherFile('test_lib-foo.B.json', isJsonMap),
-        d.matcherFile('test_lib-foo.json', isJsonMap),
-        d.matcherFile('test_lib.A.json', isJsonMap),
-        d.matcherFile('test_lib.B.json', isJsonMap),
-        d.matcherFile('test_lib.C.json', isJsonMap),
-        d.matcherFile('test_lib.json', isJsonMap),
-    ]).validate();
-  });
-}
-
-const _LIBRARY_LIST_UNINDENT_START = '{"libraries":[{"packageName":""';
diff --git a/pkg/docgen/test/inherited_comments_test.dart b/pkg/docgen/test/inherited_comments_test.dart
deleted file mode 100644
index 3f07887..0000000
--- a/pkg/docgen/test/inherited_comments_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.test.inherited_comments;
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:path/path.dart' as p;
-import 'package:scheduled_test/descriptor.dart' as d;
-import 'package:scheduled_test/scheduled_test.dart';
-
-import 'util.dart';
-import '../lib/docgen.dart' as dg;
-
-void main() {
-
-  setUp(() {
-    scheduleTempDir();
-  });
-
-  test('inherited comments', () {
-    schedule(() {
-      var codeDir = getMultiLibraryCodePath();
-      expect(FileSystemEntity.isDirectorySync(codeDir), isTrue);
-      return dg.docgen([codeDir], out: p.join(d.defaultRoot, 'docs'));
-    });
-
-    schedule(() {
-      var path = p.join(d.defaultRoot, 'docs', 'dart-core.Set.json');
-      var dartCoreSetJson = new File(path).readAsStringSync();
-
-      var dartCoreSet = JSON.decode(dartCoreSetJson) as Map<String, dynamic>;
-
-      var toListDetails = dartCoreSet['inheritedMethods']['methods']['toList']
-          as Map<String, dynamic>;
-
-      expect(toListDetails, containsPair('comment', _TO_LIST_COMMENT));
-      expect(toListDetails, containsPair('commentFrom', _TO_LIST_COMMENT_FROM));
-    });
-  });
-}
-
-const _TO_LIST_COMMENT = "<p>Creates a <a>dart:core.List</a> containing the "
-    "elements of this <a>dart:core.Iterable</a>.</p>\n<p>The elements are in "
-    "iteration order. The list is fixed-length\nif "
-    "<a>dart:core.Set.toList.growable</a> is false.</p>";
-const _TO_LIST_COMMENT_FROM = "dart:core.Iterable.toList";
diff --git a/pkg/docgen/test/metadata_test.dart b/pkg/docgen/test/metadata_test.dart
deleted file mode 100644
index 87ea6f5..0000000
--- a/pkg/docgen/test/metadata_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library async_await_test;
-
-import 'dart:io';
-
-import 'package:path/path.dart' as path;
-import 'package:unittest/unittest.dart';
-
-import '../lib/src/exports/mirrors_util.dart' as dart2js_util;
-import '../lib/src/models/annotation.dart';
-import '../lib/docgen.dart';
-
-const Map<String, String> SOURCES = const <String, String>{
-  'main.dart': '''
-import 'lib.dart' as lib;
-
-@lib.Annotation("foo", 42)
-main() {
-}
-''',
-  'lib.dart': '''
-class Annotation {
-  final String arg1;
-  final int arg2;
-  const Annotation(this.arg1, this.arg2);
-}
-'''};
-
-main() {
-  group('Generate docs for', () {
-    test('files with annotations', () {
-      var temporaryDir = Directory.systemTemp.createTempSync('metadata_');
-      var uris = <Uri>[];
-      SOURCES.forEach((name, code) {
-        var fileName = path.join(temporaryDir.path, name);
-        var file = new File(fileName);
-        file.writeAsStringSync(code);
-        uris.add(new Uri.file(fileName));
-      });
-
-      return getMirrorSystem(uris, false).then((mirrorSystem) {
-        var library = new Library(mirrorSystem.libraries[uris[0]]);
-        expect(library is Library, isTrue);
-
-        var main = library.functions['main'];
-        expect(main is Method, isTrue);
-
-        var annotations = main.annotations;
-        expect(annotations.length, equals(1));
-
-        var annotation = annotations[0];
-        expect(annotation is Annotation, isTrue);
-
-        var map = annotation.toMap();
-        expect(map['name'], equals('lib-dart.Annotation.Annotation-'));
-        expect(map['parameters'].length, equals(2));
-        expect(map['parameters'][0], equals('"foo"'));
-        expect(map['parameters'][1], equals('42'));
-      }).whenComplete(() => temporaryDir.deleteSync(recursive: true));
-    });
-  });
-}
diff --git a/pkg/docgen/test/method_param_test.dart b/pkg/docgen/test/method_param_test.dart
deleted file mode 100644
index a12840e..0000000
--- a/pkg/docgen/test/method_param_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.test.method_param;
-
-import 'package:path/path.dart' as path;
-import 'package:scheduled_test/scheduled_test.dart';
-
-import 'util.dart';
-import '../lib/docgen.dart' as gen;
-
-void main() {
-  test('method function parameters', () {
-    var lib_file = path.toUri(path.join(getMultiLibraryCodePath(), 'lib',
-        'test_lib2.dart'));
-    return gen.getMirrorSystem([lib_file], false)
-      .then((mirrorSystem) {
-        var library = new gen.Library(mirrorSystem.libraries[lib_file]);
-
-        // Test that libraries do recursive exports correctly.
-        var funcParams = library.functions['fooFunc'].parameters;
-        expect('Symbol("dart.core.int")', library.functions['fooFunc']
-            .parameters['fooFuncParam'].functionDeclaration.parameters['x']
-            .type.mirror.qualifiedName.toString());
-      });
-  });
-}
\ No newline at end of file
diff --git a/pkg/docgen/test/multi_library_code/lib/dottedLibraryName.dart b/pkg/docgen/test/multi_library_code/lib/dottedLibraryName.dart
deleted file mode 100644
index c4357c1..0000000
--- a/pkg/docgen/test/multi_library_code/lib/dottedLibraryName.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library library.name.wiith.dots.init;
-
-/// This library is purely for testing purposes, to ensure
-/// that we have a library that has dots in its name and
-/// that it works properly
-///
-/// In addition, it's nice to have something which has paragraph
-/// breaks inside a triple-slash doc comment.
-///
-/// Like this.
-
-/// This is a top level field holding the number three;
-int topLevelInt = 3;
-
-/// This is a class with various ways of getting the number three.
-///
-/// It also has a comment with paragraph breaks.
-class SomeClass {
-  /// This is a method that returns the number three. See
-  /// [three]
-  someMethod() => 3;
-
-  /// This is a symbolic representation of the number three.
-  int three = 3;
-}
-
-/// This is another class.
-class AnotherClass {
-  /// This method returns [List<int>] containing the number
-  /// three three times. Compare with [SomeClass.someMethod].
-  List<int> anotherMethod() {
-    return const [3, 3, 3];
-  }
-}
diff --git a/pkg/docgen/test/multi_library_code/lib/root_lib.dart b/pkg/docgen/test/multi_library_code/lib/root_lib.dart
deleted file mode 100644
index 74423ab..0000000
--- a/pkg/docgen/test/multi_library_code/lib/root_lib.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library root_lib;
-
-export 'test_lib.dart';
-export 'test_lib_foo.dart';
-export 'test_lib_bar.dart';
-
-class RootClass {
-  RootClass(int a, int b);
-}
diff --git a/pkg/docgen/test/multi_library_code/lib/src/src_lib.dart b/pkg/docgen/test/multi_library_code/lib/src/src_lib.dart
deleted file mode 100644
index 9755378..0000000
--- a/pkg/docgen/test/multi_library_code/lib/src/src_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-library internal_lib;
-
-part 'src_lib_part.dart';
-
-class InternalLibClass {}
diff --git a/pkg/docgen/test/multi_library_code/lib/src/src_lib_part.dart b/pkg/docgen/test/multi_library_code/lib/src/src_lib_part.dart
deleted file mode 100644
index 1f866ed..0000000
--- a/pkg/docgen/test/multi_library_code/lib/src/src_lib_part.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-part of internal_lib;
-
-class InternalLibPart {}
diff --git a/pkg/docgen/test/multi_library_code/lib/sublib_dir/sub_lib.dart b/pkg/docgen/test/multi_library_code/lib/sublib_dir/sub_lib.dart
deleted file mode 100644
index b1726a9..0000000
--- a/pkg/docgen/test/multi_library_code/lib/sublib_dir/sub_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-library sub_lib;
-
-part 'sub_lib_part.dart';
-
-class SubLibClass {}
diff --git a/pkg/docgen/test/multi_library_code/lib/sublib_dir/sub_lib_part.dart b/pkg/docgen/test/multi_library_code/lib/sublib_dir/sub_lib_part.dart
deleted file mode 100644
index 9698296..0000000
--- a/pkg/docgen/test/multi_library_code/lib/sublib_dir/sub_lib_part.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-part of sub_lib;
-
-class SubLibPart {}
diff --git a/pkg/docgen/test/multi_library_code/lib/test_lib.dart b/pkg/docgen/test/multi_library_code/lib/test_lib.dart
deleted file mode 100644
index 8d76624..0000000
--- a/pkg/docgen/test/multi_library_code/lib/test_lib.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_lib;
-
-import 'test_lib_foo.dart';
-import 'test_lib_bar.dart';
-export 'test_lib_foo.dart';
-export 'test_lib_bar.dart';
-
-/**
- * Doc comment for class [A].
- *
- * Multiline Test
- */
-/*
- * Normal comment for class A.
- */
-class A {
-
-  int _someNumber;
-
-  A() {
-    _someNumber = 12;
-  }
-
-  A.customConstructor();
-
-  /**
-   * Test for linking to parameter [A]
-   */
-  void doThis(int A) {
-    print(A);
-  }
-}
-
-// A trivial use of `B` and `C` to eliminate import warnings
-B sampleMethod(C cInstance) {
-  throw new UnimplementedError();
-}
-
-int positionalDefaultValues([
-    int intConst = 42,
-    bool boolConst = true,
-    List listConst = const [true, 42, 'Shanna', null, 3.14, const []],
-    String stringConst = 'Shanna',
-    Map mapConst = const {'a':1, 2: true, 'c': const [1,null,true]},
-    Map emptyMap = const {},
-    int referencedConst = INT_CONST,
-    ConstClass constructedConstant1 = const ConstClass<int>(0, true),
-    ConstClass constructedConstant2 = const ConstClass(1, false, str: "str")]) {
-  throw new UnimplementedError();
-}
-
-const int INT_CONST = 42;
-
-class ConstClass<T> {
-  final bool boolField;
-  final int intField;
-  final String stringField;
-
-  const ConstClass(this.intField, this.boolField, {String str: 'default'})
-      : this.stringField = str;
-}
diff --git a/pkg/docgen/test/multi_library_code/lib/test_lib2.dart b/pkg/docgen/test/multi_library_code/lib/test_lib2.dart
deleted file mode 100644
index b28f6d8..0000000
--- a/pkg/docgen/test/multi_library_code/lib/test_lib2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_lib2;
-
-export 'test_lib2_foo.dart';
-
-String fooFunc(bool fooFuncParam(int x)) => 'hi';
\ No newline at end of file
diff --git a/pkg/docgen/test/multi_library_code/lib/test_lib2_bar.dart b/pkg/docgen/test/multi_library_code/lib/test_lib2_bar.dart
deleted file mode 100644
index 1a07d2b..0000000
--- a/pkg/docgen/test/multi_library_code/lib/test_lib2_bar.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_lib2_bar;
-
-class Bar {
-
-}
diff --git a/pkg/docgen/test/multi_library_code/lib/test_lib2_foo.dart b/pkg/docgen/test/multi_library_code/lib/test_lib2_foo.dart
deleted file mode 100644
index 1b3d037..0000000
--- a/pkg/docgen/test/multi_library_code/lib/test_lib2_foo.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_lib2_foo;
-
-export 'test_lib2_bar.dart';
-
-class Foo {
-
-}
-
-main() {
-  print('hello world');
-}
diff --git a/pkg/docgen/test/multi_library_code/lib/test_lib_bar.dart b/pkg/docgen/test/multi_library_code/lib/test_lib_bar.dart
deleted file mode 100644
index 6f36d9b..0000000
--- a/pkg/docgen/test/multi_library_code/lib/test_lib_bar.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_lib.bar;
-
-import 'test_lib.dart';
-import 'test_lib_foo.dart';
-
-/*
- * Normal comment for class C.
- */
-class C {
-}
-
-/// Processes an [input] of type [C] instance for testing.
-///
-/// To eliminate import warnings for [A] and to test typedefs.
-///
-/// It's important that the [List<A>] for param [listOfA] is not empty.
-A testMethod(C input, List<A> listOfA, B aBee) {
-  throw 'noop';
-}
-
-/// Processes an [input] of type [C] instance for testing.
-///
-/// To eliminate import warnings for [A] and to test typedefs.
-///
-/// It's important that the [List<A>] for param [listOfA] is not empty.
-typedef A testTypedef(C other, List<A> listOfA, B aBee);
diff --git a/pkg/docgen/test/multi_library_code/lib/test_lib_foo.dart b/pkg/docgen/test/multi_library_code/lib/test_lib_foo.dart
deleted file mode 100644
index b615bf6..0000000
--- a/pkg/docgen/test/multi_library_code/lib/test_lib_foo.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_lib.foo;
-
-import 'test_lib.dart';
-
-/**
- * Doc comment for class [B].
- *
- * Multiline Test
- */
-
-/*
- * Normal comment for class B.
- */
-class B extends A {
-
-  B();
-  B.fooBar();
-
-  /**
-   * Test for linking to super
-   */
-  int doElse(int b) {
-    print(b);
-    return b;
-  }
-
-  /**
-   * Test for linking to parameter [c]
-   */
-  void doThis(int c) {
-    print(c);
-  }
-}
-
-int testFunc(int a) {
-  return a;
-}
diff --git a/pkg/docgen/test/multi_library_test.dart b/pkg/docgen/test/multi_library_test.dart
deleted file mode 100644
index ceda276..0000000
--- a/pkg/docgen/test/multi_library_test.dart
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library single_library_test;
-
-import 'package:path/path.dart' as p;
-import 'package:unittest/unittest.dart';
-
-import '../lib/docgen.dart';
-import '../lib/src/exports/mirrors_util.dart' as dart2js_util;
-
-import 'util.dart';
-
-List<Uri> _writeLibFiles() {
-  var codePath = getMultiLibraryCodePath();
-
-  codePath = p.join(codePath, 'lib');
-
-  return ['test_lib.dart', 'test_lib_bar.dart', 'test_lib_foo.dart']
-      .map((name) => p.join(codePath, name))
-      .map(p.toUri)
-      .toList();
-}
-
-void main() {
-  group('Generate docs for', () {
-    test('multiple libraries.', () {
-      var files = _writeLibFiles();
-      return getMirrorSystem(files, false)
-        .then((mirrorSystem) {
-          var test_libraryUri = files[0];
-          var library = new Library(mirrorSystem.libraries[test_libraryUri]);
-
-          /// Testing fixReference
-          // Testing Doc comment for class [B].
-          var libraryMirror = mirrorSystem.libraries[test_libraryUri];
-          var classDocComment = library.fixReference('B').children.first.text;
-          expect(classDocComment, 'test_lib.B');
-
-          // Test for linking to parameter [c]
-          var importedLib = libraryMirror.libraryDependencies.firstWhere(
-            (dep) => dep.isImport).targetLibrary;
-          var aClassMirror =
-              dart2js_util.classesOf(importedLib.declarations).first;
-          expect(dart2js_util.qualifiedNameOf(aClassMirror),
-                 'test_lib.foo.B');
-          var exportedClass = getDocgenObject(aClassMirror, library);
-          expect(exportedClass is Class, isTrue);
-
-
-          var method = exportedClass.methods['doThis'];
-          expect(method is Method, isTrue);
-          var methodParameterDocComment = method.fixReference(
-              'c').children.first.text;
-          expect(methodParameterDocComment, 'test_lib.B.doThis.c');
-
-
-          expect(method.fixReference('A').children.first.text, 'test_lib.A');
-          // Testing trying to refer to doThis function
-          expect(method.fixReference('doThis').children.first.text,
-              'test_lib.B.doThis');
-
-          // Testing trying to refer to doThis function
-          expect(method.fixReference('doElse').children.first.text,
-              'test_lib.B.doElse');
-
-
-          // Test a third library referencing another exported library in a
-          // separate file.
-          importedLib = libraryMirror.libraryDependencies.firstWhere(
-            (dep) => dep.isImport &&
-                     dart2js_util.qualifiedNameOf(dep.targetLibrary) ==
-            'test_lib.bar').targetLibrary;
-          aClassMirror = dart2js_util.classesOf(importedLib.declarations).first;
-          expect(dart2js_util.qualifiedNameOf(aClassMirror),
-                 'test_lib.bar.C');
-          exportedClass = getDocgenObject(aClassMirror, library);
-          expect(exportedClass is Class, isTrue);
-          expect(exportedClass.docName, 'test_lib.C');
-
-          methodParameterDocComment = exportedClass.fixReference(
-              'B').children.first.text;
-          expect(methodParameterDocComment, 'test_lib.B');
-
-          methodParameterDocComment = exportedClass.fixReference(
-              'testFunc').children.first.text;
-          expect(methodParameterDocComment, 'test_lib.testFunc');
-
-        });
-    });
-
-    test('multiple exported libraries.', () {
-      var lib_file = p.toUri(p.join(getMultiLibraryCodePath(), 'lib',
-          'test_lib2.dart'));
-      return getMirrorSystem([lib_file], false)
-        .then((mirrorSystem) {
-          var library = new Library(mirrorSystem.libraries[lib_file]);
-
-          // Test that libraries do recursive exports correctly.
-          expect(true, library.classes.keys.contains('Bar'));
-        });
-
-    });
-  });
-}
diff --git a/pkg/docgen/test/native_extensions_test.dart b/pkg/docgen/test/native_extensions_test.dart
deleted file mode 100644
index 70e789c..0000000
--- a/pkg/docgen/test/native_extensions_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library native_extensions_test;
-
-import 'dart:io';
-
-import 'package:path/path.dart' as path;
-import 'package:unittest/unittest.dart';
-
-import '../lib/src/exports/mirrors_util.dart' as dart2js_util;
-import '../lib/docgen.dart';
-
-const String DART_LIBRARY = '''
-  library sample_synchronous_extension;
-
-  import 'dart-ext:sample_extension';
-
-  // The simplest way to call native code: top-level functions.
-  int systemRand() native "SystemRand";
-  bool systemSrand(int seed) native "SystemSrand";
-
-  void main() {
-    systemRand();
-    systemSrand(4);
-  }
-''';
-
-main() {
-  group('Generate docs for', () {
-    test('file with native extensions.', () {
-      var temporaryDir = Directory.systemTemp.createTempSync('native_ext_');
-      var fileName = path.join(temporaryDir.path, 'temp.dart');
-      var file = new File(fileName);
-      file.writeAsStringSync(DART_LIBRARY);
-
-      return getMirrorSystem([new Uri.file(fileName)], false)
-        .then((mirrorSystem) {
-          var testLibraryUri = new Uri.file(path.absolute(fileName),
-                                            windows: Platform.isWindows);
-          var library = new Library(mirrorSystem.libraries[testLibraryUri]);
-          expect(library is Library, isTrue);
-
-          var classTypes = library.classes;
-          var classes = [];
-          classes.addAll(classTypes.values);
-          classes.addAll(library.errors.values);
-          expect(classes.every((e) => e is Class), isTrue);
-
-          expect(library.typedefs.values.every((e) => e is Typedef), isTrue);
-
-          var classMethodTypes = [];
-          classes.forEach((e) {
-            classMethodTypes.add(e.methods);
-            classMethodTypes.add(e.inheritedMethods);
-          });
-          expect(classMethodTypes.every((e) => e is Map<String, Method>),
-                 isTrue);
-
-          var classMethods = [];
-          classMethodTypes.forEach((e) {
-            classMethods.addAll(e.values);
-          });
-          expect(classMethods.every((e) => e is Method), isTrue);
-
-          var methodParameters = [];
-          classMethods.forEach((e) {
-            methodParameters.addAll(e.parameters.values);
-          });
-          expect(methodParameters.every((e) => e is Parameter), isTrue);
-
-          var functionTypes = library.functions;
-          expect(functionTypes is Map<String, Method>, isTrue);
-
-          var functions = [];
-          functions.addAll(functionTypes.values);
-          expect(functions.every((e) => e is Method), isTrue);
-
-          var functionParameters = [];
-          functions.forEach((e) {
-            functionParameters.addAll(e.parameters.values);
-          });
-          expect(functionParameters.every((e) => e is Parameter), isTrue);
-
-          var variables = library.variables.values;
-          expect(variables.every((e) => e is Variable), isTrue);
-
-          // Testing trying to refer to m1 function
-          var libraryDocComment =
-              library.fixReference('systemRand').children.first.text;
-          expect(libraryDocComment, 'sample_synchronous_extension.systemRand');
-
-          libraryDocComment =
-              library.fixReference('systemSrand').children.first.text;
-          expect(libraryDocComment, 'sample_synchronous_extension.systemSrand');
-        }).whenComplete(() => temporaryDir.deleteSync(recursive: true));
-    });
-  });
-}
diff --git a/pkg/docgen/test/only_lib_content_in_pkg_test.dart b/pkg/docgen/test/only_lib_content_in_pkg_test.dart
deleted file mode 100644
index b4ec488..0000000
--- a/pkg/docgen/test/only_lib_content_in_pkg_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.test.only_lib_content_in_pkg;
-
-import 'dart:io';
-
-import 'package:path/path.dart' as p;
-import 'package:scheduled_test/descriptor.dart' as d;
-import 'package:scheduled_test/scheduled_test.dart';
-
-import '../lib/docgen.dart' as dg;
-import 'util.dart';
-
-void main() {
-
-  setUp(() {
-    scheduleTempDir();
-  });
-
-  test('exclude non-lib code from package docs', () {
-    schedule(() {
-      var thisScript = Platform.script;
-      var thisPath = p.fromUri(thisScript);
-      expect(p.basename(thisPath), 'only_lib_content_in_pkg_test.dart');
-      expect(p.dirname(thisPath), endsWith('test'));
-
-      var packageRoot = Platform.packageRoot;
-      if (packageRoot == '') packageRoot = null;
-
-      var codeDir = p.normalize(p.join(thisPath, '..', '..'));
-      expect(FileSystemEntity.isDirectorySync(codeDir), isTrue);
-      return dg.docgen(['$codeDir/'], out: p.join(d.defaultRoot, 'docs'),
-          packageRoot: packageRoot);
-    });
-
-    d.dir('docs', [
-        d.dir('docgen', [
-          d.matcherFile('docgen.json',  isJsonMap)
-        ]),
-        d.matcherFile('index.json', isJsonMap),
-        d.matcherFile('index.txt', hasSortedLines),
-        d.matcherFile('library_list.json', isJsonMap),
-        d.nothing('test_lib.json'),
-        d.nothing('test_lib-bar.json'),
-        d.nothing('test_lib-foo.json')
-    ]).validate();
-
-  });
-}
diff --git a/pkg/docgen/test/single_library_test.dart b/pkg/docgen/test/single_library_test.dart
deleted file mode 100644
index 31f3a5e..0000000
--- a/pkg/docgen/test/single_library_test.dart
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library single_library_test;
-
-import 'dart:io';
-
-import 'package:path/path.dart' as path;
-import 'package:unittest/unittest.dart';
-
-import '../lib/src/exports/mirrors_util.dart' as dart2js_util;
-import '../lib/docgen.dart';
-
-const String DART_LIBRARY = '''
-  library test;
-  /**
-   * Doc comment for class [A].
-   *
-   * Multiline Test
-   */
-  /*
-   * Normal comment for class A.
-   */
-  class A {
-
-    int _someNumber;
-
-    A() {
-      _someNumber = 12;
-    }
-
-    /**
-     * Test for linking to parameter [A]
-     */
-    void doThis(int A) {
-      print(A);
-    }
-  }
-
-  main() {
-    A a = new A();
-    a.doThis(5);
-  }
-''';
-
-main() {
-  group('Generate docs for', () {
-    test('one simple file.', () {
-      var temporaryDir = Directory.systemTemp.createTempSync('single_library_');
-      var fileName = path.join(temporaryDir.path, 'temp.dart');
-      var file = new File(fileName);
-      file.writeAsStringSync(DART_LIBRARY);
-
-      return getMirrorSystem([new Uri.file(fileName)], false)
-        .then((mirrorSystem) {
-          var testLibraryUri = new Uri.file(path.absolute(fileName),
-                                            windows: Platform.isWindows);
-          var library = new Library(mirrorSystem.libraries[testLibraryUri]);
-          expect(library is Library, isTrue);
-
-          var classTypes = library.classes;
-          var classes = [];
-          classes.addAll(classTypes.values);
-          classes.addAll(library.errors.values);
-          expect(classes.every((e) => e is Class), isTrue);
-
-          expect(library.typedefs.values.every((e) => e is Typedef), isTrue);
-
-          var classMethodTypes = [];
-          classes.forEach((e) {
-            classMethodTypes.add(e.methods);
-            classMethodTypes.add(e.inheritedMethods);
-          });
-          expect(classMethodTypes.every((e) => e is Map<String, Method>), isTrue);
-
-          var classMethods = [];
-          classMethodTypes.forEach((e) {
-            classMethods.addAll(e.values);
-          });
-          expect(classMethods.every((e) => e is Method), isTrue);
-
-          var methodParameters = [];
-          classMethods.forEach((e) {
-            methodParameters.addAll(e.parameters.values);
-          });
-          expect(methodParameters.every((e) => e is Parameter), isTrue);
-
-          var functionTypes = library.functions;
-          expect(functionTypes is Map<String, Method>, isTrue);
-
-          var functions = [];
-          functions.addAll(functionTypes.values);
-          expect(functions.every((e) => e is Method), isTrue);
-
-          var functionParameters = [];
-          functions.forEach((e) {
-            functionParameters.addAll(e.parameters.values);
-          });
-          expect(functionParameters.every((e) => e is Parameter), isTrue);
-
-          var variables = library.variables.values;
-          expect(variables.every((e) => e is Variable), isTrue);
-
-          /// Testing fixReference
-          // Testing Doc comment for class [A].
-          var libraryMirror = mirrorSystem.libraries[testLibraryUri];
-          var classMirror =
-              dart2js_util.classesOf(libraryMirror.declarations).first;
-          var classDocComment = library.fixReference('A').children.first.text;
-          expect(classDocComment, 'test.A');
-
-          // Test for linking to parameter [A]
-          var method = getDocgenObject(
-              classMirror.declarations[dart2js_util.symbolOf('doThis')]);
-          var methodParameterDocComment = method.fixReference(
-              'A').children.first.text;
-          expect(methodParameterDocComment, 'test.A.doThis.A');
-
-          // Testing trying to refer to doThis function
-          var methodDocComment = method.fixReference(
-              'doThis').children.first.text;
-          expect(methodDocComment, 'test.A.doThis');
-
-          // Testing something with no reference
-          var libraryDocComment = method.fixReference('foobar').text;
-          expect(libraryDocComment, 'foobar');
-        }).whenComplete(() => temporaryDir.deleteSync(recursive: true));
-    });
-  });
-}
diff --git a/pkg/docgen/test/typedef_test.dart b/pkg/docgen/test/typedef_test.dart
deleted file mode 100644
index 7a1e217..0000000
--- a/pkg/docgen/test/typedef_test.dart
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.test.typedef;
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:path/path.dart' as p;
-import 'package:scheduled_test/descriptor.dart' as d;
-import 'package:scheduled_test/scheduled_test.dart';
-
-import 'util.dart';
-import '../lib/docgen.dart' as dg;
-
-void main() {
-  setUp(() {
-    scheduleTempDir();
-  });
-
-  test('typedef gen', () {
-    schedule(() {
-      var codeDir = getMultiLibraryCodePath();
-      expect(FileSystemEntity.isDirectorySync(codeDir), isTrue);
-      return dg.docgen([codeDir], out: p.join(d.defaultRoot, 'docs'));
-    });
-
-    schedule(() {
-      var path = p.join(d.defaultRoot, 'docs', 'root_lib.json');
-      var rootLibJson = new File(path).readAsStringSync();
-
-      var rootLib = JSON.decode(rootLibJson) as Map<String, dynamic>;
-
-      //
-      // Validate function doc references
-      //
-      //var testMethod =
-      //    rootLib['functions']['methods']['testMethod'] as Map<String, dynamic>;
-
-      // test commented out
-      // TODO: figure out why test is failing after upgrade to markdown 0.7.2
-      // Expected: '<p>Processes an <a>root_lib.testMethod.input</a> of type <a>root_lib.C</a> instance for testing.</p>\n'
-      //  '<p>To eliminate import warnings for <a>root_lib.A</a> and to test typedefs.</p>\n'
-      //  '<p>It\'s important that the <a>dart:core</a>&lt;A> for param <a>root_lib.testMethod.listOfA</a> is not empty.</p>'
-      // Actual: '<p>Processes an <a>root_lib.testMethod.input</a> of type <a>root_lib.C</a> instance for testing.</p>\n'
-      //  '<p>To eliminate import warnings for <a>root_lib.A</a> and to test typedefs.</p>\n'
-      //  '<p>It\'s important that the List<A> for param <a>root_lib.testMethod.listOfA</a> is not empty.</p>'
-      //   Which: is different.
-      // Expected: ...  that the <a>dart:co ...
-      // Actual: ...  that the List<A> fo ...
-      //                     ^
-      // Differ at offset 210
-      //
-      // expect(testMethod['comment'], _TEST_METHOD_COMMENT);
-
-//      var classes = rootLib['classes'] as Map<String, dynamic>;
-//
-//      expect(classes, hasLength(3));
-//
-//      expect(classes['class'], isList);
-//      expect(classes['error'], isList);
-//
-//      var typeDefs = classes['typedef'] as Map<String, dynamic>;
-//      var comparator = typeDefs['testTypedef'] as Map<String, dynamic>;
-//
-//      expect(comparator['preview'], _TEST_TYPEDEF_PREVIEW);
-//
-//      expect(comparator['comment'], _TEST_TYPEDEF_COMMENT);
-    });
-
-    schedule(() {
-      var path = p.join(d.defaultRoot, 'docs', 'root_lib.RootClass.json');
-      var rootClassJson = new File(path).readAsStringSync();
-
-      var rootClass = JSON.decode(rootClassJson) as Map<String, dynamic>;
-
-      var defaultCtor = rootClass['methods']['constructors'][''] as Map;
-
-      expect(defaultCtor['qualifiedName'], 'root_lib.RootClass.RootClass-');
-    });
-  });
-}
-
-// TOOD: [List<A>] is not formatted correctly - issue 16771
-const _TEST_METHOD_COMMENT = '<p>Processes an '
-    '<a>root_lib.testMethod.input</a> of type <a>root_lib.C</a> '
-    'instance for testing.</p>\n<p>To eliminate import warnings for '
-    '<a>root_lib.A</a> and to test typedefs.</p>\n<p>It\'s important that the'
-    ' <a>dart:core</a>&lt;A> for param <a>root_lib.testMethod.listOfA</a> '
-    'is not empty.</p>';
-
-// TODO: [input] is not turned into a param refenece
-// TODO(kevmoo): <a>test_lib.C</a> should be <a>root_lib.C</a> - Issues 18352
-const _TEST_TYPEDEF_PREVIEW = '<p>Processes an input of type '
-    '<a>test_lib.C</a> instance for testing.</p>';
-
-// TOOD: [List<A>] is not formatted correctly - issue 16771
-// TODO: [listOfA] is not turned into a param reference
-// TODO(kevmoo): <a>test_lib.C</a> should be <a>root_lib.C</a> - Issues 18352
-final _TEST_TYPEDEF_COMMENT = _TEST_TYPEDEF_PREVIEW +
-    '\n<p>To eliminate import'
-    ' warnings for <a>test_lib.A</a> and to test typedefs.</p>\n<p>It\'s '
-    'important that the <a>dart:core</a>&lt;A> for param listOfA is not '
-    'empty.</p>';
diff --git a/pkg/docgen/test/util.dart b/pkg/docgen/test/util.dart
deleted file mode 100644
index 3f7f2ed..0000000
--- a/pkg/docgen/test/util.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library docgen.test.util;
-
-import 'dart:convert';
-import 'dart:io';
-import 'package:path/path.dart' as p;
-import 'package:scheduled_test/descriptor.dart' as d;
-import 'package:scheduled_test/scheduled_test.dart';
-
-void scheduleTempDir() {
-  var tempDir;
-  schedule(() {
-    return Directory.systemTemp
-        .createTemp('docgen_test-')
-        .then((dir) {
-      tempDir = dir;
-      d.defaultRoot = tempDir.path;
-    });
-  });
-
-  currentSchedule.onComplete.schedule(() {
-    d.defaultRoot = null;
-    return tempDir.delete(recursive: true);
-  });
-}
-
-String getMultiLibraryCodePath() {
-  var currentScript = p.fromUri(Platform.script);
-  var codeDir = p.join(p.dirname(currentScript), 'multi_library_code');
-
-  assert(FileSystemEntity.isDirectorySync(codeDir));
-
-  return codeDir;
-}
-
-final Matcher hasSortedLines = predicate((String input) {
-  var lines = new LineSplitter().convert(input);
-
-  var sortedLines = new List.from(lines)..sort();
-
-  var orderedMatcher = orderedEquals(sortedLines);
-  return orderedMatcher.matches(lines, {});
-}, 'String has sorted lines');
-
-final Matcher isJsonMap = predicate((input) {
-  try {
-    return JSON.decode(input) is Map;
-  } catch (e) {
-    return false;
-  }
-}, 'Output is JSON encoded Map');
diff --git a/pkg/js_ast/lib/src/template.dart b/pkg/js_ast/lib/src/template.dart
index 632f273..34ad972 100644
--- a/pkg/js_ast/lib/src/template.dart
+++ b/pkg/js_ast/lib/src/template.dart
@@ -765,7 +765,6 @@
     int before = count;
     node.visitChildren(this);
     if (count != before) containsInterpolatedNode.add(node);
-    return null;
   }
 
   visitInterpolatedNode(InterpolatedNode node) {
diff --git a/pkg/pkg.status b/pkg/pkg.status
index ef4d6f7d..71af314 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -170,30 +170,4 @@
 analyzer/test/*: PubGetError
 
 [ $compiler == dart2js && $cps_ir ]
-analyzer/test/enum_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/all_the_rest_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/ast_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/compile_time_error_code_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/element_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/incremental_resolver_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/incremental_scanner_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/non_error_resolver_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/parser_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/resolver_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/scanner_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/source_factory_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/static_type_warning_code_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/static_warning_code_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/generated/utilities_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/source/package_map_provider_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/context/cache_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/context/context_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/dart_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/dart_work_manager_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/driver_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/general_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/html_work_manager_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/inputs_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/manager_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
-analyzer/test/src/task/model_test: Crash # (Iterable<JavaFile> ...  cannot handle sync*/async* functions
 lookup_map/test/lookup_map_test: RuntimeError # $async$temp1.get$tests is not a function
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 702a8a2..7e11163 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -751,23 +751,25 @@
   result = Dart_SetEnvironmentCallback(EnvironmentCallback);
   CHECK_RESULT(result);
 
-  // Load the script.
-  result = DartUtils::LoadScript(script_uri, builtin_lib);
-  CHECK_RESULT(result);
+  if (!has_run_precompiled_snapshot) {
+    // Load the script.
+    result = DartUtils::LoadScript(script_uri, builtin_lib);
+    CHECK_RESULT(result);
 
-  // Run event-loop and wait for script loading to complete.
-  result = Dart_RunLoop();
-  CHECK_RESULT(result);
+    // Run event-loop and wait for script loading to complete.
+    result = Dart_RunLoop();
+    CHECK_RESULT(result);
 
-  if (isolate_data->load_async_id >= 0) {
-    Dart_TimelineAsyncEnd("LoadScript", isolate_data->load_async_id);
+    if (isolate_data->load_async_id >= 0) {
+      Dart_TimelineAsyncEnd("LoadScript", isolate_data->load_async_id);
+    }
+
+    Platform::SetPackageRoot(package_root);
+
+    result = DartUtils::SetupIOLibrary(script_uri);
+    CHECK_RESULT(result);
   }
 
-  Platform::SetPackageRoot(package_root);
-
-  result = DartUtils::SetupIOLibrary(script_uri);
-  CHECK_RESULT(result);
-
   // Make the isolate runnable so that it is ready to handle messages.
   Dart_ExitScope();
   Dart_ExitIsolate();
diff --git a/runtime/bin/vmservice/server.dart b/runtime/bin/vmservice/server.dart
index 34d5715..8697e65 100644
--- a/runtime/bin/vmservice/server.dart
+++ b/runtime/bin/vmservice/server.dart
@@ -146,9 +146,16 @@
       return;
     }
     // HTTP based service request.
-    var client = new HttpRequestClient(request, _service);
-    var message = new Message.fromUri(client, request.uri);
-    client.onMessage(null, message);
+    try {
+      var client = new HttpRequestClient(request, _service);
+      var message = new Message.fromUri(client, request.uri);
+      client.onMessage(null, message);
+    } catch (e) {
+      print('Unexpected error processing HTTP request uri: '
+            '${request.uri}\n$e\n');
+      rethrow;
+    }
+
   }
 
   Future startup() {
diff --git a/runtime/include/dart_tools_api.h b/runtime/include/dart_tools_api.h
index 2ba982c..0ed7cd2 100644
--- a/runtime/include/dart_tools_api.h
+++ b/runtime/include/dart_tools_api.h
@@ -890,7 +890,10 @@
 /** Timeline stream for isolate events */
 #define DART_TIMELINE_STREAM_ISOLATE (1 << 4)
 
-/** Enable all timeline stream recording */
+/** Timeline stream for VM events */
+#define DART_TIMELINE_STREAM_VM (1 << 5)
+
+/** Enable all timeline stream recording for an isolate */
 #define DART_TIMELINE_STREAM_ALL (DART_TIMELINE_STREAM_API |                   \
                                   DART_TIMELINE_STREAM_COMPILER |              \
                                   DART_TIMELINE_STREAM_EMBEDDER |              \
@@ -909,6 +912,19 @@
  */
 DART_EXPORT void Dart_TimelineSetRecordedStreams(int64_t stream_mask);
 
+
+/**
+ * Start recording timeline events for the entire VM (including all isolates).
+ *
+ * NOTE: When enabled, the global flag, will override the per-isolate flag.
+ *
+ * \param stream_mask A bitmask of streams that should be recorded.
+ *
+ * NOTE: Calling with 0 disables recording of all streams.
+ */
+DART_EXPORT void Dart_GlobalTimelineSetRecordedStreams(int64_t stream_mask);
+
+
 typedef enum {
   /** Indicates a new stream is being output */
   Dart_StreamConsumer_kStart = 0,
@@ -960,6 +976,23 @@
 DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer,
                                        void* user_data);
 
+
+/**
+ * Get the timeline for entire VM (including all isolates).
+ *
+ * NOTE: The timeline retrieved from this API call may not include the most
+ * recent events.
+ *
+ * \param consumer A Dart_StreamConsumer.
+ * \param user_data User data passed into consumer.
+ *
+ * NOTE: The trace-event format is documented here: https://goo.gl/hDZw5M
+ *
+ * \return True if a stream was output.
+ */
+DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer,
+                                             void* user_data);
+
 /**
  * Add a duration timeline event to the embedder stream for the current isolate.
  *
diff --git a/runtime/lib/invocation_mirror_patch.dart b/runtime/lib/invocation_mirror_patch.dart
index cc820cb..09b6827 100644
--- a/runtime/lib/invocation_mirror_patch.dart
+++ b/runtime/lib/invocation_mirror_patch.dart
@@ -80,7 +80,7 @@
       int numPositionalArguments = _argumentsDescriptor[1] - 1;
       int numNamedArguments = numArguments - numPositionalArguments;
       if (numNamedArguments == 0) {
-        return _namedArguments = const <Symbol, dynamic>{};
+        return _namedArguments = const {};
       }
       _namedArguments = new Map<Symbol, dynamic>();
       for (int i = 0; i < numNamedArguments; i++) {
diff --git a/runtime/lib/isolate_patch.dart b/runtime/lib/isolate_patch.dart
index 51b7ac0..daaaf97 100644
--- a/runtime/lib/isolate_patch.dart
+++ b/runtime/lib/isolate_patch.dart
@@ -309,13 +309,15 @@
   /* patch */ static Future<Isolate> spawnUri(
       Uri uri, List<String> args, var message,
       {bool paused: false,
-       bool checked,
-       Uri packageRoot,
-       Map<String, Uri> packages,
-       bool errorsAreFatal,
        SendPort onExit,
-       SendPort onError}) {
+       SendPort onError,
+       bool errorsAreFatal,
+       bool checked,
+       Map<String, String> environment,
+       Uri packageRoot,
+       Map<String, Uri> packages}) {
     RawReceivePort readyPort;
+    if (environment != null) throw new UnimplementedError("environment");
     try {
       // The VM will invoke [_startIsolate] and not `main`.
       // TODO: Handle [packages].
diff --git a/runtime/observatory/lib/src/app/analytics.dart b/runtime/observatory/lib/src/app/analytics.dart
index cb6a91f..8f09f61 100644
--- a/runtime/observatory/lib/src/app/analytics.dart
+++ b/runtime/observatory/lib/src/app/analytics.dart
@@ -7,7 +7,7 @@
 class Analytics {
   static final _UA = 'UA-26406144-17';
   static final _name = 'Observatory';
-  static final _version = '1.11';
+  static final _version = const String.fromEnvironment('OBS_VER');
   static final _googleAnalytics = new AnalyticsHtml(_UA, _name, _version);
 
   static initialize() {
diff --git a/runtime/observatory/tests/service/get_isolate_rpc_test.dart b/runtime/observatory/tests/service/get_isolate_rpc_test.dart
index f45caf3..5cc4a63 100644
--- a/runtime/observatory/tests/service/get_isolate_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_isolate_rpc_test.dart
@@ -46,6 +46,17 @@
     }
     expect(caughtException, isTrue);
   },
+
+  // Plausible isolate id, not found.
+  (VM vm) async {
+    var params = {
+      'isolateId': 'isolates/9999999999',
+    };
+    var result = await vm.invokeRpcNoUpgrade('getIsolate', params);
+    expect(result['type'], equals('Sentinel'));
+    expect(result['kind'], equals('Collected'));
+    expect(result['valueAsString'], equals('<collected>'));
+  },
 ];
 
 main(args) async => runVMTests(args, tests);
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 7f82dcb..dabc8b2 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -29,6 +29,9 @@
 cc/ThreadInterrupterMedium: Skip
 cc/ThreadInterrupterLow: Skip
 cc/Service_Profile: Skip
+cc/Dart2JSCompilerStats: Skip
+cc/CorelibCompilerStats: Skip
+
 
 [ $system == linux ]
 cc/ThreadInterrupterHigh: Skip
diff --git a/runtime/vm/assembler.cc b/runtime/vm/assembler.cc
index 5fe8c2f..4e1eca9 100644
--- a/runtime/vm/assembler.cc
+++ b/runtime/vm/assembler.cc
@@ -242,8 +242,9 @@
 }
 
 
-intptr_t ObjectPoolWrapper::AddObject(const Object& obj) {
-  return AddObject(ObjectPool::Entry(&obj), kNotPatchable);
+intptr_t ObjectPoolWrapper::AddObject(const Object& obj,
+                                      Patchability patchable) {
+  return AddObject(ObjectPool::Entry(&obj), patchable);
 }
 
 
@@ -264,14 +265,6 @@
 }
 
 
-intptr_t ObjectPoolWrapper::AddExternalLabel(const ExternalLabel* label,
-                                             Patchability patchable) {
-  return AddObject(ObjectPool::Entry(label->address(),
-                                     ObjectPool::kExternalLabel),
-                   patchable);
-}
-
-
 intptr_t ObjectPoolWrapper::FindObject(ObjectPool::Entry entry,
                                        Patchability patchable) {
   // If the object is not patchable, check if we've already got it in the
@@ -287,8 +280,9 @@
 }
 
 
-intptr_t ObjectPoolWrapper::FindObject(const Object& obj) {
-  return FindObject(ObjectPool::Entry(&obj), kNotPatchable);
+intptr_t ObjectPoolWrapper::FindObject(const Object& obj,
+                                       Patchability patchable) {
+  return FindObject(ObjectPool::Entry(&obj), patchable);
 }
 
 
@@ -298,14 +292,6 @@
 }
 
 
-intptr_t ObjectPoolWrapper::FindExternalLabel(const ExternalLabel* label,
-                                              Patchability patchable) {
-  return FindObject(ObjectPool::Entry(label->address(),
-                                      ObjectPool::kExternalLabel),
-                    patchable);
-}
-
-
 intptr_t ObjectPoolWrapper::FindNativeEntry(const ExternalLabel* label,
                                             Patchability patchable) {
   return FindObject(ObjectPool::Entry(label->address(),
diff --git a/runtime/vm/assembler.h b/runtime/vm/assembler.h
index 3f4d5ea..c414c0d 100644
--- a/runtime/vm/assembler.h
+++ b/runtime/vm/assembler.h
@@ -287,15 +287,13 @@
 
 class ObjectPoolWrapper : public ValueObject {
  public:
-  intptr_t AddObject(const Object& obj);
+  intptr_t AddObject(const Object& obj,
+                     Patchability patchable = kNotPatchable);
   intptr_t AddImmediate(uword imm);
-  intptr_t AddExternalLabel(const ExternalLabel* label,
-                            Patchability patchable);
 
-  intptr_t FindObject(const Object& obj);
+  intptr_t FindObject(const Object& obj,
+                      Patchability patchable = kNotPatchable);
   intptr_t FindImmediate(uword imm);
-  intptr_t FindExternalLabel(const ExternalLabel* label,
-                             Patchability patchable);
   intptr_t FindNativeEntry(const ExternalLabel* label,
                            Patchability patchable);
 
@@ -312,6 +310,12 @@
   DirectChainedHashMap<ObjIndexPair> object_pool_index_table_;
 };
 
+
+enum RestorePP {
+  kRestoreCallerPP,
+  kKeepCalleePP
+};
+
 }  // namespace dart
 
 
diff --git a/runtime/vm/assembler_arm.cc b/runtime/vm/assembler_arm.cc
index afb5744..0334d76 100644
--- a/runtime/vm/assembler_arm.cc
+++ b/runtime/vm/assembler_arm.cc
@@ -1534,34 +1534,64 @@
 // Uses a code sequence that can easily be decoded.
 void Assembler::LoadWordFromPoolOffset(Register rd,
                                        int32_t offset,
+                                       Register pp,
                                        Condition cond) {
-  ASSERT(constant_pool_allowed());
-  ASSERT(rd != PP);
+  ASSERT((pp != PP) || constant_pool_allowed());
+  ASSERT(rd != pp);
   int32_t offset_mask = 0;
   if (Address::CanHoldLoadOffset(kWord, offset, &offset_mask)) {
-    ldr(rd, Address(PP, offset), cond);
+    ldr(rd, Address(pp, offset), cond);
   } else {
     int32_t offset_hi = offset & ~offset_mask;  // signed
     uint32_t offset_lo = offset & offset_mask;  // unsigned
-    // Inline a simplified version of AddImmediate(rd, PP, offset_hi).
+    // Inline a simplified version of AddImmediate(rd, pp, offset_hi).
     Operand o;
     if (Operand::CanHold(offset_hi, &o)) {
-      add(rd, PP, o, cond);
+      add(rd, pp, o, cond);
     } else {
       LoadImmediate(rd, offset_hi, cond);
-      add(rd, PP, Operand(rd), cond);
+      add(rd, pp, Operand(rd), cond);
     }
     ldr(rd, Address(rd, offset_lo), cond);
   }
 }
 
+void Assembler::CheckCodePointer() {
+#ifdef DEBUG
+  Label cid_ok, instructions_ok;
+  Push(R0);
+  Push(IP);
+  CompareClassId(CODE_REG, kCodeCid, R0);
+  b(&cid_ok, EQ);
+  bkpt(0);
+  Bind(&cid_ok);
 
-void Assembler::LoadPoolPointer() {
-  const intptr_t object_pool_pc_dist =
-     Instructions::HeaderSize() - Instructions::object_pool_offset() +
-     CodeSize() + Instr::kPCReadOffset;
-  LoadFromOffset(kWord, PP, PC, -object_pool_pc_dist);
-  set_constant_pool_allowed(true);
+  const intptr_t offset = CodeSize() + Instr::kPCReadOffset +
+      Instructions::HeaderSize() - kHeapObjectTag;
+  mov(R0, Operand(PC));
+  AddImmediate(R0, R0, -offset);
+  ldr(IP, FieldAddress(CODE_REG, Code::saved_instructions_offset()));
+  cmp(R0, Operand(IP));
+  b(&instructions_ok, EQ);
+  bkpt(1);
+  Bind(&instructions_ok);
+  Pop(IP);
+  Pop(R0);
+#endif
+}
+
+
+void Assembler::RestoreCodePointer() {
+  ldr(CODE_REG, Address(FP, kPcMarkerSlotFromFp * kWordSize));
+  CheckCodePointer();
+}
+
+
+void Assembler::LoadPoolPointer(Register reg) {
+  // Load new pool pointer.
+  CheckCodePointer();
+  ldr(reg, FieldAddress(CODE_REG, Code::object_pool_offset()));
+  set_constant_pool_allowed(reg == PP);
 }
 
 
@@ -1570,54 +1600,67 @@
 }
 
 
+bool Assembler::CanLoadFromObjectPool(const Object& object) const {
+  ASSERT(!Thread::CanLoadFromThread(object));
+  if (!constant_pool_allowed()) {
+    return false;
+  }
+
+  ASSERT(object.IsNotTemporaryScopedHandle());
+  ASSERT(object.IsOld());
+  return true;
+}
+
+
 void Assembler::LoadObjectHelper(Register rd,
                                  const Object& object,
                                  Condition cond,
-                                 bool is_unique) {
+                                 bool is_unique,
+                                 Register pp) {
   // Load common VM constants from the thread. This works also in places where
   // no constant pool is set up (e.g. intrinsic code).
   if (Thread::CanLoadFromThread(object)) {
+    // Load common VM constants from the thread. This works also in places where
+    // no constant pool is set up (e.g. intrinsic code).
     ldr(rd, Address(THR, Thread::OffsetFromThread(object)), cond);
-    return;
-  }
-  // Smis and VM heap objects are never relocated; do not use object pool.
-  if (object.IsSmi()) {
+  } else if (object.IsSmi()) {
+    // Relocation doesn't apply to Smis.
     LoadImmediate(rd, reinterpret_cast<int32_t>(object.raw()), cond);
-  } else if (object.InVMHeap() || !constant_pool_allowed()) {
-    ASSERT(FLAG_allow_absolute_addresses);
-    // Make sure that class CallPattern is able to decode this load immediate.
-    const int32_t object_raw = reinterpret_cast<int32_t>(object.raw());
-    LoadImmediate(rd, object_raw, cond);
-  } else {
+  } else if (CanLoadFromObjectPool(object)) {
     // Make sure that class CallPattern is able to decode this load from the
     // object pool.
     const int32_t offset = ObjectPool::element_offset(
        is_unique ? object_pool_wrapper_.AddObject(object)
                  : object_pool_wrapper_.FindObject(object));
-    LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, cond);
+    LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, pp, cond);
+  } else {
+    ASSERT(FLAG_allow_absolute_addresses);
+    ASSERT(object.IsOld());
+    // Make sure that class CallPattern is able to decode this load immediate.
+    const int32_t object_raw = reinterpret_cast<int32_t>(object.raw());
+    LoadImmediate(rd, object_raw, cond);
   }
 }
 
 
 void Assembler::LoadObject(Register rd, const Object& object, Condition cond) {
-  LoadObjectHelper(rd, object, cond, false);
+  LoadObjectHelper(rd, object, cond, /* is_unique = */ false, PP);
 }
 
 
 void Assembler::LoadUniqueObject(Register rd,
                                  const Object& object,
                                  Condition cond) {
-  LoadObjectHelper(rd, object, cond, true);
+  LoadObjectHelper(rd, object, cond, /* is_unique = */ true, PP);
 }
 
 
-void Assembler::LoadExternalLabel(Register rd,
-                                  const ExternalLabel* label,
-                                  Patchability patchable,
-                                  Condition cond) {
-  const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(label, patchable));
-  LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, cond);
+void Assembler::LoadFunctionFromCalleePool(Register dst,
+                                           const Function& function,
+                                           Register new_pp) {
+  const int32_t offset =
+      ObjectPool::element_offset(object_pool_wrapper_.FindObject(function));
+  LoadWordFromPoolOffset(dst, offset - kHeapObjectTag, new_pp, AL);
 }
 
 
@@ -1627,7 +1670,7 @@
                                 Condition cond) {
   const int32_t offset = ObjectPool::element_offset(
       object_pool_wrapper_.FindNativeEntry(label, patchable));
-  LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, cond);
+  LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, PP, cond);
 }
 
 
@@ -1824,7 +1867,7 @@
     StoreIntoObjectFilterNoSmi(object, value, &done);
   }
   // A store buffer update is required.
-  RegList regs = (1 << LR);
+  RegList regs = (1 << CODE_REG) | (1 << LR);
   if (value != R0) {
     regs |= (1 << R0);  // Preserve R0.
   }
@@ -1832,6 +1875,7 @@
   if (object != R0) {
     mov(R0, Operand(object));
   }
+  ldr(CODE_REG, Address(THR, Thread::update_store_buffer_code_offset()));
   ldr(LR, Address(THR, Thread::update_store_buffer_entry_point_offset()));
   blx(LR);
   PopList(regs);
@@ -2687,20 +2731,41 @@
 }
 
 
-void Assembler::Branch(const StubEntry& stub_entry, Condition cond) {
-  // Address is never patched.
-  LoadImmediate(IP, stub_entry.label().address(), cond);
+void Assembler::Branch(const StubEntry& stub_entry,
+                       Patchability patchable,
+                       Register pp,
+                       Condition cond) {
+  const Code& target_code = Code::Handle(stub_entry.code());
+  const int32_t offset = ObjectPool::element_offset(
+      object_pool_wrapper_.FindObject(target_code, patchable));
+  LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag, pp, cond);
+  ldr(IP, FieldAddress(CODE_REG, Code::entry_point_offset()), cond);
   bx(IP, cond);
 }
 
 
-void Assembler::BranchPatchable(const StubEntry& stub_entry) {
-  // Use a fixed size code sequence, since a function prologue may be patched
-  // with this branch sequence.
-  // Contrarily to BranchLinkPatchable, BranchPatchable requires an instruction
-  // cache flush upon patching.
-  LoadPatchableImmediate(IP, stub_entry.label().address());
-  bx(IP);
+void Assembler::BranchLink(const Code& target, Patchability patchable) {
+  // Make sure that class CallPattern is able to patch the label referred
+  // to by this code sequence.
+  // For added code robustness, use 'blx lr' in a patchable sequence and
+  // use 'blx ip' in a non-patchable sequence (see other BranchLink flavors).
+  const int32_t offset = ObjectPool::element_offset(
+      object_pool_wrapper_.FindObject(target, patchable));
+  LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag, PP, AL);
+  ldr(LR, FieldAddress(CODE_REG, Code::entry_point_offset()));
+  blx(LR);  // Use blx instruction so that the return branch prediction works.
+}
+
+
+void Assembler::BranchLink(const StubEntry& stub_entry,
+                           Patchability patchable) {
+  const Code& code = Code::Handle(stub_entry.code());
+  BranchLink(code, patchable);
+}
+
+
+void Assembler::BranchLinkPatchable(const Code& target) {
+  BranchLink(target, kPatchable);
 }
 
 
@@ -2710,26 +2775,8 @@
 }
 
 
-void Assembler::BranchLink(const ExternalLabel* label, Patchability patchable) {
-  // Make sure that class CallPattern is able to patch the label referred
-  // to by this code sequence.
-  // For added code robustness, use 'blx lr' in a patchable sequence and
-  // use 'blx ip' in a non-patchable sequence (see other BranchLink flavors).
-  const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(label, patchable));
-  LoadWordFromPoolOffset(LR, offset - kHeapObjectTag, AL);
-  blx(LR);  // Use blx instruction so that the return branch prediction works.
-}
-
-
-void Assembler::BranchLink(const StubEntry& stub_entry,
-                           Patchability patchable) {
-  BranchLink(&stub_entry.label(), patchable);
-}
-
-
 void Assembler::BranchLinkPatchable(const StubEntry& stub_entry) {
-  BranchLink(&stub_entry.label(), kPatchable);
+  BranchLinkPatchable(Code::Handle(stub_entry.code()));
 }
 
 
@@ -2770,7 +2817,7 @@
   if ((version == ARMv5TE) || (version == ARMv6)) {
     if (constant_pool_allowed()) {
       const int32_t offset = Array::element_offset(FindImmediate(value));
-      LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, cond);
+      LoadWordFromPoolOffset(rd, offset - kHeapObjectTag, PP, cond);
     } else {
       LoadPatchableImmediate(rd, value, cond);
     }
@@ -3306,19 +3353,9 @@
 
 void Assembler::EnterDartFrame(intptr_t frame_size) {
   ASSERT(!constant_pool_allowed());
-  const intptr_t offset = CodeSize();
 
-  // Save PC in frame for fast identification of corresponding code.
-  // Note that callee-saved registers can be added to the register list.
-  EnterFrame((1 << PP) | (1 << FP) | (1 << LR) | (1 << PC), 0);
-
-  if (offset != 0) {
-    // Adjust saved PC for any intrinsic code that could have been generated
-    // before a frame is created. Use PP as temp register.
-    ldr(PP, Address(FP, 2 * kWordSize));
-    AddImmediate(PP, PP, -offset);
-    str(PP, Address(FP, 2 * kWordSize));
-  }
+  // Registers are pushed in descending order: R9 | R10 | R11 | R14.
+  EnterFrame((1 << PP) | (1 << CODE_REG) | (1 << FP) | (1 << LR), 0);
 
   // Setup pool pointer for this dart function.
   LoadPoolPointer();
@@ -3335,41 +3372,26 @@
 // allocate. We must also set up the pool pointer for the function.
 void Assembler::EnterOsrFrame(intptr_t extra_size) {
   ASSERT(!constant_pool_allowed());
-  // mov(IP, Operand(PC)) loads PC + Instr::kPCReadOffset (8). This may be
-  // different from EntryPointToPcMarkerOffset().
-  const intptr_t offset =
-      CodeSize() + Instr::kPCReadOffset - EntryPointToPcMarkerOffset();
-
   Comment("EnterOsrFrame");
-  mov(IP, Operand(PC));
-
-  AddImmediate(IP, -offset);
-  str(IP, Address(FP, kPcMarkerSlotFromFp * kWordSize));
-
-  // Setup pool pointer for this dart function.
+  RestoreCodePointer();
   LoadPoolPointer();
 
   AddImmediate(SP, -extra_size);
 }
 
 
-void Assembler::LeaveDartFrame() {
-  set_constant_pool_allowed(false);
-  LeaveFrame((1 << PP) | (1 << FP) | (1 << LR));
-  // Adjust SP for PC pushed in EnterDartFrame.
-  AddImmediate(SP, kWordSize);
+void Assembler::LeaveDartFrame(RestorePP restore_pp) {
+  if (restore_pp == kRestoreCallerPP) {
+    ldr(PP, Address(FP, kSavedCallerPpSlotFromFp * kWordSize));
+    set_constant_pool_allowed(false);
+  }
+  Drop(2);  // Drop saved PP, PC marker.
+  LeaveFrame((1 << FP) | (1 << LR));
 }
 
 
 void Assembler::EnterStubFrame() {
-  set_constant_pool_allowed(false);
-  // Push 0 as saved PC for stub frames.
-  mov(IP, Operand(LR));
-  mov(LR, Operand(0));
-  RegList regs = (1 << PP) | (1 << FP) | (1 << IP) | (1 << LR);
-  EnterFrame(regs, 0);
-  // Setup pool pointer for this stub.
-  LoadPoolPointer();
+  EnterDartFrame(0);
 }
 
 
diff --git a/runtime/vm/assembler_arm.h b/runtime/vm/assembler_arm.h
index 6fb2da7..38dcedc 100644
--- a/runtime/vm/assembler_arm.h
+++ b/runtime/vm/assembler_arm.h
@@ -606,19 +606,18 @@
   void bx(Register rm, Condition cond = AL);
   void blx(Register rm, Condition cond = AL);
 
-  // Macros.
-  // Branch to an entry address. Call sequence is never patched.
-  void Branch(const StubEntry& stub_entry, Condition cond = AL);
-
-  // Branch to an entry address. Call sequence can be patched or even replaced.
-  void BranchPatchable(const StubEntry& stub_entry);
+  void Branch(const StubEntry& stub_entry,
+              Patchability patchable = kNotPatchable,
+              Register pp = PP,
+              Condition cond = AL);
 
   void BranchLink(const StubEntry& stub_entry,
                   Patchability patchable = kNotPatchable);
-  void BranchLink(const ExternalLabel* label, Patchability patchable);
+  void BranchLink(const Code& code, Patchability patchable);
 
   // Branch and link to an entry address. Call sequence can be patched.
   void BranchLinkPatchable(const StubEntry& stub_entry);
+  void BranchLinkPatchable(const Code& code);
 
   // Branch and link to [base + offset]. Call sequence is never patched.
   void BranchLinkOffset(Register base, int32_t offset);
@@ -661,16 +660,16 @@
 
   void Drop(intptr_t stack_elements);
 
-  void LoadPoolPointer();
+  void RestoreCodePointer();
+  void LoadPoolPointer(Register reg = PP);
 
   void LoadIsolate(Register rd);
 
   void LoadObject(Register rd, const Object& object, Condition cond = AL);
   void LoadUniqueObject(Register rd, const Object& object, Condition cond = AL);
-  void LoadExternalLabel(Register dst,
-                         const ExternalLabel* label,
-                         Patchability patchable,
-                         Condition cond = AL);
+  void LoadFunctionFromCalleePool(Register dst,
+                                  const Function& function,
+                                  Register new_pp);
   void LoadNativeEntry(Register dst,
                        const ExternalLabel* label,
                        Patchability patchable,
@@ -760,6 +759,7 @@
                            Label* miss);
 
   intptr_t FindImmediate(int32_t imm);
+  bool CanLoadFromObjectPool(const Object& object) const;
   void LoadFromOffset(OperandSize type,
                       Register reg,
                       Register base,
@@ -871,6 +871,8 @@
     b(is_smi, CC);
   }
 
+  void CheckCodePointer();
+
   // Function frame setup and tear down.
   void EnterFrame(RegList regs, intptr_t frame_space);
   void LeaveFrame(RegList regs);
@@ -889,7 +891,7 @@
   // enable easy access to the RawInstruction object of code corresponding
   // to this frame.
   void EnterDartFrame(intptr_t frame_size);
-  void LeaveDartFrame();
+  void LeaveDartFrame(RestorePP restore_pp = kRestoreCallerPP);
 
   // Set up a Dart frame for a function compiled for on-stack replacement.
   // The frame layout is a normal Dart frame, but the frame is partially set
@@ -901,13 +903,6 @@
   void EnterStubFrame();
   void LeaveStubFrame();
 
-  // Instruction pattern from entrypoint is used in Dart frame prologs
-  // to set up the frame and save a PC which can be used to figure out the
-  // RawInstruction object corresponding to the code running in the frame.
-  static intptr_t EntryPointToPcMarkerOffset() {
-    return TargetCPUFeatures::store_pc_read_offset();
-  }
-
   // The register into which the allocation stats table is loaded with
   // LoadAllocationStatsAddress should be passed to
   // IncrementAllocationStats(WithSize) as stats_addr_reg to update the
@@ -993,9 +988,12 @@
   void BindARMv6(Label* label);
   void BindARMv7(Label* label);
 
-  void BranchLink(const ExternalLabel* label);
+  void LoadWordFromPoolOffset(Register rd,
+                              int32_t offset,
+                              Register pp,
+                              Condition cond);
 
-  void LoadWordFromPoolOffset(Register rd, int32_t offset, Condition cond);
+  void BranchLink(const ExternalLabel* label);
 
   class CodeComment : public ZoneAllocated {
    public:
@@ -1019,7 +1017,8 @@
   void LoadObjectHelper(Register rd,
                         const Object& object,
                         Condition cond,
-                        bool is_unique);
+                        bool is_unique,
+                        Register pp);
 
   void EmitType01(Condition cond,
                   int type,
diff --git a/runtime/vm/assembler_arm64.cc b/runtime/vm/assembler_arm64.cc
index a360a2d..06203d2 100644
--- a/runtime/vm/assembler_arm64.cc
+++ b/runtime/vm/assembler_arm64.cc
@@ -304,11 +304,8 @@
 
 
 void Assembler::LoadPoolPointer(Register pp) {
-  const intptr_t object_pool_pc_dist =
-    Instructions::HeaderSize() - Instructions::object_pool_offset() +
-    CodeSize();
-  // PP <- Read(PC - object_pool_pc_dist).
-  ldr(pp, Address::PC(-object_pool_pc_dist));
+  CheckCodePointer();
+  ldr(pp, FieldAddress(CODE_REG, Code::object_pool_offset()));
 
   // When in the PP register, the pool pointer is untagged. When we
   // push it on the stack with TagAndPushPP it is tagged again. PopAndUntagPP
@@ -321,18 +318,20 @@
 }
 
 
-void Assembler::LoadWordFromPoolOffset(Register dst, uint32_t offset) {
-  ASSERT(constant_pool_allowed());
-  ASSERT(dst != PP);
+void Assembler::LoadWordFromPoolOffset(Register dst,
+                                       uint32_t offset,
+                                       Register pp) {
+  ASSERT((pp != PP) || constant_pool_allowed());
+  ASSERT(dst != pp);
   Operand op;
   const uint32_t upper20 = offset & 0xfffff000;
   if (Address::CanHoldOffset(offset)) {
-    ldr(dst, Address(PP, offset));
+    ldr(dst, Address(pp, offset));
   } else if (Operand::CanHold(upper20, kXRegSizeInBits, &op) ==
              Operand::Immediate) {
     const uint32_t lower12 = offset & 0x00000fff;
     ASSERT(Address::CanHoldOffset(lower12));
-    add(dst, PP, op);
+    add(dst, pp, op);
     ldr(dst, Address(dst, lower12));
   } else {
     const uint16_t offset_low = Utils::Low16Bits(offset);
@@ -341,7 +340,7 @@
     if (offset_high != 0) {
       movk(dst, Immediate(offset_high), 1);
     }
-    ldr(dst, Address(PP, dst));
+    ldr(dst, Address(pp, dst));
   }
 }
 
@@ -385,18 +384,6 @@
 }
 
 
-void Assembler::LoadExternalLabel(Register dst, const ExternalLabel* label) {
-  if (constant_pool_allowed()) {
-    const int32_t offset = ObjectPool::element_offset(
-        object_pool_wrapper_.FindExternalLabel(label, kNotPatchable));
-    LoadWordFromPoolOffset(dst, offset);
-  } else {
-    const int64_t target = static_cast<int64_t>(label->address());
-    LoadImmediate(dst, target);
-  }
-}
-
-
 void Assembler::LoadNativeEntry(Register dst,
                                 const ExternalLabel* label) {
   const int32_t offset = ObjectPool::element_offset(
@@ -405,15 +392,6 @@
 }
 
 
-void Assembler::LoadExternalLabelFixed(Register dst,
-                                       const ExternalLabel* label,
-                                       Patchability patchable) {
-  const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(label, patchable));
-  LoadWordFromPoolOffsetFixed(dst, offset);
-}
-
-
 void Assembler::LoadIsolate(Register dst) {
   ldr(dst, Address(THR, Thread::isolate_offset()));
 }
@@ -595,48 +573,35 @@
 }
 
 
-void Assembler::Branch(const ExternalLabel* label) {
-  LoadExternalLabel(TMP, label);
-  br(TMP);
-}
-
-
-void Assembler::Branch(const StubEntry& stub_entry) {
-  const ExternalLabel label(stub_entry.EntryPoint());
-  Branch(&label);
-}
-
-
-void Assembler::BranchPatchable(const ExternalLabel* label) {
-  // TODO(zra): Use LoadExternalLabelFixed if possible.
-  LoadImmediateFixed(TMP, label->address());
+void Assembler::Branch(const StubEntry& stub_entry,
+                       Register pp,
+                       Patchability patchable) {
+  const Code& target = Code::Handle(stub_entry.code());
+  const int32_t offset = ObjectPool::element_offset(
+      object_pool_wrapper_.FindObject(target, patchable));
+  LoadWordFromPoolOffset(CODE_REG, offset, pp);
+  ldr(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
   br(TMP);
 }
 
 void Assembler::BranchPatchable(const StubEntry& stub_entry) {
-  BranchPatchable(&stub_entry.label());
+  Branch(stub_entry, PP, kPatchable);
 }
 
 
-void Assembler::BranchLink(const ExternalLabel* label) {
-  LoadExternalLabel(TMP, label);
-  blr(TMP);
-}
-
-
-void Assembler::BranchLink(const StubEntry& stub_entry) {
-  BranchLink(&stub_entry.label());
-}
-
-
-void Assembler::BranchLinkPatchable(const ExternalLabel* label) {
-  LoadExternalLabelFixed(TMP, label, kPatchable);
+void Assembler::BranchLink(const StubEntry& stub_entry,
+                           Patchability patchable) {
+  const Code& target = Code::Handle(stub_entry.code());
+  const int32_t offset = ObjectPool::element_offset(
+      object_pool_wrapper_.FindObject(target, patchable));
+  LoadWordFromPoolOffset(CODE_REG, offset);
+  ldr(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
   blr(TMP);
 }
 
 
 void Assembler::BranchLinkPatchable(const StubEntry& stub_entry) {
-  BranchLinkPatchable(&stub_entry.label());
+  BranchLink(stub_entry, kPatchable);
 }
 
 
@@ -926,6 +891,7 @@
   if (object != R0) {
     mov(R0, object);
   }
+  ldr(CODE_REG, Address(THR, Thread::update_store_buffer_code_offset()));
   ldr(TMP, Address(THR, Thread::update_store_buffer_entry_point_offset()));
   blr(TMP);
   Pop(LR);
@@ -1102,6 +1068,34 @@
 }
 
 
+void Assembler::RestoreCodePointer() {
+  ldr(CODE_REG, Address(FP, kPcMarkerSlotFromFp * kWordSize));
+  CheckCodePointer();
+}
+
+
+void Assembler::CheckCodePointer() {
+#ifdef DEBUG
+  Label cid_ok, instructions_ok;
+  Push(R0);
+  CompareClassId(CODE_REG, kCodeCid);
+  b(&cid_ok, EQ);
+  brk(0);
+  Bind(&cid_ok);
+
+  const intptr_t entry_offset =
+      CodeSize() + Instructions::HeaderSize() - kHeapObjectTag;
+  adr(R0, Immediate(-entry_offset));
+  ldr(TMP, FieldAddress(CODE_REG, Code::saved_instructions_offset()));
+  cmp(R0, Operand(TMP));
+  b(&instructions_ok, EQ);
+  brk(1);
+  Bind(&instructions_ok);
+  Pop(R0);
+#endif
+}
+
+
 void Assembler::EnterFrame(intptr_t frame_size) {
   PushPair(LR, FP);
   mov(FP, SP);
@@ -1121,9 +1115,8 @@
 void Assembler::EnterDartFrame(intptr_t frame_size, Register new_pp) {
   ASSERT(!constant_pool_allowed());
   // Setup the frame.
-  adr(TMP, Immediate(-CodeSize()));  // TMP gets PC marker.
   EnterFrame(0);
-  TagAndPushPPAndPcMarker(TMP);  // Save PP and PC marker.
+  TagAndPushPPAndPcMarker();  // Save PP and PC marker.
 
   // Load the pool pointer.
   if (new_pp == kNoRegister) {
@@ -1148,17 +1141,8 @@
 void Assembler::EnterOsrFrame(intptr_t extra_size, Register new_pp) {
   ASSERT(!constant_pool_allowed());
   Comment("EnterOsrFrame");
-  adr(TMP, Immediate(-CodeSize()));
-
-  StoreToOffset(TMP, FP, kPcMarkerSlotFromFp * kWordSize);
-
-  // Setup pool pointer for this dart function.
-  if (new_pp == kNoRegister) {
-    LoadPoolPointer();
-  } else {
-    mov(PP, new_pp);
-    set_constant_pool_allowed(true);
-  }
+  RestoreCodePointer();
+  LoadPoolPointer();
 
   if (extra_size > 0) {
     AddImmediate(SP, SP, -extra_size);
@@ -1166,11 +1150,13 @@
 }
 
 
-void Assembler::LeaveDartFrame() {
-  set_constant_pool_allowed(false);
-  // Restore and untag PP.
-  LoadFromOffset(PP, FP, kSavedCallerPpSlotFromFp * kWordSize);
-  sub(PP, PP, Operand(kHeapObjectTag));
+void Assembler::LeaveDartFrame(RestorePP restore_pp) {
+  if (restore_pp == kRestoreCallerPP) {
+    set_constant_pool_allowed(false);
+    // Restore and untag PP.
+    LoadFromOffset(PP, FP, kSavedCallerPpSlotFromFp * kWordSize);
+    sub(PP, PP, Operand(kHeapObjectTag));
+  }
   LeaveFrame();
 }
 
@@ -1236,11 +1222,7 @@
 
 
 void Assembler::EnterStubFrame() {
-  set_constant_pool_allowed(false);
-  EnterFrame(0);
-  // Save caller's pool pointer. Push 0 in the saved PC area for stub frames.
-  TagAndPushPPAndPcMarker(ZR);
-  LoadPoolPointer();
+  EnterDartFrame(0);
 }
 
 
diff --git a/runtime/vm/assembler_arm64.h b/runtime/vm/assembler_arm64.h
index 6a70ff8..ff7f93f 100644
--- a/runtime/vm/assembler_arm64.h
+++ b/runtime/vm/assembler_arm64.h
@@ -1152,11 +1152,11 @@
     add(TMP, PP, Operand(kHeapObjectTag));
     str(TMP, Address(SP, -1 * kWordSize, Address::PreIndex));
   }
-  void TagAndPushPPAndPcMarker(Register pc_marker_reg) {
-    ASSERT(pc_marker_reg != TMP2);
+  void TagAndPushPPAndPcMarker() {
+    COMPILE_ASSERT(CODE_REG != TMP2);
     // Add the heap object tag back to PP before putting it on the stack.
     add(TMP2, PP, Operand(kHeapObjectTag));
-    stp(TMP2, pc_marker_reg,
+    stp(TMP2, CODE_REG,
         Address(SP, -2 * kWordSize, Address::PairPreIndex));
   }
   void PopAndUntagPP() {
@@ -1198,14 +1198,14 @@
     LslImmediate(dst, src, kSmiTagSize);
   }
 
-  void Branch(const StubEntry& stub_entry);
+  void Branch(const StubEntry& stub_entry,
+              Register pp,
+              Patchability patchable = kNotPatchable);
   void BranchPatchable(const StubEntry& stub_entry);
 
-  void BranchLink(const ExternalLabel* label);
-  void BranchLink(const StubEntry& stub_entry);
+  void BranchLink(const StubEntry& stub_entry,
+                  Patchability patchable = kNotPatchable);
 
-  // BranchLinkPatchable must be a fixed-length sequence so we can patch it
-  // with the debugger.
   void BranchLinkPatchable(const StubEntry& stub_entry);
 
   // Macros accepting a pp Register argument may attempt to load values from
@@ -1283,15 +1283,9 @@
     constant_pool_allowed_ = b;
   }
 
-  void LoadWordFromPoolOffset(Register dst, uint32_t offset);
-  void LoadWordFromPoolOffsetFixed(Register dst, uint32_t offset);
   intptr_t FindImmediate(int64_t imm);
   bool CanLoadFromObjectPool(const Object& object) const;
-  void LoadExternalLabel(Register dst, const ExternalLabel* label);
   void LoadNativeEntry(Register dst, const ExternalLabel* label);
-  void LoadExternalLabelFixed(Register dst,
-                              const ExternalLabel* label,
-                              Patchability patchable);
   void LoadFunctionFromCalleePool(Register dst,
                                   const Function& function,
                                   Register new_pp);
@@ -1340,9 +1334,12 @@
     sub(CSP, CSP, Operand(reserved_space));
   }
 
+  void CheckCodePointer();
+  void RestoreCodePointer();
+
   void EnterDartFrame(intptr_t frame_size, Register new_pp = kNoRegister);
   void EnterOsrFrame(intptr_t extra_size, Register new_pp);
-  void LeaveDartFrame();
+  void LeaveDartFrame(RestorePP restore_pp = kRestoreCallerPP);
 
   void EnterCallRuntimeFrame(intptr_t frame_size);
   void LeaveCallRuntimeFrame();
@@ -1426,9 +1423,8 @@
 
   bool constant_pool_allowed_;
 
-  void Branch(const ExternalLabel* label);
-  void BranchPatchable(const ExternalLabel* label);
-  void BranchLinkPatchable(const ExternalLabel* label);
+  void LoadWordFromPoolOffset(Register dst, uint32_t offset, Register pp = PP);
+  void LoadWordFromPoolOffsetFixed(Register dst, uint32_t offset);
 
   void LoadObjectHelper(Register dst, const Object& obj, bool is_unique);
 
diff --git a/runtime/vm/assembler_arm64_test.cc b/runtime/vm/assembler_arm64_test.cc
index 7204371..a187ee8 100644
--- a/runtime/vm/assembler_arm64_test.cc
+++ b/runtime/vm/assembler_arm64_test.cc
@@ -1622,81 +1622,100 @@
 }
 
 
+static void EnterTestFrame(Assembler* assembler) {
+  __ EnterFrame(0);
+  __ Push(CODE_REG);
+  __ TagAndPushPP();
+  __ ldr(CODE_REG, Address(R0, VMHandles::kOffsetOfRawPtrInHandle));
+  __ LoadPoolPointer(PP);
+}
+
+
+static void LeaveTestFrame(Assembler* assembler) {
+  __ PopAndUntagPP();
+  __ Pop(CODE_REG);
+  __ LeaveFrame();
+}
+
+
+
+
 // Loading immediate values with the object pool.
 ASSEMBLER_TEST_GENERATE(LoadImmediatePPSmall, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ LoadImmediate(R0, 42);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(LoadImmediatePPSmall, test) {
-  EXPECT_EQ(42, test->Invoke<int64_t>());
+  EXPECT_EQ(42, test->InvokeWithCode<int64_t>());
 }
 
 
 ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ LoadImmediate(R0, 0xf1234123);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(LoadImmediatePPMed, test) {
-  EXPECT_EQ(0xf1234123, test->Invoke<int64_t>());
+  EXPECT_EQ(0xf1234123, test->InvokeWithCode<int64_t>());
 }
 
 
 ASSEMBLER_TEST_GENERATE(LoadImmediatePPMed2, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ LoadImmediate(R0, 0x4321f1234124);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(LoadImmediatePPMed2, test) {
-  EXPECT_EQ(0x4321f1234124, test->Invoke<int64_t>());
+  EXPECT_EQ(0x4321f1234124, test->InvokeWithCode<int64_t>());
 }
 
 
 ASSEMBLER_TEST_GENERATE(LoadImmediatePPLarge, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ LoadImmediate(R0, 0x9287436598237465);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(LoadImmediatePPLarge, test) {
-  EXPECT_EQ(static_cast<int64_t>(0x9287436598237465), test->Invoke<int64_t>());
+  EXPECT_EQ(static_cast<int64_t>(0x9287436598237465),
+            test->InvokeWithCode<int64_t>());
 }
 
 
 #define ASSEMBLER_TEST_RUN_WITH_THREAD(result_type, var_name) \
   Thread* thread = Thread::Current(); \
-  result_type var_name = test->Invoke<result_type>(thread);
+  result_type var_name = test->InvokeWithCode<result_type>(thread);
 
 
 // LoadObject null.
 ASSEMBLER_TEST_GENERATE(LoadObjectNull, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ Push(THR);
-  __ mov(THR, R0);
+  __ mov(THR, R1);
   __ LoadObject(R0, Object::null_object());
   __ Pop(THR);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
@@ -1710,12 +1729,12 @@
 
 ASSEMBLER_TEST_GENERATE(LoadObjectTrue, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ Push(THR);
-  __ mov(THR, R0);
+  __ mov(THR, R1);
   __ LoadObject(R0, Bool::True());
   __ Pop(THR);
-  __ LeaveDartFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
@@ -1729,12 +1748,12 @@
 
 ASSEMBLER_TEST_GENERATE(LoadObjectFalse, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ Push(THR);
-  __ mov(THR, R0);
+  __ mov(THR, R1);
   __ LoadObject(R0, Bool::False());
   __ Pop(THR);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
@@ -3553,6 +3572,7 @@
 // R2: current thread.
 ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
   __ SetupDartSP(kTestStackSpace);
+  __ Push(CODE_REG);
   __ Push(THR);
   __ Push(LR);
   __ mov(THR, R2);
@@ -3561,6 +3581,7 @@
                      R0);
   __ Pop(LR);
   __ Pop(THR);
+  __ Pop(CODE_REG);
   __ mov(CSP, SP);
   __ ret();
 }
@@ -3568,9 +3589,8 @@
 
 ASSEMBLER_TEST_GENERATE(ComputeRange, assembler) {
   __ SetupDartSP(kTestStackSpace);
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   Label miss, done;
-  __ mov(R1, R0);
   __ ComputeRange(R0, R1, R2, &miss);
   __ b(&done);
 
@@ -3578,14 +3598,14 @@
   __ LoadImmediate(R0, -1);
 
   __ Bind(&done);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ mov(CSP, SP);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(ComputeRange, test) {
-#define RANGE_OF(arg_type, v) test->Invoke<intptr_t, arg_type>(v)
+#define RANGE_OF(arg_type, v) test->InvokeWithCode<intptr_t, arg_type>(v)
 
   EXPECT_EQ(ICData::kInt32RangeBit, RANGE_OF(RawSmi*, Smi::New(0)));
   EXPECT_EQ(ICData::kInt32RangeBit, RANGE_OF(RawSmi*, Smi::New(1)));
diff --git a/runtime/vm/assembler_ia32.cc b/runtime/vm/assembler_ia32.cc
index c6c8da8..2da0383 100644
--- a/runtime/vm/assembler_ia32.cc
+++ b/runtime/vm/assembler_ia32.cc
@@ -2366,7 +2366,7 @@
   if (object != EDX) {
     movl(EDX, object);
   }
-  Call(*StubCode::UpdateStoreBuffer_entry());
+  call(Address(THR, Thread::update_store_buffer_entry_point_offset()));
   if (value != EDX) {
     popl(EDX);  // Restore EDX.
   }
@@ -2622,8 +2622,9 @@
 
 
 void Assembler::Call(const StubEntry& stub_entry) {
-  const ExternalLabel label(stub_entry.EntryPoint());
-  call(&label);
+  const Code& target = Code::ZoneHandle(stub_entry.code());
+  LoadObject(CODE_REG, target);
+  call(FieldAddress(CODE_REG, Code::entry_point_offset()));
 }
 
 
@@ -2869,18 +2870,19 @@
 }
 
 
+void Assembler::PushCodeObject() {
+  ASSERT(code_.IsNotTemporaryScopedHandle());
+  AssemblerBuffer::EnsureCapacity ensured(&buffer_);
+  EmitUint8(0x68);
+  buffer_.EmitObject(code_);
+}
+
+
 void Assembler::EnterDartFrame(intptr_t frame_size) {
   EnterFrame(0);
-  Label dart_entry;
-  call(&dart_entry);
-  Bind(&dart_entry);
-  // The runtime system assumes that the code marker address is
-  // kEntryPointToPcMarkerOffset bytes from the entry.  If there is any code
-  // generated before entering the frame, the address needs to be adjusted.
-  const intptr_t offset = EntryPointToPcMarkerOffset() - CodeSize();
-  if (offset != 0) {
-    addl(Address(ESP, 0), Immediate(offset));
-  }
+
+  PushCodeObject();
+
   if (frame_size != 0) {
     subl(ESP, Immediate(frame_size));
   }
@@ -2889,8 +2891,7 @@
 
 // On entry to a function compiled for OSR, the caller's frame pointer, the
 // stack locals, and any copied parameters are already in place.  The frame
-// pointer is already set up.  The PC marker is not correct for the
-// optimized function and there may be extra space for spill slots to
+// pointer is already set up. There may be extra space for spill slots to
 // allocate.
 void Assembler::EnterOsrFrame(intptr_t extra_size) {
   Comment("EnterOsrFrame");
@@ -2898,17 +2899,7 @@
     Comment("PrologueOffset = %" Pd "", CodeSize());
     prologue_offset_ = CodeSize();
   }
-  Label dart_entry;
-  call(&dart_entry);
-  Bind(&dart_entry);
-  // The runtime system assumes that the code marker address is
-  // kEntryPointToPcMarkerOffset bytes from the entry.  Since there is no
-  // code to set up the frame pointer, the address needs to be adjusted.
-  const intptr_t offset = EntryPointToPcMarkerOffset() - CodeSize();
-  if (offset != 0) {
-    addl(Address(ESP, 0), Immediate(offset));
-  }
-  popl(Address(EBP, kPcMarkerSlotFromFp * kWordSize));
+
   if (extra_size != 0) {
     subl(ESP, Immediate(extra_size));
   }
@@ -2916,8 +2907,7 @@
 
 
 void Assembler::EnterStubFrame() {
-  EnterFrame(0);
-  pushl(Immediate(0));  // Push 0 in the saved PC area for stub frames.
+  EnterDartFrame(0);
 }
 
 
diff --git a/runtime/vm/assembler_ia32.h b/runtime/vm/assembler_ia32.h
index bac86c4..44ba10e 100644
--- a/runtime/vm/assembler_ia32.h
+++ b/runtime/vm/assembler_ia32.h
@@ -305,7 +305,8 @@
       : buffer_(),
         prologue_offset_(-1),
         jit_cookie_(0),
-        comments_() {
+        comments_(),
+        code_(Code::ZoneHandle()) {
     // This mode is only needed and implemented for MIPS and ARM.
     ASSERT(!use_far_branches);
   }
@@ -957,6 +958,12 @@
     return !object.IsSmi() || IsSafeSmi(object);
   }
 
+  void set_code_object(const Code& code) {
+    code_ ^= code.raw();
+  }
+
+  void PushCodeObject();
+
  private:
   class CodeComment : public ZoneAllocated {
    public:
@@ -1017,6 +1024,7 @@
   intptr_t prologue_offset_;
   int32_t jit_cookie_;
   GrowableArray<CodeComment*> comments_;
+  Code& code_;
 
   DISALLOW_ALLOCATION();
   DISALLOW_COPY_AND_ASSIGN(Assembler);
diff --git a/runtime/vm/assembler_mips.cc b/runtime/vm/assembler_mips.cc
index 4bdc206..90a010a 100644
--- a/runtime/vm/assembler_mips.cc
+++ b/runtime/vm/assembler_mips.cc
@@ -355,22 +355,24 @@
 }
 
 
-void Assembler::LoadWordFromPoolOffset(Register rd, int32_t offset) {
-  ASSERT(constant_pool_allowed());
+void Assembler::LoadWordFromPoolOffset(Register rd,
+                                       int32_t offset,
+                                       Register pp) {
+  ASSERT((pp != PP) || constant_pool_allowed());
   ASSERT(!in_delay_slot_);
-  ASSERT(rd != PP);
+  ASSERT(rd != pp);
   if (Address::CanHoldOffset(offset)) {
-    lw(rd, Address(PP, offset));
+    lw(rd, Address(pp, offset));
   } else {
     const int16_t offset_low = Utils::Low16Bits(offset);  // Signed.
     offset -= offset_low;
     const uint16_t offset_high = Utils::High16Bits(offset);  // Unsigned.
     if (offset_high != 0) {
       lui(rd, Immediate(offset_high));
-      addu(rd, rd, PP);
+      addu(rd, rd, pp);
       lw(rd, Address(rd, offset_low));
     } else {
-      lw(rd, Address(PP, offset_low));
+      lw(rd, Address(pp, offset_low));
     }
   }
 }
@@ -457,22 +459,43 @@
 }
 
 
-void Assembler::Branch(const StubEntry& stub_entry) {
-  ASSERT(!in_delay_slot_);
-  LoadImmediate(TMP, stub_entry.label().address());
-  jr(TMP);
+void Assembler::CheckCodePointer() {
+#ifdef DEBUG
+  Label cid_ok, instructions_ok;
+  Push(CMPRES1);
+  Push(CMPRES2);
+  LoadClassId(CMPRES1, CODE_REG);
+  BranchEqual(CMPRES1, Immediate(kCodeCid), &cid_ok);
+  break_(0);
+  Bind(&cid_ok);
+  GetNextPC(CMPRES1, TMP);
+  const intptr_t entry_offset = CodeSize() - Instr::kInstrSize +
+      Instructions::HeaderSize() - kHeapObjectTag;
+  AddImmediate(CMPRES1, CMPRES1, -entry_offset);
+  lw(CMPRES2, FieldAddress(CODE_REG, Code::saved_instructions_offset()));
+  BranchEqual(CMPRES1, CMPRES2, &instructions_ok);
+  break_(1);
+  Bind(&instructions_ok);
+  Pop(CMPRES2);
+  Pop(CMPRES1);
+#endif
 }
 
 
-void Assembler::BranchPatchable(const StubEntry& stub_entry) {
+void Assembler::RestoreCodePointer() {
+  lw(CODE_REG, Address(FP, kPcMarkerSlotFromFp * kWordSize));
+  CheckCodePointer();
+}
+
+
+void Assembler::Branch(const StubEntry& stub_entry, Register pp) {
   ASSERT(!in_delay_slot_);
-  const ExternalLabel& label = stub_entry.label();
-  const uint16_t low = Utils::Low16Bits(label.address());
-  const uint16_t high = Utils::High16Bits(label.address());
-  lui(T9, Immediate(high));
-  ori(T9, T9, Immediate(low));
-  jr(T9);
-  delay_slot_available_ = false;  // CodePatcher expects a nop.
+  const Code& target_code = Code::Handle(stub_entry.code());
+  const int32_t offset = ObjectPool::element_offset(
+      object_pool_wrapper_.FindObject(target_code, kPatchable));
+  LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag, pp);
+  lw(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
+  jr(TMP);
 }
 
 
@@ -483,11 +506,12 @@
 }
 
 
-void Assembler::BranchLink(const ExternalLabel* label, Patchability patchable) {
+void Assembler::BranchLink(const Code& target, Patchability patchable) {
   ASSERT(!in_delay_slot_);
   const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(label, patchable));
-  LoadWordFromPoolOffset(T9, offset - kHeapObjectTag);
+      object_pool_wrapper_.FindObject(target, patchable));
+  LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag);
+  lw(T9, FieldAddress(CODE_REG, Code::entry_point_offset()));
   jalr(T9);
   if (patchable == kPatchable) {
     delay_slot_available_ = false;  // CodePatcher expects a nop.
@@ -497,43 +521,54 @@
 
 void Assembler::BranchLink(const StubEntry& stub_entry,
                            Patchability patchable) {
-  BranchLink(&stub_entry.label(), patchable);
+  BranchLink(Code::Handle(stub_entry.code()), patchable);
 }
 
 
 void Assembler::BranchLinkPatchable(const StubEntry& stub_entry) {
-  BranchLink(&stub_entry.label(), kPatchable);
+  BranchLink(Code::Handle(stub_entry.code()), kPatchable);
+}
+
+
+bool Assembler::CanLoadFromObjectPool(const Object& object) const {
+  ASSERT(!Thread::CanLoadFromThread(object));
+  if (!constant_pool_allowed()) {
+    return false;
+  }
+
+  ASSERT(object.IsNotTemporaryScopedHandle());
+  ASSERT(object.IsOld());
+  return true;
 }
 
 
 void Assembler::LoadObjectHelper(Register rd,
                                  const Object& object,
                                  bool is_unique) {
-  // Load common VM constants from the thread. This works also in places where
-  // no constant pool is set up (e.g. intrinsic code).
-  if (Thread::CanLoadFromThread(object)) {
-    lw(rd, Address(THR, Thread::OffsetFromThread(object)));
-    return;
-  }
   ASSERT(!in_delay_slot_);
-  // Smis and VM heap objects are never relocated; do not use object pool.
-  if (object.IsSmi()) {
+  if (Thread::CanLoadFromThread(object)) {
+    // Load common VM constants from the thread. This works also in places where
+    // no constant pool is set up (e.g. intrinsic code).
+    lw(rd, Address(THR, Thread::OffsetFromThread(object)));
+  } else if (object.IsSmi()) {
+    // Relocation doesn't apply to Smis.
     LoadImmediate(rd, reinterpret_cast<int32_t>(object.raw()));
-  } else if (object.InVMHeap() || !constant_pool_allowed()) {
-    ASSERT(FLAG_allow_absolute_addresses);
-    // Make sure that class CallPattern is able to decode this load immediate.
-    int32_t object_raw = reinterpret_cast<int32_t>(object.raw());
-    const uint16_t object_low = Utils::Low16Bits(object_raw);
-    const uint16_t object_high = Utils::High16Bits(object_raw);
-    lui(rd, Immediate(object_high));
-    ori(rd, rd, Immediate(object_low));
-  } else {
+  } else if (CanLoadFromObjectPool(object)) {
     // Make sure that class CallPattern is able to decode this load from the
     // object pool.
     const int32_t offset = ObjectPool::element_offset(
         is_unique ? object_pool_wrapper_.AddObject(object)
                   : object_pool_wrapper_.FindObject(object));
     LoadWordFromPoolOffset(rd, offset - kHeapObjectTag);
+  } else {
+    ASSERT(FLAG_allow_absolute_addresses);
+    ASSERT(object.IsOld());
+    // Make sure that class CallPattern is able to decode this load immediate.
+    int32_t object_raw = reinterpret_cast<int32_t>(object.raw());
+    const uint16_t object_low = Utils::Low16Bits(object_raw);
+    const uint16_t object_high = Utils::High16Bits(object_raw);
+    lui(rd, Immediate(object_high));
+    ori(rd, rd, Immediate(object_low));
   }
 }
 
@@ -548,12 +583,12 @@
 }
 
 
-void Assembler::LoadExternalLabel(Register rd,
-                                  const ExternalLabel* label,
-                                  Patchability patchable) {
-  const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(label, patchable));
-  LoadWordFromPoolOffset(rd, offset - kHeapObjectTag);
+void Assembler::LoadFunctionFromCalleePool(Register dst,
+                                           const Function& function,
+                                           Register new_pp) {
+  const int32_t offset =
+      ObjectPool::element_offset(object_pool_wrapper_.FindObject(function));
+  LoadWordFromPoolOffset(dst, offset - kHeapObjectTag, new_pp);
 }
 
 
@@ -634,6 +669,7 @@
   if (object != T0) {
     mov(T0, object);
   }
+  lw(CODE_REG, Address(THR, Thread::update_store_buffer_code_offset()));
   lw(T9, Address(THR, Thread::update_store_buffer_entry_point_offset()));
   jalr(T9);
   lw(RA, Address(SP, 0 * kWordSize));
@@ -828,17 +864,8 @@
 }
 
 
-void Assembler::EnterStubFrame() {
-  ASSERT(!in_delay_slot_);
-  SetPrologueOffset();
-  addiu(SP, SP, Immediate(-4 * kWordSize));
-  sw(ZR, Address(SP, 3 * kWordSize));  // PC marker is 0 in stubs.
-  sw(RA, Address(SP, 2 * kWordSize));
-  sw(FP, Address(SP, 1 * kWordSize));
-  sw(PP, Address(SP, 0 * kWordSize));
-  addiu(FP, SP, Immediate(1 * kWordSize));
-  // Setup pool pointer for this stub.
-  LoadPoolPointer();
+void Assembler::EnterStubFrame(intptr_t frame_size) {
+  EnterDartFrame(frame_size);
 }
 
 
@@ -848,13 +875,7 @@
 
 
 void Assembler::LeaveStubFrameAndReturn(Register ra) {
-  ASSERT(!in_delay_slot_);
-  addiu(SP, FP, Immediate(-1 * kWordSize));
-  lw(RA, Address(SP, 2 * kWordSize));
-  lw(FP, Address(SP, 1 * kWordSize));
-  lw(PP, Address(SP, 0 * kWordSize));
-  jr(ra);
-  delay_slot()->addiu(SP, SP, Immediate(4 * kWordSize));
+  LeaveDartFrameAndReturn(ra);
 }
 
 
@@ -1027,7 +1048,7 @@
     // If this allocation is traced, program will jump to failure path
     // (i.e. the allocation stub) which will allocate the object and trace the
     // allocation call site.
-    MaybeTraceAllocation(cid, temp1, failure);
+    MaybeTraceAllocation(cid, temp1, failure, /* inline_isolate = */ false);
     Isolate* isolate = Isolate::Current();
     Heap* heap = isolate->heap();
     Heap::Space space = heap->SpaceForAllocation(cid);
@@ -1074,31 +1095,19 @@
 
 void Assembler::EnterDartFrame(intptr_t frame_size) {
   ASSERT(!in_delay_slot_);
-  const intptr_t offset = CodeSize();
 
   SetPrologueOffset();
 
   addiu(SP, SP, Immediate(-4 * kWordSize));
-  sw(RA, Address(SP, 2 * kWordSize));
-  sw(FP, Address(SP, 1 * kWordSize));
+  sw(RA, Address(SP, 3 * kWordSize));
+  sw(FP, Address(SP, 2 * kWordSize));
+  sw(CODE_REG, Address(SP, 1 * kWordSize));
   sw(PP, Address(SP, 0 * kWordSize));
 
-  GetNextPC(TMP);  // TMP gets the address of the next instruction.
-
-  // Calculate the offset of the pool pointer from the PC.
-  const intptr_t object_pool_pc_dist =
-      Instructions::HeaderSize() - Instructions::object_pool_offset() +
-      CodeSize();
-
-  // Save PC in frame for fast identification of corresponding code.
-  AddImmediate(TMP, -offset);
-  sw(TMP, Address(SP, 3 * kWordSize));
-
   // Set FP to the saved previous FP.
-  addiu(FP, SP, Immediate(kWordSize));
+  addiu(FP, SP, Immediate(2 * kWordSize));
 
-  // Load the pool pointer. offset has already been subtracted from TMP.
-  lw(PP, Address(TMP, -object_pool_pc_dist + offset));
+  LoadPoolPointer();
 
   // Reserve space for locals.
   AddImmediate(SP, -frame_size);
@@ -1114,55 +1123,43 @@
   ASSERT(!in_delay_slot_);
   Comment("EnterOsrFrame");
 
-  GetNextPC(TMP);  // TMP gets the address of the next instruction.
-
-  // The runtime system assumes that the code marker address is
-  // kEntryPointToPcMarkerOffset bytes from the entry.  Since there is no
-  // code to set up the frame pointer, etc., the address needs to be adjusted.
-  const intptr_t offset = EntryPointToPcMarkerOffset() - CodeSize();
-  // Calculate the offset of the pool pointer from the PC.
-  const intptr_t object_pool_pc_dist =
-      Instructions::HeaderSize() - Instructions::object_pool_offset() +
-      CodeSize();
-
-  // Adjust PC by the offset, and store it in the stack frame.
-  AddImmediate(TMP, TMP, offset);
-  sw(TMP, Address(FP, kPcMarkerSlotFromFp * kWordSize));
-
   // Restore return address.
   lw(RA, Address(FP, 1 * kWordSize));
 
   // Load the pool pointer. offset has already been subtracted from temp.
-  lw(PP, Address(TMP, -object_pool_pc_dist - offset));
+  RestoreCodePointer();
+  LoadPoolPointer();
 
   // Reserve space for locals.
   AddImmediate(SP, -extra_size);
 }
 
 
-void Assembler::LeaveDartFrame() {
+void Assembler::LeaveDartFrame(RestorePP restore_pp) {
   ASSERT(!in_delay_slot_);
-  addiu(SP, FP, Immediate(-kWordSize));
+  addiu(SP, FP, Immediate(-2 * kWordSize));
 
-  lw(RA, Address(SP, 2 * kWordSize));
-  lw(FP, Address(SP, 1 * kWordSize));
-  lw(PP, Address(SP, 0 * kWordSize));
+  lw(RA, Address(SP, 3 * kWordSize));
+  lw(FP, Address(SP, 2 * kWordSize));
+  if (restore_pp == kRestoreCallerPP) {
+    lw(PP, Address(SP, 0 * kWordSize));
+  }
 
   // Adjust SP for PC, RA, FP, PP pushed in EnterDartFrame.
   addiu(SP, SP, Immediate(4 * kWordSize));
 }
 
 
-void Assembler::LeaveDartFrameAndReturn() {
+void Assembler::LeaveDartFrameAndReturn(Register ra) {
   ASSERT(!in_delay_slot_);
-  addiu(SP, FP, Immediate(-kWordSize));
+  addiu(SP, FP, Immediate(-2 * kWordSize));
 
-  lw(RA, Address(SP, 2 * kWordSize));
-  lw(FP, Address(SP, 1 * kWordSize));
+  lw(RA, Address(SP, 3 * kWordSize));
+  lw(FP, Address(SP, 2 * kWordSize));
   lw(PP, Address(SP, 0 * kWordSize));
 
   // Adjust SP for PC, RA, FP, PP pushed in EnterDartFrame, and return.
-  Ret();
+  jr(ra);
   delay_slot()->addiu(SP, SP, Immediate(4 * kWordSize));
 }
 
diff --git a/runtime/vm/assembler_mips.h b/runtime/vm/assembler_mips.h
index 2ae9456..4368707 100644
--- a/runtime/vm/assembler_mips.h
+++ b/runtime/vm/assembler_mips.h
@@ -288,21 +288,12 @@
 
   // Set up a stub frame so that the stack traversal code can easily identify
   // a stub frame.
-  void EnterStubFrame();
+  void EnterStubFrame(intptr_t frame_size = 0);
   void LeaveStubFrame();
   // A separate macro for when a Ret immediately follows, so that we can use
   // the branch delay slot.
   void LeaveStubFrameAndReturn(Register ra = RA);
 
-  // Instruction pattern from entrypoint is used in dart frame prologs
-  // to set up the frame and save a PC which can be used to figure out the
-  // RawInstruction object corresponding to the code running in the frame.
-  // See EnterDartFrame. There are 6 instructions before we know the PC.
-  static const intptr_t kEntryPointToPcMarkerOffset = 6 * Instr::kInstrSize;
-  static intptr_t EntryPointToPcMarkerOffset() {
-    return kEntryPointToPcMarkerOffset;
-  }
-
   void UpdateAllocationStats(intptr_t cid,
                              Register temp_reg,
                              Heap::Space space,
@@ -912,11 +903,8 @@
     SubuDetectOverflow(rd, rs, rd, ro);
   }
 
-  void Branch(const StubEntry& stub_entry);
+  void Branch(const StubEntry& stub_entry, Register pp = PP);
 
-  void BranchPatchable(const StubEntry& stub_entry);
-
-  void BranchLink(const ExternalLabel* label, Patchability patchable);
   void BranchLink(const StubEntry& stub_entry,
                   Patchability patchable = kNotPatchable);
 
@@ -929,15 +917,17 @@
     }
   }
 
-  void LoadPoolPointer() {
+  void LoadPoolPointer(Register reg = PP) {
     ASSERT(!in_delay_slot_);
-    GetNextPC(TMP);  // TMP gets the address of the next instruction.
-    const intptr_t object_pool_pc_dist =
-        Instructions::HeaderSize() - Instructions::object_pool_offset() +
-        CodeSize();
-    lw(PP, Address(TMP, -object_pool_pc_dist));
+    CheckCodePointer();
+    lw(reg, FieldAddress(CODE_REG, Code::object_pool_offset()));
+    set_constant_pool_allowed(reg == PP);
   }
 
+  void CheckCodePointer();
+
+  void RestoreCodePointer();
+
   void LoadImmediate(Register rd, int32_t value) {
     ASSERT(!in_delay_slot_);
     if (Utils::IsInt(kImmBits, value)) {
@@ -1518,12 +1508,11 @@
   void EnterCallRuntimeFrame(intptr_t frame_space);
   void LeaveCallRuntimeFrame();
 
-  void LoadWordFromPoolOffset(Register rd, int32_t offset);
   void LoadObject(Register rd, const Object& object);
   void LoadUniqueObject(Register rd, const Object& object);
-  void LoadExternalLabel(Register rd,
-                         const ExternalLabel* label,
-                         Patchability patchable);
+  void LoadFunctionFromCalleePool(Register dst,
+                                  const Function& function,
+                                  Register new_pp);
   void LoadNativeEntry(Register rd,
                        const ExternalLabel* label,
                        Patchability patchable);
@@ -1575,8 +1564,8 @@
   // enable easy access to the RawInstruction object of code corresponding
   // to this frame.
   void EnterDartFrame(intptr_t frame_size);
-  void LeaveDartFrame();
-  void LeaveDartFrameAndReturn();
+  void LeaveDartFrame(RestorePP restore_pp = kRestoreCallerPP);
+  void LeaveDartFrameAndReturn(Register ra = RA);
 
   // Set up a Dart frame for a function compiled for on-stack replacement.
   // The frame layout is a normal Dart frame, but the frame is partially set
@@ -1637,7 +1626,11 @@
   bool constant_pool_allowed_;
 
   void BranchLink(const ExternalLabel* label);
+  void BranchLink(const Code& code, Patchability patchable);
 
+  bool CanLoadFromObjectPool(const Object& object) const;
+
+  void LoadWordFromPoolOffset(Register rd, int32_t offset, Register pp = PP);
   void LoadObjectHelper(Register rd, const Object& object, bool is_unique);
 
   void Emit(int32_t value) {
diff --git a/runtime/vm/assembler_mips_test.cc b/runtime/vm/assembler_mips_test.cc
index ec94350..552aa60 100644
--- a/runtime/vm/assembler_mips_test.cc
+++ b/runtime/vm/assembler_mips_test.cc
@@ -2087,7 +2087,8 @@
 // A1: growable array.
 // A2: current thread.
 ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
-  __ addiu(SP, SP, Immediate(-2 * kWordSize));
+  __ addiu(SP, SP, Immediate(-3 * kWordSize));
+  __ sw(CODE_REG, Address(SP, 2 * kWordSize));
   __ sw(THR, Address(SP, 1 * kWordSize));
   __ sw(RA, Address(SP, 0 * kWordSize));
   __ mov(THR, A2);
@@ -2096,7 +2097,8 @@
                      A0);
   __ lw(RA, Address(SP, 0 * kWordSize));
   __ lw(THR, Address(SP, 1 * kWordSize));
-  __ addiu(SP, SP, Immediate(2 * kWordSize));
+  __ lw(CODE_REG, Address(SP, 2 * kWordSize));
+  __ addiu(SP, SP, Immediate(3 * kWordSize));
   __ Ret();
 }
 
diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc
index 523f29f..87c1f31 100644
--- a/runtime/vm/assembler_x64.cc
+++ b/runtime/vm/assembler_x64.cc
@@ -62,15 +62,6 @@
 }
 
 
-void Assembler::LoadExternalLabel(Register dst,
-                                  const ExternalLabel* label,
-                                  Patchability patchable) {
-  const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(label, patchable));
-  LoadWordFromPoolOffset(dst, offset - kHeapObjectTag);
-}
-
-
 void Assembler::LoadNativeEntry(Register dst,
                                 const ExternalLabel* label,
                                 Patchability patchable) {
@@ -93,20 +84,25 @@
 
 void Assembler::CallPatchable(const StubEntry& stub_entry) {
   ASSERT(constant_pool_allowed());
+  const Code& target = Code::Handle(stub_entry.code());
   intptr_t call_start = buffer_.GetPosition();
   const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(&stub_entry.label(), kPatchable));
-  call(Address::AddressBaseImm32(PP, offset - kHeapObjectTag));
+      object_pool_wrapper_.FindObject(target, kPatchable));
+  LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag);
+  movq(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
+  call(TMP);
   ASSERT((buffer_.GetPosition() - call_start) == kCallExternalLabelSize);
 }
 
 
 void Assembler::Call(const StubEntry& stub_entry) {
   ASSERT(constant_pool_allowed());
+  const Code& target = Code::Handle(stub_entry.code());
   const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(&stub_entry.label(),
-                                             kNotPatchable));
-  call(Address::AddressBaseImm32(PP, offset - kHeapObjectTag));
+      object_pool_wrapper_.FindObject(target, kNotPatchable));
+  LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag);
+  movq(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
+  call(TMP);
 }
 
 
@@ -2543,11 +2539,12 @@
 }
 
 
-void Assembler::J(Condition condition, const StubEntry& stub_entry,
+void Assembler::J(Condition condition,
+                  const StubEntry& stub_entry,
                   Register pp) {
   Label no_jump;
   // Negate condition.
-  j(static_cast<Condition>(condition ^ 1), &no_jump, Assembler::kNearJump);
+  j(static_cast<Condition>(condition ^ 1), &no_jump, kNearJump);
   Jmp(stub_entry, pp);
   Bind(&no_jump);
 }
@@ -2608,28 +2605,25 @@
 }
 
 
-void Assembler::jmp(const StubEntry& stub_entry) {
-  jmp(&stub_entry.label());
-}
-
-
 void Assembler::JmpPatchable(const StubEntry& stub_entry, Register pp) {
   ASSERT((pp != PP) || constant_pool_allowed());
-  intptr_t call_start = buffer_.GetPosition();
+  const Code& target = Code::Handle(stub_entry.code());
   const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(&stub_entry.label(), kPatchable));
-  // Patchable jumps always use a 32-bit immediate encoding.
-  jmp(Address::AddressBaseImm32(pp, offset - kHeapObjectTag));
-  ASSERT((buffer_.GetPosition() - call_start) == JumpPattern::kLengthInBytes);
+      object_pool_wrapper_.FindObject(target, kPatchable));
+  movq(CODE_REG, Address::AddressBaseImm32(pp, offset - kHeapObjectTag));
+  movq(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
+  jmp(TMP);
 }
 
 
 void Assembler::Jmp(const StubEntry& stub_entry, Register pp) {
   ASSERT((pp != PP) || constant_pool_allowed());
+  const Code& target = Code::Handle(stub_entry.code());
   const int32_t offset = ObjectPool::element_offset(
-      object_pool_wrapper_.FindExternalLabel(&stub_entry.label(),
-                                             kNotPatchable));
-  jmp(Address(pp, offset - kHeapObjectTag));
+      object_pool_wrapper_.FindObject(target, kNotPatchable));
+  movq(CODE_REG, FieldAddress(pp, offset));
+  movq(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
+  jmp(TMP);
 }
 
 
@@ -3077,8 +3071,12 @@
   if (object != RDX) {
     movq(RDX, object);
   }
+  pushq(CODE_REG);
+  movq(CODE_REG, Address(THR, Thread::update_store_buffer_code_offset()));
   movq(TMP, Address(THR, Thread::update_store_buffer_entry_point_offset()));
   call(TMP);
+
+  popq(CODE_REG);
   if (value != RDX) popq(RDX);
   Bind(&done);
 }
@@ -3379,27 +3377,29 @@
 }
 
 
+void Assembler::RestoreCodePointer() {
+  movq(CODE_REG, Address(RBP, kPcMarkerSlotFromFp * kWordSize));
+}
+
+
 void Assembler::LoadPoolPointer(Register pp) {
   // Load new pool pointer.
-  const intptr_t kRIPRelativeMovqSize = 7;
-  const intptr_t entry_to_rip_offset = CodeSize() + kRIPRelativeMovqSize;
-  const intptr_t object_pool_pc_dist =
-      Instructions::HeaderSize() - Instructions::object_pool_offset();
-  movq(pp, Address::AddressRIPRelative(
-      -entry_to_rip_offset - object_pool_pc_dist));
-  ASSERT(CodeSize() == entry_to_rip_offset);
+  CheckCodePointer();
+  movq(pp, FieldAddress(CODE_REG, Code::object_pool_offset()));
   set_constant_pool_allowed(pp == PP);
 }
 
 
-void Assembler::EnterDartFrame(intptr_t frame_size,
-                               Register new_pp,
-                               Register pc_marker_override) {
+void Assembler::EnterDartFrame(intptr_t frame_size, Register new_pp) {
   ASSERT(!constant_pool_allowed());
   EnterFrame(0);
-  pushq(pc_marker_override);
+  pushq(CODE_REG);
   pushq(PP);
-  movq(PP, new_pp);
+  if (new_pp == kNoRegister) {
+    LoadPoolPointer(PP);
+  } else {
+    movq(PP, new_pp);
+  }
   set_constant_pool_allowed(true);
   if (frame_size != 0) {
     subq(RSP, Immediate(frame_size));
@@ -3407,30 +3407,57 @@
 }
 
 
-void Assembler::LeaveDartFrame() {
-  set_constant_pool_allowed(false);
+void Assembler::LeaveDartFrame(RestorePP restore_pp) {
   // Restore caller's PP register that was pushed in EnterDartFrame.
-  movq(PP, Address(RBP, (kSavedCallerPpSlotFromFp * kWordSize)));
+  if (restore_pp == kRestoreCallerPP) {
+    movq(PP, Address(RBP, (kSavedCallerPpSlotFromFp * kWordSize)));
+    set_constant_pool_allowed(false);
+  }
   LeaveFrame();
 }
 
 
+void Assembler::CheckCodePointer() {
+#ifdef DEBUG
+  Label cid_ok, instructions_ok;
+  pushq(RAX);
+  LoadClassId(RAX, CODE_REG);
+  cmpq(RAX, Immediate(kCodeCid));
+  j(EQUAL, &cid_ok);
+  int3();
+  Bind(&cid_ok);
+  {
+    const intptr_t kRIPRelativeLeaqSize = 7;
+    const intptr_t header_to_entry_offset =
+        (Instructions::HeaderSize() - kHeapObjectTag);
+    const intptr_t header_to_rip_offset =
+        CodeSize() + kRIPRelativeLeaqSize + header_to_entry_offset;
+    leaq(RAX, Address::AddressRIPRelative(-header_to_rip_offset));
+    ASSERT(CodeSize() == (header_to_rip_offset - header_to_entry_offset));
+  }
+  cmpq(RAX, FieldAddress(CODE_REG, Code::saved_instructions_offset()));
+  j(EQUAL, &instructions_ok);
+  int3();
+  Bind(&instructions_ok);
+  popq(RAX);
+#endif
+}
+
+
 // On entry to a function compiled for OSR, the caller's frame pointer, the
 // stack locals, and any copied parameters are already in place.  The frame
 // pointer is already set up.  The PC marker is not correct for the
 // optimized function and there may be extra space for spill slots to
 // allocate.
-void Assembler::EnterOsrFrame(intptr_t extra_size,
-                              Register new_pp,
-                              Register pc_marker_override) {
+void Assembler::EnterOsrFrame(intptr_t extra_size) {
   ASSERT(!constant_pool_allowed());
   if (prologue_offset_ == -1) {
     Comment("PrologueOffset = %" Pd "", CodeSize());
     prologue_offset_ = CodeSize();
   }
-  movq(Address(RBP, kPcMarkerSlotFromFp * kWordSize), pc_marker_override);
-  movq(PP, new_pp);
-  set_constant_pool_allowed(true);
+  RestoreCodePointer();
+  LoadPoolPointer();
+
   if (extra_size != 0) {
     subq(RSP, Immediate(extra_size));
   }
@@ -3438,11 +3465,7 @@
 
 
 void Assembler::EnterStubFrame() {
-  set_constant_pool_allowed(false);
-  EnterFrame(0);
-  pushq(Immediate(0));  // Push 0 in the saved PC area for stub frames.
-  pushq(PP);  // Save caller's pool pointer
-  LoadPoolPointer();
+  EnterDartFrame(0, kNoRegister);
 }
 
 
diff --git a/runtime/vm/assembler_x64.h b/runtime/vm/assembler_x64.h
index a6d64db0..e0ac23f 100644
--- a/runtime/vm/assembler_x64.h
+++ b/runtime/vm/assembler_x64.h
@@ -366,7 +366,7 @@
   void call(Label* label);
   void call(const ExternalLabel* label);
 
-  static const intptr_t kCallExternalLabelSize = 7;
+  static const intptr_t kCallExternalLabelSize = 15;
 
   void pushq(Register reg);
   void pushq(const Address& address);
@@ -760,9 +760,6 @@
   void LoadIsolate(Register dst);
   void LoadObject(Register dst, const Object& obj);
   void LoadUniqueObject(Register dst, const Object& obj);
-  void LoadExternalLabel(Register dst,
-                         const ExternalLabel* label,
-                         Patchability patchable);
   void LoadNativeEntry(Register dst,
                        const ExternalLabel* label,
                        Patchability patchable);
@@ -770,7 +767,7 @@
                                   const Function& function,
                                   Register new_pp);
   void JmpPatchable(const StubEntry& stub_entry, Register pp);
-  void Jmp(const StubEntry& stub_entry, Register pp);
+  void Jmp(const StubEntry& stub_entry, Register pp = PP);
   void J(Condition condition, const StubEntry& stub_entry, Register pp);
   void CallPatchable(const StubEntry& stub_entry);
   void Call(const StubEntry& stub_entry);
@@ -832,6 +829,8 @@
   void PushRegisters(intptr_t cpu_register_set, intptr_t xmm_register_set);
   void PopRegisters(intptr_t cpu_register_set, intptr_t xmm_register_set);
 
+  void CheckCodePointer();
+
   void EnterFrame(intptr_t frame_space);
   void LeaveFrame();
   void ReserveAlignedFrameSpace(intptr_t frame_space);
@@ -922,6 +921,7 @@
     buffer_.FinalizeInstructions(region);
   }
 
+  void RestoreCodePointer();
   void LoadPoolPointer(Register pp = PP);
 
   // Set up a Dart frame on entry with a frame pointer and PC information to
@@ -943,16 +943,13 @@
   //   ...
   //   pushq r15
   //   .....
-  void EnterDartFrame(intptr_t frame_size,
-                      Register new_pp,
-                      Register pc_marker_override);
-  void LeaveDartFrame();
+  void EnterDartFrame(intptr_t frame_size, Register new_pp);
+  void LeaveDartFrame(RestorePP restore_pp = kRestoreCallerPP);
 
   // Set up a Dart frame for a function compiled for on-stack replacement.
   // The frame layout is a normal Dart frame, but the frame is partially set
   // up on entry (it is the frame of the unoptimized code).
-  void EnterOsrFrame(intptr_t extra_size,
-                     Register new_pp, Register pc_marker_override);
+  void EnterOsrFrame(intptr_t extra_size);
 
   // Set up a stub frame so that the stack traversal code can easily identify
   // a stub frame.
@@ -970,19 +967,6 @@
   void EnterStubFrame();
   void LeaveStubFrame();
 
-  // Instruction pattern from entrypoint is used in dart frame prologues
-  // to set up the frame and save a PC which can be used to figure out the
-  // RawInstruction object corresponding to the code running in the frame.
-  // entrypoint:
-  //   pushq rbp          (size is 1 byte)
-  //   movq rbp, rsp      (size is 3 bytes)
-  //   call L             (size is 5 bytes)
-  //   L:
-  static const intptr_t kEntryPointToPcMarkerOffset = 0;
-  static intptr_t EntryPointToPcMarkerOffset() {
-    return kEntryPointToPcMarkerOffset;
-  }
-
   void UpdateAllocationStats(intptr_t cid,
                              Heap::Space space,
                              bool inline_isolate = true);
diff --git a/runtime/vm/assembler_x64_test.cc b/runtime/vm/assembler_x64_test.cc
index eaa9ce0..e404b89 100644
--- a/runtime/vm/assembler_x64_test.cc
+++ b/runtime/vm/assembler_x64_test.cc
@@ -2020,23 +2020,40 @@
 }
 
 
+static void EnterTestFrame(Assembler* assembler) {
+  __ EnterFrame(0);
+  __ pushq(CODE_REG);
+  __ pushq(PP);
+  __ movq(CODE_REG, Address(CallingConventions::kArg1Reg,
+                            VMHandles::kOffsetOfRawPtrInHandle));
+  __ LoadPoolPointer(PP);
+}
+
+
+static void LeaveTestFrame(Assembler* assembler) {
+  __ popq(PP);
+  __ popq(CODE_REG);
+  __ LeaveFrame();
+}
+
+
 ASSEMBLER_TEST_GENERATE(PackedDoubleNegate, assembler) {
   static const struct ALIGN16 {
     double a;
     double b;
   } constant0 = { 1.0, 2.0 };
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ movq(RAX, Immediate(reinterpret_cast<uword>(&constant0)));
   __ movups(XMM10, Address(RAX, 0));
   __ negatepd(XMM10);
   __ movaps(XMM0, XMM10);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(PackedDoubleNegate, test) {
-  double res = test->Invoke<double>();
+  double res = test->InvokeWithCode<double>();
   EXPECT_FLOAT_EQ(-1.0, res, 0.000001f);
 }
 
@@ -2046,18 +2063,18 @@
     double a;
     double b;
   } constant0 = { -1.0, 2.0 };
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ movq(RAX, Immediate(reinterpret_cast<uword>(&constant0)));
   __ movups(XMM10, Address(RAX, 0));
   __ abspd(XMM10);
   __ movaps(XMM0, XMM10);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(PackedDoubleAbsolute, test) {
-  double res = test->Invoke<double>();
+  double res = test->InvokeWithCode<double>();
   EXPECT_FLOAT_EQ(1.0, res, 0.000001f);
 }
 
@@ -2491,53 +2508,53 @@
 
 
 ASSEMBLER_TEST_GENERATE(PackedNegate, assembler) {
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ movl(RAX, Immediate(bit_cast<int32_t, float>(12.3f)));
   __ movd(XMM0, RAX);
   __ shufps(XMM0, XMM0, Immediate(0x0));
   __ negateps(XMM0);
   __ shufps(XMM0, XMM0, Immediate(0xAA));  // Copy third lane into all 4 lanes.
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(PackedNegate, test) {
-  float res = test->Invoke<float>();
+  float res = test->InvokeWithCode<float>();
   EXPECT_FLOAT_EQ(-12.3f, res, 0.001f);
 }
 
 
 ASSEMBLER_TEST_GENERATE(PackedAbsolute, assembler) {
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ movl(RAX, Immediate(bit_cast<int32_t, float>(-15.3f)));
   __ movd(XMM0, RAX);
   __ shufps(XMM0, XMM0, Immediate(0x0));
   __ absps(XMM0);
   __ shufps(XMM0, XMM0, Immediate(0xAA));  // Copy third lane into all 4 lanes.
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(PackedAbsolute, test) {
-  float res = test->Invoke<float>();
+  float res = test->InvokeWithCode<float>();
   EXPECT_FLOAT_EQ(15.3f, res, 0.001f);
 }
 
 
 ASSEMBLER_TEST_GENERATE(PackedSetWZero, assembler) {
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ set1ps(XMM0, RAX, Immediate(bit_cast<int32_t, float>(12.3f)));
   __ zerowps(XMM0);
   __ shufps(XMM0, XMM0, Immediate(0xFF));  // Copy the W lane which is now 0.0.
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(PackedSetWZero, test) {
-  float res = test->Invoke<float>();
+  float res = test->InvokeWithCode<float>();
   EXPECT_FLOAT_EQ(0.0f, res, 0.001f);
 }
 
@@ -2647,7 +2664,7 @@
     uint32_t d;
   } constant1 =
       { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ LoadImmediate(RAX, Immediate(reinterpret_cast<intptr_t>(&constant1)));
   __ movups(XMM9, Address(RAX, 0));
   __ notps(XMM9);
@@ -2655,13 +2672,13 @@
   __ pushq(RAX);
   __ movss(Address(RSP, 0), XMM0);
   __ popq(RAX);
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(PackedLogicalNot, test) {
-  uint32_t res = test->Invoke<uint32_t>();
+  uint32_t res = test->InvokeWithCode<uint32_t>();
   EXPECT_EQ(static_cast<uword>(0x0), res);
 }
 
@@ -3053,7 +3070,7 @@
   ObjectStore* object_store = Isolate::Current()->object_store();
   const Object& obj = Object::ZoneHandle(object_store->smi_class());
   Label fail;
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
   __ LoadObject(RAX, obj);
   __ CompareObject(RAX, obj);
   __ j(NOT_EQUAL, &fail);
@@ -3080,13 +3097,13 @@
   __ ret();
   __ Bind(&fail);
   __ movl(RAX, Immediate(0));  // Fail.
-  __ LeaveStubFrame();
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(TestObjectCompare, test) {
-  bool res = test->Invoke<bool>();
+  bool res = test->InvokeWithCode<bool>();
   EXPECT_EQ(true, res);
 }
 
@@ -3290,6 +3307,7 @@
 
 // Called from assembler_test.cc.
 ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
+  __ pushq(CODE_REG);
   __ pushq(THR);
   __ movq(THR, CallingConventions::kArg3Reg);
   __ StoreIntoObject(CallingConventions::kArg2Reg,
@@ -3297,6 +3315,7 @@
                                   GrowableObjectArray::data_offset()),
                      CallingConventions::kArg1Reg);
   __ popq(THR);
+  __ popq(CODE_REG);
   __ ret();
 }
 
@@ -3410,19 +3429,25 @@
 
 
 ASSEMBLER_TEST_GENERATE(DoubleAbs, assembler) {
-  __ EnterStubFrame();
+  EnterTestFrame(assembler);
+#if defined(TARGET_OS_WINDOWS)
+  // First argument is code object, MSVC passes second argument in XMM1.
+  __ DoubleAbs(XMM1);
+  __ movaps(XMM0, XMM1);
+#else
   __ DoubleAbs(XMM0);
-  __ LeaveStubFrame();
+#endif
+  LeaveTestFrame(assembler);
   __ ret();
 }
 
 
 ASSEMBLER_TEST_RUN(DoubleAbs, test) {
   double val = -12.45;
-  double res =  test->Invoke<double, double>(val);
+  double res =  test->InvokeWithCode<double, double>(val);
   EXPECT_FLOAT_EQ(-val, res, 0.001);
   val = 12.45;
-  res = test->Invoke<double, double>(val);
+  res = test->InvokeWithCode<double, double>(val);
   EXPECT_FLOAT_EQ(val, res, 0.001);
 }
 
diff --git a/runtime/vm/benchmark_test.cc b/runtime/vm/benchmark_test.cc
index 36dfae2..900a689 100644
--- a/runtime/vm/benchmark_test.cc
+++ b/runtime/vm/benchmark_test.cc
@@ -10,6 +10,7 @@
 #include "platform/assert.h"
 #include "platform/globals.h"
 
+#include "vm/compiler_stats.h"
 #include "vm/dart_api_impl.h"
 #include "vm/stack_frame.h"
 #include "vm/unit_test.h"
@@ -46,7 +47,26 @@
     OS::PrintErr("Unexpected error in CorelibCompileAll benchmark:\n%s",
                  error.ToErrorCString());
   }
-  EXPECT(error.IsNull());
+  timer.Stop();
+  int64_t elapsed_time = timer.TotalElapsedTime();
+  benchmark->set_score(elapsed_time);
+}
+
+
+BENCHMARK(CorelibCompilerStats) {
+  bin::Builtin::SetNativeResolver(bin::Builtin::kBuiltinLibrary);
+  bin::Builtin::SetNativeResolver(bin::Builtin::kIOLibrary);
+  CompilerStats* stats = Isolate::Current()->compiler_stats();
+  ASSERT(stats != NULL);
+  stats->EnableBenchmark();
+  Timer timer(true, "Compiler stats compiling all of Core lib");
+  timer.Start();
+  const Error& error = Error::Handle(benchmark->isolate(),
+                                     Library::CompileAll());
+  if (!error.IsNull()) {
+    OS::PrintErr("Unexpected error in CorelibCompileAll benchmark:\n%s",
+                 error.ToErrorCString());
+  }
   timer.Stop();
   int64_t elapsed_time = timer.TotalElapsedTime();
   benchmark->set_score(elapsed_time);
@@ -378,6 +398,41 @@
 }
 
 
+BENCHMARK(Dart2JSCompilerStats) {
+  bin::Builtin::SetNativeResolver(bin::Builtin::kBuiltinLibrary);
+  bin::Builtin::SetNativeResolver(bin::Builtin::kIOLibrary);
+  SetupDart2JSPackagePath();
+  char* dart_root = ComputeDart2JSPath(Benchmark::Executable());
+  char* script = NULL;
+  if (dart_root != NULL) {
+    HANDLESCOPE(thread);
+    script = OS::SCreate(NULL,
+        "import '%s/pkg/compiler/lib/compiler.dart';", dart_root);
+    Dart_Handle lib = TestCase::LoadTestScript(
+        script,
+        reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver));
+    EXPECT_VALID(lib);
+  } else {
+    Dart_Handle lib = TestCase::LoadTestScript(
+        "import 'pkg/compiler/lib/compiler.dart';",
+        reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver));
+    EXPECT_VALID(lib);
+  }
+  CompilerStats* stats = Isolate::Current()->compiler_stats();
+  ASSERT(stats != NULL);
+  stats->EnableBenchmark();
+  Timer timer(true, "Compile all of dart2js benchmark");
+  timer.Start();
+  Dart_Handle result = Dart_CompileAll();
+  EXPECT_VALID(result);
+  timer.Stop();
+  int64_t elapsed_time = timer.TotalElapsedTime();
+  benchmark->set_score(elapsed_time);
+  free(dart_root);
+  free(script);
+}
+
+
 //
 // Measure frame lookup during stack traversal.
 //
diff --git a/runtime/vm/block_scheduler.cc b/runtime/vm/block_scheduler.cc
index e8d950c..7d6cfc5 100644
--- a/runtime/vm/block_scheduler.cc
+++ b/runtime/vm/block_scheduler.cc
@@ -90,7 +90,8 @@
   const PcDescriptors& descriptors =
       PcDescriptors::Handle(unoptimized_code.pc_descriptors());
   PcDescriptors::Iterator iter(descriptors, RawPcDescriptors::kDeopt);
-  uword entry = unoptimized_code.EntryPoint();
+  uword entry =
+      Instructions::Handle(unoptimized_code.instructions()).EntryPoint();
   while (iter.MoveNext()) {
     intptr_t deopt_id = iter.DeoptId();
     ASSERT(deopt_id != Isolate::kNoDeoptId);
diff --git a/runtime/vm/class_table.cc b/runtime/vm/class_table.cc
index e57178c..ea37920 100644
--- a/runtime/vm/class_table.cc
+++ b/runtime/vm/class_table.cc
@@ -520,11 +520,12 @@
 }
 
 
-void ClassTable::UpdateLiveOld(intptr_t cid, intptr_t size) {
+void ClassTable::UpdateLiveOld(intptr_t cid, intptr_t size, intptr_t count) {
   ClassHeapStats* stats = PreliminaryStatsAt(cid);
   ASSERT(stats != NULL);
   ASSERT(size >= 0);
-  stats->post_gc.AddOld(size);
+  ASSERT(count >= 0);
+  stats->post_gc.AddOld(size, count);
 }
 
 
diff --git a/runtime/vm/class_table.h b/runtime/vm/class_table.h
index d7917de..aaabdf4 100644
--- a/runtime/vm/class_table.h
+++ b/runtime/vm/class_table.h
@@ -43,8 +43,8 @@
     old_size = 0;
   }
 
-  void AddOld(T size) {
-    old_count++;
+  void AddOld(T size, T count = 1) {
+    old_count += count;
     old_size += size;
   }
 
@@ -222,7 +222,7 @@
   bool TraceAllocationFor(intptr_t cid);
 
  private:
-  friend class MarkingVisitor;
+  friend class GCMarker;
   friend class ScavengerVisitor;
   friend class ClassHeapStatsTestHelper;
   static const int initial_capacity_ = 512;
@@ -243,7 +243,7 @@
 
   // May not have updated size for variable size classes.
   ClassHeapStats* PreliminaryStatsAt(intptr_t cid);
-  void UpdateLiveOld(intptr_t cid, intptr_t size);
+  void UpdateLiveOld(intptr_t cid, intptr_t size, intptr_t count = 1);
   void UpdateLiveNew(intptr_t cid, intptr_t size);
 
   DISALLOW_COPY_AND_ASSIGN(ClassTable);
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index 53ee195..e8b1f6f 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -674,16 +674,12 @@
   const Code& target_code = Code::Handle(target_function.CurrentCode());
   // Before patching verify that we are not repeatedly patching to the same
   // target.
-  ASSERT(target_code.EntryPoint() !=
+  ASSERT(target_code.raw() !=
          CodePatcher::GetStaticCallTargetAt(caller_frame->pc(), caller_code));
-  const Instructions& instrs =
-      Instructions::Handle(caller_code.instructions());
-  {
-    WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
-    CodePatcher::PatchStaticCallAt(caller_frame->pc(), caller_code,
-                                   target_code.EntryPoint());
-    caller_code.SetStaticCallTargetCodeAt(caller_frame->pc(), target_code);
-  }
+  CodePatcher::PatchStaticCallAt(caller_frame->pc(),
+                                 caller_code,
+                                 target_code);
+  caller_code.SetStaticCallTargetCodeAt(caller_frame->pc(), target_code);
   if (FLAG_trace_patching) {
     OS::PrintErr("PatchStaticCall: patching caller pc %#" Px ""
         " to '%s' new entry point %#" Px " (%s)\n",
@@ -711,11 +707,10 @@
   DartFrameIterator iterator;
   StackFrame* caller_frame = iterator.NextFrame();
   ASSERT(caller_frame != NULL);
-  uword orig_stub =
-      isolate->debugger()->GetPatchedStubAddress(caller_frame->pc());
+  const Code& orig_stub = Code::Handle(
+      isolate->debugger()->GetPatchedStubAddress(caller_frame->pc()));
   isolate->debugger()->SignalBpReached();
-  ASSERT((orig_stub & kSmiTagMask) == kSmiTag);
-  arguments.SetReturn(Smi::Handle(reinterpret_cast<RawSmi*>(orig_stub)));
+  arguments.SetReturn(orig_stub);
 }
 
 
@@ -1440,6 +1435,7 @@
           Instructions::Handle(optimized_code.instructions()).EntryPoint();
       function.AttachCode(original_code);
       frame->set_pc(optimized_entry);
+      frame->set_pc_marker(optimized_code.raw());
     }
   }
 }
@@ -1527,14 +1523,10 @@
 
   const Code& current_target_code = Code::Handle(
       isolate, target_function.CurrentCode());
-  const Instructions& instrs = Instructions::Handle(
-      isolate, caller_code.instructions());
-  {
-    WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
-    CodePatcher::PatchStaticCallAt(frame->pc(), caller_code,
-                                   current_target_code.EntryPoint());
-    caller_code.SetStaticCallTargetCodeAt(frame->pc(), current_target_code);
-  }
+  CodePatcher::PatchStaticCallAt(frame->pc(),
+                                 caller_code,
+                                 current_target_code);
+  caller_code.SetStaticCallTargetCodeAt(frame->pc(), current_target_code);
   if (FLAG_trace_patching) {
     OS::PrintErr("FixCallersTarget: caller %#" Px " "
         "target '%s' %#" Px " -> %#" Px "\n",
@@ -1564,9 +1556,8 @@
   ASSERT(frame->IsDartFrame());
   const Code& caller_code = Code::Handle(isolate, frame->LookupDartCode());
   ASSERT(!caller_code.IsNull());
-  const uword target =
-      CodePatcher::GetStaticCallTargetAt(frame->pc(), caller_code);
-  const Code& stub = Code::Handle(isolate, Code::LookupCode(target));
+  const Code& stub = Code::Handle(
+      CodePatcher::GetStaticCallTargetAt(frame->pc(), caller_code));
   Class& alloc_class = Class::ZoneHandle(zone);
   alloc_class ^= stub.owner();
   Code& alloc_stub = Code::Handle(isolate, alloc_class.allocation_stub());
@@ -1574,15 +1565,10 @@
     alloc_stub = StubCode::GetAllocationStubForClass(alloc_class);
     ASSERT(!CodePatcher::IsEntryPatched(alloc_stub));
   }
-  const Instructions& instrs =
-      Instructions::Handle(isolate, caller_code.instructions());
-  {
-    WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
-    CodePatcher::PatchStaticCallAt(frame->pc(),
-                                   caller_code,
-                                   alloc_stub.EntryPoint());
-    caller_code.SetStubCallTargetCodeAt(frame->pc(), alloc_stub);
-  }
+  CodePatcher::PatchStaticCallAt(frame->pc(),
+                                 caller_code,
+                                 alloc_stub);
+  caller_code.SetStubCallTargetCodeAt(frame->pc(), alloc_stub);
   if (FLAG_trace_patching) {
     OS::PrintErr("FixAllocationStubTarget: caller %#" Px " alloc-class %s "
         " -> %#" Px "\n",
@@ -1636,11 +1622,11 @@
       Instructions::Handle(zone, optimized_code.instructions());
   {
     WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
-    CodePatcher::InsertCallAt(pc, lazy_deopt_jump);
+    CodePatcher::InsertDeoptimizationCallAt(pc, lazy_deopt_jump);
   }
   if (FLAG_trace_patching) {
     const String& name = String::Handle(function.name());
-    OS::PrintErr("InsertCallAt: %" Px " to %" Px " for %s\n", pc,
+    OS::PrintErr("InsertDeoptimizationCallAt: %" Px " to %" Px " for %s\n", pc,
                  lazy_deopt_jump, name.ToCString());
   }
   // Mark code as dead (do not GC its embedded objects).
@@ -1693,7 +1679,9 @@
 // Copies saved registers and caller's frame into temporary buffers.
 // Returns the stack size of unoptimized frame.
 DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, DeoptimizeCopyFrame,
-                          1, uword saved_registers_address) {
+                          2,
+                          uword saved_registers_address,
+                          uword is_lazy_deopt) {
   Thread* thread = Thread::Current();
   Isolate* isolate = thread->isolate();
   StackZone zone(thread);
@@ -1719,9 +1707,12 @@
 
   // Create the DeoptContext.
   DeoptContext* deopt_context =
-      new DeoptContext(caller_frame, optimized_code,
+      new DeoptContext(caller_frame,
+                       optimized_code,
                        DeoptContext::kDestIsOriginalFrame,
-                       fpu_registers, cpu_registers);
+                       fpu_registers,
+                       cpu_registers,
+                       is_lazy_deopt != 0);
   isolate->set_deopt_context(deopt_context);
 
   // Stack size (FP - SP) in bytes.
diff --git a/runtime/vm/code_patcher.cc b/runtime/vm/code_patcher.cc
index d579577..c1fe9f7 100644
--- a/runtime/vm/code_patcher.cc
+++ b/runtime/vm/code_patcher.cc
@@ -35,42 +35,11 @@
 }
 
 
-static void SwapCode(intptr_t num_bytes, char* code, char* buffer) {
-  uword code_address = reinterpret_cast<uword>(code);
-  for (intptr_t i = 0; i < num_bytes; i++) {
-    char tmp = *code;
-    *code = *buffer;
-    *buffer = tmp;
-    code++;
-    buffer++;
-  }
-  CPU::FlushICache(code_address, num_bytes);
-  // The buffer is not executed. No need to flush.
-}
-
-
 // The patch code buffer contains the jmp code which will be inserted at
 // entry point.
-void CodePatcher::PatchEntry(const Code& code) {
-  ASSERT(!IsEntryPatched(code));
-  const uword patch_addr = code.GetEntryPatchPc();
-  ASSERT(patch_addr != 0);
-  JumpPattern jmp_entry(patch_addr, code);
-  ASSERT(!jmp_entry.IsValid());
-  const uword patch_buffer = code.GetPatchCodePc();
-  ASSERT(patch_buffer != 0);
-  JumpPattern jmp_patch(patch_buffer, code);
-  ASSERT(jmp_patch.IsValid());
-  const uword jump_target = jmp_patch.TargetAddress();
-  intptr_t length = jmp_patch.pattern_length_in_bytes();
-  {
-    WritableInstructionsScope writable_code(patch_addr, length);
-    WritableInstructionsScope writable_buffer(patch_buffer, length);
-    SwapCode(jmp_patch.pattern_length_in_bytes(),
-             reinterpret_cast<char*>(patch_addr),
-             reinterpret_cast<char*>(patch_buffer));
-    jmp_entry.SetTargetAddress(jump_target);
-  }
+void CodePatcher::PatchEntry(const Code& code, const Code& new_code) {
+  ASSERT(code.instructions() == code.active_instructions());
+  code.set_active_instructions(new_code.instructions());
 }
 
 
@@ -78,59 +47,13 @@
 // original code, the entry point contains the jump instruction.
 void CodePatcher::RestoreEntry(const Code& code) {
   if (!IsEntryPatched(code)) return;
-  const uword patch_addr = code.GetEntryPatchPc();
-  ASSERT(patch_addr != 0);
-  JumpPattern jmp_entry(patch_addr, code);
-  ASSERT(jmp_entry.IsValid());
-  const uword jump_target = jmp_entry.TargetAddress();
-  const uword patch_buffer = code.GetPatchCodePc();
-  ASSERT(patch_buffer != 0);
-  // 'patch_buffer' contains original entry code.
-  JumpPattern jmp_patch(patch_buffer, code);
-  ASSERT(!jmp_patch.IsValid());
-  intptr_t length = jmp_patch.pattern_length_in_bytes();
-  {
-    WritableInstructionsScope writable_code(patch_addr, length);
-    WritableInstructionsScope writable_buffer(patch_buffer, length);
-    SwapCode(jmp_patch.pattern_length_in_bytes(),
-             reinterpret_cast<char*>(patch_addr),
-             reinterpret_cast<char*>(patch_buffer));
-    ASSERT(jmp_patch.IsValid());
-    jmp_patch.SetTargetAddress(jump_target);
-  }
+  ASSERT(code.instructions() != code.active_instructions());
+  code.set_active_instructions(code.instructions());
 }
 
 
 bool CodePatcher::IsEntryPatched(const Code& code) {
-  const uword patch_addr = code.GetEntryPatchPc();
-  if (patch_addr == 0) {
-    return false;
-  }
-  JumpPattern jmp_entry(patch_addr, code);
-  return jmp_entry.IsValid();
-}
-
-
-bool CodePatcher::CodeIsPatchable(const Code& code) {
-  const uword patch_addr = code.GetEntryPatchPc();
-  // Zero means means that the function is not patchable.
-  if (patch_addr == 0) {
-    return false;
-  }
-  JumpPattern jmp_entry(patch_addr, code);
-  if (code.Size() < (jmp_entry.pattern_length_in_bytes() * 2)) {
-    return false;
-  }
-  const uword limit = patch_addr + jmp_entry.pattern_length_in_bytes();
-  // Check no object stored between patch_addr .. limit.
-  for (intptr_t i = 0; i < code.pointer_offsets_length(); i++) {
-    const uword obj_start = code.GetPointerOffsetAt(i) + code.EntryPoint();
-    const uword obj_end  = obj_start + kWordSize;
-    if ((obj_start < limit) && (obj_end > patch_addr)) {
-      return false;
-    }
-  }
-  return true;
+  return code.instructions() != code.active_instructions();
 }
 
 }  // namespace dart
diff --git a/runtime/vm/code_patcher.h b/runtime/vm/code_patcher.h
index 57ee46a..3c0236d 100644
--- a/runtime/vm/code_patcher.h
+++ b/runtime/vm/code_patcher.h
@@ -18,6 +18,7 @@
 class Function;
 class ICData;
 class RawArray;
+class RawCode;
 class RawFunction;
 class RawICData;
 class RawObject;
@@ -46,15 +47,10 @@
   // Patch static call before return_address in given code to the new target.
   static void PatchStaticCallAt(uword return_address,
                                 const Code& code,
-                                uword new_target_address);
-
-  // Patch instance call before return_address in given code to the new target.
-  static void PatchInstanceCallAt(uword return_address,
-                                  const Code& code,
-                                  uword new_target_address);
+                                const Code& new_target);
 
   // Patch entry point with a jump as specified in the code's patch region.
-  static void PatchEntry(const Code& code);
+  static void PatchEntry(const Code& code, const Code& new_code);
 
   // Restore entry point with original code (i.e., before patching).
   static void RestoreEntry(const Code& code);
@@ -62,20 +58,16 @@
   // Has the entry been patched?
   static bool IsEntryPatched(const Code& code);
 
-  // Returns true if the code can be patched with a jump at beginning (checks
-  // that there are no conflicts with object pointers). Used in ASSERTs.
-  static bool CodeIsPatchable(const Code& code);
-
   // Return the target address of the static call before return_address
   // in given code.
-  static uword GetStaticCallTargetAt(uword return_address, const Code& code);
+  static RawCode* GetStaticCallTargetAt(uword return_address, const Code& code);
 
   // Get instance call information.  Returns the call target and sets each
   // of the output parameters ic_data and arguments_descriptor if they are
   // non-NULL.
-  static uword GetInstanceCallAt(uword return_address,
-                                 const Code& code,
-                                 ICData* ic_data);
+  static RawCode* GetInstanceCallAt(uword return_address,
+                                    const Code& code,
+                                    ICData* ic_data);
 
   // Return target of an unoptimized static call and its ICData object
   // (calls target via a stub).
@@ -85,17 +77,17 @@
 
   static intptr_t InstanceCallSizeInBytes();
 
-  static void InsertCallAt(uword start, uword target);
+  static void InsertDeoptimizationCallAt(uword start, uword target);
 
   static RawObject* GetEdgeCounterAt(uword pc, const Code& code);
 
   static void PatchPoolPointerCallAt(uword return_address,
                                      const Code& code,
-                                     uword new_target);
+                                     const Code& new_target);
 
-  static uword GetNativeCallAt(uword return_address,
-                               const Code& code,
-                               NativeFunction* target);
+  static RawCode* GetNativeCallAt(uword return_address,
+                                  const Code& code,
+                                  NativeFunction* target);
 
   static void PatchNativeCallAt(uword return_address,
                                 const Code& code,
diff --git a/runtime/vm/code_patcher_arm.cc b/runtime/vm/code_patcher_arm.cc
index 49477c9..6c31af9 100644
--- a/runtime/vm/code_patcher_arm.cc
+++ b/runtime/vm/code_patcher_arm.cc
@@ -13,48 +13,39 @@
 
 namespace dart {
 
-uword CodePatcher::GetStaticCallTargetAt(uword return_address,
-                                         const Code& code) {
+RawCode* CodePatcher::GetStaticCallTargetAt(uword return_address,
+                                            const Code& code) {
   ASSERT(code.ContainsInstructionAt(return_address));
   CallPattern call(return_address, code);
-  return call.TargetAddress();
+  return call.TargetCode();
 }
 
 
 void CodePatcher::PatchStaticCallAt(uword return_address,
                                     const Code& code,
-                                    uword new_target) {
+                                    const Code& new_target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   CallPattern call(return_address, code);
-  call.SetTargetAddress(new_target);
+  call.SetTargetCode(new_target);
 }
 
 
-void CodePatcher::PatchInstanceCallAt(uword return_address,
-                                      const Code& code,
-                                      uword new_target) {
-  ASSERT(code.ContainsInstructionAt(return_address));
-  CallPattern call(return_address, code);
-  call.SetTargetAddress(new_target);
-}
-
-
-void CodePatcher::InsertCallAt(uword start, uword target) {
+void CodePatcher::InsertDeoptimizationCallAt(uword start, uword target) {
   // The inserted call should not overlap the lazy deopt jump code.
-  ASSERT(start + CallPattern::LengthInBytes() <= target);
-  CallPattern::InsertAt(start, target);
+  ASSERT(start + CallPattern::DeoptCallPatternLengthInBytes() <= target);
+  CallPattern::InsertDeoptCallAt(start, target);
 }
 
 
-uword CodePatcher::GetInstanceCallAt(uword return_address,
-                                     const Code& code,
-                                     ICData* ic_data) {
+RawCode* CodePatcher::GetInstanceCallAt(uword return_address,
+                                        const Code& code,
+                                        ICData* ic_data) {
   ASSERT(code.ContainsInstructionAt(return_address));
   CallPattern call(return_address, code);
   if (ic_data != NULL) {
     *ic_data = call.IcData();
   }
-  return call.TargetAddress();
+  return call.TargetCode();
 }
 
 
@@ -84,14 +75,14 @@
                                     const Code& trampoline) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCallPattern call(return_address, code);
-  call.set_target(trampoline.EntryPoint());
+  call.set_target(trampoline);
   call.set_native_function(target);
 }
 
 
-uword CodePatcher::GetNativeCallAt(uword return_address,
-                                   const Code& code,
-                                   NativeFunction* target) {
+RawCode* CodePatcher::GetNativeCallAt(uword return_address,
+                                     const Code& code,
+                                     NativeFunction* target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCallPattern call(return_address, code);
   *target = call.native_function();
diff --git a/runtime/vm/code_patcher_arm64.cc b/runtime/vm/code_patcher_arm64.cc
index 3e10b5a..3aa2982 100644
--- a/runtime/vm/code_patcher_arm64.cc
+++ b/runtime/vm/code_patcher_arm64.cc
@@ -12,15 +12,6 @@
 
 namespace dart {
 
-void CodePatcher::PatchInstanceCallAt(uword return_address,
-                                      const Code& code,
-                                      uword new_target) {
-  ASSERT(code.ContainsInstructionAt(return_address));
-  CallPattern call(return_address, code);
-  call.SetTargetAddress(new_target);
-}
-
-
 class PoolPointerCall : public ValueObject {
  public:
   PoolPointerCall(uword pc, const Code& code)
@@ -29,19 +20,19 @@
     // Last instruction: blr ip0.
     ASSERT(*(reinterpret_cast<uint32_t*>(end_) - 1) == 0xd63f0200);
     InstructionPattern::DecodeLoadWordFromPool(
-        end_ - Instr::kInstrSize, &reg_, &index_);
+        end_ - 2 * Instr::kInstrSize, &reg_, &index_);
   }
 
   intptr_t pp_index() const {
     return index_;
   }
 
-  uword Target() const {
-    return object_pool_.RawValueAt(pp_index());
+  RawCode* Target() const {
+    return reinterpret_cast<RawCode*>(object_pool_.ObjectAt(pp_index()));
   }
 
-  void SetTarget(uword target) const {
-    object_pool_.SetRawValueAt(pp_index(), target);
+  void SetTarget(const Code& target) const {
+    object_pool_.SetObjectAt(pp_index(), target);
     // No need to flush the instruction cache, since the code is not modified.
   }
 
@@ -55,8 +46,8 @@
 };
 
 
-uword CodePatcher::GetStaticCallTargetAt(uword return_address,
-                                         const Code& code) {
+RawCode* CodePatcher::GetStaticCallTargetAt(uword return_address,
+                                            const Code& code) {
   ASSERT(code.ContainsInstructionAt(return_address));
   PoolPointerCall call(return_address, code);
   return call.Target();
@@ -65,36 +56,36 @@
 
 void CodePatcher::PatchStaticCallAt(uword return_address,
                                     const Code& code,
-                                    uword new_target) {
+                                    const Code& new_target) {
   PatchPoolPointerCallAt(return_address, code, new_target);
 }
 
 
 void CodePatcher::PatchPoolPointerCallAt(uword return_address,
                                          const Code& code,
-                                         uword new_target) {
+                                         const Code& new_target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   PoolPointerCall call(return_address, code);
   call.SetTarget(new_target);
 }
 
 
-void CodePatcher::InsertCallAt(uword start, uword target) {
+void CodePatcher::InsertDeoptimizationCallAt(uword start, uword target) {
   // The inserted call should not overlap the lazy deopt jump code.
-  ASSERT(start + CallPattern::kLengthInBytes <= target);
-  CallPattern::InsertAt(start, target);
+  ASSERT(start + CallPattern::kDeoptCallLengthInBytes <= target);
+  CallPattern::InsertDeoptCallAt(start, target);
 }
 
 
-uword CodePatcher::GetInstanceCallAt(uword return_address,
-                                     const Code& code,
-                                     ICData* ic_data) {
+RawCode* CodePatcher::GetInstanceCallAt(uword return_address,
+                                        const Code& code,
+                                        ICData* ic_data) {
   ASSERT(code.ContainsInstructionAt(return_address));
   CallPattern call(return_address, code);
   if (ic_data != NULL) {
     *ic_data = call.IcData();
   }
-  return call.TargetAddress();
+  return call.TargetCode();
 }
 
 
@@ -124,14 +115,14 @@
                                     const Code& trampoline) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCallPattern call(return_address, code);
-  call.set_target(trampoline.EntryPoint());
+  call.set_target(trampoline);
   call.set_native_function(target);
 }
 
 
-uword CodePatcher::GetNativeCallAt(uword return_address,
-                                   const Code& code,
-                                   NativeFunction* target) {
+RawCode* CodePatcher::GetNativeCallAt(uword return_address,
+                                      const Code& code,
+                                      NativeFunction* target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCallPattern call(return_address, code);
   *target = call.native_function();
diff --git a/runtime/vm/code_patcher_ia32.cc b/runtime/vm/code_patcher_ia32.cc
index 95d64e0..e1f5483 100644
--- a/runtime/vm/code_patcher_ia32.cc
+++ b/runtime/vm/code_patcher_ia32.cc
@@ -18,52 +18,38 @@
 
 // The expected pattern of a Dart unoptimized call (static and instance):
 //  mov ECX, ic-data
+//  mov EDI, target-code-object
 //  call target_address (stub)
 //  <- return address
 class UnoptimizedCall : public ValueObject {
  public:
   explicit UnoptimizedCall(uword return_address)
-      : start_(return_address - (kNumInstructions * kInstructionSize)) {
-    ASSERT(IsValid(return_address));
-    ASSERT(kInstructionSize == Assembler::kCallExternalLabelSize);
-  }
-
-  static bool IsValid(uword return_address) {
-    uint8_t* code_bytes =
-        reinterpret_cast<uint8_t*>(
-            return_address - (kNumInstructions * kInstructionSize));
-    return (code_bytes[0] == 0xB9) &&
-           (code_bytes[1 * kInstructionSize] == 0xE8);
-  }
-
-  uword target() const {
-    const uword offset = *reinterpret_cast<uword*>(call_address() + 1);
-    return return_address() + offset;
-  }
-
-  void set_target(uword target) const {
-    uword* target_addr = reinterpret_cast<uword*>(call_address() + 1);
-    uword offset = target - return_address();
-    WritableInstructionsScope writable(reinterpret_cast<uword>(target_addr),
-                                       sizeof(offset));
-    *target_addr = offset;
-    CPU::FlushICache(call_address(), kInstructionSize);
+      : start_(return_address - kPatternSize) {
+    ASSERT(IsValid());
   }
 
   RawObject* ic_data() const {
     return *reinterpret_cast<RawObject**>(start_ + 1);
   }
 
-  static const int kNumInstructions = 2;
-  static const int kInstructionSize = 5;  // All instructions have same length.
+  static const int kMovInstructionSize = 5;
+  static const int kCallInstructionSize = 3;
+  static const int kPatternSize =
+      2 * kMovInstructionSize + kCallInstructionSize;
 
  private:
+  bool IsValid() {
+    uint8_t* code_bytes = reinterpret_cast<uint8_t*>(start_);
+    return (code_bytes[0] == 0xB9) &&
+           (code_bytes[2 * kMovInstructionSize] == 0xFF);
+  }
+
   uword return_address() const {
-    return start_ + kNumInstructions * kInstructionSize;
+    return start_ + kPatternSize;
   }
 
   uword call_address() const {
-    return start_ + 1 * kInstructionSize;
+    return start_ + 2 * kMovInstructionSize;
   }
 
  protected:
@@ -127,45 +113,43 @@
 
 // The expected pattern of a dart static call:
 //  mov EDX, arguments_descriptor_array (optional in polymorphic calls)
-//  call target_address
+//  mov EDI, Immediate(code_object)
+//  call [EDI + entry_point_offset]
 //  <- return address
 class StaticCall : public ValueObject {
  public:
   explicit StaticCall(uword return_address)
-      : start_(return_address - (kNumInstructions * kInstructionSize)) {
-    ASSERT(IsValid(return_address));
-    ASSERT(kInstructionSize == Assembler::kCallExternalLabelSize);
+      : start_(return_address - (kMovInstructionSize + kCallInstructionSize)) {
+    ASSERT(IsValid());
   }
 
-  static bool IsValid(uword return_address) {
-    uint8_t* code_bytes =
-        reinterpret_cast<uint8_t*>(
-            return_address - (kNumInstructions * kInstructionSize));
-    return (code_bytes[0] == 0xE8);
+  bool IsValid() {
+    uint8_t* code_bytes = reinterpret_cast<uint8_t*>(start_);
+    return (code_bytes[0] == 0xBF) && (code_bytes[5] == 0xFF);
   }
 
-  uword target() const {
-    const uword offset = *reinterpret_cast<uword*>(call_address() + 1);
-    return return_address() + offset;
+  RawCode* target() const {
+    const uword imm = *reinterpret_cast<uword*>(start_ + 1);
+    return reinterpret_cast<RawCode*>(imm);
   }
 
-  void set_target(uword target) const {
-    uword* target_addr = reinterpret_cast<uword*>(call_address() + 1);
-    uword offset = target - return_address();
-    *target_addr = offset;
-    CPU::FlushICache(call_address(), kInstructionSize);
+  void set_target(const Code& target) const {
+    uword* target_addr = reinterpret_cast<uword*>(start_ + 1);
+    uword imm = reinterpret_cast<uword>(target.raw());
+    *target_addr = imm;
+    CPU::FlushICache(start_ + 1, sizeof(imm));
   }
 
-  static const int kNumInstructions = 1;
-  static const int kInstructionSize = 5;  // All instructions have same length.
+  static const int kMovInstructionSize = 5;
+  static const int kCallInstructionSize = 3;
 
  private:
   uword return_address() const {
-    return start_ + kNumInstructions * kInstructionSize;
+    return start_ + kMovInstructionSize +  kCallInstructionSize;
   }
 
   uword call_address() const {
-    return start_;
+    return start_ + kMovInstructionSize;
   }
 
   uword start_;
@@ -174,8 +158,8 @@
 };
 
 
-uword CodePatcher::GetStaticCallTargetAt(uword return_address,
-                                         const Code& code) {
+RawCode* CodePatcher::GetStaticCallTargetAt(uword return_address,
+                                            const Code& code) {
   ASSERT(code.ContainsInstructionAt(return_address));
   StaticCall call(return_address);
   return call.target();
@@ -184,23 +168,16 @@
 
 void CodePatcher::PatchStaticCallAt(uword return_address,
                                     const Code& code,
-                                    uword new_target) {
+                                    const Code& new_target) {
+  const Instructions& instrs = Instructions::Handle(code.instructions());
+  WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
   ASSERT(code.ContainsInstructionAt(return_address));
   StaticCall call(return_address);
   call.set_target(new_target);
 }
 
 
-void CodePatcher::PatchInstanceCallAt(uword return_address,
-                                      const Code& code,
-                                      uword new_target) {
-  ASSERT(code.ContainsInstructionAt(return_address));
-  InstanceCall call(return_address);
-  call.set_target(new_target);
-}
-
-
-void CodePatcher::InsertCallAt(uword start, uword target) {
+void CodePatcher::InsertDeoptimizationCallAt(uword start, uword target) {
   // The inserted call should not overlap the lazy deopt jump code.
   ASSERT(start + CallPattern::pattern_length_in_bytes() <= target);
   *reinterpret_cast<uint8_t*>(start) = 0xE8;
@@ -210,14 +187,14 @@
 }
 
 
-uword CodePatcher::GetInstanceCallAt(
+RawCode* CodePatcher::GetInstanceCallAt(
     uword return_address, const Code& code, ICData* ic_data) {
   ASSERT(code.ContainsInstructionAt(return_address));
   InstanceCall call(return_address);
   if (ic_data != NULL) {
     *ic_data ^= call.ic_data();
   }
-  return call.target();
+  return Code::null();
 }
 
 
@@ -238,26 +215,21 @@
                                     const Code& code,
                                     NativeFunction target,
                                     const Code& trampoline) {
-  ASSERT(code.ContainsInstructionAt(return_address));
-  NativeCall call(return_address);
-  call.set_target(trampoline.EntryPoint());
-  call.set_native_function(target);
+  UNREACHABLE();
 }
 
 
-uword CodePatcher::GetNativeCallAt(uword return_address,
-                                   const Code& code,
-                                   NativeFunction* target) {
-  ASSERT(code.ContainsInstructionAt(return_address));
-  NativeCall call(return_address);
-  *target = call.native_function();
-  return call.target();
+RawCode* CodePatcher::GetNativeCallAt(uword return_address,
+                                      const Code& code,
+                                      NativeFunction* target) {
+  UNREACHABLE();
+  return NULL;
 }
 
 
 
 intptr_t CodePatcher::InstanceCallSizeInBytes() {
-  return InstanceCall::kNumInstructions * InstanceCall::kInstructionSize;
+  return InstanceCall::kPatternSize;
 }
 
 
diff --git a/runtime/vm/code_patcher_mips.cc b/runtime/vm/code_patcher_mips.cc
index 1014aed..aad4413 100644
--- a/runtime/vm/code_patcher_mips.cc
+++ b/runtime/vm/code_patcher_mips.cc
@@ -12,48 +12,39 @@
 
 namespace dart {
 
-uword CodePatcher::GetStaticCallTargetAt(uword return_address,
-                                         const Code& code) {
+RawCode* CodePatcher::GetStaticCallTargetAt(uword return_address,
+                                            const Code& code) {
   ASSERT(code.ContainsInstructionAt(return_address));
   CallPattern call(return_address, code);
-  return call.TargetAddress();
+  return call.TargetCode();
 }
 
 
 void CodePatcher::PatchStaticCallAt(uword return_address,
                                     const Code& code,
-                                    uword new_target) {
+                                    const Code& new_target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   CallPattern call(return_address, code);
-  call.SetTargetAddress(new_target);
+  call.SetTargetCode(new_target);
 }
 
 
-void CodePatcher::PatchInstanceCallAt(uword return_address,
-                                      const Code& code,
-                                      uword new_target) {
-  ASSERT(code.ContainsInstructionAt(return_address));
-  CallPattern call(return_address, code);
-  call.SetTargetAddress(new_target);
-}
-
-
-void CodePatcher::InsertCallAt(uword start, uword target) {
+void CodePatcher::InsertDeoptimizationCallAt(uword start, uword target) {
   // The inserted call should not overlap the lazy deopt jump code.
-  ASSERT(start + CallPattern::kFixedLengthInBytes <= target);
-  CallPattern::InsertAt(start, target);
+  ASSERT(start + CallPattern::kDeoptCallLengthInBytes <= target);
+  CallPattern::InsertDeoptCallAt(start, target);
 }
 
 
-uword CodePatcher::GetInstanceCallAt(uword return_address,
-                                     const Code& code,
-                                     ICData* ic_data) {
+RawCode* CodePatcher::GetInstanceCallAt(uword return_address,
+                                        const Code& code,
+                                        ICData* ic_data) {
   ASSERT(code.ContainsInstructionAt(return_address));
   CallPattern call(return_address, code);
   if (ic_data != NULL) {
     *ic_data = call.IcData();
   }
-  return call.TargetAddress();
+  return call.TargetCode();
 }
 
 
@@ -83,14 +74,14 @@
                                     const Code& trampoline) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCallPattern call(return_address, code);
-  call.set_target(trampoline.EntryPoint());
+  call.set_target(trampoline);
   call.set_native_function(target);
 }
 
 
-uword CodePatcher::GetNativeCallAt(uword return_address,
-                                   const Code& code,
-                                   NativeFunction* target) {
+RawCode* CodePatcher::GetNativeCallAt(uword return_address,
+                                      const Code& code,
+                                      NativeFunction* target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCallPattern call(return_address, code);
   *target = call.native_function();
diff --git a/runtime/vm/code_patcher_x64.cc b/runtime/vm/code_patcher_x64.cc
index e9e678d..416e150 100644
--- a/runtime/vm/code_patcher_x64.cc
+++ b/runtime/vm/code_patcher_x64.cc
@@ -16,28 +16,44 @@
 
 namespace dart {
 
-// The expected pattern of a Dart unoptimized call (static and instance):
-//   0: 49 8b 9f imm32  mov RBX, [PP + off]
-//   7: 41 ff 97 imm32  call [PP + off]
-//  14 <- return address
+
+static bool MatchesPattern(uword addr, int16_t* pattern, intptr_t size) {
+  uint8_t* bytes = reinterpret_cast<uint8_t*>(addr);
+  for (intptr_t i = 0; i < size; i++) {
+    int16_t val = pattern[i];
+    if ((val >= 0) && (val != bytes[i])) {
+      return false;
+    }
+  }
+  return true;
+}
+
+
+intptr_t IndexFromPPLoad(uword start) {
+  int32_t offset = *reinterpret_cast<int32_t*>(start);
+  return ObjectPool::IndexFromOffset(offset);
+}
+
+
 class UnoptimizedCall : public ValueObject {
  public:
   UnoptimizedCall(uword return_address, const Code& code)
       : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
         start_(return_address - kCallPatternSize) {
-    ASSERT(IsValid(return_address));
     ASSERT((kCallPatternSize - 7) == Assembler::kCallExternalLabelSize);
+    ASSERT(IsValid());
   }
 
-  static const int kCallPatternSize = 14;
+  static const int kCallPatternSize = 22;
 
-  static bool IsValid(uword return_address) {
-    uint8_t* code_bytes =
-        reinterpret_cast<uint8_t*>(return_address - kCallPatternSize);
-    return (code_bytes[0] == 0x49) && (code_bytes[1] == 0x8B) &&
-           (code_bytes[2] == 0x9F) &&
-           (code_bytes[7] == 0x41) && (code_bytes[8] == 0xFF) &&
-           (code_bytes[9] == 0x97);
+  bool IsValid() const {
+    static int16_t pattern[kCallPatternSize] = {
+      0x49, 0x8b, 0x9f, -1, -1, -1, -1,  // movq RBX, [PP + offs]
+      0x4d, 0x8b, 0xa7, -1, -1, -1, -1,  // movq CR, [PP + offs]
+      0x4d, 0x8b, 0x5c, 0x24, 0x07,      // movq TMP, [CR + entry_point_offs]
+      0x41, 0xff, 0xd3                   // callq TMP
+    };
+    return MatchesPattern(start_, pattern, kCallPatternSize);
   }
 
   intptr_t argument_index() const {
@@ -48,14 +64,16 @@
     return object_pool_.ObjectAt(argument_index());
   }
 
-  uword target() const {
+  RawCode* target() const {
     intptr_t index = IndexFromPPLoad(start_ + 10);
-    return object_pool_.RawValueAt(index);
+    Code& code = Code::Handle();
+    code ^= object_pool_.ObjectAt(index);
+    return code.raw();
   }
 
-  void set_target(uword target) const {
+  void set_target(const Code& target) const {
     intptr_t index = IndexFromPPLoad(start_ + 10);
-    object_pool_.SetRawValueAt(index, target);
+    object_pool_.SetObjectAt(index, target);
     // No need to flush the instruction cache, since the code is not modified.
   }
 
@@ -122,36 +140,38 @@
 
 
 // The expected pattern of a call where the target is loaded from
-// the object pool:
-//   0: 41 ff 97 imm32  call [PP + off]
-//   7: <- return address
+// the object pool.
 class PoolPointerCall : public ValueObject {
  public:
   explicit PoolPointerCall(uword return_address, const Code& code)
       : start_(return_address - kCallPatternSize),
         object_pool_(ObjectPool::Handle(code.GetObjectPool())) {
-    ASSERT(IsValid(return_address));
+    ASSERT(IsValid());
   }
 
-  static const int kCallPatternSize = 7;
+  static const int kCallPatternSize = 15;
 
-  static bool IsValid(uword return_address) {
-    uint8_t* code_bytes =
-        reinterpret_cast<uint8_t*>(return_address - kCallPatternSize);
-    return (code_bytes[0] == 0x41) && (code_bytes[1] == 0xFF) &&
-           (code_bytes[2] == 0x97);
+  bool IsValid() const {
+    static int16_t pattern[kCallPatternSize] = {
+      0x4d, 0x8b, 0xa7,   -1,   -1, -1, -1,  // movq CR, [PP + offs]
+      0x4d, 0x8b, 0x5c, 0x24, 0x07,          // movq TMP, [CR + entry_point_off]
+      0x41, 0xff, 0xd3                       // callq TMP
+    };
+    return MatchesPattern(start_, pattern, kCallPatternSize);
   }
 
   intptr_t pp_index() const {
     return IndexFromPPLoad(start_ + 3);
   }
 
-  uword Target() const {
-    return object_pool_.RawValueAt(pp_index());
+  RawCode* Target() const {
+    Code& code = Code::Handle();
+    code ^= object_pool_.ObjectAt(pp_index());
+    return code.raw();
   }
 
-  void SetTarget(uword target) const {
-    object_pool_.SetRawValueAt(pp_index(), target);
+  void SetTarget(const Code& target) const {
+    object_pool_.SetObjectAt(pp_index(), target);
     // No need to flush the instruction cache, since the code is not modified.
   }
 
@@ -164,8 +184,8 @@
 };
 
 
-uword CodePatcher::GetStaticCallTargetAt(uword return_address,
-                                         const Code& code) {
+RawCode* CodePatcher::GetStaticCallTargetAt(uword return_address,
+                                            const Code& code) {
   ASSERT(code.ContainsInstructionAt(return_address));
   PoolPointerCall call(return_address, code);
   return call.Target();
@@ -174,32 +194,23 @@
 
 void CodePatcher::PatchStaticCallAt(uword return_address,
                                     const Code& code,
-                                    uword new_target) {
+                                    const Code& new_target) {
   PatchPoolPointerCallAt(return_address, code, new_target);
 }
 
 
 void CodePatcher::PatchPoolPointerCallAt(uword return_address,
                                          const Code& code,
-                                         uword new_target) {
+                                         const Code& new_target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   PoolPointerCall call(return_address, code);
   call.SetTarget(new_target);
 }
 
 
-void CodePatcher::PatchInstanceCallAt(uword return_address,
-                                      const Code& code,
-                                      uword new_target) {
-  ASSERT(code.ContainsInstructionAt(return_address));
-  InstanceCall call(return_address, code);
-  call.set_target(new_target);
-}
-
-
-uword CodePatcher::GetInstanceCallAt(uword return_address,
-                                     const Code& code,
-                                     ICData* ic_data) {
+RawCode* CodePatcher::GetInstanceCallAt(uword return_address,
+                                        const Code& code,
+                                        ICData* ic_data) {
   ASSERT(code.ContainsInstructionAt(return_address));
   InstanceCall call(return_address, code);
   if (ic_data != NULL) {
@@ -214,7 +225,7 @@
 }
 
 
-void CodePatcher::InsertCallAt(uword start, uword target) {
+void CodePatcher::InsertDeoptimizationCallAt(uword start, uword target) {
   // The inserted call should not overlap the lazy deopt jump code.
   ASSERT(start + ShortCallPattern::pattern_length_in_bytes() <= target);
   *reinterpret_cast<uint8_t*>(start) = 0xE8;
@@ -243,14 +254,14 @@
                                     const Code& trampoline) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCall call(return_address, code);
-  call.set_target(trampoline.EntryPoint());
+  call.set_target(trampoline);
   call.set_native_function(target);
 }
 
 
-uword CodePatcher::GetNativeCallAt(uword return_address,
-                                   const Code& code,
-                                   NativeFunction* target) {
+RawCode* CodePatcher::GetNativeCallAt(uword return_address,
+                                      const Code& code,
+                                      NativeFunction* target) {
   ASSERT(code.ContainsInstructionAt(return_address));
   NativeCall call(return_address, code);
   *target = call.native_function();
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
index fe4fc64..85568b8 100644
--- a/runtime/vm/compiler.cc
+++ b/runtime/vm/compiler.cc
@@ -758,7 +758,9 @@
         if (optimized) {
           // We may not have previous code if 'always_optimize' is set.
           if ((osr_id == Isolate::kNoDeoptId) && function.HasCode()) {
-            CodePatcher::PatchEntry(Code::Handle(function.CurrentCode()));
+            CodePatcher::PatchEntry(
+                Code::Handle(function.CurrentCode()),
+                Code::Handle(StubCode::FixCallersTarget_entry()->code()));
             if (FLAG_trace_compiler || FLAG_trace_patching) {
               if (FLAG_trace_compiler) {
                 THR_Print("  ");
@@ -790,7 +792,6 @@
           }
           function.set_unoptimized_code(code);
           function.AttachCode(code);
-          ASSERT(CodePatcher::CodeIsPatchable(code));
         }
         if (parsed_function->HasDeferredPrefixes()) {
           ASSERT(!FLAG_load_deferred_eagerly);
diff --git a/runtime/vm/compiler_stats.cc b/runtime/vm/compiler_stats.cc
index 86da700..d3e4b02 100644
--- a/runtime/vm/compiler_stats.cc
+++ b/runtime/vm/compiler_stats.cc
@@ -13,6 +13,8 @@
 namespace dart {
 
 DEFINE_FLAG(bool, compiler_stats, false, "Compiler stat counters.");
+DEFINE_FLAG(bool, compiler_benchmark, false,
+            "Compiler stat counters for benchmark.");
 
 
 class TokenStreamVisitor : public ObjectVisitor {
@@ -71,6 +73,7 @@
       num_tokens_total(0),
       num_literal_tokens_total(0),
       num_ident_tokens_total(0),
+      num_tokens_scanned(0),
       num_tokens_consumed(0),
       num_cached_consts(0),
       num_const_cache_hits(0),
@@ -87,7 +90,8 @@
       total_instr_size(0),
       pc_desc_size(0),
       vardesc_size(0),
-      text(NULL) {
+      text(NULL),
+      use_benchmark_output(false) {
 }
 
 
@@ -109,11 +113,7 @@
 }
 
 
-char* CompilerStats::PrintToZone() {
-  if (!FLAG_compiler_stats) {
-    return NULL;
-  }
-
+void CompilerStats::Update() {
   // Traverse the heap and compute number of tokens in all
   // TokenStream objects.
   num_tokens_total = 0;
@@ -122,6 +122,76 @@
   TokenStreamVisitor visitor(isolate_, this);
   isolate_->heap()->IterateObjects(&visitor);
   Dart::vm_isolate()->heap()->IterateObjects(&visitor);
+}
+
+
+void CompilerStats::EnableBenchmark() {
+  FLAG_compiler_stats = true;
+  use_benchmark_output = true;
+}
+
+
+// Generate output for Golem benchmark harness. If the output format
+// changes, the parsing function in Golem must be updated.
+char* CompilerStats::BenchmarkOutput() {
+  Update();
+  Log log(PrintToStats);
+  LogBlock lb(Thread::Current(), &log);
+  log.Print("==== Compiler Stats for isolate '%s' ====\n",
+            isolate_->debugger_name());
+
+  log.Print("NumberOfTokens: %" Pd64 "\n", num_tokens_total);
+  log.Print("NumClassesParsed: %" Pd64 "\n", num_classes_parsed);
+  log.Print("NumFunctionsCompiled: %" Pd64 "\n", num_functions_compiled);
+  log.Print("NumFunctionsOptimized: %" Pd64 "\n", num_functions_optimized);
+  log.Print("NumFunctionsParsed: %" Pd64 "\n", num_functions_parsed);
+
+  // Scanner stats.
+  int64_t scan_usecs = scanner_timer.TotalElapsedTime();
+  int64_t scan_speed =
+      scan_usecs > 0 ? 1000 * num_tokens_scanned / scan_usecs : 0;
+  log.Print("NumTokensScanned: %" Pd64 " tokens\n", num_tokens_scanned);
+  log.Print("ScannerTime: %" Pd64 " ms\n", scan_usecs / 1000);
+  log.Print("ScannerSpeed: %" Pd64 " tokens/ms\n", scan_speed);
+
+  // Parser stats.
+  int64_t parse_usecs = parser_timer.TotalElapsedTime();
+  int64_t parse_speed =
+      parse_usecs > 0 ? 1000 * num_tokens_consumed / parse_usecs : 0;
+  log.Print("NumTokensParsed: %" Pd64 " tokens\n", num_tokens_consumed);
+  log.Print("ParserTime: %" Pd64 " ms\n", parse_usecs / 1000);
+  log.Print("ParserSpeed: %" Pd64 " tokens/ms\n", parse_speed);
+
+  // Compiler stats.
+  int64_t codegen_usecs = codegen_timer.TotalElapsedTime();
+  int64_t compile_usecs = scan_usecs + parse_usecs + codegen_usecs;
+  int64_t compile_speed =
+      compile_usecs > 0 ? (1000 * num_func_tokens_compiled / compile_usecs) : 0;
+  log.Print("NumTokensCompiled: %" Pd64 " tokens\n", num_func_tokens_compiled);
+  log.Print("CompilerTime: %" Pd64 " ms\n", compile_usecs / 1000);
+
+  log.Print("CompilerSpeed: %" Pd64 " tokens/ms\n", compile_speed);
+  log.Print("CodeSize: %" Pd64 " KB\n", total_code_size / 1024);
+  int64_t code_density = total_instr_size > 0 ?
+      (num_func_tokens_compiled * 1024) / total_instr_size : 0;
+
+  log.Print("CodeDensity: %" Pd64 " tokens/KB\n", code_density);
+  log.Print("InstrSize: %" Pd64 " KB\n", total_instr_size / 1024);
+  log.Flush();
+  char* benchmark_text = text;
+  text = NULL;
+  return benchmark_text;
+}
+
+
+char* CompilerStats::PrintToZone() {
+  if (!FLAG_compiler_stats) {
+    return NULL;
+  } else if (use_benchmark_output) {
+    return BenchmarkOutput();
+  }
+
+  Update();
 
   Log log(PrintToStats);
   LogBlock lb(Thread::Current(), &log);
@@ -132,6 +202,7 @@
   log.Print("  Literal tokens:        %" Pd64 "\n", num_literal_tokens_total);
   log.Print("  Ident tokens:          %" Pd64 "\n", num_ident_tokens_total);
   log.Print("Source length:           %" Pd64 " characters\n", src_length);
+  log.Print("Number of source tokens: %" Pd64 "\n", num_tokens_scanned);
 
   log.Print("==== Parser stats:\n");
   log.Print("Total tokens consumed:   %" Pd64 "\n", num_tokens_consumed);
@@ -145,62 +216,71 @@
   log.Print("Consts cache hits:       %" Pd64 "\n", num_const_cache_hits);
 
   int64_t scan_usecs = scanner_timer.TotalElapsedTime();
-  log.Print("Scanner time:            %" Pd64 " msecs\n", scan_usecs / 1000);
+  log.Print("Scanner time:            %" Pd64 " ms\n", scan_usecs / 1000);
+  int64_t scan_speed =
+      scan_usecs > 0 ? 1000 * num_tokens_consumed / scan_usecs : 0;
+  log.Print("Scanner speed:           %" Pd64 " tokens/ms\n", scan_speed);
   int64_t parse_usecs = parser_timer.TotalElapsedTime();
-  log.Print("Parser time:             %" Pd64 " msecs\n", parse_usecs / 1000);
-  log.Print("Parser speed:            %" Pd64 " tokens per msec\n",
-            1000 * num_tokens_consumed / parse_usecs);
+  int64_t parse_speed =
+      parse_usecs > 0 ? 1000 * num_tokens_consumed / parse_usecs : 0;
+  log.Print("Parser time:             %" Pd64 " ms\n", parse_usecs / 1000);
+  log.Print("Parser speed:            %" Pd64 " tokens/ms\n",
+             parse_speed);
+
   int64_t codegen_usecs = codegen_timer.TotalElapsedTime();
 
   log.Print("==== Backend stats:\n");
-  log.Print("Code gen. time:          %" Pd64 " msecs\n",
-            codegen_usecs / 1000);
+  log.Print("Code gen. time:          %" Pd64 " ms\n", codegen_usecs / 1000);
   int64_t graphbuilder_usecs = graphbuilder_timer.TotalElapsedTime();
-  log.Print("  Graph builder:         %" Pd64 " msecs\n",
+  log.Print("  Graph builder:         %" Pd64 " ms\n",
             graphbuilder_usecs / 1000);
   int64_t ssa_usecs = ssa_timer.TotalElapsedTime();
-  log.Print("  Graph SSA:             %" Pd64 " msecs\n", ssa_usecs / 1000);
+  log.Print("  Graph SSA:             %" Pd64 " ms\n", ssa_usecs / 1000);
 
   int64_t graphinliner_usecs = graphinliner_timer.TotalElapsedTime();
-  log.Print("  Graph inliner:         %" Pd64 " msecs\n",
+  log.Print("  Graph inliner:         %" Pd64 " ms\n",
             graphinliner_usecs / 1000);
   int64_t graphinliner_parse_usecs =
       graphinliner_parse_timer.TotalElapsedTime();
-  log.Print("    Parsing:             %" Pd64 " msecs\n",
+  log.Print("    Parsing:             %" Pd64 " ms\n",
             graphinliner_parse_usecs / 1000);
   int64_t graphinliner_build_usecs =
       graphinliner_build_timer.TotalElapsedTime();
-  log.Print("    Building:            %" Pd64 " msecs\n",
+  log.Print("    Building:            %" Pd64 " ms\n",
             graphinliner_build_usecs / 1000);
   int64_t graphinliner_ssa_usecs = graphinliner_ssa_timer.TotalElapsedTime();
-  log.Print("    SSA:                 %" Pd64 " msecs\n",
+  log.Print("    SSA:                 %" Pd64 " ms\n",
             graphinliner_ssa_usecs / 1000);
   int64_t graphinliner_opt_usecs = graphinliner_opt_timer.TotalElapsedTime();
-  log.Print("    Optimization:        %" Pd64 " msecs\n",
+  log.Print("    Optimization:        %" Pd64 " ms\n",
             graphinliner_opt_usecs / 1000);
   int64_t graphinliner_subst_usecs =
       graphinliner_subst_timer.TotalElapsedTime();
-  log.Print("    Substitution:        %" Pd64 " msecs\n",
+  log.Print("    Substitution:        %" Pd64 " ms\n",
             graphinliner_subst_usecs / 1000);
   int64_t graphoptimizer_usecs = graphoptimizer_timer.TotalElapsedTime();
-  log.Print("  Graph optimizer:       %" Pd64 " msecs\n",
+  log.Print("  Graph optimizer:       %" Pd64 " ms\n",
             (graphoptimizer_usecs - graphinliner_usecs) / 1000);
   int64_t graphcompiler_usecs = graphcompiler_timer.TotalElapsedTime();
-  log.Print("  Graph compiler:        %" Pd64 " msecs\n",
+  log.Print("  Graph compiler:        %" Pd64 " ms\n",
             graphcompiler_usecs / 1000);
   int64_t codefinalizer_usecs = codefinalizer_timer.TotalElapsedTime();
-  log.Print("  Code finalizer:        %" Pd64 " msecs\n",
+  log.Print("  Code finalizer:        %" Pd64 " ms\n",
             codefinalizer_usecs / 1000);
 
   log.Print("==== Compiled code stats:\n");
+  int64_t compile_usecs = scan_usecs + parse_usecs + codegen_usecs;
+  int64_t compile_speed = compile_usecs > 0 ?
+      (1000 * num_func_tokens_compiled / compile_usecs) : 0;
   log.Print("Functions parsed:        %" Pd64 "\n", num_functions_parsed);
   log.Print("Functions compiled:      %" Pd64 "\n", num_functions_compiled);
   log.Print("  optimized:             %" Pd64 "\n", num_functions_optimized);
+  log.Print("Compiler time:           %" Pd64 " ms\n", compile_usecs / 1000);
   log.Print("Tokens compiled:         %" Pd64 "\n", num_func_tokens_compiled);
-  log.Print("Compilation speed:       %" Pd64 " tokens per msec\n",
-            (1000 * num_func_tokens_compiled) / (parse_usecs + codegen_usecs));
-  log.Print("Code density:            %" Pd64 " tokens per KB\n",
-            (num_func_tokens_compiled * 1024) / total_instr_size);
+  log.Print("Compilation speed:       %" Pd64 " tokens/ms\n", compile_speed);
+  int64_t code_density = total_instr_size > 0 ?
+      (num_func_tokens_compiled * 1024) / total_instr_size : 0;
+  log.Print("Code density:            %" Pd64 " tokens per KB\n", code_density);
   log.Print("Code size:               %" Pd64 " KB\n", total_code_size / 1024);
   log.Print("  Instr size:            %" Pd64 " KB\n",
             total_instr_size / 1024);
diff --git a/runtime/vm/compiler_stats.h b/runtime/vm/compiler_stats.h
index f0b47f4..4487991 100644
--- a/runtime/vm/compiler_stats.h
+++ b/runtime/vm/compiler_stats.h
@@ -15,6 +15,7 @@
 
 
 DECLARE_FLAG(bool, compiler_stats);
+DECLARE_FLAG(bool, compiler_benchmark);
 
 class CompilerStats {
  public:
@@ -23,8 +24,6 @@
 
   Isolate* isolate_;
 
-  // TODO(hausner): add these timers to the timer list maintained
-  // in the isolate?
   Timer parser_timer;         // Cumulative runtime of parser.
   Timer scanner_timer;        // Cumulative runtime of scanner.
   Timer codegen_timer;        // Cumulative runtime of code generator.
@@ -44,6 +43,7 @@
   int64_t num_tokens_total;    // Isolate + VM isolate
   int64_t num_literal_tokens_total;
   int64_t num_ident_tokens_total;
+  int64_t num_tokens_scanned;
   int64_t num_tokens_consumed;
   int64_t num_cached_consts;
   int64_t num_const_cache_hits;
@@ -63,7 +63,13 @@
   int64_t pc_desc_size;
   int64_t vardesc_size;
   char* text;
+  bool use_benchmark_output;
 
+  // Update stats that are computed, e.g. token count.
+  void Update();
+
+  void EnableBenchmark();
+  char* BenchmarkOutput();
   char* PrintToZone();
 };
 
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index c4487b6..9bd7640 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -45,11 +45,11 @@
   R14 = 14,
   kLastFreeCpuRegister = 14,
   R15 = 15,
-  FP  = 11,
-  IP  = 12,
-  SP  = 13,
-  LR  = 14,
-  PC  = 15,
+  FP  = R11,
+  IP  = R12,
+  SP  = R13,
+  LR  = R14,
+  PC  = R15,
   kNumberOfCpuRegisters = 16,
 };
 
@@ -231,13 +231,14 @@
 // Register aliases.
 const Register TMP = IP;  // Used as scratch register by assembler.
 const Register TMP2 = kNoRegister;  // There is no second assembler temporary.
-const Register CTX = R9;  // Location of current context at method entry.
-const Register PP = R10;  // Caches object pool pointer in generated code.
+const Register CTX = R10;  // Location of current context at method entry.
+const Register PP = R9;  // Caches object pool pointer in generated code.
 const Register SPREG = SP;  // Stack pointer register.
 const Register FPREG = FP;  // Frame pointer register.
 const Register LRREG = LR;  // Link register.
 const Register ICREG = R5;  // IC data register.
 const Register ARGS_DESC_REG = R4;
+const Register CODE_REG = R10;
 const Register THR = R8;  // Caches current thread in generated code.
 
 // R15 encodes APSR in the vmrs instruction.
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index f84cf68..ab76fd1 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -111,6 +111,7 @@
 const Register TMP2 = R17;
 const Register CTX = R28;  // Location of current context at method entry.
 const Register PP = R27;  // Caches object pool pointer in generated code.
+const Register CODE_REG = R24;
 const Register FPREG = FP;  // Frame pointer register.
 const Register SPREG = R18;  // Stack pointer register.
 const Register LRREG = LR;  // Link register.
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index f1edc35..0950639 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -63,6 +63,7 @@
 const Register TMP = kNoRegister;  // No scratch register used by assembler.
 const Register TMP2 = kNoRegister;  // No second assembler scratch register.
 const Register CTX = EDI;  // Location of current context at method entry.
+const Register CODE_REG = EDI;
 const Register PP = kNoRegister;  // No object pool pointer.
 const Register SPREG = ESP;  // Stack pointer register.
 const Register FPREG = EBP;  // Frame pointer register.
diff --git a/runtime/vm/constants_mips.h b/runtime/vm/constants_mips.h
index 5c721b3..fed178f 100644
--- a/runtime/vm/constants_mips.h
+++ b/runtime/vm/constants_mips.h
@@ -179,6 +179,7 @@
 const Register TMP = AT;  // Used as scratch register by assembler.
 const Register TMP2 = kNoRegister;  // No second assembler scratch register.
 const Register CTX = S6;  // Location of current context at method entry.
+const Register CODE_REG = S6;
 const Register PP = S7;  // Caches object pool pointer in generated code.
 const Register SPREG = SP;  // Stack pointer register.
 const Register FPREG = FP;  // Frame pointer register.
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index fdded5f..c2b48c5 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -86,13 +86,14 @@
 // Register aliases.
 const Register TMP = R11;  // Used as scratch register by the assembler.
 const Register TMP2 = kNoRegister;  // No second assembler scratch register.
-const Register CTX = R9;  // Location of current context at method entry.
+const Register CTX = R12;  // Location of current context at method entry.
 // Caches object pool pointer in generated code.
 const Register PP = R15;
 const Register SPREG = RSP;  // Stack pointer register.
 const Register FPREG = RBP;  // Frame pointer register.
 const Register ICREG = RBX;  // IC data register.
 const Register ARGS_DESC_REG = R10;  // Arguments descriptor register.
+const Register CODE_REG = R12;
 const Register THR = R14;  // Caches current thread in generated code.
 
 // Exception object is passed in this register to the catch handlers when an
diff --git a/runtime/vm/counters.cc b/runtime/vm/counters.cc
deleted file mode 100644
index 7e43d9a..0000000
--- a/runtime/vm/counters.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "vm/counters.h"
-
-#include <string.h>
-#include <map>  // TODO(koda): Remove STL dependencies.
-
-#include "platform/globals.h"
-#include "vm/os.h"
-
-namespace dart {
-
-struct CStrLess {
-  bool operator()(const char* a, const char* b) const {
-    return strcmp(a, b) < 0;
-  }
-};
-
-
-Counters::~Counters() {
-  if (collision_) {
-    OS::PrintErr("Counters table collision; increase Counters::kSize.");
-    return;
-  }
-  typedef std::map<const char*, int64_t, CStrLess> TotalsMap;
-  TotalsMap totals;
-  for (int i = 0; i < kSize; ++i) {
-    const Counter& counter = counters_[i];
-    if (counter.name != NULL) {
-      totals[counter.name] += counter.value;
-    }
-  }
-  for (TotalsMap::iterator it = totals.begin(); it != totals.end(); ++it) {
-    OS::PrintErr("%s: %" Pd64 "\n", it->first, it->second);
-  }
-}
-
-}  // namespace dart
diff --git a/runtime/vm/counters.h b/runtime/vm/counters.h
deleted file mode 100644
index ee79b69..0000000
--- a/runtime/vm/counters.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#ifndef VM_COUNTERS_H_
-#define VM_COUNTERS_H_
-
-#include "platform/assert.h"
-
-namespace dart {
-
-struct Counter {
-  Counter() : name(NULL), value(0) {}
-  const char* name;
-  int64_t value;
-};
-
-
-// Light-weight stats counters for temporary experiments/debugging.
-// A single statement is enough to add a counter:
-//   ...
-//   Isolate::Current()->counters()->Increment("allocated", size_in_bytes);
-//   ...
-class Counters {
- public:
-  Counters() : collision_(false) {}
-
-  // Adds 'delta' to the named counter. 'name' must be a literal string.
-  void Increment(const char* name, int64_t delta) {
-    Counter& counter =
-      counters_[reinterpret_cast<uword>(name) & (kSize - 1)];
-    if (counter.name != name && counter.name != NULL) {
-      collision_ = true;
-    }
-    counter.name = name;
-    counter.value += delta;
-  }
-
-  // Prints all counters to stderr.
-  ~Counters();
-
- private:
-  enum { kSize = 1024 };
-  COMPILE_ASSERT((0 == (kSize & (kSize - 1))));  // kSize is a power of 2.
-  Counter counters_[kSize];
-  bool collision_;
-};
-
-}  // namespace dart
-
-#endif  // VM_COUNTERS_H_
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 8d2a7da..fcb7dbc 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -44,6 +44,7 @@
 ThreadPool* Dart::thread_pool_ = NULL;
 DebugInfo* Dart::pprof_symbol_generator_ = NULL;
 ReadOnlyHandles* Dart::predefined_handles_ = NULL;
+const uint8_t* Dart::instructions_snapshot_buffer_ = NULL;
 
 // Structure for managing read-only global handles allocation used for
 // creating global read-only handles that are pre created and initialized
@@ -103,6 +104,7 @@
   SemiSpace::InitOnce();
   Metric::InitOnce();
   StoreBuffer::InitOnce();
+  MarkingStack::InitOnce();
   Thread::EnsureInit();
 
 #if defined(USING_SIMULATOR)
@@ -144,6 +146,9 @@
       StubCode::InitOnce();
     }
     if (vm_isolate_snapshot != NULL) {
+      if (instructions_snapshot != NULL) {
+        vm_isolate_->SetupInstructionsSnapshotPage(instructions_snapshot);
+      }
       const Snapshot* snapshot = Snapshot::SetupFromBuffer(vm_isolate_snapshot);
       if (snapshot == NULL) {
         return "Invalid vm isolate snapshot seen.";
@@ -313,7 +318,7 @@
     }
     IsolateSnapshotReader reader(snapshot->content(),
                                  snapshot->length(),
-                                 Object::instructions_snapshot_buffer(),
+                                 Dart::instructions_snapshot_buffer(),
                                  T);
     const Error& error = Error::Handle(reader.ReadFullSnapshot());
     if (!error.IsNull()) {
@@ -332,13 +337,20 @@
   }
 
   Object::VerifyBuiltinVtables();
+#if defined(DEBUG)
+  I->heap()->Verify(kForbidMarked);
+#endif
 
   {
     TimelineDurationScope tds(I, I->GetIsolateStream(), "StubCode::Init");
     StubCode::Init(I);
   }
 
-  MegamorphicCacheTable::InitMissHandler(I);
+  // When running precompiled, the megamorphic miss function/code comes from the
+  // snapshot.
+  if (!Dart::IsRunningPrecompiledCode()) {
+    MegamorphicCacheTable::InitMissHandler(I);
+  }
   if (snapshot_buffer == NULL) {
     if (!I->object_store()->PreallocateObjects()) {
       return I->object_store()->sticky_error();
diff --git a/runtime/vm/dart.h b/runtime/vm/dart.h
index c0203cc..5ae0550 100644
--- a/runtime/vm/dart.h
+++ b/runtime/vm/dart.h
@@ -54,6 +54,16 @@
   static uword AllocateReadOnlyHandle();
   static bool IsReadOnlyHandle(uword address);
 
+  static const uint8_t* instructions_snapshot_buffer() {
+    return instructions_snapshot_buffer_;
+  }
+  static void set_instructions_snapshot_buffer(const uint8_t* buffer) {
+    instructions_snapshot_buffer_ = buffer;
+  }
+  static bool IsRunningPrecompiledCode() {
+    return instructions_snapshot_buffer_ != NULL;
+  }
+
  private:
   static void WaitForIsolateShutdown();
 
@@ -61,6 +71,7 @@
   static ThreadPool* thread_pool_;
   static DebugInfo* pprof_symbol_generator_;
   static ReadOnlyHandles* predefined_handles_;
+  static const uint8_t* instructions_snapshot_buffer_;
 };
 
 }  // namespace dart
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 5e1105a..e47d14e 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -5692,34 +5692,32 @@
 }
 
 
-DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer,
-                                       void* user_data) {
-  Isolate* isolate = Isolate::Current();
-  CHECK_ISOLATE(isolate);
-  if (consumer == NULL) {
-    return false;
-  }
-  TimelineEventRecorder* timeline_recorder = Timeline::recorder();
-  if (timeline_recorder == NULL) {
-    // Nothing has been recorded.
-    return false;
-  }
-  // Suspend execution of other threads while serializing to JSON.
-  isolate->thread_registry()->SafepointThreads();
-  JSONStream js;
-  IsolateTimelineEventFilter filter(isolate);
-  timeline_recorder->PrintJSON(&js, &filter);
-  // Resume execution of other threads.
-  isolate->thread_registry()->ResumeAllThreads();
+DART_EXPORT void Dart_GlobalTimelineSetRecordedStreams(int64_t stream_mask) {
+  // Per isolate overrides.
+  const bool api_enabled = (stream_mask & DART_TIMELINE_STREAM_API) != 0;
+  const bool compiler_enabled =
+      (stream_mask & DART_TIMELINE_STREAM_COMPILER) != 0;
+  const bool embedder_enabled =
+      (stream_mask & DART_TIMELINE_STREAM_EMBEDDER) != 0;
+  const bool gc_enabled = (stream_mask & DART_TIMELINE_STREAM_GC) != 0;
+  const bool isolate_enabled =
+      (stream_mask & DART_TIMELINE_STREAM_ISOLATE) != 0;
+  Timeline::SetStreamAPIEnabled(api_enabled);
+  Timeline::SetStreamCompilerEnabled(compiler_enabled);
+  Timeline::SetStreamEmbedderEnabled(embedder_enabled);
+  Timeline::SetStreamGCEnabled(gc_enabled);
+  Timeline::SetStreamIsolateEnabled(isolate_enabled);
+  // VM wide.
+  const bool vm_enabled =
+      (stream_mask & DART_TIMELINE_STREAM_VM) != 0;
+  Timeline::GetVMStream()->set_enabled(vm_enabled);
+}
 
-  // Copy output.
-  char* output = NULL;
-  intptr_t output_length = 0;
-  js.Steal(const_cast<const char**>(&output), &output_length);
-  if (output != NULL) {
-    // Add one for the '\0' character.
-    output_length++;
-  }
+
+static void StreamToConsumer(Dart_StreamConsumer consumer,
+                             void* user_data,
+                             char* output,
+                             intptr_t output_length) {
   // Start stream.
   const char* kStreamName = "timeline";
   const intptr_t kDataSize = 64 * KB;
@@ -5753,8 +5751,6 @@
   }
   ASSERT(cursor == output_length);
   ASSERT(remaining == 0);
-  // We stole the JSONStream's output buffer, free it.
-  free(output);
 
   // Finish stream.
   consumer(Dart_StreamConsumer_kFinish,
@@ -5762,6 +5758,76 @@
            NULL,
            0,
            user_data);
+}
+
+
+DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer,
+                                       void* user_data) {
+  Isolate* isolate = Isolate::Current();
+  CHECK_ISOLATE(isolate);
+  if (consumer == NULL) {
+    return false;
+  }
+  TimelineEventRecorder* timeline_recorder = Timeline::recorder();
+  if (timeline_recorder == NULL) {
+    // Nothing has been recorded.
+    return false;
+  }
+  // Suspend execution of other threads while serializing to JSON.
+  isolate->thread_registry()->SafepointThreads();
+  // TODO(johnmccutchan): Reclaim open blocks from isolate so we have a complete
+  // timeline.
+  JSONStream js;
+  IsolateTimelineEventFilter filter(isolate);
+  timeline_recorder->PrintJSON(&js, &filter);
+  // Resume execution of other threads.
+  isolate->thread_registry()->ResumeAllThreads();
+
+  // Copy output.
+  char* output = NULL;
+  intptr_t output_length = 0;
+  js.Steal(const_cast<const char**>(&output), &output_length);
+  if (output != NULL) {
+    // Add one for the '\0' character.
+    output_length++;
+  }
+  StreamToConsumer(consumer, user_data, output, output_length);
+
+  // We stole the JSONStream's output buffer, free it.
+  free(output);
+  return true;
+}
+
+
+DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer,
+                                             void* user_data) {
+  if (consumer == NULL) {
+    return false;
+  }
+  TimelineEventRecorder* timeline_recorder = Timeline::recorder();
+  if (timeline_recorder == NULL) {
+    // Nothing has been recorded.
+    return false;
+  }
+
+  // TODO(johnmccutchan): Reclaim all open blocks from the system so we have
+  // a complete timeline.
+  JSONStream js;
+  TimelineEventFilter filter;
+  timeline_recorder->PrintJSON(&js, &filter);
+
+  // Copy output.
+  char* output = NULL;
+  intptr_t output_length = 0;
+  js.Steal(const_cast<const char**>(&output), &output_length);
+  if (output != NULL) {
+    // Add one for the '\0' character.
+    output_length++;
+  }
+  StreamToConsumer(consumer, user_data, output, output_length);
+
+  // We stole the JSONStream's output buffer, free it.
+  free(output);
   return true;
 }
 
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index bf4ec2a..39a7f3e 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -9441,4 +9441,100 @@
   free(data.buffer);
 }
 
+
+TEST_CASE(Timeline_Dart_TimelineGetTraceGlobalOverride) {
+  const char* kScriptChars =
+    "foo() => 'a';\n"
+    "main() => foo();\n";
+
+  Dart_Handle lib =
+      TestCase::LoadTestScript(kScriptChars, NULL);
+
+  const char* buffer = NULL;
+  intptr_t buffer_length = 0;
+  bool success = false;
+
+  // Enable recording of all streams across the entire vm.
+  Dart_GlobalTimelineSetRecordedStreams(DART_TIMELINE_STREAM_ALL);
+
+  // Invoke main, which will be compiled resulting in a compiler event in
+  // the timeline.
+  Dart_Handle result = Dart_Invoke(lib,
+                                   NewString("main"),
+                                   0,
+                                   NULL);
+  EXPECT_VALID(result);
+
+  // Grab the trace.
+  AppendData data;
+  success = Dart_TimelineGetTrace(AppendStreamConsumer, &data);
+  EXPECT(success);
+  buffer = reinterpret_cast<char*>(data.buffer);
+  buffer_length = data.buffer_length;
+  EXPECT(buffer_length > 0);
+  EXPECT(buffer != NULL);
+
+  // Heartbeat test.
+  EXPECT_SUBSTRING("\"cat\":\"Compiler\"", buffer);
+  EXPECT_SUBSTRING("\"name\":\"CompileFunction\"", buffer);
+  EXPECT_SUBSTRING("\"function\":\"::_main\"", buffer);
+
+  // Free buffer allocated by AppendStreamConsumer
+  free(data.buffer);
+}
+
+
+UNIT_TEST_CASE(Timeline_Dart_GlobalTimelineGetTrace) {
+  const char* buffer = NULL;
+  intptr_t buffer_length = 0;
+  bool success = false;
+
+  // Enable all streams.
+  Dart_GlobalTimelineSetRecordedStreams(DART_TIMELINE_STREAM_ALL |
+                                        DART_TIMELINE_STREAM_VM);
+  {
+    // Create isolate.
+    TestIsolateScope __test_isolate__;
+    Thread* __thread__ = Thread::Current();
+    ASSERT(__thread__->isolate() == __test_isolate__.isolate());
+    StackZone __zone__(__thread__);
+    HandleScope __hs__(__thread__);
+
+    // Load test script.
+    const char* kScriptChars =
+      "foo() => 'a';\n"
+      "main() => foo();\n";
+
+    Dart_Handle lib =
+        TestCase::LoadTestScript(kScriptChars, NULL);
+
+    // Invoke main, which will be compiled resulting in a compiler event in
+    // the timeline.
+    Dart_Handle result = Dart_Invoke(lib,
+                                     NewString("main"),
+                                     0,
+                                     NULL);
+    EXPECT_VALID(result);
+  }
+
+  // Isolate is shutdown now.
+  // Grab the global trace.
+  AppendData data;
+  success = Dart_GlobalTimelineGetTrace(AppendStreamConsumer, &data);
+  EXPECT(success);
+  buffer = reinterpret_cast<char*>(data.buffer);
+  buffer_length = data.buffer_length;
+  EXPECT(buffer_length > 0);
+  EXPECT(buffer != NULL);
+
+  // Heartbeat test.
+  EXPECT_SUBSTRING("\"name\":\"InitializeIsolate\"", buffer);
+  EXPECT_SUBSTRING("\"cat\":\"Compiler\"", buffer);
+  EXPECT_SUBSTRING("\"name\":\"CompileFunction\"", buffer);
+  EXPECT_SUBSTRING("\"function\":\"::_main\"", buffer);
+
+  // Free buffer allocated by AppendStreamConsumer
+  free(data.buffer);
+}
+
 }  // namespace dart
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc
index 1053404..82055bb 100644
--- a/runtime/vm/dart_entry.cc
+++ b/runtime/vm/dart_entry.cc
@@ -100,27 +100,17 @@
   ScopedIsolateStackLimits stack_limit(isolate);
   SuspendLongJumpScope suspend_long_jump_scope(thread);
 #if defined(USING_SIMULATOR)
-#if defined(ARCH_IS_64_BIT)
-  // TODO(zra): Change to intptr_t so we have only one case.
-    return bit_copy<RawObject*, int64_t>(Simulator::Current()->Call(
-        reinterpret_cast<int64_t>(entrypoint),
-        static_cast<int64_t>(code.EntryPoint()),
-        reinterpret_cast<int64_t>(&arguments_descriptor),
-        reinterpret_cast<int64_t>(&arguments),
-        reinterpret_cast<int64_t>(thread)));
+  return bit_copy<RawObject*, int64_t>(Simulator::Current()->Call(
+      reinterpret_cast<intptr_t>(entrypoint),
+      reinterpret_cast<intptr_t>(&code),
+      reinterpret_cast<intptr_t>(&arguments_descriptor),
+      reinterpret_cast<intptr_t>(&arguments),
+      reinterpret_cast<intptr_t>(thread)));
 #else
-    return bit_copy<RawObject*, int64_t>(Simulator::Current()->Call(
-        reinterpret_cast<int32_t>(entrypoint),
-        static_cast<int32_t>(code.EntryPoint()),
-        reinterpret_cast<int32_t>(&arguments_descriptor),
-        reinterpret_cast<int32_t>(&arguments),
-        reinterpret_cast<int32_t>(thread)));
-#endif
-#else
-    return entrypoint(code.EntryPoint(),
-                      arguments_descriptor,
-                      arguments,
-                      thread);
+  return entrypoint(code,
+                    arguments_descriptor,
+                    arguments,
+                    thread);
 #endif
 }
 
diff --git a/runtime/vm/dart_entry.h b/runtime/vm/dart_entry.h
index 016f3ce..0f9597f 100644
--- a/runtime/vm/dart_entry.h
+++ b/runtime/vm/dart_entry.h
@@ -102,7 +102,7 @@
 class DartEntry : public AllStatic {
  public:
   // On success, returns a RawInstance.  On failure, a RawError.
-  typedef RawObject* (*invokestub)(uword entry_point,
+  typedef RawObject* (*invokestub)(const Code& target_code,
                                    const Array& arguments_descriptor,
                                    const Array& arguments,
                                    Thread* thread);
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index e0dd4a9..ca49376 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -220,6 +220,7 @@
 
 void CodeBreakpoint::VisitObjectPointers(ObjectPointerVisitor* visitor) {
   visitor->VisitPointer(reinterpret_cast<RawObject**>(&code_));
+  visitor->VisitPointer(reinterpret_cast<RawObject**>(&saved_value_));
 }
 
 
@@ -1113,7 +1114,7 @@
       bpt_location_(NULL),
       next_(NULL),
       breakpoint_kind_(kind),
-      saved_value_(0) {
+      saved_value_(Code::null()) {
   ASSERT(!code.IsNull());
   ASSERT(token_pos_ > 0);
   ASSERT(pc_ != 0);
@@ -1397,7 +1398,9 @@
   DeoptContext* deopt_context =
       new DeoptContext(frame, code,
                        DeoptContext::kDestIsAllocated,
-                       NULL, NULL);
+                       NULL,
+                       NULL,
+                       true);
   isolate->set_deopt_context(deopt_context);
 
   deopt_context->FillDestFrame();
@@ -3006,13 +3009,13 @@
 }
 
 
-uword Debugger::GetPatchedStubAddress(uword breakpoint_address) {
+RawCode* Debugger::GetPatchedStubAddress(uword breakpoint_address) {
   CodeBreakpoint* bpt = GetCodeBreakpoint(breakpoint_address);
   if (bpt != NULL) {
     return bpt->OrigStubAddress();
   }
   UNREACHABLE();
-  return 0L;
+  return Code::null();
 }
 
 
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h
index 685e5b5..cf6562a 100644
--- a/runtime/vm/debugger.h
+++ b/runtime/vm/debugger.h
@@ -191,7 +191,7 @@
   void Disable();
   bool IsEnabled() const { return is_enabled_; }
 
-  uword OrigStubAddress() const;
+  RawCode* OrigStubAddress() const;
 
  private:
   void VisitObjectPointers(ObjectPointerVisitor* visitor);
@@ -215,7 +215,7 @@
   CodeBreakpoint* next_;
 
   RawPcDescriptors::Kind breakpoint_kind_;
-  uword saved_value_;
+  RawCode* saved_value_;
 
   friend class Debugger;
   DISALLOW_COPY_AND_ASSIGN(CodeBreakpoint);
@@ -565,7 +565,7 @@
   void SignalIsolateEvent(DebuggerEvent::EventType type);
   static void SignalIsolateInterrupted();
 
-  uword GetPatchedStubAddress(uword breakpoint_address);
+  RawCode* GetPatchedStubAddress(uword breakpoint_address);
 
   void PrintBreakpointsToJSONArray(JSONArray* jsarr) const;
   void PrintSettingsToJSONObject(JSONObject* jsobj) const;
diff --git a/runtime/vm/debugger_arm.cc b/runtime/vm/debugger_arm.cc
index e0a366d..1322b8d 100644
--- a/runtime/vm/debugger_arm.cc
+++ b/runtime/vm/debugger_arm.cc
@@ -13,21 +13,21 @@
 
 namespace dart {
 
-uword CodeBreakpoint::OrigStubAddress() const {
+RawCode* CodeBreakpoint::OrigStubAddress() const {
   return saved_value_;
 }
 
 
 void CodeBreakpoint::PatchCode() {
   ASSERT(!is_enabled_);
-  uword stub_target = 0;
+  Code& stub_target = Code::Handle();
   switch (breakpoint_kind_) {
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
-      stub_target = StubCode::ICCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::ICCallBreakpoint_entry()->code();
       break;
     case RawPcDescriptors::kRuntimeCall:
-      stub_target = StubCode::RuntimeCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::RuntimeCallBreakpoint_entry()->code();
       break;
     default:
       UNREACHABLE();
@@ -46,7 +46,7 @@
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
     case RawPcDescriptors::kRuntimeCall: {
-      CodePatcher::PatchStaticCallAt(pc_, code, saved_value_);
+      CodePatcher::PatchStaticCallAt(pc_, code, Code::Handle(saved_value_));
       break;
     }
     default:
diff --git a/runtime/vm/debugger_arm64.cc b/runtime/vm/debugger_arm64.cc
index 8c59d24..bf6423a 100644
--- a/runtime/vm/debugger_arm64.cc
+++ b/runtime/vm/debugger_arm64.cc
@@ -13,21 +13,21 @@
 
 namespace dart {
 
-uword CodeBreakpoint::OrigStubAddress() const {
+RawCode* CodeBreakpoint::OrigStubAddress() const {
   return saved_value_;
 }
 
 
 void CodeBreakpoint::PatchCode() {
   ASSERT(!is_enabled_);
-  uword stub_target = 0;
+  Code& stub_target = Code::Handle();
   switch (breakpoint_kind_) {
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
-      stub_target = StubCode::ICCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::ICCallBreakpoint_entry()->code();
       break;
     case RawPcDescriptors::kRuntimeCall: {
-      stub_target = StubCode::RuntimeCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::RuntimeCallBreakpoint_entry()->code();
       break;
     }
     default:
@@ -47,7 +47,8 @@
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
     case RawPcDescriptors::kRuntimeCall: {
-      CodePatcher::PatchPoolPointerCallAt(pc_, code, saved_value_);
+      CodePatcher::PatchPoolPointerCallAt(
+          pc_, code, Code::Handle(saved_value_));
       break;
     }
     default:
diff --git a/runtime/vm/debugger_ia32.cc b/runtime/vm/debugger_ia32.cc
index 408c838..cc1c63d 100644
--- a/runtime/vm/debugger_ia32.cc
+++ b/runtime/vm/debugger_ia32.cc
@@ -17,7 +17,7 @@
 
 namespace dart {
 
-uword CodeBreakpoint::OrigStubAddress() const {
+RawCode* CodeBreakpoint::OrigStubAddress() const {
   return saved_value_;
 }
 
@@ -26,25 +26,25 @@
   ASSERT(!is_enabled_);
   const Code& code = Code::Handle(code_);
   const Instructions& instrs = Instructions::Handle(code.instructions());
+  Code& stub_target = Code::Handle();
   {
     WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
     switch (breakpoint_kind_) {
       case RawPcDescriptors::kIcCall:
       case RawPcDescriptors::kUnoptStaticCall: {
-        saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
-        CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::ICCallBreakpoint_entry()->EntryPoint());
+        stub_target = StubCode::ICCallBreakpoint_entry()->code();
         break;
       }
       case RawPcDescriptors::kRuntimeCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
-        CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::RuntimeCallBreakpoint_entry()->EntryPoint());
+        stub_target = StubCode::RuntimeCallBreakpoint_entry()->code();
         break;
       }
       default:
         UNREACHABLE();
     }
+    saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
+    CodePatcher::PatchStaticCallAt(pc_, code, stub_target);
   }
   is_enabled_ = true;
 }
@@ -60,7 +60,7 @@
       case RawPcDescriptors::kIcCall:
       case RawPcDescriptors::kUnoptStaticCall:
       case RawPcDescriptors::kRuntimeCall: {
-        CodePatcher::PatchStaticCallAt(pc_, code, saved_value_);
+        CodePatcher::PatchStaticCallAt(pc_, code, Code::Handle(saved_value_));
         break;
       }
       default:
diff --git a/runtime/vm/debugger_mips.cc b/runtime/vm/debugger_mips.cc
index 651714b..8a02ca8 100644
--- a/runtime/vm/debugger_mips.cc
+++ b/runtime/vm/debugger_mips.cc
@@ -13,21 +13,21 @@
 
 namespace dart {
 
-uword CodeBreakpoint::OrigStubAddress() const {
+RawCode* CodeBreakpoint::OrigStubAddress() const {
   return saved_value_;
 }
 
 
 void CodeBreakpoint::PatchCode() {
   ASSERT(!is_enabled_);
-  uword stub_target = 0;
+  Code& stub_target = Code::Handle();
   switch (breakpoint_kind_) {
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
-      stub_target = StubCode::ICCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::ICCallBreakpoint_entry()->code();
       break;
     case RawPcDescriptors::kRuntimeCall:
-      stub_target = StubCode::RuntimeCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::RuntimeCallBreakpoint_entry()->code();
       break;
     default:
       UNREACHABLE();
@@ -46,7 +46,7 @@
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
     case RawPcDescriptors::kRuntimeCall: {
-      CodePatcher::PatchStaticCallAt(pc_, code, saved_value_);
+      CodePatcher::PatchStaticCallAt(pc_, code, Code::Handle(saved_value_));
       break;
     }
     default:
diff --git a/runtime/vm/debugger_x64.cc b/runtime/vm/debugger_x64.cc
index 531876d..4fe2e6a 100644
--- a/runtime/vm/debugger_x64.cc
+++ b/runtime/vm/debugger_x64.cc
@@ -15,21 +15,21 @@
 
 namespace dart {
 
-uword CodeBreakpoint::OrigStubAddress() const {
+RawCode* CodeBreakpoint::OrigStubAddress() const {
   return saved_value_;
 }
 
 
 void CodeBreakpoint::PatchCode() {
   ASSERT(!is_enabled_);
-  uword stub_target = 0;
+  Code& stub_target = Code::Handle();
   switch (breakpoint_kind_) {
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
-      stub_target = StubCode::ICCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::ICCallBreakpoint_entry()->code();
       break;
     case RawPcDescriptors::kRuntimeCall:
-      stub_target = StubCode::RuntimeCallBreakpoint_entry()->EntryPoint();
+      stub_target = StubCode::RuntimeCallBreakpoint_entry()->code();
       break;
     default:
       UNREACHABLE();
@@ -48,7 +48,8 @@
     case RawPcDescriptors::kIcCall:
     case RawPcDescriptors::kUnoptStaticCall:
     case RawPcDescriptors::kRuntimeCall: {
-      CodePatcher::PatchPoolPointerCallAt(pc_, code, saved_value_);
+      CodePatcher::PatchPoolPointerCallAt(
+          pc_, code, Code::Handle(saved_value_));
       break;
     }
     default:
diff --git a/runtime/vm/deferred_objects.cc b/runtime/vm/deferred_objects.cc
index a647af1..6aac45a 100644
--- a/runtime/vm/deferred_objects.cc
+++ b/runtime/vm/deferred_objects.cc
@@ -161,11 +161,7 @@
   uword* dest_addr = reinterpret_cast<uword*>(slot());
   Function& function = Function::Handle(zone);
   function ^= deopt_context->ObjectAt(index_);
-  if (function.IsNull()) {
-    // Callee's PC marker is not used (pc of Deoptimize stub). Set to 0.
-    *dest_addr = 0;
-    return;
-  }
+  ASSERT(!function.IsNull());
   const Error& error = Error::Handle(zone,
       Compiler::EnsureUnoptimizedCode(thread, function));
   if (!error.IsNull()) {
@@ -174,9 +170,7 @@
   const Code& code = Code::Handle(zone, function.unoptimized_code());
   ASSERT(!code.IsNull());
   ASSERT(function.HasCode());
-  const intptr_t pc_marker =
-      code.EntryPoint() + Assembler::EntryPointToPcMarkerOffset();
-  *dest_addr = pc_marker;
+  *reinterpret_cast<RawObject**>(dest_addr) = code.raw();
 
   if (FLAG_trace_deoptimization_verbose) {
     OS::PrintErr("materializing pc marker at 0x%" Px ": %s, %s\n",
diff --git a/runtime/vm/deopt_instructions.cc b/runtime/vm/deopt_instructions.cc
index d6e2568..79f08d8 100644
--- a/runtime/vm/deopt_instructions.cc
+++ b/runtime/vm/deopt_instructions.cc
@@ -26,7 +26,8 @@
                            const Code& code,
                            DestFrameOptions dest_options,
                            fpu_register_t* fpu_registers,
-                           intptr_t* cpu_registers)
+                           intptr_t* cpu_registers,
+                           bool is_lazy_deopt)
     : code_(code.raw()),
       object_pool_(code.GetObjectPool()),
       deopt_info_(TypedData::null()),
@@ -45,7 +46,8 @@
       timeline_event_(NULL),
       deferred_slots_(NULL),
       deferred_objects_count_(0),
-      deferred_objects_(NULL) {
+      deferred_objects_(NULL),
+      is_lazy_deopt_(is_lazy_deopt) {
   const TypedData& deopt_info = TypedData::Handle(
       code.GetDeoptInfoAtPc(frame->pc(), &deopt_reason_, &deopt_flags_));
   ASSERT(!deopt_info.IsNull());
@@ -651,7 +653,16 @@
   }
 
   void Execute(DeoptContext* deopt_context, intptr_t* dest_addr) {
-    *dest_addr = Smi::RawValue(0);
+    Function& function = Function::Handle(deopt_context->zone());
+    function ^= deopt_context->ObjectAt(object_table_index_);
+    if (function.IsNull()) {
+      *reinterpret_cast<RawObject**>(dest_addr) = deopt_context->is_lazy_deopt()
+          ? StubCode::DeoptimizeLazy_entry()->code()
+          : StubCode::Deoptimize_entry()->code();
+      return;
+    }
+
+    *dest_addr = reinterpret_cast<intptr_t>(Object::null());
     deopt_context->DeferPcMarkerMaterialization(
         object_table_index_, dest_addr);
   }
diff --git a/runtime/vm/deopt_instructions.h b/runtime/vm/deopt_instructions.h
index 188e95c..cf357d0 100644
--- a/runtime/vm/deopt_instructions.h
+++ b/runtime/vm/deopt_instructions.h
@@ -34,7 +34,8 @@
                const Code& code,
                DestFrameOptions dest_options,
                fpu_register_t* fpu_registers,
-               intptr_t* cpu_registers);
+               intptr_t* cpu_registers,
+               bool is_lazy_deopt);
   virtual ~DeoptContext();
 
   // Returns the offset of the dest fp from the dest sp.  Used in
@@ -94,6 +95,8 @@
 
   RawCode* code() const { return code_; }
 
+  bool is_lazy_deopt() const { return is_lazy_deopt_; }
+
   ICData::DeoptReasonId deopt_reason() const { return deopt_reason_; }
   bool HasDeoptFlag(ICData::DeoptFlags flag) {
     return (deopt_flags_ & flag) != 0;
@@ -228,6 +231,8 @@
   intptr_t deferred_objects_count_;
   DeferredObject** deferred_objects_;
 
+  const bool is_lazy_deopt_;
+
   DISALLOW_COPY_AND_ASSIGN(DeoptContext);
 };
 
diff --git a/runtime/vm/disassembler.cc b/runtime/vm/disassembler.cc
index c63d459..986b9b2 100644
--- a/runtime/vm/disassembler.cc
+++ b/runtime/vm/disassembler.cc
@@ -104,7 +104,8 @@
 bool Disassembler::CanFindOldObject(uword addr) {
   FindAddrVisitor visitor(addr);
   NoSafepointScope no_safepoint;
-  return Isolate::Current()->heap()->FindOldObject(&visitor) != Object::null();
+  return Dart::vm_isolate()->heap()->FindOldObject(&visitor) != Object::null()
+      || Isolate::Current()->heap()->FindOldObject(&visitor) != Object::null();
 }
 
 
diff --git a/runtime/vm/disassembler_arm.cc b/runtime/vm/disassembler_arm.cc
index 63f759b..93ff293 100644
--- a/runtime/vm/disassembler_arm.cc
+++ b/runtime/vm/disassembler_arm.cc
@@ -109,11 +109,11 @@
 
 
 // These register names are defined in a way to match the native disassembler
-// formatting, except for register aliases ctx (r9) and pp (r10).
+// formatting, except for register alias pp (r9).
 // See for example the command "objdump -d <binary file>".
 static const char* reg_names[kNumberOfCpuRegisters] = {
   "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
-  "r8", "ctx", "pp", "fp", "ip", "sp", "lr", "pc",
+  "r8", "pp", "r10", "fp", "ip", "sp", "lr", "pc",
 };
 
 
diff --git a/runtime/vm/disassembler_ia32.cc b/runtime/vm/disassembler_ia32.cc
index 036f5d0..0f6dc74 100644
--- a/runtime/vm/disassembler_ia32.cc
+++ b/runtime/vm/disassembler_ia32.cc
@@ -473,7 +473,8 @@
       obj.IsClass() ||
       obj.IsFunction() ||
       obj.IsICData() ||
-      obj.IsField()) {
+      obj.IsField() ||
+      obj.IsCode()) {
     return obj.ToCString();
   }
 
@@ -493,6 +494,7 @@
       reinterpret_cast<RawObject*>(addr)->IsWellFormed() &&
       reinterpret_cast<RawObject*>(addr)->IsOldObject() &&
       !Isolate::Current()->heap()->CodeContains(addr) &&
+      !Dart::vm_isolate()->heap()->CodeContains(addr) &&
       Disassembler::CanFindOldObject(addr)) {
     NoSafepointScope no_safepoint;
     const Object& obj = Object::Handle(reinterpret_cast<RawObject*>(addr));
@@ -523,16 +525,6 @@
       Print("  [stub: ");
       Print(name_of_stub);
       Print("]");
-    } else {
-      // Print only if jumping to entry point.
-      const Code& code = Code::Handle(Code::LookupCode(addr));
-      if (!code.IsNull() && (code.EntryPoint() == addr)) {
-        const String& name = String::Handle(code.PrettyName());
-        const char* name_c = name.ToCString();
-        Print(" [");
-        Print(name_c);
-        Print("]");
-      }
     }
   }
 }
diff --git a/runtime/vm/disassembler_x64.cc b/runtime/vm/disassembler_x64.cc
index ffd6108..4778695 100644
--- a/runtime/vm/disassembler_x64.cc
+++ b/runtime/vm/disassembler_x64.cc
@@ -790,7 +790,8 @@
       obj.IsClass() ||
       obj.IsFunction() ||
       obj.IsICData() ||
-      obj.IsField()) {
+      obj.IsField() ||
+      obj.IsCode()) {
     return obj.ToCString();
   }
 
@@ -808,6 +809,7 @@
   if (((addr & kSmiTagMask) == kHeapObjectTag) &&
       reinterpret_cast<RawObject*>(addr)->IsWellFormed() &&
       reinterpret_cast<RawObject*>(addr)->IsOldObject() &&
+      !Dart::vm_isolate()->heap()->CodeContains(addr) &&
       !Isolate::Current()->heap()->CodeContains(addr) &&
       Disassembler::CanFindOldObject(addr)) {
     NoSafepointScope no_safepoint;
@@ -835,14 +837,6 @@
     const char* name_of_stub = StubCode::NameOfStub(addr);
     if (name_of_stub != NULL) {
       AppendToBuffer("  [stub: %s]", name_of_stub);
-    } else {
-      // Print only if jumping to entry point.
-      const Code& code = Code::Handle(Code::LookupCode(addr));
-      if (!code.IsNull() && (code.EntryPoint() == addr)) {
-        const String& name = String::Handle(code.PrettyName());
-        const char* name_c = name.ToCString();
-        AppendToBuffer(" [%s]", name_c);
-      }
     }
   }
 }
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc
index 54f18c1..9616d63 100644
--- a/runtime/vm/flow_graph_compiler.cc
+++ b/runtime/vm/flow_graph_compiler.cc
@@ -202,8 +202,6 @@
                 LookupClass(Symbols::List()))),
         parallel_move_resolver_(this),
         pending_deoptimization_env_(NULL),
-        entry_patch_pc_offset_(Code::kInvalidPc),
-        patch_code_pc_offset_(Code::kInvalidPc),
         lazy_deopt_pc_offset_(Code::kInvalidPc),
         deopt_id_to_ic_data_(NULL),
         inlined_code_intervals_(Array::ZoneHandle(Object::empty_array().raw())),
@@ -922,8 +920,6 @@
       pc_descriptors_list_->FinalizePcDescriptors(code.EntryPoint()));
   if (!is_optimizing_) descriptors.Verify(parsed_function_.function());
   code.set_pc_descriptors(descriptors);
-  code.set_entry_patch_pc_offset(entry_patch_pc_offset_);
-  code.set_patch_code_pc_offset(patch_code_pc_offset_);
   code.set_lazy_deopt_pc_offset(lazy_deopt_pc_offset_);
 }
 
diff --git a/runtime/vm/flow_graph_compiler.h b/runtime/vm/flow_graph_compiler.h
index 2b61c46..783c851 100644
--- a/runtime/vm/flow_graph_compiler.h
+++ b/runtime/vm/flow_graph_compiler.h
@@ -727,8 +727,6 @@
   // In future AddDeoptStub should be moved out of the instruction template.
   Environment* pending_deoptimization_env_;
 
-  intptr_t entry_patch_pc_offset_;
-  intptr_t patch_code_pc_offset_;
   intptr_t lazy_deopt_pc_offset_;
 
   ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data_;
diff --git a/runtime/vm/flow_graph_compiler_arm.cc b/runtime/vm/flow_graph_compiler_arm.cc
index 5781c29..3c3b1ea 100644
--- a/runtime/vm/flow_graph_compiler_arm.cc
+++ b/runtime/vm/flow_graph_compiler_arm.cc
@@ -13,6 +13,7 @@
 #include "vm/dart_entry.h"
 #include "vm/deopt_instructions.h"
 #include "vm/il_printer.h"
+#include "vm/instructions.h"
 #include "vm/locations.h"
 #include "vm/object_store.h"
 #include "vm/parser.h"
@@ -100,14 +101,11 @@
 
   Zone* zone = compiler->zone();
 
-  // Current PP, FP, and PC.
   builder->AddPp(current->function(), slot_ix++);
+  builder->AddPcMarker(Function::Handle(zone), slot_ix++);
   builder->AddCallerFp(slot_ix++);
   builder->AddReturnAddress(current->function(), deopt_id(), slot_ix++);
 
-  // Callee's PC marker is not used anymore. Pass Function::null() to set to 0.
-  builder->AddPcMarker(Function::Handle(zone), slot_ix++);
-
   // Emit all values that are needed for materialization as a part of the
   // expression stack for the bottom-most frame. This guarantees that GC
   // will be able to find them during materialization.
@@ -123,8 +121,8 @@
   Environment* previous = current;
   current = current->outer();
   while (current != NULL) {
-    // PP, FP, and PC.
     builder->AddPp(current->function(), slot_ix++);
+    builder->AddPcMarker(previous->function(), slot_ix++);
     builder->AddCallerFp(slot_ix++);
 
     // For any outer environment the deopt id is that of the call instruction
@@ -134,9 +132,6 @@
         Isolate::ToDeoptAfter(current->deopt_id()),
         slot_ix++);
 
-    // PC marker.
-    builder->AddPcMarker(previous->function(), slot_ix++);
-
     // The values of outgoing arguments can be changed from the inlined call so
     // we must read them from the previous environment.
     for (intptr_t i = previous->fixed_parameter_count() - 1; i >= 0; i--) {
@@ -161,14 +156,12 @@
   // The previous pointer is now the outermost environment.
   ASSERT(previous != NULL);
 
-  // For the outermost environment, set caller PC, caller PP, and caller FP.
+  // Set slots for the outermost environment.
   builder->AddCallerPp(slot_ix++);
+  builder->AddPcMarker(previous->function(), slot_ix++);
   builder->AddCallerFp(slot_ix++);
   builder->AddCallerPc(slot_ix++);
 
-  // PC marker.
-  builder->AddPcMarker(previous->function(), slot_ix++);
-
   // For the outermost environment, set the incoming arguments.
   for (intptr_t i = previous->fixed_parameter_count() - 1; i >= 0; i--) {
     builder->AddCopy(previous->ValueAt(i), previous->LocationAt(i), slot_ix++);
@@ -195,6 +188,7 @@
   // LR may be live. It will be clobbered by BranchLink, so cache it in IP.
   // It will be restored at the top of the deoptimization stub, specifically in
   // GenerateDeoptimizationSequence in stub_code_arm.cc.
+  __ Push(CODE_REG);
   __ mov(IP, Operand(LR));
   __ BranchLink(*StubCode::Deoptimize_entry());
   set_pc_offset(assem->CodeSize());
@@ -759,13 +753,13 @@
   const int min_num_pos_args = num_fixed_params;
   const int max_num_pos_args = num_fixed_params + num_opt_pos_params;
 
-  __ ldr(R9, FieldAddress(R4, ArgumentsDescriptor::positional_count_offset()));
+  __ ldr(R10, FieldAddress(R4, ArgumentsDescriptor::positional_count_offset()));
   // Check that min_num_pos_args <= num_pos_args.
   Label wrong_num_arguments;
-  __ CompareImmediate(R9, Smi::RawValue(min_num_pos_args));
+  __ CompareImmediate(R10, Smi::RawValue(min_num_pos_args));
   __ b(&wrong_num_arguments, LT);
   // Check that num_pos_args <= max_num_pos_args.
-  __ CompareImmediate(R9, Smi::RawValue(max_num_pos_args));
+  __ CompareImmediate(R10, Smi::RawValue(max_num_pos_args));
   __ b(&wrong_num_arguments, GT);
 
   // Copy positional arguments.
@@ -773,30 +767,30 @@
   // to fp[kFirstLocalSlotFromFp - i].
 
   __ ldr(R7, FieldAddress(R4, ArgumentsDescriptor::count_offset()));
-  // Since R7 and R9 are Smi, use LSL 1 instead of LSL 2.
+  // Since R7 and R10 are Smi, use LSL 1 instead of LSL 2.
   // Let R7 point to the last passed positional argument, i.e. to
   // fp[kParamEndSlotFromFp + num_args - (num_pos_args - 1)].
-  __ sub(R7, R7, Operand(R9));
+  __ sub(R7, R7, Operand(R10));
   __ add(R7, FP, Operand(R7, LSL, 1));
   __ add(R7, R7, Operand((kParamEndSlotFromFp + 1) * kWordSize));
 
   // Let R6 point to the last copied positional argument, i.e. to
   // fp[kFirstLocalSlotFromFp - (num_pos_args - 1)].
   __ AddImmediate(R6, FP, (kFirstLocalSlotFromFp + 1) * kWordSize);
-  __ sub(R6, R6, Operand(R9, LSL, 1));  // R9 is a Smi.
-  __ SmiUntag(R9);
+  __ sub(R6, R6, Operand(R10, LSL, 1));  // R10 is a Smi.
+  __ SmiUntag(R10);
   Label loop, loop_condition;
   __ b(&loop_condition);
   // We do not use the final allocation index of the variable here, i.e.
   // scope->VariableAt(i)->index(), because captured variables still need
   // to be copied to the context that is not yet allocated.
-  const Address argument_addr(R7, R9, LSL, 2);
-  const Address copy_addr(R6, R9, LSL, 2);
+  const Address argument_addr(R7, R10, LSL, 2);
+  const Address copy_addr(R6, R10, LSL, 2);
   __ Bind(&loop);
   __ ldr(IP, argument_addr);
   __ str(IP, copy_addr);
   __ Bind(&loop_condition);
-  __ subs(R9, R9, Operand(1));
+  __ subs(R10, R10, Operand(1));
   __ b(&loop, PL);
 
   // Copy or initialize optional named arguments.
@@ -827,9 +821,9 @@
     }
     // Generate code handling each optional parameter in alphabetical order.
     __ ldr(R7, FieldAddress(R4, ArgumentsDescriptor::count_offset()));
-    __ ldr(R9,
+    __ ldr(R10,
            FieldAddress(R4, ArgumentsDescriptor::positional_count_offset()));
-    __ SmiUntag(R9);
+    __ SmiUntag(R10);
     // Let R7 point to the first passed argument, i.e. to
     // fp[kParamEndSlotFromFp + num_args - 0]; num_args (R7) is Smi.
     __ add(R7, FP, Operand(R7, LSL, 1));
@@ -881,16 +875,16 @@
     }
   } else {
     ASSERT(num_opt_pos_params > 0);
-    __ ldr(R9,
+    __ ldr(R10,
            FieldAddress(R4, ArgumentsDescriptor::positional_count_offset()));
-    __ SmiUntag(R9);
+    __ SmiUntag(R10);
     for (int i = 0; i < num_opt_pos_params; i++) {
       Label next_parameter;
       // Handle this optional positional parameter only if k or fewer positional
       // arguments have been passed, where k is param_pos, the position of this
       // optional parameter in the formal parameter list.
       const int param_pos = num_fixed_params + i;
-      __ CompareImmediate(R9, param_pos);
+      __ CompareImmediate(R10, param_pos);
       __ b(&next_parameter, GT);
       // Load R5 with default argument.
       const Object& value = parsed_function().DefaultParameterValueAt(i);
@@ -907,20 +901,16 @@
     if (check_correct_named_args) {
       __ ldr(R7, FieldAddress(R4, ArgumentsDescriptor::count_offset()));
       __ SmiUntag(R7);
-      // Check that R9 equals R7, i.e. no named arguments passed.
-      __ cmp(R9, Operand(R7));
+      // Check that R10 equals R7, i.e. no named arguments passed.
+      __ cmp(R10, Operand(R7));
       __ b(&all_arguments_processed, EQ);
     }
   }
 
   __ Bind(&wrong_num_arguments);
   if (function.IsClosureFunction()) {
-    ASSERT(assembler()->constant_pool_allowed());
-    __ LeaveDartFrame();  // The arguments are still on the stack.
-    // Do not use caller's pool ptr in branch.
-    ASSERT(!assembler()->constant_pool_allowed());
+    __ LeaveDartFrame(kKeepCalleePP);  // The arguments are still on the stack.
     __ Branch(*StubCode::CallClosureNoSuchMethod_entry());
-    __ set_constant_pool_allowed(true);
     // The noSuchMethod call may return to the caller, but not here.
   } else if (check_correct_named_args) {
     __ Stop("Wrong arguments");
@@ -934,17 +924,17 @@
   // an issue anymore.
 
   // R4 : arguments descriptor array.
-  __ ldr(R9, FieldAddress(R4, ArgumentsDescriptor::count_offset()));
-  __ SmiUntag(R9);
+  __ ldr(R10, FieldAddress(R4, ArgumentsDescriptor::count_offset()));
+  __ SmiUntag(R10);
   __ add(R7, FP, Operand((kParamEndSlotFromFp + 1) * kWordSize));
-  const Address original_argument_addr(R7, R9, LSL, 2);
+  const Address original_argument_addr(R7, R10, LSL, 2);
   __ LoadObject(IP, Object::null_object());
   Label null_args_loop, null_args_loop_condition;
   __ b(&null_args_loop_condition);
   __ Bind(&null_args_loop);
   __ str(IP, original_argument_addr);
   __ Bind(&null_args_loop_condition);
-  __ subs(R9, R9, Operand(1));
+  __ subs(R10, R10, Operand(1));
   __ b(&null_args_loop, PL);
 }
 
@@ -974,6 +964,9 @@
 }
 
 
+static const Register new_pp = R7;
+
+
 void FlowGraphCompiler::EmitFrameEntry() {
   const Function& function = parsed_function().function();
   if (CanOptimizeFunction() &&
@@ -982,33 +975,23 @@
     const Register function_reg = R6;
 
     // The pool pointer is not setup before entering the Dart frame.
-    // Preserve PP of caller.
-    __ mov(R7, Operand(PP));
     // Temporarily setup pool pointer for this dart function.
-    __ LoadPoolPointer();
+    __ LoadPoolPointer(new_pp);
     // Load function object from object pool.
-    __ LoadObject(function_reg, function);  // Uses PP.
-    // Restore PP of caller.
-    __ mov(PP, Operand(R7));
-    __ set_constant_pool_allowed(false);
+    __ LoadFunctionFromCalleePool(function_reg, function, new_pp);
 
-    // Patch point is after the eventually inlined function object.
-    entry_patch_pc_offset_ = assembler()->CodeSize();
-
-    __ ldr(R7, FieldAddress(function_reg,
+    __ ldr(R3, FieldAddress(function_reg,
                             Function::usage_counter_offset()));
     // Reoptimization of an optimized function is triggered by counting in
     // IC stubs, but not at the entry of the function.
     if (!is_optimizing()) {
-      __ add(R7, R7, Operand(1));
-      __ str(R7, FieldAddress(function_reg,
+      __ add(R3, R3, Operand(1));
+      __ str(R3, FieldAddress(function_reg,
                               Function::usage_counter_offset()));
     }
-    __ CompareImmediate(R7, GetOptimizationThreshold());
+    __ CompareImmediate(R3, GetOptimizationThreshold());
     ASSERT(function_reg == R6);
-    __ Branch(*StubCode::OptimizeFunction_entry(), GE);
-  } else if (!flow_graph().IsCompiledForOsr()) {
-    entry_patch_pc_offset_ = assembler()->CodeSize();
+    __ Branch(*StubCode::OptimizeFunction_entry(), kNotPatchable, new_pp, GE);
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1071,11 +1054,8 @@
       __ Bind(&wrong_num_arguments);
       if (function.IsClosureFunction()) {
         ASSERT(assembler()->constant_pool_allowed());
-        __ LeaveDartFrame();  // The arguments are still on the stack.
-        // Do not use caller's pool ptr in branch.
-        ASSERT(!assembler()->constant_pool_allowed());
+        __ LeaveDartFrame(kKeepCalleePP);  // Arguments are still on the stack.
         __ Branch(*StubCode::CallClosureNoSuchMethod_entry());
-        __ set_constant_pool_allowed(true);
         // The noSuchMethod call may return to the caller, but not here.
       } else {
         __ Stop("Wrong number of arguments");
@@ -1128,12 +1108,15 @@
   __ bkpt(0);
   ASSERT(assembler()->constant_pool_allowed());
   GenerateDeferredCode();
-  // Emit function patching code. This will be swapped with the first 3
-  // instructions at entry point.
-  patch_code_pc_offset_ = assembler()->CodeSize();
-  __ BranchPatchable(*StubCode::FixCallersTarget_entry());
 
   if (is_optimizing()) {
+    // Leave enough space for patching in case of lazy deoptimization from
+    // deferred code.
+    for (intptr_t i = 0;
+         i < CallPattern::DeoptCallPatternLengthInInstructions();
+         ++i) {
+      __ nop();
+    }
     lazy_deopt_pc_offset_ = assembler()->CodeSize();
     __ Branch(*StubCode::DeoptimizeLazy_entry());
   }
diff --git a/runtime/vm/flow_graph_compiler_arm64.cc b/runtime/vm/flow_graph_compiler_arm64.cc
index f7ce841..d1e5a71 100644
--- a/runtime/vm/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/flow_graph_compiler_arm64.cc
@@ -13,6 +13,7 @@
 #include "vm/dart_entry.h"
 #include "vm/deopt_instructions.h"
 #include "vm/il_printer.h"
+#include "vm/instructions.h"
 #include "vm/locations.h"
 #include "vm/object_store.h"
 #include "vm/parser.h"
@@ -97,7 +98,6 @@
 
   Zone* zone = compiler->zone();
 
-  // Current PP, FP, and PC.
   builder->AddPp(current->function(), slot_ix++);
   builder->AddPcMarker(Function::Handle(zone), slot_ix++);
   builder->AddCallerFp(slot_ix++);
@@ -118,7 +118,6 @@
   Environment* previous = current;
   current = current->outer();
   while (current != NULL) {
-    // PP, FP, and PC.
     builder->AddPp(current->function(), slot_ix++);
     builder->AddPcMarker(previous->function(), slot_ix++);
     builder->AddCallerFp(slot_ix++);
@@ -154,9 +153,8 @@
   // The previous pointer is now the outermost environment.
   ASSERT(previous != NULL);
 
-  // For the outermost environment, set caller PC, caller PP, and caller FP.
+  // Add slots for the outermost environment.
   builder->AddCallerPp(slot_ix++);
-  // PC marker.
   builder->AddPcMarker(previous->function(), slot_ix++);
   builder->AddCallerFp(slot_ix++);
   builder->AddCallerPc(slot_ix++);
@@ -183,7 +181,7 @@
   }
 
   ASSERT(deopt_env() != NULL);
-
+  __ Push(CODE_REG);
   __ BranchLink(*StubCode::Deoptimize_entry());
   set_pc_offset(assem->CodeSize());
 #undef __
@@ -911,12 +909,8 @@
 
   __ Bind(&wrong_num_arguments);
   if (function.IsClosureFunction()) {
-    ASSERT(assembler()->constant_pool_allowed());
-    __ LeaveDartFrame();  // The arguments are still on the stack.
-    // Do not use caller's pool ptr in branch.
-    ASSERT(!assembler()->constant_pool_allowed());
+    __ LeaveDartFrame(kKeepCalleePP);  // The arguments are still on the stack.
     __ BranchPatchable(*StubCode::CallClosureNoSuchMethod_entry());
-    __ set_constant_pool_allowed(true);
     // The noSuchMethod call may return to the caller, but not here.
   } else if (check_correct_named_args) {
     __ Stop("Wrong arguments");
@@ -985,9 +979,6 @@
     // Load function object using the callee's pool pointer.
     __ LoadFunctionFromCalleePool(function_reg, function, new_pp);
 
-    // Patch point is after the eventually inlined function object.
-    entry_patch_pc_offset_ = assembler()->CodeSize();
-
     __ LoadFieldFromOffset(
         R7, function_reg, Function::usage_counter_offset(), kWord);
     // Reoptimization of an optimized function is triggered by counting in
@@ -1001,10 +992,8 @@
     ASSERT(function_reg == R6);
     Label dont_optimize;
     __ b(&dont_optimize, LT);
-    __ Branch(*StubCode::OptimizeFunction_entry());
+    __ Branch(*StubCode::OptimizeFunction_entry(), new_pp);
     __ Bind(&dont_optimize);
-  } else if (!flow_graph().IsCompiledForOsr()) {
-    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1066,12 +1055,8 @@
       __ b(&correct_num_arguments, EQ);
       __ Bind(&wrong_num_arguments);
       if (function.IsClosureFunction()) {
-        ASSERT(assembler()->constant_pool_allowed());
-        __ LeaveDartFrame();  // The arguments are still on the stack.
-        // Do not use caller's pool ptr in branch.
-        ASSERT(!assembler()->constant_pool_allowed());
+        __ LeaveDartFrame(kKeepCalleePP);  // Arguments are still on the stack.
         __ BranchPatchable(*StubCode::CallClosureNoSuchMethod_entry());
-        __ set_constant_pool_allowed(true);
         // The noSuchMethod call may return to the caller, but not here.
       } else {
         __ Stop("Wrong number of arguments");
@@ -1125,12 +1110,14 @@
   ASSERT(assembler()->constant_pool_allowed());
   GenerateDeferredCode();
 
-  // Emit function patching code. This will be swapped with the first 3
-  // instructions at entry point.
-  patch_code_pc_offset_ = assembler()->CodeSize();
-  __ BranchPatchable(*StubCode::FixCallersTarget_entry());
-
   if (is_optimizing()) {
+    // Leave enough space for patching in case of lazy deoptimization from
+    // deferred code.
+    for (intptr_t i = 0;
+      i < CallPattern::kDeoptCallLengthInInstructions;
+      ++i) {
+      __ orr(R0, ZR, Operand(R0));  // nop
+    }
     lazy_deopt_pc_offset_ = assembler()->CodeSize();
   __ BranchPatchable(*StubCode::DeoptimizeLazy_entry());
   }
diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc
index 81befda..a8e9da5 100644
--- a/runtime/vm/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/flow_graph_compiler_ia32.cc
@@ -15,6 +15,7 @@
 #include "vm/deopt_instructions.h"
 #include "vm/flow_graph_builder.h"
 #include "vm/il_printer.h"
+#include "vm/instructions.h"
 #include "vm/locations.h"
 #include "vm/object_store.h"
 #include "vm/parser.h"
@@ -102,10 +103,7 @@
 
   Zone* zone = compiler->zone();
 
-  // Callee's PC marker is not used anymore. Pass Code::null() to set to 0.
   builder->AddPcMarker(Function::Handle(zone), slot_ix++);
-
-  // Current FP and PC.
   builder->AddCallerFp(slot_ix++);
   builder->AddReturnAddress(current->function(), deopt_id(), slot_ix++);
 
@@ -121,7 +119,6 @@
     builder->AddCopy(current->ValueAt(i), current->LocationAt(i), slot_ix++);
   }
 
-  // Current PC marker and caller FP.
   builder->AddPcMarker(current->function(), slot_ix++);
   builder->AddCallerFp(slot_ix++);
 
@@ -152,7 +149,6 @@
                        slot_ix++);
     }
 
-    // PC marker and caller FP.
     builder->AddPcMarker(current->function(), slot_ix++);
     builder->AddCallerFp(slot_ix++);
 
@@ -188,7 +184,7 @@
   }
 
   ASSERT(deopt_env() != NULL);
-
+  __ pushl(CODE_REG);
   __ Call(*StubCode::Deoptimize_entry());
   set_pc_offset(assem->CodeSize());
   __ int3();
@@ -999,12 +995,9 @@
   if (CanOptimizeFunction() &&
       function.IsOptimizable() &&
       (!is_optimizing() || may_reoptimize())) {
-    const Register function_reg = EDI;
+    const Register function_reg = EBX;
     __ LoadObject(function_reg, function);
 
-    // Patch point is after the eventually inlined function object.
-    entry_patch_pc_offset_ = assembler()->CodeSize();
-
     // Reoptimization of an optimized function is triggered by counting in
     // IC stubs, but not at the entry of the function.
     if (!is_optimizing()) {
@@ -1012,10 +1005,8 @@
     }
     __ cmpl(FieldAddress(function_reg, Function::usage_counter_offset()),
             Immediate(GetOptimizationThreshold()));
-    ASSERT(function_reg == EDI);
+    ASSERT(function_reg == EBX);
     __ J(GREATER_EQUAL, *StubCode::OptimizeFunction_entry());
-  } else if (!flow_graph().IsCompiledForOsr()) {
-    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1136,12 +1127,11 @@
 
   __ int3();
   GenerateDeferredCode();
-  // Emit function patching code. This will be swapped with the first 5 bytes
-  // at entry point.
-  patch_code_pc_offset_ = assembler()->CodeSize();
-  __ Jmp(*StubCode::FixCallersTarget_entry());
 
   if (is_optimizing()) {
+    // Leave enough space for patching in case of lazy deoptimization from
+    // deferred code.
+    __ nop(CallPattern::pattern_length_in_bytes());
     lazy_deopt_pc_offset_ = assembler()->CodeSize();
     __ Jmp(*StubCode::DeoptimizeLazy_entry());
   }
@@ -1262,7 +1252,7 @@
   // top-level function (parsed_function().function()) which could be
   // reoptimized and which counter needs to be incremented.
   // Pass the function explicitly, it is used in IC stub.
-  __ LoadObject(EDI, parsed_function().function());
+  __ LoadObject(EBX, parsed_function().function());
   __ LoadObject(ECX, ic_data);
   GenerateDartCall(deopt_id,
                    token_pos,
@@ -1302,7 +1292,7 @@
   ASSERT(!arguments_descriptor.IsNull() && (arguments_descriptor.Length() > 0));
   const MegamorphicCache& cache = MegamorphicCache::ZoneHandle(zone(),
       MegamorphicCacheTable::Lookup(isolate(), name, arguments_descriptor));
-  const Register receiverR = EDI;
+  const Register receiverR = ECX;
   const Register cacheR = EBX;
   const Register targetR = EBX;
   __ movl(receiverR, Address(ESP, (argument_count - 1) * kWordSize));
diff --git a/runtime/vm/flow_graph_compiler_mips.cc b/runtime/vm/flow_graph_compiler_mips.cc
index f9dea83..120795c 100644
--- a/runtime/vm/flow_graph_compiler_mips.cc
+++ b/runtime/vm/flow_graph_compiler_mips.cc
@@ -12,6 +12,7 @@
 #include "vm/dart_entry.h"
 #include "vm/deopt_instructions.h"
 #include "vm/il_printer.h"
+#include "vm/instructions.h"
 #include "vm/locations.h"
 #include "vm/object_store.h"
 #include "vm/parser.h"
@@ -96,13 +97,11 @@
 
   Zone* zone = compiler->zone();
 
-  // Current PP, FP, and PC.
   builder->AddPp(current->function(), slot_ix++);
+  builder->AddPcMarker(Function::Handle(zone), slot_ix++);
   builder->AddCallerFp(slot_ix++);
   builder->AddReturnAddress(current->function(), deopt_id(), slot_ix++);
 
-  // Callee's PC marker is not used anymore. Pass Code::null() to set to 0.
-  builder->AddPcMarker(Function::Handle(zone), slot_ix++);
 
   // Emit all values that are needed for materialization as a part of the
   // expression stack for the bottom-most frame. This guarantees that GC
@@ -119,8 +118,8 @@
   Environment* previous = current;
   current = current->outer();
   while (current != NULL) {
-    // PP, FP, and PC.
     builder->AddPp(current->function(), slot_ix++);
+    builder->AddPcMarker(previous->function(), slot_ix++);
     builder->AddCallerFp(slot_ix++);
 
     // For any outer environment the deopt id is that of the call instruction
@@ -130,9 +129,6 @@
         Isolate::ToDeoptAfter(current->deopt_id()),
         slot_ix++);
 
-    // PC marker.
-    builder->AddPcMarker(previous->function(), slot_ix++);
-
     // The values of outgoing arguments can be changed from the inlined call so
     // we must read them from the previous environment.
     for (intptr_t i = previous->fixed_parameter_count() - 1; i >= 0; i--) {
@@ -157,14 +153,12 @@
   // The previous pointer is now the outermost environment.
   ASSERT(previous != NULL);
 
-  // For the outermost environment, set caller PC, caller PP, and caller FP.
+  // Set slots for the outermost environment.
   builder->AddCallerPp(slot_ix++);
+  builder->AddPcMarker(previous->function(), slot_ix++);
   builder->AddCallerFp(slot_ix++);
   builder->AddCallerPc(slot_ix++);
 
-  // PC marker.
-  builder->AddPcMarker(previous->function(), slot_ix++);
-
   // For the outermost environment, set the incoming arguments.
   for (intptr_t i = previous->fixed_parameter_count() - 1; i >= 0; i--) {
     builder->AddCopy(previous->ValueAt(i), previous->LocationAt(i), slot_ix++);
@@ -187,7 +181,7 @@
   }
 
   ASSERT(deopt_env() != NULL);
-
+  __ Push(CODE_REG);
   __ BranchLink(*StubCode::Deoptimize_entry());
   set_pc_offset(assem->CodeSize());
 #undef __
@@ -928,7 +922,7 @@
 
   __ Bind(&wrong_num_arguments);
   if (function.IsClosureFunction()) {
-    __ LeaveDartFrame();  // The arguments are still on the stack.
+    __ LeaveDartFrame(kKeepCalleePP);  // Arguments are still on the stack.
     __ Branch(*StubCode::CallClosureNoSuchMethod_entry());
     // The noSuchMethod call may return to the caller, but not here.
   } else if (check_correct_named_args) {
@@ -986,6 +980,9 @@
 }
 
 
+static const Register new_pp = T7;
+
+
 void FlowGraphCompiler::EmitFrameEntry() {
   const Function& function = parsed_function().function();
   if (CanOptimizeFunction() &&
@@ -993,24 +990,10 @@
       (!is_optimizing() || may_reoptimize())) {
     const Register function_reg = T0;
 
-    __ GetNextPC(T2, TMP);
-
-    // Calculate offset of pool pointer from the PC.
-    const intptr_t object_pool_pc_dist =
-       Instructions::HeaderSize() - Instructions::object_pool_offset() +
-       assembler()->CodeSize() - 1 * Instr::kInstrSize;
-
-    // Preserve PP of caller.
-    __ mov(T1, PP);
     // Temporarily setup pool pointer for this dart function.
-    __ lw(PP, Address(T2, -object_pool_pc_dist));
+    __ LoadPoolPointer(new_pp);
     // Load function object from object pool.
-    __ LoadObject(function_reg, function);  // Uses PP.
-    // Restore PP of caller.
-    __ mov(PP, T1);
-
-    // Patch point is after the eventually inlined function object.
-    entry_patch_pc_offset_ = assembler()->CodeSize();
+    __ LoadFunctionFromCalleePool(function_reg, function, new_pp);
 
     __ lw(T1, FieldAddress(function_reg, Function::usage_counter_offset()));
     // Reoptimization of an optimized function is triggered by counting in
@@ -1026,12 +1009,9 @@
         T1, Immediate(GetOptimizationThreshold()), &dont_branch);
 
     ASSERT(function_reg == T0);
-    __ Branch(*StubCode::OptimizeFunction_entry());
+    __ Branch(*StubCode::OptimizeFunction_entry(), new_pp);
 
     __ Bind(&dont_branch);
-
-  } else if (!flow_graph().IsCompiledForOsr()) {
-    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1092,7 +1072,7 @@
       __ beq(T0, T1, &correct_num_arguments);
       __ Bind(&wrong_num_arguments);
       if (function.IsClosureFunction()) {
-        __ LeaveDartFrame();  // The arguments are still on the stack.
+        __ LeaveDartFrame(kKeepCalleePP);  // Arguments are still on the stack.
         __ Branch(*StubCode::CallClosureNoSuchMethod_entry());
         // The noSuchMethod call may return to the caller, but not here.
       } else {
@@ -1145,12 +1125,15 @@
 
   __ break_(0);
   GenerateDeferredCode();
-  // Emit function patching code. This will be swapped with the first 5 bytes
-  // at entry point.
-  patch_code_pc_offset_ = assembler()->CodeSize();
-  __ BranchPatchable(*StubCode::FixCallersTarget_entry());
 
   if (is_optimizing()) {
+    // Leave enough space for patching in case of lazy deoptimization from
+    // deferred code.
+    for (intptr_t i = 0;
+      i < CallPattern::kDeoptCallLengthInInstructions;
+      ++i) {
+      __ nop();
+    }
     lazy_deopt_pc_offset_ = assembler()->CodeSize();
     __ Branch(*StubCode::DeoptimizeLazy_entry());
   }
diff --git a/runtime/vm/flow_graph_compiler_x64.cc b/runtime/vm/flow_graph_compiler_x64.cc
index 59934cd..de1b944 100644
--- a/runtime/vm/flow_graph_compiler_x64.cc
+++ b/runtime/vm/flow_graph_compiler_x64.cc
@@ -12,6 +12,7 @@
 #include "vm/dart_entry.h"
 #include "vm/deopt_instructions.h"
 #include "vm/il_printer.h"
+#include "vm/instructions.h"
 #include "vm/locations.h"
 #include "vm/object_store.h"
 #include "vm/parser.h"
@@ -100,7 +101,6 @@
 
   Zone* zone = compiler->zone();
 
-  // Current PP, FP, and PC.
   builder->AddPp(current->function(), slot_ix++);
   builder->AddPcMarker(Function::Handle(zone), slot_ix++);
   builder->AddCallerFp(slot_ix++);
@@ -121,7 +121,6 @@
   Environment* previous = current;
   current = current->outer();
   while (current != NULL) {
-    // PP, FP, and PC.
     builder->AddPp(current->function(), slot_ix++);
     builder->AddPcMarker(previous->function(), slot_ix++);
     builder->AddCallerFp(slot_ix++);
@@ -157,9 +156,8 @@
   // The previous pointer is now the outermost environment.
   ASSERT(previous != NULL);
 
-  // For the outermost environment, set caller PC, caller PP, and caller FP.
+  // Set slots for the outermost environment.
   builder->AddCallerPp(slot_ix++);
-  // PC marker.
   builder->AddPcMarker(previous->function(), slot_ix++);
   builder->AddCallerFp(slot_ix++);
   builder->AddCallerPc(slot_ix++);
@@ -187,6 +185,7 @@
 
   ASSERT(deopt_env() != NULL);
 
+  __ pushq(CODE_REG);
   __ Call(*StubCode::Deoptimize_entry());
   set_pc_offset(assem->CodeSize());
   __ int3();
@@ -925,11 +924,8 @@
 
   __ Bind(&wrong_num_arguments);
   if (function.IsClosureFunction()) {
-    ASSERT(assembler()->constant_pool_allowed());
-    __ LeaveDartFrame();  // The arguments are still on the stack.
-    ASSERT(!assembler()->constant_pool_allowed());
-    __ jmp(*StubCode::CallClosureNoSuchMethod_entry());
-    __ set_constant_pool_allowed(true);
+    __ LeaveDartFrame(kKeepCalleePP);  // The arguments are still on the stack.
+    __ Jmp(*StubCode::CallClosureNoSuchMethod_entry());
     // The noSuchMethod call may return to the caller, but not here.
   } else if (check_correct_named_args) {
     __ Stop("Wrong arguments");
@@ -986,30 +982,19 @@
 // NOTE: If the entry code shape changes, ReturnAddressLocator in profiler.cc
 // needs to be updated to match.
 void FlowGraphCompiler::EmitFrameEntry() {
-  ASSERT(Assembler::EntryPointToPcMarkerOffset() == 0);
-
   const Function& function = parsed_function().function();
-  const Register new_pp = R13;
-  const Register new_pc = R12;
-
-  // Load PC marker.
-  const intptr_t kRIPRelativeLeaqSize = 7;
-  const intptr_t entry_to_rip_offset = __ CodeSize() + kRIPRelativeLeaqSize;
-  __ leaq(new_pc, Address::AddressRIPRelative(-entry_to_rip_offset));
-  ASSERT(__ CodeSize() == entry_to_rip_offset);
-
   // Load pool pointer.
-  const intptr_t object_pool_pc_dist =
-      Instructions::HeaderSize() - Instructions::object_pool_offset();
-  __ movq(new_pp, Address(new_pc, -object_pool_pc_dist));
 
   if (flow_graph().IsCompiledForOsr()) {
     intptr_t extra_slots = StackSize()
         - flow_graph().num_stack_locals()
         - flow_graph().num_copied_params();
     ASSERT(extra_slots >= 0);
-    __ EnterOsrFrame(extra_slots * kWordSize, new_pp, new_pc);
+    __ EnterOsrFrame(extra_slots * kWordSize);
   } else {
+    const Register new_pp = R13;
+    __ LoadPoolPointer(new_pp);
+
     if (CanOptimizeFunction() &&
         function.IsOptimizable() &&
         (!is_optimizing() || may_reoptimize())) {
@@ -1017,9 +1002,6 @@
       // Load function object using the callee's pool pointer.
       __ LoadFunctionFromCalleePool(function_reg, function, new_pp);
 
-      // Patch point is after the eventually inlined function object.
-      entry_patch_pc_offset_ = assembler()->CodeSize();
-
       // Reoptimization of an optimized function is triggered by counting in
       // IC stubs, but not at the entry of the function.
       if (!is_optimizing()) {
@@ -1032,12 +1014,10 @@
       __ J(GREATER_EQUAL,
            *StubCode::OptimizeFunction_entry(),
            new_pp);
-    } else {
-      entry_patch_pc_offset_ = assembler()->CodeSize();
     }
     ASSERT(StackSize() >= 0);
     __ Comment("Enter frame");
-    __ EnterDartFrame(StackSize() * kWordSize, new_pp, new_pc);
+    __ EnterDartFrame(StackSize() * kWordSize, new_pp);
   }
 }
 
@@ -1082,11 +1062,8 @@
 
       __ Bind(&wrong_num_arguments);
       if (function.IsClosureFunction()) {
-        ASSERT(assembler()->constant_pool_allowed());
-        __ LeaveDartFrame();  // The arguments are still on the stack.
-        ASSERT(!assembler()->constant_pool_allowed());
-        __ jmp(*StubCode::CallClosureNoSuchMethod_entry());
-        __ set_constant_pool_allowed(true);
+        __ LeaveDartFrame(kKeepCalleePP);  // Leave arguments on the stack.
+        __ Jmp(*StubCode::CallClosureNoSuchMethod_entry());
         // The noSuchMethod call may return to the caller, but not here.
       } else {
         __ Stop("Wrong number of arguments");
@@ -1150,12 +1127,11 @@
   GenerateDeferredCode();
   // Emit function patching code. This will be swapped with the first 13 bytes
   // at entry point.
-  patch_code_pc_offset_ = assembler()->CodeSize();
-  // This is patched up to a point in FrameEntry where the PP for the
-  // current function is in R13 instead of PP.
-  __ JmpPatchable(*StubCode::FixCallersTarget_entry(), R13);
 
   if (is_optimizing()) {
+    // Leave enough space for patching in case of lazy deoptimization from
+    // deferred code.
+    __ nop(ShortCallPattern::pattern_length_in_bytes());
     lazy_deopt_pc_offset_ = assembler()->CodeSize();
     __ Jmp(*StubCode::DeoptimizeLazy_entry(), PP);
   }
diff --git a/runtime/vm/gc_marker.cc b/runtime/vm/gc_marker.cc
index 1d151d0..42ee7fe 100644
--- a/runtime/vm/gc_marker.cc
+++ b/runtime/vm/gc_marker.cc
@@ -16,6 +16,7 @@
 #include "vm/raw_object.h"
 #include "vm/stack_frame.h"
 #include "vm/store_buffer.h"
+#include "vm/thread_barrier.h"
 #include "vm/thread_pool.h"
 #include "vm/visitor.h"
 #include "vm/object_id_ring.h"
@@ -26,9 +27,6 @@
             "The number of tasks to spawn during old gen GC marking (0 means "
             "perform all marking on main thread).");
 
-typedef StoreBufferBlock PointerBlock;  // TODO(koda): Rename to PointerBlock.
-typedef StoreBuffer MarkingStack;  // TODO(koda): Create shared base class.
-
 class DelaySet {
  private:
   typedef std::multimap<RawObject*, RawWeakProperty*> Map;
@@ -91,14 +89,14 @@
     intptr_t current_code_count = 0;
     for (int i = 0; i < skipped_code_functions_.length(); i++) {
       RawFunction* func = skipped_code_functions_[i];
-      RawCode* code = func->ptr()->instructions_->ptr()->code_;
+      RawCode* code = func->ptr()->code_;
       if (!code->IsMarked()) {
         // If the code wasn't strongly visited through other references
         // after skipping the function's code pointer, then we disconnect the
         // code from the function.
         func->StorePointer(
-            &(func->ptr()->instructions_),
-            StubCode::LazyCompile_entry()->code()->ptr()->instructions_);
+            &(func->ptr()->code_),
+            StubCode::LazyCompile_entry()->code());
         uword entry_point = StubCode::LazyCompile_entry()->EntryPoint();
         func->ptr()->entry_point_ = entry_point;
         if (FLAG_log_code_drop) {
@@ -154,7 +152,8 @@
         thread_(Thread::Current()),
         heap_(heap),
         vm_heap_(Dart::vm_isolate()->heap()),
-        class_table_(isolate->class_table()),
+        class_stats_count_(isolate->class_table()->NumCids()),
+        class_stats_size_(isolate->class_table()->NumCids()),
         page_space_(page_space),
         work_list_(marking_stack),
         delay_set_(delay_set),
@@ -163,10 +162,24 @@
         marked_bytes_(0) {
     ASSERT(heap_ != vm_heap_);
     ASSERT(thread_->isolate() == isolate);
+    class_stats_count_.SetLength(isolate->class_table()->NumCids());
+    class_stats_size_.SetLength(isolate->class_table()->NumCids());
+    for (intptr_t i = 0; i < class_stats_count_.length(); ++i) {
+      class_stats_count_[i] = 0;
+      class_stats_size_[i] = 0;
+    }
   }
 
   uintptr_t marked_bytes() const { return marked_bytes_; }
 
+  intptr_t live_count(intptr_t class_id) {
+    return class_stats_count_[class_id];
+  }
+
+  intptr_t live_size(intptr_t class_id) {
+    return class_stats_size_[class_id];
+  }
+
   // Returns true if some non-zero amount of work was performed.
   bool DrainMarkingStack() {
     RawObject* raw_obj = work_list_.Pop();
@@ -272,11 +285,11 @@
       if (work_->IsEmpty()) {
         // TODO(koda): Track over/underflow events and use in heuristics to
         // distribute work and prevent degenerate flip-flopping.
-        PointerBlock* new_work = marking_stack_->PopNonEmptyBlock();
+        MarkingStack::Block* new_work = marking_stack_->PopNonEmptyBlock();
         if (new_work == NULL) {
           return NULL;
         }
-        marking_stack_->PushBlock(work_, false);
+        marking_stack_->PushBlock(work_);
         work_ = new_work;
       }
       return work_->Pop();
@@ -286,7 +299,7 @@
       if (work_->IsFull()) {
         // TODO(koda): Track over/underflow events and use in heuristics to
         // distribute work and prevent degenerate flip-flopping.
-        marking_stack_->PushBlock(work_, false);
+        marking_stack_->PushBlock(work_);
         work_ = marking_stack_->PopEmptyBlock();
       }
       work_->Push(raw_obj);
@@ -294,14 +307,14 @@
 
     void Finalize() {
       ASSERT(work_->IsEmpty());
-      marking_stack_->PushBlock(work_, false);
+      marking_stack_->PushBlock(work_);
       work_ = NULL;
       // Fail fast on attempts to mark after finalizing.
       marking_stack_ = NULL;
     }
 
    private:
-    PointerBlock* work_;
+    MarkingStack::Block* work_;
     MarkingStack* marking_stack_;
   };
 
@@ -346,18 +359,26 @@
       return;
     }
     if (RawObject::IsVariableSizeClassId(raw_obj->GetClassId())) {
-      class_table_->UpdateLiveOld(raw_obj->GetClassId(), raw_obj->Size());
+      UpdateLiveOld(raw_obj->GetClassId(), raw_obj->Size());
     } else {
-      class_table_->UpdateLiveOld(raw_obj->GetClassId(), 0);
+      UpdateLiveOld(raw_obj->GetClassId(), 0);
     }
 
     MarkAndPush(raw_obj);
   }
 
+  void UpdateLiveOld(intptr_t class_id, intptr_t size) {
+    // TODO(koda): Support growing the array once mutator runs concurrently.
+    ASSERT(class_id < class_stats_count_.length());
+    class_stats_count_[class_id] += 1;
+    class_stats_size_[class_id] += size;
+  }
+
   Thread* thread_;
   Heap* heap_;
   Heap* vm_heap_;
-  ClassTable* class_table_;
+  GrowableArray<intptr_t> class_stats_count_;
+  GrowableArray<intptr_t> class_stats_size_;
   PageSpace* page_space_;
   WorkList work_list_;
   DelaySet* delay_set_;
@@ -553,6 +574,7 @@
            PageSpace* page_space,
            MarkingStack* marking_stack,
            DelaySet* delay_set,
+           ThreadBarrier* barrier,
            bool collect_code,
            bool visit_prologue_weak_persistent_handles)
       : marker_(marker),
@@ -561,6 +583,7 @@
         page_space_(page_space),
         marking_stack_(marking_stack),
         delay_set_(delay_set),
+        barrier_(barrier),
         collect_code_(collect_code),
         visit_prologue_weak_persistent_handles_(
             visit_prologue_weak_persistent_handles) {
@@ -580,15 +603,15 @@
       marker_->IterateRoots(isolate_, &visitor,
                             visit_prologue_weak_persistent_handles_);
       visitor.DrainMarkingStack();
-      marker_->TaskSync();
+      barrier_->Sync();
       // Phase 2: Weak processing and follow-up marking on main thread.
-      marker_->TaskSync();
+      barrier_->Sync();
       // Phase 3: Finalize results from all markers (detach code, etc.).
       marker_->FinalizeResultsFrom(&visitor);
     }
     Thread::ExitIsolateAsHelper(true);
     // This task is done. Notify the original thread.
-    marker_->TaskNotifyDone();
+    barrier_->Exit();
   }
 
  private:
@@ -598,6 +621,7 @@
   PageSpace* page_space_;
   MarkingStack* marking_stack_;
   DelaySet* delay_set_;
+  ThreadBarrier* barrier_;
   bool collect_code_;
   bool visit_prologue_weak_persistent_handles_;
 
@@ -605,43 +629,20 @@
 };
 
 
-void GCMarker::MainSync(intptr_t num_tasks) {
-  MonitorLocker ml(&monitor_);
-  while (done_count_ < num_tasks) {
-    ml.Wait();
-  }
-  done_count_ = 0;  // Tasks may now resume.
-  // TODO(koda): Add barrier utility with two condition variables to allow for
-  // Notify rather than NotifyAll. Also use it for safepoints.
-  ml.NotifyAll();
-}
-
-
-void GCMarker::TaskNotifyDone() {
-  MonitorLocker ml(&monitor_);
-  ++done_count_;
-  // TODO(koda): Add barrier utility with two condition variables to allow for
-  // Notify rather than NotifyAll. Also use it for safepoints.
-  ml.NotifyAll();
-}
-
-
-void GCMarker::TaskSync() {
-  MonitorLocker ml(&monitor_);
-  ++done_count_;
-  ml.NotifyAll();  // Notify controller that this thread reached end of phase.
-  ASSERT(done_count_ > 0);
-  while (done_count_ > 0) {
-    // Wait for the controller to release into next phase.
-    ml.Wait();
-  }
-}
-
-
 void GCMarker::FinalizeResultsFrom(MarkingVisitor* visitor) {
   {
-    MonitorLocker ml(&monitor_);
+    MutexLocker ml(&stats_mutex_);
     marked_bytes_ += visitor->marked_bytes();
+    // Class heap stats are not themselves thread-safe yet, so we update the
+    // stats while holding stats_mutex_.
+    ClassTable* table = heap_->isolate()->class_table();
+    for (intptr_t i = 0; i < table->NumCids(); ++i) {
+      const intptr_t count = visitor->live_count(i);
+      if (count > 0) {
+        const intptr_t size = visitor->live_size(i);
+        table->UpdateLiveOld(i, size, count);
+      }
+    }
   }
   visitor->Finalize();
 }
@@ -683,14 +684,15 @@
         // 2. concurrent tasks, after synchronizing headers.
         FATAL("Multiple marking tasks not yet supported");
       }
+      ThreadBarrier barrier(num_tasks + 1);  // +1 for the main thread.
       // Phase 1: Populate and drain marking stack in task.
       MarkTask* mark_task =
           new MarkTask(this, isolate, heap_, page_space, &marking_stack,
-                       &delay_set, collect_code,
+                       &delay_set, &barrier, collect_code,
                        visit_prologue_weak_persistent_handles);
       ThreadPool* pool = Dart::thread_pool();
       pool->Run(mark_task);
-      MainSync(num_tasks);
+      barrier.Sync();
       // Phase 2: Weak processing and follow-up marking on main thread.
       SkippedCodeFunctions* skipped_code_functions =
           collect_code ? new(zone) SkippedCodeFunctions() : NULL;
@@ -700,11 +702,10 @@
       MarkingWeakVisitor mark_weak;
       IterateWeakRoots(isolate, &mark_weak,
                        !visit_prologue_weak_persistent_handles);
-      MainSync(num_tasks);
+      barrier.Sync();
       // Phase 3: Finalize results from all markers (detach code, etc.).
       FinalizeResultsFrom(&mark);
-      MainSync(num_tasks);
-      // Finalization complete and all tasks exited.
+      barrier.Exit();
     }
     delay_set.ClearReferences();
     ProcessWeakTables(page_space);
diff --git a/runtime/vm/gc_marker.h b/runtime/vm/gc_marker.h
index 87fed84..c01a6e8 100644
--- a/runtime/vm/gc_marker.h
+++ b/runtime/vm/gc_marker.h
@@ -23,7 +23,7 @@
 class GCMarker : public ValueObject {
  public:
   explicit GCMarker(Heap* heap)
-      : heap_(heap), marked_bytes_(0), done_count_(0) { }
+      : heap_(heap), marked_bytes_(0) { }
   ~GCMarker() { }
 
   void MarkObjects(Isolate* isolate,
@@ -46,20 +46,14 @@
   void ProcessWeakTables(PageSpace* page_space);
   void ProcessObjectIdTable(Isolate* isolate);
 
-  // Synchronization between GCMarker's main thread and its marking tasks.
-  // Called by main thread: wait for 'num_tasks' tasks, then let them resume.
-  void MainSync(intptr_t num_tasks);
-  // Called by tasks: notify main thread; wait until it lets us continue.
-  void TaskSync();
-  // Called by tasks: notify main thread, but don't wait (used for exiting).
-  void TaskNotifyDone();
   // Called by anyone: finalize and accumulate stats from 'visitor'.
   void FinalizeResultsFrom(MarkingVisitor* visitor);
 
-  Monitor monitor_;  // Protects marked_bytes_ and done_count_.
   Heap* heap_;
+
+  Mutex stats_mutex_;
+  // TODO(koda): Remove after verifying it's redundant w.r.t. ClassHeapStats.
   uintptr_t marked_bytes_;
-  intptr_t done_count_;
 
   friend class MarkTask;
   DISALLOW_IMPLICIT_CONSTRUCTORS(GCMarker);
diff --git a/runtime/vm/heap.h b/runtime/vm/heap.h
index 1a5f2b6..8feb555 100644
--- a/runtime/vm/heap.h
+++ b/runtime/vm/heap.h
@@ -236,6 +236,10 @@
 
   bool ShouldPretenure(intptr_t class_id) const;
 
+  void SetupInstructionsSnapshotPage(void* pointer, uword size) {
+    old_space_.SetupInstructionsSnapshotPage(pointer, size);
+  }
+
  private:
   class GCStats : public ValueObject {
    public:
diff --git a/runtime/vm/instructions_arm.cc b/runtime/vm/instructions_arm.cc
index 9002d50..eec6cfe 100644
--- a/runtime/vm/instructions_arm.cc
+++ b/runtime/vm/instructions_arm.cc
@@ -17,7 +17,7 @@
     : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
       end_(pc),
       ic_data_load_end_(0),
-      target_address_pool_index_(-1),
+      target_code_pool_index_(-1),
       ic_data_(ICData::Handle()) {
   ASSERT(code.ContainsInstructionAt(pc));
   // Last instruction: blx lr.
@@ -25,39 +25,43 @@
 
   Register reg;
   ic_data_load_end_ =
-      InstructionPattern::DecodeLoadWordFromPool(end_ - Instr::kInstrSize,
+      InstructionPattern::DecodeLoadWordFromPool(end_ - 2 * Instr::kInstrSize,
                                                  &reg,
-                                                 &target_address_pool_index_);
-  ASSERT(reg == LR);
+                                                 &target_code_pool_index_);
+  ASSERT(reg == CODE_REG);
 }
 
 
-int CallPattern::LengthInBytes() {
+int CallPattern::DeoptCallPatternLengthInInstructions() {
   const ARMVersion version = TargetCPUFeatures::arm_version();
   if ((version == ARMv5TE) || (version == ARMv6)) {
-    return 5 * Instr::kInstrSize;
+    return 5;
   } else {
     ASSERT(version == ARMv7);
-    return 3 * Instr::kInstrSize;
+    return 3;
   }
 }
 
+int CallPattern::DeoptCallPatternLengthInBytes() {
+  return DeoptCallPatternLengthInInstructions() * Instr::kInstrSize;
+}
+
 
 NativeCallPattern::NativeCallPattern(uword pc, const Code& code)
     : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
       end_(pc),
       native_function_pool_index_(-1),
-      target_address_pool_index_(-1) {
+      target_code_pool_index_(-1) {
   ASSERT(code.ContainsInstructionAt(pc));
   // Last instruction: blx lr.
   ASSERT(*(reinterpret_cast<uword*>(end_) - 1) == 0xe12fff3e);
 
   Register reg;
   uword native_function_load_end =
-      InstructionPattern::DecodeLoadWordFromPool(end_ - Instr::kInstrSize,
+      InstructionPattern::DecodeLoadWordFromPool(end_ - 2 * Instr::kInstrSize,
                                                  &reg,
-                                                 &target_address_pool_index_);
-  ASSERT(reg == LR);
+                                                 &target_code_pool_index_);
+  ASSERT(reg == CODE_REG);
   InstructionPattern::DecodeLoadWordFromPool(native_function_load_end,
                                              &reg,
                                              &native_function_pool_index_);
@@ -65,13 +69,14 @@
 }
 
 
-uword NativeCallPattern::target() const {
-  return object_pool_.RawValueAt(target_address_pool_index_);
+RawCode* NativeCallPattern::target() const {
+  return reinterpret_cast<RawCode*>(
+      object_pool_.ObjectAt(target_code_pool_index_));
 }
 
 
-void NativeCallPattern::set_target(uword target_address) const {
-  object_pool_.SetRawValueAt(target_address_pool_index_, target_address);
+void NativeCallPattern::set_target(const Code& new_target) const {
+  object_pool_.SetObjectAt(target_code_pool_index_, new_target);
   // No need to flush the instruction cache, since the code is not modified.
 }
 
@@ -175,7 +180,7 @@
   uword start = end - Instr::kInstrSize;
   int32_t instr = Instr::At(start)->InstructionBits();
   intptr_t offset = 0;
-  if ((instr & 0xffff0000) == 0xe59a0000) {  // ldr reg, [pp, #+offset]
+  if ((instr & 0xffff0000) == 0xe5990000) {  // ldr reg, [pp, #+offset]
     offset = instr & 0xfff;
     *reg = static_cast<Register>((instr & 0xf000) >> 12);
   } else {
@@ -183,13 +188,13 @@
     offset = instr & 0xfff;
     start -= Instr::kInstrSize;
     instr = Instr::At(start)->InstructionBits();
-    if ((instr & 0xffff0000) == 0xe28a0000) {  // add reg, pp, operand
+    if ((instr & 0xffff0000) == 0xe2890000) {  // add reg, pp, operand
       const intptr_t rot = (instr & 0xf00) >> 7;
       const intptr_t imm8 = instr & 0xff;
       offset += (imm8 >> rot) | (imm8 << (32 - rot));
       *reg = static_cast<Register>((instr & 0xf000) >> 12);
     } else {
-      ASSERT((instr & 0xffff0000) == 0xe08a0000);  // add reg, pp, reg
+      ASSERT((instr & 0xffff0000) == 0xe0890000);  // add reg, pp, reg
       end = DecodeLoadWordImmediate(end, reg, &offset);
     }
   }
@@ -211,18 +216,18 @@
 }
 
 
-uword CallPattern::TargetAddress() const {
-  return object_pool_.RawValueAt(target_address_pool_index_);
+RawCode* CallPattern::TargetCode() const {
+  return reinterpret_cast<RawCode*>(
+      object_pool_.ObjectAt(target_code_pool_index_));
 }
 
 
-void CallPattern::SetTargetAddress(uword target_address) const {
-  object_pool_.SetRawValueAt(target_address_pool_index_, target_address);
-  // No need to flush the instruction cache, since the code is not modified.
+void CallPattern::SetTargetCode(const Code& target_code) const {
+  object_pool_.SetObjectAt(target_code_pool_index_, target_code);
 }
 
 
-void CallPattern::InsertAt(uword pc, uword target_address) {
+void CallPattern::InsertDeoptCallAt(uword pc, uword target_address) {
   const ARMVersion version = TargetCPUFeatures::arm_version();
   if ((version == ARMv5TE) || (version == ARMv6)) {
     const uint32_t byte0 = (target_address & 0x000000ff);
@@ -242,8 +247,8 @@
     *reinterpret_cast<uword*>(pc + (3 * Instr::kInstrSize)) = or3_ip;
     *reinterpret_cast<uword*>(pc + (4 * Instr::kInstrSize)) = blx_ip;
 
-    ASSERT(LengthInBytes() == 5 * Instr::kInstrSize);
-    CPU::FlushICache(pc, LengthInBytes());
+    ASSERT(DeoptCallPatternLengthInBytes() == 5 * Instr::kInstrSize);
+    CPU::FlushICache(pc, DeoptCallPatternLengthInBytes());
   } else {
     ASSERT(version == ARMv7);
     const uint16_t target_lo = target_address & 0xffff;
@@ -259,106 +264,8 @@
     *reinterpret_cast<uword*>(pc + (1 * Instr::kInstrSize)) = movt_ip;
     *reinterpret_cast<uword*>(pc + (2 * Instr::kInstrSize)) = blx_ip;
 
-    ASSERT(LengthInBytes() == 3 * Instr::kInstrSize);
-    CPU::FlushICache(pc, LengthInBytes());
-  }
-}
-
-
-JumpPattern::JumpPattern(uword pc, const Code& code) : pc_(pc) { }
-
-
-int JumpPattern::pattern_length_in_bytes() {
-  const ARMVersion version = TargetCPUFeatures::arm_version();
-  if ((version == ARMv5TE) || (version == ARMv6)) {
-    return 5 * Instr::kInstrSize;
-  } else {
-    ASSERT(version == ARMv7);
-    return 3 * Instr::kInstrSize;
-  }
-}
-
-
-bool JumpPattern::IsValid() const {
-  const ARMVersion version = TargetCPUFeatures::arm_version();
-  if ((version == ARMv5TE) || (version == ARMv6)) {
-    Instr* mov_ip = Instr::At(pc_ + (0 * Instr::kInstrSize));
-    Instr* or1_ip = Instr::At(pc_ + (1 * Instr::kInstrSize));
-    Instr* or2_ip = Instr::At(pc_ + (2 * Instr::kInstrSize));
-    Instr* or3_ip = Instr::At(pc_ + (3 * Instr::kInstrSize));
-    Instr* bx_ip = Instr::At(pc_ + (4 * Instr::kInstrSize));
-    return ((mov_ip->InstructionBits() & 0xffffff00) == 0xe3a0c400) &&
-           ((or1_ip->InstructionBits() & 0xffffff00) == 0xe38cc800) &&
-           ((or2_ip->InstructionBits() & 0xffffff00) == 0xe38ccc00) &&
-           ((or3_ip->InstructionBits() & 0xffffff00) == 0xe38cc000) &&
-           ((bx_ip->InstructionBits() & 0xffffffff) == 0xe12fff1c);
-  } else {
-    ASSERT(version == ARMv7);
-    Instr* movw_ip = Instr::At(pc_ + (0 * Instr::kInstrSize));  // target_lo
-    Instr* movt_ip = Instr::At(pc_ + (1 * Instr::kInstrSize));  // target_hi
-    Instr* bx_ip = Instr::At(pc_ + (2 * Instr::kInstrSize));
-    return (movw_ip->InstructionBits() & 0xfff0f000) == 0xe300c000 &&
-           (movt_ip->InstructionBits() & 0xfff0f000) == 0xe340c000 &&
-           (bx_ip->InstructionBits() & 0xffffffff) == 0xe12fff1c;
-  }
-}
-
-
-uword JumpPattern::TargetAddress() const {
-  const ARMVersion version = TargetCPUFeatures::arm_version();
-  if ((version == ARMv5TE) || (version == ARMv6)) {
-    Instr* mov_ip = Instr::At(pc_ + (0 * Instr::kInstrSize));
-    Instr* or1_ip = Instr::At(pc_ + (1 * Instr::kInstrSize));
-    Instr* or2_ip = Instr::At(pc_ + (2 * Instr::kInstrSize));
-    Instr* or3_ip = Instr::At(pc_ + (3 * Instr::kInstrSize));
-    uword imm = 0;
-    imm |= or3_ip->Immed8Field();
-    imm |= or2_ip->Immed8Field() << 8;
-    imm |= or1_ip->Immed8Field() << 16;
-    imm |= mov_ip->Immed8Field() << 24;
-    return imm;
-  } else {
-    ASSERT(version == ARMv7);
-    Instr* movw_ip = Instr::At(pc_ + (0 * Instr::kInstrSize));  // target_lo
-    Instr* movt_ip = Instr::At(pc_ + (1 * Instr::kInstrSize));  // target_hi
-    uint16_t target_lo = movw_ip->MovwField();
-    uint16_t target_hi = movt_ip->MovwField();
-    return (target_hi << 16) | target_lo;
-  }
-}
-
-
-void JumpPattern::SetTargetAddress(uword target_address) const {
-  const ARMVersion version = TargetCPUFeatures::arm_version();
-  if ((version == ARMv5TE) || (version == ARMv6)) {
-    const uint32_t byte0 = (target_address & 0x000000ff);
-    const uint32_t byte1 = (target_address & 0x0000ff00) >> 8;
-    const uint32_t byte2 = (target_address & 0x00ff0000) >> 16;
-    const uint32_t byte3 = (target_address & 0xff000000) >> 24;
-
-    const uword mov_ip = 0xe3a0c400 | byte3;  // mov ip, (byte3 rot 4)
-    const uword or1_ip = 0xe38cc800 | byte2;  // orr ip, ip, (byte2 rot 8)
-    const uword or2_ip = 0xe38ccc00 | byte1;  // orr ip, ip, (byte1 rot 12)
-    const uword or3_ip = 0xe38cc000 | byte0;  // orr ip, ip, byte0
-
-    *reinterpret_cast<uword*>(pc_ + (0 * Instr::kInstrSize)) = mov_ip;
-    *reinterpret_cast<uword*>(pc_ + (1 * Instr::kInstrSize)) = or1_ip;
-    *reinterpret_cast<uword*>(pc_ + (2 * Instr::kInstrSize)) = or2_ip;
-    *reinterpret_cast<uword*>(pc_ + (3 * Instr::kInstrSize)) = or3_ip;
-    CPU::FlushICache(pc_, 4 * Instr::kInstrSize);
-  } else {
-    ASSERT(version == ARMv7);
-    const uint16_t target_lo = target_address & 0xffff;
-    const uint16_t target_hi = target_address >> 16;
-
-    const uword movw_ip =
-        0xe300c000 | ((target_lo >> 12) << 16) | (target_lo & 0xfff);
-    const uword movt_ip =
-        0xe340c000 | ((target_hi >> 12) << 16) | (target_hi & 0xfff);
-
-    *reinterpret_cast<uword*>(pc_ + (0 * Instr::kInstrSize)) = movw_ip;
-    *reinterpret_cast<uword*>(pc_ + (1 * Instr::kInstrSize)) = movt_ip;
-    CPU::FlushICache(pc_, 2 * Instr::kInstrSize);
+    ASSERT(DeoptCallPatternLengthInBytes() == 3 * Instr::kInstrSize);
+    CPU::FlushICache(pc, DeoptCallPatternLengthInBytes());
   }
 }
 
diff --git a/runtime/vm/instructions_arm.h b/runtime/vm/instructions_arm.h
index 991b2b3..ad82da1 100644
--- a/runtime/vm/instructions_arm.h
+++ b/runtime/vm/instructions_arm.h
@@ -54,14 +54,15 @@
 
   RawICData* IcData();
 
-  uword TargetAddress() const;
-  void SetTargetAddress(uword target_address) const;
+  RawCode* TargetCode() const;
+  void SetTargetCode(const Code& code) const;
 
   // This constant length is only valid for inserted call patterns used for
   // lazy deoptimization. Regular call pattern may vary in length.
-  static int LengthInBytes();
+  static int DeoptCallPatternLengthInBytes();
+  static int DeoptCallPatternLengthInInstructions();
 
-  static void InsertAt(uword pc, uword target_address);
+  static void InsertDeoptCallAt(uword pc, uword target_address);
 
  private:
   const ObjectPool& object_pool_;
@@ -69,7 +70,7 @@
   uword end_;
   uword ic_data_load_end_;
 
-  intptr_t target_address_pool_index_;
+  intptr_t target_code_pool_index_;
   ICData& ic_data_;
 
   DISALLOW_COPY_AND_ASSIGN(CallPattern);
@@ -80,8 +81,8 @@
  public:
   NativeCallPattern(uword pc, const Code& code);
 
-  uword target() const;
-  void set_target(uword target_address) const;
+  RawCode* target() const;
+  void set_target(const Code& target) const;
 
   NativeFunction native_function() const;
   void set_native_function(NativeFunction target) const;
@@ -91,31 +92,12 @@
 
   uword end_;
   intptr_t native_function_pool_index_;
-  intptr_t target_address_pool_index_;
+  intptr_t target_code_pool_index_;
 
   DISALLOW_COPY_AND_ASSIGN(NativeCallPattern);
 };
 
 
-class JumpPattern : public ValueObject {
- public:
-  JumpPattern(uword pc, const Code& code);
-
-  static const int kLengthInBytes = 3 * Instr::kInstrSize;
-
-  static int pattern_length_in_bytes();
-
-  bool IsValid() const;
-  uword TargetAddress() const;
-  void SetTargetAddress(uword target_address) const;
-
- private:
-  const uword pc_;
-
-  DISALLOW_COPY_AND_ASSIGN(JumpPattern);
-};
-
-
 class ReturnPattern : public ValueObject {
  public:
   explicit ReturnPattern(uword pc);
diff --git a/runtime/vm/instructions_arm64.cc b/runtime/vm/instructions_arm64.cc
index 59da8d5..62b3ff2 100644
--- a/runtime/vm/instructions_arm64.cc
+++ b/runtime/vm/instructions_arm64.cc
@@ -17,7 +17,7 @@
     : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
       end_(pc),
       ic_data_load_end_(0),
-      target_address_pool_index_(-1),
+      target_code_pool_index_(-1),
       ic_data_(ICData::Handle()) {
   ASSERT(code.ContainsInstructionAt(pc));
   // Last instruction: blr ip0.
@@ -25,10 +25,10 @@
 
   Register reg;
   ic_data_load_end_ =
-      InstructionPattern::DecodeLoadWordFromPool(end_ - Instr::kInstrSize,
+      InstructionPattern::DecodeLoadWordFromPool(end_ - 2 * Instr::kInstrSize,
                                                  &reg,
-                                                 &target_address_pool_index_);
-  ASSERT(reg == IP0);
+                                                 &target_code_pool_index_);
+  ASSERT(reg == CODE_REG);
 }
 
 
@@ -36,17 +36,17 @@
     : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
       end_(pc),
       native_function_pool_index_(-1),
-      target_address_pool_index_(-1) {
+      target_code_pool_index_(-1) {
   ASSERT(code.ContainsInstructionAt(pc));
   // Last instruction: blr ip0.
   ASSERT(*(reinterpret_cast<uint32_t*>(end_) - 1) == 0xd63f0200);
 
   Register reg;
   uword native_function_load_end =
-      InstructionPattern::DecodeLoadWordFromPool(end_ - Instr::kInstrSize,
+      InstructionPattern::DecodeLoadWordFromPool(end_ - 2 * Instr::kInstrSize,
                                                  &reg,
-                                                 &target_address_pool_index_);
-  ASSERT(reg == IP0);
+                                                 &target_code_pool_index_);
+  ASSERT(reg == CODE_REG);
   InstructionPattern::DecodeLoadWordFromPool(native_function_load_end,
                                              &reg,
                                              &native_function_pool_index_);
@@ -54,13 +54,14 @@
 }
 
 
-uword NativeCallPattern::target() const {
-  return object_pool_.RawValueAt(target_address_pool_index_);
+RawCode* NativeCallPattern::target() const {
+  return reinterpret_cast<RawCode*>(
+      object_pool_.ObjectAt(target_code_pool_index_));
 }
 
 
-void NativeCallPattern::set_target(uword target_address) const {
-  object_pool_.SetRawValueAt(target_address_pool_index_, target_address);
+void NativeCallPattern::set_target(const Code& target) const {
+  object_pool_.SetObjectAt(target_code_pool_index_, target);
   // No need to flush the instruction cache, since the code is not modified.
 }
 
@@ -292,18 +293,19 @@
 }
 
 
-uword CallPattern::TargetAddress() const {
-  return object_pool_.RawValueAt(target_address_pool_index_);
+RawCode* CallPattern::TargetCode() const {
+  return reinterpret_cast<RawCode*>(
+      object_pool_.ObjectAt(target_code_pool_index_));
 }
 
 
-void CallPattern::SetTargetAddress(uword target_address) const {
-  object_pool_.SetRawValueAt(target_address_pool_index_, target_address);
+void CallPattern::SetTargetCode(const Code& target) const {
+  object_pool_.SetObjectAt(target_code_pool_index_, target);
   // No need to flush the instruction cache, since the code is not modified.
 }
 
 
-void CallPattern::InsertAt(uword pc, uword target_address) {
+void CallPattern::InsertDeoptCallAt(uword pc, uword target_address) {
   Instr* movz0 = Instr::At(pc + (0 * Instr::kInstrSize));
   Instr* movk1 = Instr::At(pc + (1 * Instr::kInstrSize));
   Instr* movk2 = Instr::At(pc + (2 * Instr::kInstrSize));
@@ -322,68 +324,8 @@
   movk3->SetMoveWideBits(MOVK, IP0, h3, 3, kDoubleWord);
   blr->SetUnconditionalBranchRegBits(BLR, IP0);
 
-  ASSERT(kLengthInBytes == 5 * Instr::kInstrSize);
-  CPU::FlushICache(pc, kLengthInBytes);
-}
-
-
-JumpPattern::JumpPattern(uword pc, const Code& code) : pc_(pc) { }
-
-
-bool JumpPattern::IsValid() const {
-  Instr* movz0 = Instr::At(pc_ + (0 * Instr::kInstrSize));
-  Instr* movk1 = Instr::At(pc_ + (1 * Instr::kInstrSize));
-  Instr* movk2 = Instr::At(pc_ + (2 * Instr::kInstrSize));
-  Instr* movk3 = Instr::At(pc_ + (3 * Instr::kInstrSize));
-  Instr* br = Instr::At(pc_ + (4 * Instr::kInstrSize));
-  return (movz0->IsMoveWideOp()) && (movz0->Bits(29, 2) == 2) &&
-         (movk1->IsMoveWideOp()) && (movk1->Bits(29, 2) == 3) &&
-         (movk2->IsMoveWideOp()) && (movk2->Bits(29, 2) == 3) &&
-         (movk3->IsMoveWideOp()) && (movk3->Bits(29, 2) == 3) &&
-         (br->IsUnconditionalBranchRegOp()) && (br->Bits(16, 5) == 31);
-}
-
-
-uword JumpPattern::TargetAddress() const {
-  Instr* movz0 = Instr::At(pc_ + (0 * Instr::kInstrSize));
-  Instr* movk1 = Instr::At(pc_ + (1 * Instr::kInstrSize));
-  Instr* movk2 = Instr::At(pc_ + (2 * Instr::kInstrSize));
-  Instr* movk3 = Instr::At(pc_ + (3 * Instr::kInstrSize));
-  const uint16_t imm0 = movz0->Imm16Field();
-  const uint16_t imm1 = movk1->Imm16Field();
-  const uint16_t imm2 = movk2->Imm16Field();
-  const uint16_t imm3 = movk3->Imm16Field();
-  const int64_t target =
-      (static_cast<int64_t>(imm0)) |
-      (static_cast<int64_t>(imm1) << 16) |
-      (static_cast<int64_t>(imm2) << 32) |
-      (static_cast<int64_t>(imm3) << 48);
-  return target;
-}
-
-
-void JumpPattern::SetTargetAddress(uword target_address) const {
-  Instr* movz0 = Instr::At(pc_ + (0 * Instr::kInstrSize));
-  Instr* movk1 = Instr::At(pc_ + (1 * Instr::kInstrSize));
-  Instr* movk2 = Instr::At(pc_ + (2 * Instr::kInstrSize));
-  Instr* movk3 = Instr::At(pc_ + (3 * Instr::kInstrSize));
-  const int32_t movz0_bits = movz0->InstructionBits();
-  const int32_t movk1_bits = movk1->InstructionBits();
-  const int32_t movk2_bits = movk2->InstructionBits();
-  const int32_t movk3_bits = movk3->InstructionBits();
-
-  const uint32_t w0 = Utils::Low32Bits(target_address);
-  const uint32_t w1 = Utils::High32Bits(target_address);
-  const uint16_t h0 = Utils::Low16Bits(w0);
-  const uint16_t h1 = Utils::High16Bits(w0);
-  const uint16_t h2 = Utils::Low16Bits(w1);
-  const uint16_t h3 = Utils::High16Bits(w1);
-
-  movz0->SetInstructionBits((movz0_bits & ~kImm16Mask) | (h0 << kImm16Shift));
-  movk1->SetInstructionBits((movk1_bits & ~kImm16Mask) | (h1 << kImm16Shift));
-  movk2->SetInstructionBits((movk2_bits & ~kImm16Mask) | (h2 << kImm16Shift));
-  movk3->SetInstructionBits((movk3_bits & ~kImm16Mask) | (h3 << kImm16Shift));
-  CPU::FlushICache(pc_, 4 * Instr::kInstrSize);
+  ASSERT(kDeoptCallLengthInBytes == 5 * Instr::kInstrSize);
+  CPU::FlushICache(pc, kDeoptCallLengthInBytes);
 }
 
 
diff --git a/runtime/vm/instructions_arm64.h b/runtime/vm/instructions_arm64.h
index 430be0f..0d2c96d 100644
--- a/runtime/vm/instructions_arm64.h
+++ b/runtime/vm/instructions_arm64.h
@@ -61,14 +61,16 @@
 
   RawICData* IcData();
 
-  uword TargetAddress() const;
-  void SetTargetAddress(uword target_address) const;
+  RawCode* TargetCode() const;
+  void SetTargetCode(const Code& target) const;
 
   // This constant length is only valid for inserted call patterns used for
   // lazy deoptimization. Regular call pattern may vary in length.
-  static const int kLengthInBytes = 5 * Instr::kInstrSize;
+  static const int kDeoptCallLengthInInstructions = 5;
+  static const int kDeoptCallLengthInBytes =
+      kDeoptCallLengthInInstructions * Instr::kInstrSize;
 
-  static void InsertAt(uword pc, uword target_address);
+  static void InsertDeoptCallAt(uword pc, uword target_address);
 
  private:
   const ObjectPool& object_pool_;
@@ -76,7 +78,7 @@
   uword end_;
   uword ic_data_load_end_;
 
-  intptr_t target_address_pool_index_;
+  intptr_t target_code_pool_index_;
   ICData& ic_data_;
 
   DISALLOW_COPY_AND_ASSIGN(CallPattern);
@@ -87,8 +89,8 @@
  public:
   NativeCallPattern(uword pc, const Code& code);
 
-  uword target() const;
-  void set_target(uword target_address) const;
+  RawCode* target() const;
+  void set_target(const Code& target) const;
 
   NativeFunction native_function() const;
   void set_native_function(NativeFunction target) const;
@@ -98,33 +100,12 @@
 
   uword end_;
   intptr_t native_function_pool_index_;
-  intptr_t target_address_pool_index_;
+  intptr_t target_code_pool_index_;
 
   DISALLOW_COPY_AND_ASSIGN(NativeCallPattern);
 };
 
 
-class JumpPattern : public ValueObject {
- public:
-  JumpPattern(uword pc, const Code& code);
-
-  static const int kLengthInBytes = 5 * Instr::kInstrSize;
-
-  int pattern_length_in_bytes() const {
-    return kLengthInBytes;
-  }
-
-  bool IsValid() const;
-  uword TargetAddress() const;
-  void SetTargetAddress(uword target_address) const;
-
- private:
-  const uword pc_;
-
-  DISALLOW_COPY_AND_ASSIGN(JumpPattern);
-};
-
-
 class ReturnPattern : public ValueObject {
  public:
   explicit ReturnPattern(uword pc);
diff --git a/runtime/vm/instructions_arm64_test.cc b/runtime/vm/instructions_arm64_test.cc
index 924d495..970d271 100644
--- a/runtime/vm/instructions_arm64_test.cc
+++ b/runtime/vm/instructions_arm64_test.cc
@@ -29,42 +29,11 @@
   // before the end of the code buffer.
   CallPattern call(test->entry() + test->code().Size() - Instr::kInstrSize,
                    test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            call.TargetAddress());
+  EXPECT_EQ(StubCode::InvokeDartCode_entry()->code(),
+            call.TargetCode());
 }
 
 
-ASSEMBLER_TEST_GENERATE(Jump, assembler) {
-  __ BranchPatchable(*StubCode::InvokeDartCode_entry());
-  __ BranchPatchable(*StubCode::AllocateArray_entry());
-}
-
-
-ASSEMBLER_TEST_RUN(Jump, test) {
-  const Code& code = test->code();
-  const Instructions& instrs = Instructions::Handle(code.instructions());
-  bool status =
-      VirtualMemory::Protect(reinterpret_cast<void*>(instrs.EntryPoint()),
-                             instrs.size(),
-                             VirtualMemory::kReadWrite);
-  EXPECT(status);
-  JumpPattern jump1(test->entry(), test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump1.TargetAddress());
-  JumpPattern jump2(test->entry() + jump1.pattern_length_in_bytes(),
-                    test->code());
-  const Code& array_stub =
-      Code::Handle(StubCode::AllocateArray_entry()->code());
-  EXPECT_EQ(array_stub.EntryPoint(), jump2.TargetAddress());
-  uword target1 = jump1.TargetAddress();
-  uword target2 = jump2.TargetAddress();
-  jump1.SetTargetAddress(target2);
-  jump2.SetTargetAddress(target1);
-  EXPECT_EQ(array_stub.EntryPoint(), jump1.TargetAddress());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump2.TargetAddress());
-}
-
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_ARM64
diff --git a/runtime/vm/instructions_arm_test.cc b/runtime/vm/instructions_arm_test.cc
index 540fd5f..de3ff6f 100644
--- a/runtime/vm/instructions_arm_test.cc
+++ b/runtime/vm/instructions_arm_test.cc
@@ -29,81 +29,9 @@
   // before the end of the code buffer.
   CallPattern call(test->entry() + test->code().Size() - Instr::kInstrSize,
                    test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            call.TargetAddress());
+  EXPECT_EQ(StubCode::InvokeDartCode_entry()->code(), call.TargetCode());
 }
 
-
-ASSEMBLER_TEST_GENERATE(Jump, assembler) {
-  __ BranchPatchable(*StubCode::InvokeDartCode_entry());
-  __ BranchPatchable(*StubCode::AllocateArray_entry());
-}
-
-
-ASSEMBLER_TEST_RUN(Jump, test) {
-  const Code& code = test->code();
-  const Instructions& instrs = Instructions::Handle(code.instructions());
-  bool status =
-      VirtualMemory::Protect(reinterpret_cast<void*>(instrs.EntryPoint()),
-                             instrs.size(),
-                             VirtualMemory::kReadWrite);
-  EXPECT(status);
-  JumpPattern jump1(test->entry(), test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump1.TargetAddress());
-  JumpPattern jump2(test->entry() + jump1.pattern_length_in_bytes(),
-                    test->code());
-  const Code& array_stub =
-      Code::Handle(StubCode::AllocateArray_entry()->code());
-  EXPECT_EQ(array_stub.EntryPoint(), jump2.TargetAddress());
-  uword target1 = jump1.TargetAddress();
-  uword target2 = jump2.TargetAddress();
-  jump1.SetTargetAddress(target2);
-  jump2.SetTargetAddress(target1);
-  EXPECT_EQ(array_stub.EntryPoint(), jump1.TargetAddress());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump2.TargetAddress());
-}
-
-
-#if defined(USING_SIMULATOR)
-ASSEMBLER_TEST_GENERATE(JumpARMv6, assembler) {
-  // ARMv7 is the default.
-  HostCPUFeatures::set_arm_version(ARMv6);
-  __ BranchPatchable(*StubCode::InvokeDartCode_entry());
-  __ BranchPatchable(*StubCode::AllocateArray_entry());
-  HostCPUFeatures::set_arm_version(ARMv7);
-}
-
-
-ASSEMBLER_TEST_RUN(JumpARMv6, test) {
-  HostCPUFeatures::set_arm_version(ARMv6);
-  const Code& code = test->code();
-  const Instructions& instrs = Instructions::Handle(code.instructions());
-  bool status =
-      VirtualMemory::Protect(reinterpret_cast<void*>(instrs.EntryPoint()),
-                             instrs.size(),
-                             VirtualMemory::kReadWrite);
-  EXPECT(status);
-  JumpPattern jump1(test->entry(), test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump1.TargetAddress());
-  JumpPattern jump2(test->entry() + jump1.pattern_length_in_bytes(),
-                    test->code());
-  const Code& array_stub =
-      Code::Handle(StubCode::AllocateArray_entry()->code());
-  EXPECT_EQ(array_stub.EntryPoint(), jump2.TargetAddress());
-  uword target1 = jump1.TargetAddress();
-  uword target2 = jump2.TargetAddress();
-  jump1.SetTargetAddress(target2);
-  jump2.SetTargetAddress(target1);
-  EXPECT_EQ(array_stub.EntryPoint(), jump1.TargetAddress());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump2.TargetAddress());
-  HostCPUFeatures::set_arm_version(ARMv7);
-}
-#endif
-
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_ARM
diff --git a/runtime/vm/instructions_ia32.h b/runtime/vm/instructions_ia32.h
index 1a839c8..9cf5243 100644
--- a/runtime/vm/instructions_ia32.h
+++ b/runtime/vm/instructions_ia32.h
@@ -104,23 +104,6 @@
 };
 
 
-class JumpPattern : public CallOrJumpPattern<JumpPattern> {
- public:
-  JumpPattern(uword pc, const Code& code) : CallOrJumpPattern(pc) {}
-
-  static int pattern_length_in_bytes() { return kLengthInBytes; }
-  static const int* pattern() {
-    static const int kJumpPattern[kLengthInBytes] = {0xE9, -1, -1, -1, -1};
-    return kJumpPattern;
-  }
-
- private:
-  static const int kLengthInBytes = 5;
-
-  DISALLOW_COPY_AND_ASSIGN(JumpPattern);
-};
-
-
 class ReturnPattern : public InstructionPattern<ReturnPattern> {
  public:
   explicit ReturnPattern(uword pc) : InstructionPattern(pc) {}
diff --git a/runtime/vm/instructions_ia32_test.cc b/runtime/vm/instructions_ia32_test.cc
index cace229..6b01cdb 100644
--- a/runtime/vm/instructions_ia32_test.cc
+++ b/runtime/vm/instructions_ia32_test.cc
@@ -17,7 +17,7 @@
 #define __ assembler->
 
 ASSEMBLER_TEST_GENERATE(Call, assembler) {
-  __ Call(*StubCode::InvokeDartCode_entry());
+  __ call(&StubCode::InvokeDartCode_entry()->label());
   __ ret();
 }
 
@@ -29,41 +29,6 @@
 }
 
 
-ASSEMBLER_TEST_GENERATE(Jump, assembler) {
-  __ Jmp(*StubCode::InvokeDartCode_entry());
-  const ExternalLabel label(StubCode::AllocateArray_entry()->EntryPoint());
-  __ jmp(&label);
-  __ ret();
-}
-
-
-ASSEMBLER_TEST_RUN(Jump, test) {
-  const Code& code = test->code();
-  const Instructions& instrs = Instructions::Handle(code.instructions());
-  bool status =
-      VirtualMemory::Protect(reinterpret_cast<void*>(instrs.EntryPoint()),
-                             instrs.size(),
-                             VirtualMemory::kReadWrite);
-  EXPECT(status);
-  JumpPattern jump1(test->entry(), test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->EntryPoint(),
-            jump1.TargetAddress());
-  JumpPattern jump2(test->entry() + jump1.pattern_length_in_bytes(),
-                    test->code());
-  const Code& array_stub =
-      Code::Handle(StubCode::AllocateArray_entry()->code());
-  EXPECT_EQ(array_stub.EntryPoint(),
-            jump2.TargetAddress());
-  uword target1 = jump1.TargetAddress();
-  uword target2 = jump2.TargetAddress();
-  jump1.SetTargetAddress(target2);
-  jump2.SetTargetAddress(target1);
-  EXPECT_EQ(array_stub.EntryPoint(),
-            jump1.TargetAddress());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->EntryPoint(),
-            jump2.TargetAddress());
-}
-
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_IA32
diff --git a/runtime/vm/instructions_mips.cc b/runtime/vm/instructions_mips.cc
index fc758cd..dcca54f 100644
--- a/runtime/vm/instructions_mips.cc
+++ b/runtime/vm/instructions_mips.cc
@@ -16,7 +16,7 @@
     : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
       end_(pc),
       ic_data_load_end_(0),
-      target_address_pool_index_(-1),
+      target_code_pool_index_(-1),
       ic_data_(ICData::Handle()) {
   ASSERT(code.ContainsInstructionAt(pc));
   // Last instruction: jalr RA, T9(=R25).
@@ -24,10 +24,10 @@
   Register reg;
   // The end of the pattern is the instruction after the delay slot of the jalr.
   ic_data_load_end_ =
-      InstructionPattern::DecodeLoadWordFromPool(end_ - (2 * Instr::kInstrSize),
+      InstructionPattern::DecodeLoadWordFromPool(end_ - (3 * Instr::kInstrSize),
                                                  &reg,
-                                                 &target_address_pool_index_);
-  ASSERT(reg == T9);
+                                                 &target_code_pool_index_);
+  ASSERT(reg == CODE_REG);
 }
 
 
@@ -134,13 +134,14 @@
 }
 
 
-uword CallPattern::TargetAddress() const {
-  return object_pool_.RawValueAt(target_address_pool_index_);
+RawCode* CallPattern::TargetCode() const {
+  return reinterpret_cast<RawCode*>(
+      object_pool_.ObjectAt(target_code_pool_index_));
 }
 
 
-void CallPattern::SetTargetAddress(uword target_address) const {
-  object_pool_.SetRawValueAt(target_address_pool_index_, target_address);
+void CallPattern::SetTargetCode(const Code& target) const {
+  object_pool_.SetObjectAt(target_code_pool_index_, target);
   // No need to flush the instruction cache, since the code is not modified.
 }
 
@@ -149,17 +150,17 @@
     : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
       end_(pc),
       native_function_pool_index_(-1),
-      target_address_pool_index_(-1) {
+      target_code_pool_index_(-1) {
   ASSERT(code.ContainsInstructionAt(pc));
   // Last instruction: jalr RA, T9(=R25).
   ASSERT(*(reinterpret_cast<uword*>(end_) - 2) == 0x0320f809);
 
   Register reg;
   uword native_function_load_end =
-      InstructionPattern::DecodeLoadWordFromPool(end_ - 2 * Instr::kInstrSize,
+      InstructionPattern::DecodeLoadWordFromPool(end_ - 3 * Instr::kInstrSize,
                                                  &reg,
-                                                 &target_address_pool_index_);
-  ASSERT(reg == T9);
+                                                 &target_code_pool_index_);
+  ASSERT(reg == CODE_REG);
   InstructionPattern::DecodeLoadWordFromPool(native_function_load_end,
                                              &reg,
                                              &native_function_pool_index_);
@@ -167,13 +168,14 @@
 }
 
 
-uword NativeCallPattern::target() const {
-  return object_pool_.RawValueAt(target_address_pool_index_);
+RawCode* NativeCallPattern::target() const {
+  return reinterpret_cast<RawCode*>(
+      object_pool_.ObjectAt(target_code_pool_index_));
 }
 
 
-void NativeCallPattern::set_target(uword target_address) const {
-  object_pool_.SetRawValueAt(target_address_pool_index_, target_address);
+void NativeCallPattern::set_target(const Code& target) const {
+  object_pool_.SetObjectAt(target_code_pool_index_, target);
   // No need to flush the instruction cache, since the code is not modified.
 }
 
@@ -190,7 +192,7 @@
 }
 
 
-void CallPattern::InsertAt(uword pc, uword target_address) {
+void CallPattern::InsertDeoptCallAt(uword pc, uword target_address) {
   Instr* lui = Instr::At(pc + (0 * Instr::kInstrSize));
   Instr* ori = Instr::At(pc + (1 * Instr::kInstrSize));
   Instr* jr = Instr::At(pc + (2 * Instr::kInstrSize));
@@ -203,46 +205,8 @@
   jr->SetSpecialInstrBits(JALR, T9, ZR, RA);
   nop->SetInstructionBits(Instr::kNopInstruction);
 
-  ASSERT(kFixedLengthInBytes == 4 * Instr::kInstrSize);
-  CPU::FlushICache(pc, kFixedLengthInBytes);
-}
-
-
-JumpPattern::JumpPattern(uword pc, const Code& code) : pc_(pc) { }
-
-
-bool JumpPattern::IsValid() const {
-  Instr* lui = Instr::At(pc_ + (0 * Instr::kInstrSize));
-  Instr* ori = Instr::At(pc_ + (1 * Instr::kInstrSize));
-  Instr* jr = Instr::At(pc_ + (2 * Instr::kInstrSize));
-  Instr* nop = Instr::At(pc_ + (3 * Instr::kInstrSize));
-  return (lui->OpcodeField() == LUI) &&
-         (ori->OpcodeField() == ORI) &&
-         (jr->OpcodeField() == SPECIAL) &&
-         (jr->FunctionField() == JR) &&
-         (nop->InstructionBits() == Instr::kNopInstruction);
-}
-
-
-uword JumpPattern::TargetAddress() const {
-  Instr* lui = Instr::At(pc_ + (0 * Instr::kInstrSize));
-  Instr* ori = Instr::At(pc_ + (1 * Instr::kInstrSize));
-  const uint16_t target_lo = ori->UImmField();
-  const uint16_t target_hi = lui->UImmField();
-  return (target_hi << 16) | target_lo;
-}
-
-
-void JumpPattern::SetTargetAddress(uword target_address) const {
-  Instr* lui = Instr::At(pc_ + (0 * Instr::kInstrSize));
-  Instr* ori = Instr::At(pc_ + (1 * Instr::kInstrSize));
-  const int32_t lui_bits = lui->InstructionBits();
-  const int32_t ori_bits = ori->InstructionBits();
-  const uint16_t target_lo = target_address & 0xffff;
-  const uint16_t target_hi = target_address >> 16;
-
-  lui->SetInstructionBits((lui_bits & 0xffff0000) | target_hi);
-  ori->SetInstructionBits((ori_bits & 0xffff0000) | target_lo);
+  ASSERT(kDeoptCallLengthInBytes == 4 * Instr::kInstrSize);
+  CPU::FlushICache(pc, kDeoptCallLengthInBytes);
 }
 
 
diff --git a/runtime/vm/instructions_mips.h b/runtime/vm/instructions_mips.h
index 51875b5..fb2e22b 100644
--- a/runtime/vm/instructions_mips.h
+++ b/runtime/vm/instructions_mips.h
@@ -54,14 +54,14 @@
 
   RawICData* IcData();
 
-  uword TargetAddress() const;
-  void SetTargetAddress(uword target_address) const;
+  RawCode* TargetCode() const;
+  void SetTargetCode(const Code& target) const;
 
-  // This constant length is only valid for inserted call patterns used for
-  // lazy deoptimization. Regular call pattern may vary in length.
-  static const int kFixedLengthInBytes = 4 * Instr::kInstrSize;
+  static const int kDeoptCallLengthInInstructions = 4;
+  static const int kDeoptCallLengthInBytes =
+      kDeoptCallLengthInInstructions * Instr::kInstrSize;
 
-  static void InsertAt(uword pc, uword target_address);
+  static void InsertDeoptCallAt(uword pc, uword target_address);
 
  private:
   const ObjectPool& object_pool_;
@@ -69,7 +69,7 @@
   uword end_;
   uword ic_data_load_end_;
 
-  intptr_t target_address_pool_index_;
+  intptr_t target_code_pool_index_;
   ICData& ic_data_;
 
   DISALLOW_COPY_AND_ASSIGN(CallPattern);
@@ -80,8 +80,8 @@
  public:
   NativeCallPattern(uword pc, const Code& code);
 
-  uword target() const;
-  void set_target(uword target_address) const;
+  RawCode* target() const;
+  void set_target(const Code& target) const;
 
   NativeFunction native_function() const;
   void set_native_function(NativeFunction target) const;
@@ -91,34 +91,12 @@
 
   uword end_;
   intptr_t native_function_pool_index_;
-  intptr_t target_address_pool_index_;
+  intptr_t target_code_pool_index_;
 
   DISALLOW_COPY_AND_ASSIGN(NativeCallPattern);
 };
 
 
-class JumpPattern : public ValueObject {
- public:
-  JumpPattern(uword pc, const Code& code);
-
-  // lui; ori; jr; nop (in delay slot) = 4.
-  static const int kLengthInBytes = 4*Instr::kInstrSize;
-
-  int pattern_length_in_bytes() const {
-    return kLengthInBytes;
-  }
-
-  bool IsValid() const;
-  uword TargetAddress() const;
-  void SetTargetAddress(uword target_address) const;
-
- private:
-  const uword pc_;
-
-  DISALLOW_COPY_AND_ASSIGN(JumpPattern);
-};
-
-
 class ReturnPattern : public ValueObject {
  public:
   explicit ReturnPattern(uword pc);
diff --git a/runtime/vm/instructions_mips_test.cc b/runtime/vm/instructions_mips_test.cc
index a165485..cf2f7f2 100644
--- a/runtime/vm/instructions_mips_test.cc
+++ b/runtime/vm/instructions_mips_test.cc
@@ -27,42 +27,10 @@
   // return jump.
   CallPattern call(test->entry() + test->code().Size() - (2*Instr::kInstrSize),
                    test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            call.TargetAddress());
+  EXPECT_EQ(StubCode::InvokeDartCode_entry()->code(), call.TargetCode());
 }
 
 
-ASSEMBLER_TEST_GENERATE(Jump, assembler) {
-  __ BranchPatchable(*StubCode::InvokeDartCode_entry());
-  __ BranchPatchable(*StubCode::AllocateArray_entry());
-}
-
-
-ASSEMBLER_TEST_RUN(Jump, test) {
-  const Code& code = test->code();
-  const Instructions& instrs = Instructions::Handle(code.instructions());
-  bool status =
-      VirtualMemory::Protect(reinterpret_cast<void*>(instrs.EntryPoint()),
-                             instrs.size(),
-                             VirtualMemory::kReadWrite);
-  EXPECT(status);
-  JumpPattern jump1(test->entry(), test->code());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump1.TargetAddress());
-  JumpPattern jump2(test->entry() + jump1.pattern_length_in_bytes(),
-                    test->code());
-  const Code& array_stub =
-      Code::Handle(StubCode::AllocateArray_entry()->code());
-  EXPECT_EQ(array_stub.EntryPoint(), jump2.TargetAddress());
-  uword target1 = jump1.TargetAddress();
-  uword target2 = jump2.TargetAddress();
-  jump1.SetTargetAddress(target2);
-  jump2.SetTargetAddress(target1);
-  EXPECT_EQ(array_stub.EntryPoint(), jump1.TargetAddress());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump2.TargetAddress());
-}
-
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_MIPS
diff --git a/runtime/vm/instructions_x64.cc b/runtime/vm/instructions_x64.cc
index 83f427d..dc691a4 100644
--- a/runtime/vm/instructions_x64.cc
+++ b/runtime/vm/instructions_x64.cc
@@ -11,27 +11,6 @@
 
 namespace dart {
 
-intptr_t IndexFromPPLoad(uword start) {
-  int32_t offset = *reinterpret_cast<int32_t*>(start);
-  return ObjectPool::IndexFromOffset(offset);
-}
-
-
-uword JumpPattern::TargetAddress() const {
-  ASSERT(IsValid());
-  int index = IndexFromPPLoad(start() + 3);
-  return object_pool_.RawValueAt(index);
-}
-
-
-void JumpPattern::SetTargetAddress(uword target) const {
-  ASSERT(IsValid());
-  int index = IndexFromPPLoad(start() + 3);
-  object_pool_.SetRawValueAt(index, target);
-  // No need to flush the instruction cache, since the code is not modified.
-}
-
-
 void ShortCallPattern::SetTargetAddress(uword target) const {
   ASSERT(IsValid());
   *reinterpret_cast<uint32_t*>(start() + 1) = target - start() - kLengthInBytes;
diff --git a/runtime/vm/instructions_x64.h b/runtime/vm/instructions_x64.h
index 4c4aae8..5d7616d 100644
--- a/runtime/vm/instructions_x64.h
+++ b/runtime/vm/instructions_x64.h
@@ -65,30 +65,6 @@
 };
 
 
-class JumpPattern : public InstructionPattern<JumpPattern> {
- public:
-  JumpPattern(uword pc, const Code& code)
-      : InstructionPattern(pc),
-        object_pool_(ObjectPool::Handle(code.GetObjectPool())) {}
-
-  uword TargetAddress() const;
-  void SetTargetAddress(uword new_target) const;
-
-  static const int kLengthInBytes = 7;
-  static int pattern_length_in_bytes() { return kLengthInBytes; }
-  static const int* pattern() {
-    //  07: 41 ff a7 imm32  jmpq [reg + off]
-    static const int kJumpPattern[kLengthInBytes] =
-        {0x41, 0xFF, -1, -1, -1, -1, -1};
-    return kJumpPattern;
-  }
- private:
-  const ObjectPool& object_pool_;
-
-  DISALLOW_COPY_AND_ASSIGN(JumpPattern);
-};
-
-
 // 5 byte call instruction.
 class ShortCallPattern : public InstructionPattern<ShortCallPattern> {
  public:
diff --git a/runtime/vm/instructions_x64_test.cc b/runtime/vm/instructions_x64_test.cc
index 0ad8294..3e7fb7d 100644
--- a/runtime/vm/instructions_x64_test.cc
+++ b/runtime/vm/instructions_x64_test.cc
@@ -35,34 +35,6 @@
 }
 
 
-ASSEMBLER_TEST_RUN(Jump, test) {
-  ASSERT(prologue_code_size != -1);
-  const Code& code = test->code();
-  const Instructions& instrs = Instructions::Handle(code.instructions());
-  bool status =
-      VirtualMemory::Protect(reinterpret_cast<void*>(instrs.EntryPoint()),
-                             instrs.size(),
-                             VirtualMemory::kReadWrite);
-  EXPECT(status);
-  JumpPattern jump1(test->entry() + prologue_code_size, test->code());
-  jump1.IsValid();
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump1.TargetAddress());
-  JumpPattern jump2((test->entry() +
-                     jump1.pattern_length_in_bytes() + prologue_code_size),
-                    test->code());
-  const Code& array_stub =
-      Code::Handle(StubCode::AllocateArray_entry()->code());
-  EXPECT_EQ(array_stub.EntryPoint(), jump2.TargetAddress());
-  uword target1 = jump1.TargetAddress();
-  uword target2 = jump2.TargetAddress();
-  jump1.SetTargetAddress(target2);
-  jump2.SetTargetAddress(target1);
-  EXPECT_EQ(array_stub.EntryPoint(), jump1.TargetAddress());
-  EXPECT_EQ(StubCode::InvokeDartCode_entry()->label().address(),
-            jump2.TargetAddress());
-}
-
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_X64
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
index b8db54d..a40af6f 100644
--- a/runtime/vm/intermediate_language.cc
+++ b/runtime/vm/intermediate_language.cc
@@ -2769,7 +2769,6 @@
     }
 
     ASSERT(offset > 0);
-    offset -= Assembler::EntryPointToPcMarkerOffset();
     offsets_.SetInt32(i * element_size, offset);
   }
 }
diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc
index 45ec027..8fb50b4 100644
--- a/runtime/vm/intermediate_language_arm.cc
+++ b/runtime/vm/intermediate_language_arm.cc
@@ -223,6 +223,7 @@
   // R4: Arguments descriptor.
   // R0: Function.
   ASSERT(locs()->in(0).reg() == R0);
+  __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
   __ ldr(R2, FieldAddress(R0, Function::entry_point_offset()));
 
   // R2: instructions entry point.
@@ -945,11 +946,7 @@
   const StubEntry* stub_entry;
   if (link_lazily()) {
     stub_entry = StubCode::CallBootstrapCFunction_entry();
-    entry = reinterpret_cast<uword>(&NativeEntry::LinkNativeCall);
-#if defined(USING_SIMULATOR)
-    entry = Simulator::RedirectExternalReference(
-        entry, Simulator::kBootstrapNativeCall, NativeEntry::kNumArguments);
-#endif
+    entry = NativeEntry::LinkNativeCallEntry();
   } else {
     entry = reinterpret_cast<uword>(native_c_function());
     if (is_bootstrap_native() || is_leaf_call) {
@@ -2329,7 +2326,7 @@
                       R0,  // instance
                       R3,  // end address
                       R6,
-                      R9);
+                      R10);
   // R0: new object start as a tagged pointer.
   // R3: new object end address.
 
@@ -2346,7 +2343,7 @@
   // Initialize all array elements to raw_null.
   // R0: new object start as a tagged pointer.
   // R3: new object end address.
-  // R9: iterator which initially points to the start of the variable
+  // R10: iterator which initially points to the start of the variable
   // data area to be initialized.
   // R6: null
   if (num_elements > 0) {
@@ -2360,12 +2357,12 @@
       __ LoadImmediate(R7, 0x1);
 #endif  // DEBUG
     }
-    __ AddImmediate(R9, R0, sizeof(RawArray) - kHeapObjectTag);
+    __ AddImmediate(R10, R0, sizeof(RawArray) - kHeapObjectTag);
     if (array_size < (kInlineArraySize * kWordSize)) {
-      __ InitializeFieldsNoBarrierUnrolled(R0, R9, 0, num_elements * kWordSize,
+      __ InitializeFieldsNoBarrierUnrolled(R0, R10, 0, num_elements * kWordSize,
                                            R6, R7);
     } else {
-      __ InitializeFieldsNoBarrier(R0, R9, R3, R6, R7);
+      __ InitializeFieldsNoBarrier(R0, R10, R3, R6, R7);
     }
   }
   __ b(done);
@@ -2837,8 +2834,8 @@
                                 compiler->assembler()->CodeSize(),
                                 catch_handler_types_,
                                 needs_stacktrace());
-
   // Restore the pool pointer.
+  __ RestoreCodePointer();
   __ LoadPoolPointer();
 
   if (HasParallelMove()) {
@@ -6686,9 +6683,10 @@
 void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
   Register target_address_reg = locs()->temp_slot(0)->reg();
 
-  // Load from [current frame pointer] + kPcMarkerSlotFromFp.
-  __ ldr(target_address_reg, Address(FP, kPcMarkerSlotFromFp * kWordSize));
-
+  // Offset is relative to entry pc.
+  const intptr_t entry_to_pc_offset = __ CodeSize() + Instr::kPCReadOffset;
+  __ mov(target_address_reg, Operand(PC));
+  __ AddImmediate(target_address_reg, target_address_reg, -entry_to_pc_offset);
   // Add the offset.
   Register offset_reg = locs()->in(0).reg();
   Operand offset_opr =
diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc
index 7ae62c0..345757c 100644
--- a/runtime/vm/intermediate_language_arm64.cc
+++ b/runtime/vm/intermediate_language_arm64.cc
@@ -219,11 +219,13 @@
   // R4: Arguments descriptor.
   // R0: Function.
   ASSERT(locs()->in(0).reg() == R0);
+  __ LoadFieldFromOffset(CODE_REG, R0, Function::code_offset());
   __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset());
 
   // R2: instructions.
   // R5: Smi 0 (no IC data; the lazy-compile stub expects a GC-safe value).
   __ LoadImmediate(R5, 0);
+  //??
   __ blr(R2);
   compiler->RecordSafepoint(locs());
   // Marks either the continuation point in unoptimized code or the
@@ -798,11 +800,7 @@
   const StubEntry* stub_entry;
   if (link_lazily()) {
     stub_entry = StubCode::CallBootstrapCFunction_entry();
-    entry = reinterpret_cast<uword>(&NativeEntry::LinkNativeCall);
-#if defined(USING_SIMULATOR)
-    entry = Simulator::RedirectExternalReference(
-        entry, Simulator::kBootstrapNativeCall, NativeEntry::kNumArguments);
-#endif
+    entry = NativeEntry::LinkNativeCallEntry();
   } else {
     entry = reinterpret_cast<uword>(native_c_function());
     if (is_bootstrap_native() || is_leaf_call) {
@@ -945,14 +943,8 @@
 void LoadClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
   const Register object = locs()->in(0).reg();
   const Register result = locs()->out(0).reg();
-  static const intptr_t kSmiCidSource =
-      static_cast<intptr_t>(kSmiCid) << RawObject::kClassIdTagPos;
 
-  __ LoadImmediate(TMP, reinterpret_cast<int64_t>(&kSmiCidSource) + 1);
-  __ tsti(object, Immediate(kSmiTagMask));
-  __ csel(TMP, TMP, object, EQ);
-  __ LoadClassId(result, TMP);
-  __ SmiTag(result);
+  __ LoadTaggedClassIdMayBeSmi(result, object);
 }
 
 
@@ -2555,6 +2547,7 @@
                                 needs_stacktrace());
 
   // Restore the pool pointer.
+  __ RestoreCodePointer();
   __ LoadPoolPointer();
 
   if (HasParallelMove()) {
@@ -5456,8 +5449,14 @@
 void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
   Register target_address_reg = locs()->temp_slot(0)->reg();
 
-  // Load from [current frame pointer] + kPcMarkerSlotFromFp.
-  __ ldr(target_address_reg, Address(FP, kPcMarkerSlotFromFp * kWordSize));
+  // Load code entry point.
+  const intptr_t entry_offset = __ CodeSize();
+  if (Utils::IsInt(21, -entry_offset)) {
+    __ adr(target_address_reg, Immediate(-entry_offset));
+  } else {
+    __ adr(target_address_reg, Immediate(0));
+    __ AddImmediate(target_address_reg, target_address_reg, -entry_offset);
+  }
 
   // Add the offset.
   Register offset_reg = locs()->in(0).reg();
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc
index 35bc942..23c3f21 100644
--- a/runtime/vm/intermediate_language_ia32.cc
+++ b/runtime/vm/intermediate_language_ia32.cc
@@ -833,7 +833,7 @@
   const StubEntry* stub_entry;
   if (link_lazily()) {
     stub_entry = StubCode::CallBootstrapCFunction_entry();
-    __ movl(ECX, Immediate(NativeEntry::LinkNativeCallLabel().address()));
+    __ movl(ECX, Immediate(NativeEntry::LinkNativeCallEntry()));
   } else {
     stub_entry = (is_bootstrap_native() || is_leaf_call) ?
         StubCode::CallBootstrapCFunction_entry() :
@@ -6581,20 +6581,22 @@
 
 
 void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  Register target_address_reg = locs()->temp_slot(0)->reg();
+  Register target_reg = locs()->temp_slot(0)->reg();
 
-  // Load from [current frame pointer] + kPcMarkerSlotFromFp.
-  __ movl(target_address_reg, Address(EBP, kPcMarkerSlotFromFp * kWordSize));
+  // Load code object from frame.
+  __ movl(target_reg, Address(EBP, kPcMarkerSlotFromFp * kWordSize));
+  // Load instructions entry point.
+  __ movl(target_reg, FieldAddress(target_reg, Code::entry_point_offset()));
 
   // Add the offset.
   Register offset_reg = locs()->in(0).reg();
   if (offset()->definition()->representation() == kTagged) {
     __ SmiUntag(offset_reg);
   }
-  __ addl(target_address_reg, offset_reg);
+  __ addl(target_reg, offset_reg);
 
   // Jump to the absolute address.
-  __ jmp(target_address_reg);
+  __ jmp(target_reg);
 }
 
 
diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc
index fe30067..1cd334d 100644
--- a/runtime/vm/intermediate_language_mips.cc
+++ b/runtime/vm/intermediate_language_mips.cc
@@ -274,6 +274,7 @@
   ASSERT(locs()->in(0).reg() == T0);
   __ LoadImmediate(S5, 0);
   __ lw(T2, FieldAddress(T0, Function::entry_point_offset()));
+  __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
   __ jalr(T2);
   compiler->RecordSafepoint(locs());
   // Marks either the continuation point in unoptimized code or the
@@ -996,11 +997,7 @@
   const StubEntry* stub_entry;
   if (link_lazily()) {
     stub_entry = StubCode::CallBootstrapCFunction_entry();
-    entry = reinterpret_cast<uword>(&NativeEntry::LinkNativeCall);
-#if defined(USING_SIMULATOR)
-    entry = Simulator::RedirectExternalReference(
-      entry, Simulator::kBootstrapNativeCall, NativeEntry::kNumArguments);
-#endif
+    entry = NativeEntry::LinkNativeCallEntry();
   } else {
     entry = reinterpret_cast<uword>(native_c_function());
     if (is_bootstrap_native() || is_leaf_call) {
@@ -2666,11 +2663,8 @@
                                 catch_handler_types_,
                                 needs_stacktrace());
   // Restore pool pointer.
-  __ GetNextPC(CMPRES1, TMP);
-  const intptr_t object_pool_pc_dist =
-     Instructions::HeaderSize() - Instructions::object_pool_offset() +
-     compiler->assembler()->CodeSize() - 1 * Instr::kInstrSize;
-  __ LoadFromOffset(PP, CMPRES1, -object_pool_pc_dist);
+  __ RestoreCodePointer();
+  __ LoadPoolPointer();
 
   if (HasParallelMove()) {
     compiler->parallel_move_resolver()->EmitNativeCode(parallel_move());
@@ -5427,20 +5421,22 @@
 
 
 void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  Register target_address_reg = locs()->temp_slot(0)->reg();
+  Register target_reg = locs()->temp_slot(0)->reg();
 
-  // Load from [current frame pointer] + kPcMarkerSlotFromFp.
-  __ lw(target_address_reg, Address(FP, kPcMarkerSlotFromFp * kWordSize));
+  __ GetNextPC(target_reg, TMP);
+  const intptr_t entry_offset =
+     __ CodeSize() - 1 * Instr::kInstrSize;
+  __ AddImmediate(target_reg, target_reg, -entry_offset);
 
   // Add the offset.
   Register offset_reg = locs()->in(0).reg();
   if (offset()->definition()->representation() == kTagged) {
   __ SmiUntag(offset_reg);
   }
-  __ addu(target_address_reg, target_address_reg, offset_reg);
+  __ addu(target_reg, target_reg, offset_reg);
 
   // Jump to the absolute address.
-  __ jr(target_address_reg);
+  __ jr(target_reg);
 }
 
 
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
index 19fc8b3..31476e1 100644
--- a/runtime/vm/intermediate_language_x64.cc
+++ b/runtime/vm/intermediate_language_x64.cc
@@ -786,8 +786,8 @@
   const StubEntry* stub_entry;
   if (link_lazily()) {
     stub_entry = StubCode::CallBootstrapCFunction_entry();
-    __ LoadNativeEntry(
-        RBX, &NativeEntry::LinkNativeCallLabel(), kPatchable);
+    ExternalLabel label(NativeEntry::LinkNativeCallEntry());
+    __ LoadNativeEntry(RBX, &label, kPatchable);
   } else {
     stub_entry = (is_bootstrap_native() || is_leaf_call)
         ? StubCode::CallBootstrapCFunction_entry()
@@ -2555,7 +2555,8 @@
                                 needs_stacktrace());
 
   // Restore the pool pointer.
-  __ LoadPoolPointer();
+  __ RestoreCodePointer();
+  __ LoadPoolPointer(PP);
 
   if (HasParallelMove()) {
     compiler->parallel_move_resolver()->EmitNativeCode(parallel_move());
@@ -6221,10 +6222,18 @@
 
 void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
   Register offset_reg = locs()->in(0).reg();
-  Register target_address_reg = locs()->temp_slot(0)->reg();
+  Register target_address_reg = locs()->temp(0).reg();
+
+  {
+    const intptr_t kRIPRelativeLeaqSize = 7;
+    const intptr_t entry_to_rip_offset =
+        __ CodeSize() + kRIPRelativeLeaqSize;
+    __ leaq(target_address_reg,
+            Address::AddressRIPRelative(-entry_to_rip_offset));
+    ASSERT(__ CodeSize() == entry_to_rip_offset);
+  }
 
   // Load from [current frame pointer] + kPcMarkerSlotFromFp.
-  __ movq(target_address_reg, Address(RBP, kPcMarkerSlotFromFp * kWordSize));
 
   // Calculate the final absolute address.
   if (offset()->definition()->representation() == kTagged) {
@@ -6343,6 +6352,7 @@
 
   // Function in RAX.
   ASSERT(locs()->in(0).reg() == RAX);
+  __ movq(CODE_REG, FieldAddress(RAX, Function::code_offset()));
   __ movq(RCX, FieldAddress(RAX, Function::entry_point_offset()));
 
   // RAX: Function.
diff --git a/runtime/vm/intrinsifier.cc b/runtime/vm/intrinsifier.cc
index 5e24dd3..76e9b63 100644
--- a/runtime/vm/intrinsifier.cc
+++ b/runtime/vm/intrinsifier.cc
@@ -211,6 +211,19 @@
 }
 
 
+static intptr_t CidForRepresentation(Representation rep) {
+  switch (rep) {
+    case kUnboxedDouble:
+      return kDoubleCid;
+    case kUnboxedFloat32x4:
+      return kFloat32x4Cid;
+    default:
+      UNREACHABLE();
+      return kIllegalCid;
+  }
+}
+
+
 class BlockBuilder : public ValueObject {
  public:
   BlockBuilder(FlowGraph* flow_graph, TargetEntryInstr* entry)
@@ -256,6 +269,16 @@
         new ConstantInstr(Object::ZoneHandle(Object::null())));
   }
 
+  Definition* AddUnboxInstr(Representation rep, Value* value) {
+    Definition* unboxed_value = AddDefinition(
+        UnboxInstr::Create(rep, value, Isolate::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))));
+    return unboxed_value;
+  }
+
  private:
   FlowGraph* flow_graph_;
   BlockEntryInstr* entry_;
@@ -450,14 +473,8 @@
                           Isolate::kNoDeoptId,
                           value_check,
                           builder.TokenPos()));
-  Definition* double_value = builder.AddDefinition(
-      UnboxInstr::Create(kUnboxedDouble,
-                         new Value(value),
-                         Isolate::kNoDeoptId));
-  // Manually adjust reaching type because there is no type propagation
-  // when building intrinsics.
-  double_value->AsUnbox()->value()->SetReachingType(
-      ZoneCompileType::Wrap(CompileType::FromCid(kDoubleCid)));
+  Definition* double_value =
+      builder.AddUnboxInstr(kUnboxedDouble, new Value(value));
 
   builder.AddInstruction(
       new StoreIndexedInstr(new Value(array),
@@ -501,6 +518,111 @@
 }
 
 
+static bool BuildBinaryFloat32x4Op(FlowGraph* flow_graph, Token::Kind kind) {
+  if (!FlowGraphCompiler::SupportsUnboxedSimd128()) return false;
+
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  Definition* right = builder.AddParameter(1);
+  Definition* left = builder.AddParameter(2);
+
+  const ICData& value_check = ICData::ZoneHandle(ICData::New(
+      flow_graph->function(),
+      String::Handle(flow_graph->function().name()),
+      Object::empty_array(),  // Dummy args. descr.
+      Isolate::kNoDeoptId,
+      1));
+  value_check.AddReceiverCheck(kFloat32x4Cid, flow_graph->function());
+  // Check argument. Receiver (left) is known to be a Float32x4.
+  builder.AddInstruction(
+      new CheckClassInstr(new Value(right),
+                          Isolate::kNoDeoptId,
+                          value_check,
+                          builder.TokenPos()));
+  Definition* left_simd =
+      builder.AddUnboxInstr(kUnboxedFloat32x4, new Value(left));
+
+  Definition* right_simd =
+      builder.AddUnboxInstr(kUnboxedFloat32x4, new Value(right));
+
+  Definition* unboxed_result = builder.AddDefinition(
+      new BinaryFloat32x4OpInstr(kind,
+                                 new Value(left_simd),
+                                 new Value(right_simd),
+                                 Isolate::kNoDeoptId));
+  Definition* result = builder.AddDefinition(
+      BoxInstr::Create(kUnboxedFloat32x4, new Value(unboxed_result)));
+  builder.AddIntrinsicReturn(new Value(result));
+  return true;
+}
+
+
+bool Intrinsifier::Build_Float32x4Mul(FlowGraph* flow_graph) {
+  return BuildBinaryFloat32x4Op(flow_graph, Token::kMUL);
+}
+
+
+bool Intrinsifier::Build_Float32x4Sub(FlowGraph* flow_graph) {
+  return BuildBinaryFloat32x4Op(flow_graph, Token::kSUB);
+}
+
+
+bool Intrinsifier::Build_Float32x4Add(FlowGraph* flow_graph) {
+  return BuildBinaryFloat32x4Op(flow_graph, Token::kADD);
+}
+
+
+static bool BuildFloat32x4Shuffle(FlowGraph* flow_graph,
+                                  MethodRecognizer::Kind kind) {
+  if (!FlowGraphCompiler::SupportsUnboxedSimd128()) return false;
+  GraphEntryInstr* graph_entry = flow_graph->graph_entry();
+  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  BlockBuilder builder(flow_graph, normal_entry);
+
+  Definition* receiver = builder.AddParameter(1);
+
+  Definition* unboxed_receiver =
+      builder.AddUnboxInstr(kUnboxedFloat32x4, new Value(receiver));
+
+  Definition* unboxed_result = builder.AddDefinition(
+      new Simd32x4ShuffleInstr(kind,
+                               new Value(unboxed_receiver),
+                               0,
+                               Isolate::kNoDeoptId));
+
+  Definition* result = builder.AddDefinition(
+      BoxInstr::Create(kUnboxedDouble, new Value(unboxed_result)));
+  builder.AddIntrinsicReturn(new Value(result));
+  return true;
+}
+
+
+bool Intrinsifier::Build_Float32x4ShuffleX(FlowGraph* flow_graph) {
+  return BuildFloat32x4Shuffle(flow_graph,
+                               MethodRecognizer::kFloat32x4ShuffleX);
+}
+
+
+bool Intrinsifier::Build_Float32x4ShuffleY(FlowGraph* flow_graph) {
+  return BuildFloat32x4Shuffle(flow_graph,
+                               MethodRecognizer::kFloat32x4ShuffleY);
+}
+
+
+bool Intrinsifier::Build_Float32x4ShuffleZ(FlowGraph* flow_graph) {
+  return BuildFloat32x4Shuffle(flow_graph,
+                               MethodRecognizer::kFloat32x4ShuffleZ);
+}
+
+
+bool Intrinsifier::Build_Float32x4ShuffleW(FlowGraph* flow_graph) {
+  return BuildFloat32x4Shuffle(flow_graph,
+                               MethodRecognizer::kFloat32x4ShuffleW);
+}
+
+
 static bool BuildLoadField(FlowGraph* flow_graph, intptr_t offset) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
   TargetEntryInstr* normal_entry = graph_entry->normal_entry();
diff --git a/runtime/vm/intrinsifier_arm.cc b/runtime/vm/intrinsifier_arm.cc
index 7d3421d..7bc19b9 100644
--- a/runtime/vm/intrinsifier_arm.cc
+++ b/runtime/vm/intrinsifier_arm.cc
@@ -549,7 +549,7 @@
   ASSERT(kSmiTagShift == 1);
   ASSERT(kSmiTag == 0);
   Label fall_through;
-
+  __ Push(R10);
   TestBothArgumentsSmis(assembler, &fall_through);
   __ CompareImmediate(R0, Smi::RawValue(Smi::kBits));
   __ b(&fall_through, HI);
@@ -577,10 +577,10 @@
   __ LoadImmediate(R7, 1);
   __ mov(R7, Operand(R7, LSL, R0));  // R7 <- 1 << R0
   __ sub(R7, R7, Operand(1));  // R7 <- R7 - 1
-  __ rsb(R9, R0, Operand(32));  // R9 <- 32 - R0
-  __ mov(R7, Operand(R7, LSL, R9));  // R7 <- R7 << R9
+  __ rsb(R10, R0, Operand(32));  // R10 <- 32 - R0
+  __ mov(R7, Operand(R7, LSL, R10));  // R7 <- R7 << R10
   __ and_(R7, R1, Operand(R7));  // R7 <- R7 & R1
-  __ mov(R7, Operand(R7, LSR, R9));  // R7 <- R7 >> R9
+  __ mov(R7, Operand(R7, LSR, R10));  // R7 <- R7 >> R10
   // Now R7 has the bits that fall off of R1 on a left shift.
   __ mov(R1, Operand(R1, LSL, R0));  // R1 gets the low bits.
 
@@ -591,8 +591,11 @@
 
   __ str(R1, FieldAddress(R0, Mint::value_offset()));
   __ str(R7, FieldAddress(R0, Mint::value_offset() + kWordSize));
+  __ Pop(R10);
   __ Ret();
   __ Bind(&fall_through);
+  ASSERT(CODE_REG == R10);
+  __ Pop(R10);
 }
 
 
@@ -818,12 +821,12 @@
   __ add(R6, R3, Operand(TypedData::data_offset() - kHeapObjectTag));
   // R7 = &x_digits[x_used]
   __ add(R7, R6, Operand(R2, LSL, 1));
-  // R9 = &r_digits[1]
-  __ add(R9, R4, Operand(TypedData::data_offset() - kHeapObjectTag +
+  // R10 = &r_digits[1]
+  __ add(R10, R4, Operand(TypedData::data_offset() - kHeapObjectTag +
                          Bigint::kBytesPerDigit));
-  // R9 = &r_digits[x_used + n ~/ _DIGIT_BITS + 1]
+  // R10 = &r_digits[x_used + n ~/ _DIGIT_BITS + 1]
   __ add(R0, R0, Operand(R2, ASR, 1));
-  __ add(R9, R9, Operand(R0, LSL, 2));
+  __ add(R10, R10, Operand(R0, LSL, 2));
   // R3 = n % _DIGIT_BITS
   __ and_(R3, R5, Operand(31));
   // R2 = 32 - R3
@@ -833,11 +836,11 @@
   __ Bind(&loop);
   __ ldr(R0, Address(R7, -Bigint::kBytesPerDigit, Address::PreIndex));
   __ orr(R1, R1, Operand(R0, LSR, R2));
-  __ str(R1, Address(R9, -Bigint::kBytesPerDigit, Address::PreIndex));
+  __ str(R1, Address(R10, -Bigint::kBytesPerDigit, Address::PreIndex));
   __ mov(R1, Operand(R0, LSL, R3));
   __ teq(R7, Operand(R6));
   __ b(&loop, NE);
-  __ str(R1, Address(R9, -Bigint::kBytesPerDigit, Address::PreIndex));
+  __ str(R1, Address(R10, -Bigint::kBytesPerDigit, Address::PreIndex));
   // Returning Object::null() is not required, since this method is private.
   __ Ret();
 }
@@ -854,15 +857,15 @@
   __ SmiUntag(R5);
   // R0 = n ~/ _DIGIT_BITS
   __ Asr(R0, R5, Operand(5));
-  // R9 = &r_digits[0]
-  __ add(R9, R4, Operand(TypedData::data_offset() - kHeapObjectTag));
+  // R10 = &r_digits[0]
+  __ add(R10, R4, Operand(TypedData::data_offset() - kHeapObjectTag));
   // R7 = &x_digits[n ~/ _DIGIT_BITS]
   __ add(R7, R3, Operand(TypedData::data_offset() - kHeapObjectTag));
   __ add(R7, R7, Operand(R0, LSL, 2));
   // R6 = &r_digits[x_used - n ~/ _DIGIT_BITS - 1]
   __ add(R0, R0, Operand(1));
   __ rsb(R0, R0, Operand(R2, ASR, 1));
-  __ add(R6, R9, Operand(R0, LSL, 2));
+  __ add(R6, R10, Operand(R0, LSL, 2));
   // R3 = n % _DIGIT_BITS
   __ and_(R3, R5, Operand(31));
   // R2 = 32 - R3
@@ -876,12 +879,12 @@
   __ Bind(&loop);
   __ ldr(R0, Address(R7, Bigint::kBytesPerDigit, Address::PostIndex));
   __ orr(R1, R1, Operand(R0, LSL, R2));
-  __ str(R1, Address(R9, Bigint::kBytesPerDigit, Address::PostIndex));
+  __ str(R1, Address(R10, Bigint::kBytesPerDigit, Address::PostIndex));
   __ mov(R1, Operand(R0, LSR, R3));
   __ Bind(&loop_entry);
-  __ teq(R9, Operand(R6));
+  __ teq(R10, Operand(R6));
   __ b(&loop, NE);
-  __ str(R1, Address(R9, 0));
+  __ str(R1, Address(R10, 0));
   // Returning Object::null() is not required, since this method is private.
   __ Ret();
 }
@@ -910,8 +913,8 @@
   // R7 = &digits[a_used >> 1], a_used is Smi.
   __ add(R7, R3, Operand(R4, LSL, 1));
 
-  // R9 = &digits[used >> 1], used is Smi.
-  __ add(R9, R3, Operand(R2, LSL, 1));
+  // R10 = &digits[used >> 1], used is Smi.
+  __ add(R10, R3, Operand(R2, LSL, 1));
 
   __ adds(R0, R0, Operand(0));  // carry flag = 0
   Label add_loop;
@@ -925,7 +928,7 @@
   __ b(&add_loop, NE);
 
   Label last_carry;
-  __ teq(R3, Operand(R9));  // Does not affect carry flag.
+  __ teq(R3, Operand(R10));  // Does not affect carry flag.
   __ b(&last_carry, EQ);  // If used - a_used == 0.
 
   Label carry_loop;
@@ -933,7 +936,7 @@
   // Loop used - a_used times, used - a_used > 0.
   __ ldr(R0, Address(R3, Bigint::kBytesPerDigit, Address::PostIndex));
   __ adcs(R0, R0, Operand(0));
-  __ teq(R3, Operand(R9));  // Does not affect carry flag.
+  __ teq(R3, Operand(R10));  // Does not affect carry flag.
   __ str(R0, Address(R6, Bigint::kBytesPerDigit, Address::PostIndex));
   __ b(&carry_loop, NE);
 
@@ -970,8 +973,8 @@
   // R7 = &digits[a_used >> 1], a_used is Smi.
   __ add(R7, R3, Operand(R4, LSL, 1));
 
-  // R9 = &digits[used >> 1], used is Smi.
-  __ add(R9, R3, Operand(R2, LSL, 1));
+  // R10 = &digits[used >> 1], used is Smi.
+  __ add(R10, R3, Operand(R2, LSL, 1));
 
   __ subs(R0, R0, Operand(0));  // carry flag = 1
   Label sub_loop;
@@ -985,7 +988,7 @@
   __ b(&sub_loop, NE);
 
   Label done;
-  __ teq(R3, Operand(R9));  // Does not affect carry flag.
+  __ teq(R3, Operand(R10));  // Does not affect carry flag.
   __ b(&done, EQ);  // If used - a_used == 0.
 
   Label carry_loop;
@@ -993,7 +996,7 @@
   // Loop used - a_used times, used - a_used > 0.
   __ ldr(R0, Address(R3, Bigint::kBytesPerDigit, Address::PostIndex));
   __ sbcs(R0, R0, Operand(0));
-  __ teq(R3, Operand(R9));  // Does not affect carry flag.
+  __ teq(R3, Operand(R10));  // Does not affect carry flag.
   __ str(R0, Address(R6, Bigint::kBytesPerDigit, Address::PostIndex));
   __ b(&carry_loop, NE);
 
@@ -1162,9 +1165,9 @@
 
   // int n = used - i - 1; while (--n >= 0) ...
   __ ldr(R0, Address(SP, 0 * kWordSize));  // used is Smi
-  __ sub(R9, R0, Operand(R2));
+  __ sub(R10, R0, Operand(R2));
   __ mov(R0, Operand(2));  // n = used - i - 2; if (n >= 0) ... while (--n >= 0)
-  __ rsbs(R9, R0, Operand(R9, ASR, kSmiTagSize));
+  __ rsbs(R10, R0, Operand(R10, ASR, kSmiTagSize));
 
   Label loop, done;
   __ b(&done, MI);
@@ -1175,7 +1178,7 @@
   // ajp: R5
   // c:   R7:R6
   // t:   R2:R1:R0 (not live at loop entry)
-  // n:   R9
+  // n:   R10
 
   // uint32_t xi = *xip++
   __ ldr(R2, Address(R4, Bigint::kBytesPerDigit, Address::PostIndex));
@@ -1198,7 +1201,7 @@
   __ str(R0, Address(R5, Bigint::kBytesPerDigit, Address::PostIndex));
 
   // while (--n >= 0)
-  __ subs(R9, R9, Operand(1));  // --n
+  __ subs(R10, R10, Operand(1));  // --n
   __ b(&loop, PL);
 
   __ Bind(&done);
@@ -1575,14 +1578,10 @@
 // Return type quickly for simple types (not parameterized and not signature).
 void Intrinsifier::ObjectRuntimeType(Assembler* assembler) {
   Label fall_through;
-  static const intptr_t kSmiCidSource = kSmiCid << RawObject::kClassIdTagPos;
   __ ldr(R0, Address(SP, 0 * kWordSize));
-
-  __ LoadImmediate(TMP, reinterpret_cast<int32_t>(&kSmiCidSource) + 1);
-  __ tst(R0, Operand(kSmiTagMask));
-  __ mov(TMP, Operand(R0), NE);
-  __ LoadClassId(R1, TMP);
+  __ LoadClassIdMayBeSmi(R1, R0);
   __ LoadClassById(R2, R1);
+
   // R2: class of instance (R0).
   __ ldr(R3, FieldAddress(R2, Class::signature_function_offset()));
   __ CompareObject(R3, Object::null_object());
@@ -1760,7 +1759,8 @@
                                      Label* failure) {
   const Register length_reg = R2;
   Label fail;
-  __ MaybeTraceAllocation(kOneByteStringCid, R0, failure);
+  __ MaybeTraceAllocation(kOneByteStringCid, R0, failure,
+                          /* inline_isolate = */ false);
   __ mov(R6, Operand(length_reg));  // Save the length register.
   // TODO(koda): Protect against negative length and overflow here.
   __ SmiUntag(length_reg);
@@ -2013,6 +2013,7 @@
   __ eor(R5, R5, Operand(R5));
 
   // Tail-call the function.
+  __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
   __ ldr(R1, FieldAddress(R0, Function::entry_point_offset()));
   __ bx(R1);
 }
diff --git a/runtime/vm/intrinsifier_arm64.cc b/runtime/vm/intrinsifier_arm64.cc
index 4524a54..3fd338a 100644
--- a/runtime/vm/intrinsifier_arm64.cc
+++ b/runtime/vm/intrinsifier_arm64.cc
@@ -2094,6 +2094,7 @@
   __ eor(R5, R5, Operand(R5));
 
   // Tail-call the function.
+  __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
   __ ldr(R1, FieldAddress(R0, Function::entry_point_offset()));
   __ br(R1);
 }
diff --git a/runtime/vm/intrinsifier_mips.cc b/runtime/vm/intrinsifier_mips.cc
index 95783b6..85234a3 100644
--- a/runtime/vm/intrinsifier_mips.cc
+++ b/runtime/vm/intrinsifier_mips.cc
@@ -2125,6 +2125,7 @@
   __ mov(S5, ZR);
 
   // Tail-call the function.
+  __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
   __ lw(T3, FieldAddress(T0, Function::entry_point_offset()));
   __ jr(T3);
 }
diff --git a/runtime/vm/intrinsifier_x64.cc b/runtime/vm/intrinsifier_x64.cc
index d71abc3..e489012 100644
--- a/runtime/vm/intrinsifier_x64.cc
+++ b/runtime/vm/intrinsifier_x64.cc
@@ -1599,11 +1599,11 @@
   __ movq(RCX, Address(RSP, + 1 * kWordSize));  // Index.
   __ movq(RAX, Address(RSP, + 2 * kWordSize));  // String.
   __ testq(RCX, Immediate(kSmiTagMask));
-  __ j(NOT_ZERO, &fall_through, Assembler::kNearJump);  // Non-smi index.
+  __ j(NOT_ZERO, &fall_through);  // Non-smi index.
   // Range check.
   __ cmpq(RCX, FieldAddress(RAX, String::length_offset()));
   // Runtime throws exception.
-  __ j(ABOVE_EQUAL, &fall_through, Assembler::kNearJump);
+  __ j(ABOVE_EQUAL, &fall_through);
   __ CompareClassId(RAX, kOneByteStringCid);
   __ j(NOT_EQUAL, &try_two_byte_string, Assembler::kNearJump);
   __ SmiUntag(RCX);
@@ -1619,7 +1619,7 @@
 
   __ Bind(&try_two_byte_string);
   __ CompareClassId(RAX, kTwoByteStringCid);
-  __ j(NOT_EQUAL, &fall_through, Assembler::kNearJump);
+  __ j(NOT_EQUAL, &fall_through);
   ASSERT(kSmiTagShift == 1);
   __ movzxw(RCX, FieldAddress(RAX, RCX, TIMES_1, OneByteString::data_offset()));
   __ cmpq(RCX, Immediate(Symbols::kNumberOfOneCharCodeSymbols));
@@ -1963,6 +1963,7 @@
   __ xorq(RCX, RCX);
 
   // Tail-call the function.
+  __ movq(CODE_REG, FieldAddress(RAX, Function::code_offset()));
   __ movq(RDI, FieldAddress(RAX, Function::entry_point_offset()));
   __ jmp(RDI);
 }
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 87ab7eb..685e457 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -790,7 +790,8 @@
 #define ISOLATE_TIMELINE_STREAM_INIT(name, enabled_by_default)                 \
   result->stream_##name##_.Init(#name,                                         \
                                 Timeline::EnableStreamByDefault(#name) ||      \
-                                enabled_by_default);
+                                enabled_by_default,                            \
+                                Timeline::Stream##name##EnabledFlag());
   ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_INIT);
 #undef ISOLATE_TIMELINE_STREAM_INIT
 
@@ -845,9 +846,12 @@
                 "\tisolate:    %s\n", result->name());
     }
   }
-  if (FLAG_compiler_stats) {
-    result->compiler_stats_ = new CompilerStats(result);
+
+  result->compiler_stats_ = new CompilerStats(result);
+  if (FLAG_compiler_benchmark) {
+    result->compiler_stats_->EnableBenchmark();
   }
+
   ObjectIdRing::Init(result);
 
   // Add to isolate list. Shutdown and delete the isolate on failure.
@@ -889,6 +893,20 @@
 }
 
 
+void Isolate::SetupInstructionsSnapshotPage(
+    const uint8_t* instructions_snapshot_buffer) {
+  InstructionsSnapshot snapshot(instructions_snapshot_buffer);
+#if defined(DEBUG)
+  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_->SetupInstructionsSnapshotPage(snapshot.instructions_start(),
+                                       snapshot.instructions_size());
+}
+
+
 void Isolate::set_debugger_name(const char* name) {
   free(debugger_name_);
   debugger_name_ = strdup(name);
@@ -1479,10 +1497,6 @@
   HandleScope handle_scope(thread);
   NoSafepointScope no_safepoint_scope;
 
-  if (compiler_stats_ != NULL) {
-    OS::Print("%s", compiler_stats()->PrintToZone());
-  }
-
   // Notify exit listeners that this isolate is shutting down.
   if (object_store() != NULL) {
     NotifyExitListeners();
@@ -1558,6 +1572,13 @@
         !ServiceIsolate::IsServiceIsolateDescendant(this)) {
       CodeCoverage::Write(this);
     }
+
+    // Write compiler stats data if enabled.
+    if (FLAG_compiler_stats
+        && !ServiceIsolate::IsServiceIsolateDescendant(this)
+        && (this != Dart::vm_isolate())) {
+      OS::Print("%s", compiler_stats()->PrintToZone());
+    }
   }
 
   // Remove this isolate from the list *before* we start tearing it down, to
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 5c75c94..fd30317 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -10,7 +10,6 @@
 #include "vm/atomic.h"
 #include "vm/base_isolate.h"
 #include "vm/class_table.h"
-#include "vm/counters.h"
 #include "vm/handles.h"
 #include "vm/megamorphic_cache_table.h"
 #include "vm/metrics.h"
@@ -262,6 +261,9 @@
   // TODO(koda): Move to Thread.
   static uword GetCurrentStackPointer();
 
+  void SetupInstructionsSnapshotPage(
+      const uint8_t* instructions_snapshot_buffer);
+
   // Returns true if any of the interrupts specified by 'interrupt_bits' are
   // currently scheduled for this isolate, but leaves them unchanged.
   //
@@ -664,7 +666,7 @@
   ISOLATE_METRIC_LIST(ISOLATE_METRIC_ACCESSOR);
 #undef ISOLATE_METRIC_ACCESSOR
 
-#define ISOLATE_TIMELINE_STREAM_ACCESSOR(name, enabled_by_default)             \
+#define ISOLATE_TIMELINE_STREAM_ACCESSOR(name, not_used)                       \
   TimelineStream* Get##name##Stream() { return &stream_##name##_; }
   ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_ACCESSOR)
 #undef ISOLATE_TIMELINE_STREAM_ACCESSOR
@@ -736,8 +738,6 @@
 
   static void VisitIsolates(IsolateVisitor* visitor);
 
-  Counters* counters() { return &counters_; }
-
   // Handle service messages until we are told to resume execution.
   void PauseEventHandler();
 
@@ -916,8 +916,6 @@
 
   Metric* metrics_list_head_;
 
-  Counters counters_;
-
   bool compilation_allowed_;
 
   // TODO(23153): Move this out of Isolate/Thread.
@@ -947,7 +945,7 @@
   ISOLATE_METRIC_LIST(ISOLATE_METRIC_VARIABLE);
 #undef ISOLATE_METRIC_VARIABLE
 
-#define ISOLATE_TIMELINE_STREAM_VARIABLE(name, enabled_by_default)             \
+#define ISOLATE_TIMELINE_STREAM_VARIABLE(name, not_used)                       \
   TimelineStream stream_##name##_;
   ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_VARIABLE)
 #undef ISOLATE_TIMELINE_STREAM_VARIABLE
diff --git a/runtime/vm/isolate_test.cc b/runtime/vm/isolate_test.cc
index 6000ee6..8dcc14e 100644
--- a/runtime/vm/isolate_test.cc
+++ b/runtime/vm/isolate_test.cc
@@ -7,6 +7,7 @@
 #include "vm/globals.h"
 #include "vm/isolate.h"
 #include "vm/lockers.h"
+#include "vm/thread_barrier.h"
 #include "vm/thread_pool.h"
 #include "vm/unit_test.h"
 
@@ -89,89 +90,36 @@
   static const intptr_t kIterations;
 
   InterruptChecker(Isolate* isolate,
-                   Monitor* awake_monitor,
-                   bool* awake,
-                   Monitor* round_monitor,
-                   const intptr_t* round)
+                   ThreadBarrier* barrier)
     : isolate_(isolate),
-      awake_monitor_(awake_monitor),
-      awake_(awake),
-      round_monitor_(round_monitor),
-      round_(round) {
+      barrier_(barrier) {
   }
 
   virtual void Run() {
     Thread::EnterIsolateAsHelper(isolate_);
     // Tell main thread that we are ready.
-    {
-      MonitorLocker ml(awake_monitor_);
-      ASSERT(!*awake_);
-      *awake_ = true;
-      ml.Notify();
-    }
+    barrier_->Sync();
     for (intptr_t i = 0; i < kIterations; ++i) {
       // Busy wait for interrupts.
       while (!isolate_->HasInterruptsScheduled(Isolate::kVMInterrupt)) {
         // Do nothing.
       }
       // Tell main thread that we observed the interrupt.
-      {
-        MonitorLocker ml(awake_monitor_);
-        ASSERT(!*awake_);
-        *awake_ = true;
-        ml.Notify();
-      }
-      // Wait for main thread to let us resume, i.e., until all tasks are here.
-      {
-        MonitorLocker ml(round_monitor_);
-        EXPECT(*round_ == i || *round_ == (i + 1));
-        while (*round_ == i) {
-          ml.Wait();
-        }
-        EXPECT(*round_ == i + 1);
-      }
+      barrier_->Sync();
     }
     Thread::ExitIsolateAsHelper();
-    // Use awake also to signal exit.
-    {
-      MonitorLocker ml(awake_monitor_);
-      *awake_ = true;
-      ml.Notify();
-    }
+    barrier_->Exit();
   }
 
  private:
   Isolate* isolate_;
-  Monitor* awake_monitor_;
-  bool* awake_;
-  Monitor* round_monitor_;
-  const intptr_t* round_;
+  ThreadBarrier* barrier_;
 };
 
 
 const intptr_t InterruptChecker::kTaskCount = 5;
 const intptr_t InterruptChecker::kIterations = 10;
 
-
-// Waits for all tasks to set their individual flag, then clears them all.
-static void WaitForAllTasks(bool* flags, Monitor* monitor) {
-  MonitorLocker ml(monitor);
-  while (true) {
-    intptr_t count = 0;
-    for (intptr_t task = 0; task < InterruptChecker::kTaskCount; ++task) {
-      if (flags[task]) {
-        ++count;
-      }
-    }
-    if (count == InterruptChecker::kTaskCount) {
-      memset(flags, 0, sizeof(*flags) * count);
-      break;
-    } else {
-      ml.Wait();
-    }
-  }
-}
-
 // Test and document usage of Isolate::HasInterruptsScheduled.
 //
 // Go through a number of rounds of scheduling interrupts and waiting until all
@@ -182,34 +130,23 @@
 // compiler and/or CPU could reorder operations to make the tasks observe the
 // round update *before* the interrupt is set.
 TEST_CASE(StackLimitInterrupts) {
-  Monitor awake_monitor;  // Synchronizes the 'awake' flags.
-  bool awake[InterruptChecker::kTaskCount];
-  memset(awake, 0, sizeof(awake));
-  Monitor round_monitor;  // Synchronizes the 'round' counter.
-  intptr_t round = 0;
   Isolate* isolate = Thread::Current()->isolate();
+  ThreadBarrier barrier(InterruptChecker::kTaskCount + 1);
   // Start all tasks. They will busy-wait until interrupted in the first round.
   for (intptr_t task = 0; task < InterruptChecker::kTaskCount; task++) {
-    Dart::thread_pool()->Run(new InterruptChecker(
-        isolate, &awake_monitor, &awake[task], &round_monitor, &round));
+    Dart::thread_pool()->Run(new InterruptChecker(isolate, &barrier));
   }
   // Wait for all tasks to get ready for the first round.
-  WaitForAllTasks(awake, &awake_monitor);
+  barrier.Sync();
   for (intptr_t i = 0; i < InterruptChecker::kIterations; ++i) {
     isolate->ScheduleInterrupts(Isolate::kVMInterrupt);
     // Wait for all tasks to observe the interrupt.
-    WaitForAllTasks(awake, &awake_monitor);
+    barrier.Sync();
     // Continue with next round.
     uword interrupts = isolate->GetAndClearInterrupts();
     EXPECT((interrupts & Isolate::kVMInterrupt) != 0);
-    {
-      MonitorLocker ml(&round_monitor);
-      ++round;
-      ml.NotifyAll();
-    }
   }
-  // Wait for tasks to exit cleanly.
-  WaitForAllTasks(awake, &awake_monitor);
+  barrier.Exit();
 }
 
 }  // namespace dart
diff --git a/runtime/vm/megamorphic_cache_table.cc b/runtime/vm/megamorphic_cache_table.cc
index c87be96..154d0e0 100644
--- a/runtime/vm/megamorphic_cache_table.cc
+++ b/runtime/vm/megamorphic_cache_table.cc
@@ -57,6 +57,10 @@
   const Code& code =
       Code::Handle(StubCode::Generate("_stub_MegamorphicMiss",
                                       StubCode::GenerateMegamorphicMissStub));
+  // When FLAG_lazy_dispatchers=false, this stub can be on the stack during
+  // exceptions, but it has a corresponding function so IsStubCode is false and
+  // it is considered in the search for an exception handler.
+  code.set_exception_handlers(Object::empty_exception_handlers());
   const Class& cls =
       Class::Handle(Type::Handle(Type::Function()).type_class());
   const Function& function =
diff --git a/runtime/vm/method_recognizer.cc b/runtime/vm/method_recognizer.cc
index d0b941e..45a6f59 100644
--- a/runtime/vm/method_recognizer.cc
+++ b/runtime/vm/method_recognizer.cc
@@ -28,7 +28,8 @@
 #define KIND_TO_STRING(class_name, function_name, enum_name, fp)               \
   #enum_name,
 static const char* recognized_list_method_name[] = {
-RECOGNIZED_LIST(KIND_TO_STRING)
+  "Unknown",
+  RECOGNIZED_LIST(KIND_TO_STRING)
 };
 #undef KIND_TO_STRING
 
diff --git a/runtime/vm/method_recognizer.h b/runtime/vm/method_recognizer.h
index eb752f9..a931290 100644
--- a/runtime/vm/method_recognizer.h
+++ b/runtime/vm/method_recognizer.h
@@ -64,10 +64,6 @@
   V(Float32x4, Float32x4.fromFloat64x2, Float32x4FromFloat64x2, 1327692716)    \
   V(_Float32x4, shuffle, Float32x4Shuffle, 1636488139)                         \
   V(_Float32x4, shuffleMix, Float32x4ShuffleMix, 654814229)                    \
-  V(_Float32x4, get:x, Float32x4ShuffleX, 384969722)                           \
-  V(_Float32x4, get:y, Float32x4ShuffleY, 1398121942)                          \
-  V(_Float32x4, get:z, Float32x4ShuffleZ, 1178175605)                          \
-  V(_Float32x4, get:w, Float32x4ShuffleW, 480951003)                           \
   V(_Float32x4, get:signMask, Float32x4GetSignMask, 630880675)                 \
   V(_Float32x4, _cmpequal, Float32x4Equal, 571062952)                          \
   V(_Float32x4, _cmpgt, Float32x4GreaterThan, 1613543295)                      \
@@ -285,6 +281,13 @@
   V(_Float64Array, []=, Float64ArraySetIndexed, 887301703)                     \
   V(_Float64Array, [], Float64ArrayGetIndexed, 1959896670)                     \
   V(_TypedList, get:length, TypedDataLength, 522684521)                        \
+  V(_Float32x4, get:x, Float32x4ShuffleX, 384969722)                           \
+  V(_Float32x4, get:y, Float32x4ShuffleY, 1398121942)                          \
+  V(_Float32x4, get:z, Float32x4ShuffleZ, 1178175605)                          \
+  V(_Float32x4, get:w, Float32x4ShuffleW, 480951003)                           \
+  V(_Float32x4, _mul, Float32x4Mul, 1703784673)                                \
+  V(_Float32x4, _sub, Float32x4Sub, 1302598822)                                \
+  V(_Float32x4, _add, Float32x4Add, 182344215)                                 \
 
 #define GRAPH_CORE_INTRINSICS_LIST(V)                                          \
   V(_List, get:length, ObjectArrayLength, 1181471893)                          \
diff --git a/runtime/vm/native_entry.cc b/runtime/vm/native_entry.cc
index 5f373df..29cb8d7 100644
--- a/runtime/vm/native_entry.cc
+++ b/runtime/vm/native_entry.cc
@@ -23,14 +23,6 @@
             "Trace invocation of natives (debug mode only)");
 
 
-static ExternalLabel native_call_label(
-    reinterpret_cast<uword>(&NativeEntry::NativeCallWrapper));
-
-
-static ExternalLabel link_native_call_label(
-    reinterpret_cast<uword>(&NativeEntry::LinkNativeCall));
-
-
 NativeFunction NativeEntry::ResolveNative(const Library& library,
                                           const String& function_name,
                                           int number_of_arguments,
@@ -84,8 +76,13 @@
 }
 
 
-const ExternalLabel& NativeEntry::NativeCallWrapperLabel() {
-  return native_call_label;
+uword NativeEntry::NativeCallWrapperEntry() {
+  uword entry = reinterpret_cast<uword>(NativeEntry::NativeCallWrapper);
+#if defined(USING_SIMULATOR)
+  entry = Simulator::RedirectExternalReference(
+      entry, Simulator::kNativeCall, NativeEntry::kNumCallWrapperArguments);
+#endif
+  return entry;
 }
 
 
@@ -167,8 +164,13 @@
 }
 
 
-const ExternalLabel& NativeEntry::LinkNativeCallLabel() {
-  return link_native_call_label;
+uword NativeEntry::LinkNativeCallEntry() {
+  uword entry = reinterpret_cast<uword>(NativeEntry::LinkNativeCall);
+#if defined(USING_SIMULATOR)
+  entry = Simulator::RedirectExternalReference(
+      entry, Simulator::kBootstrapNativeCall, NativeEntry::kNumArguments);
+#endif
+  return entry;
 }
 
 
@@ -210,10 +212,10 @@
 #if defined(DEBUG)
     {
       NativeFunction current_function = NULL;
-      uword current_trampoline =
+      const Code& current_trampoline = Code::Handle(
           CodePatcher::GetNativeCallAt(caller_frame->pc(),
                                        code,
-                                       &current_function);
+                                       &current_function));
 #if !defined(USING_SIMULATOR)
       ASSERT(current_function ==
              reinterpret_cast<NativeFunction>(LinkNativeCall));
@@ -225,8 +227,8 @@
                      Simulator::kBootstrapNativeCall,
                      NativeEntry::kNumArguments)));
 #endif
-      ASSERT(current_trampoline ==
-             StubCode::CallBootstrapCFunction_entry()->EntryPoint());
+      ASSERT(current_trampoline.raw() ==
+             StubCode::CallBootstrapCFunction_entry()->code());
     }
 #endif
 
diff --git a/runtime/vm/native_entry.h b/runtime/vm/native_entry.h
index 4dd655d..0123b47 100644
--- a/runtime/vm/native_entry.h
+++ b/runtime/vm/native_entry.h
@@ -114,11 +114,11 @@
                                                uword pc);
   static const uint8_t* ResolveSymbol(uword pc);
 
-  static const ExternalLabel& NativeCallWrapperLabel();
+  static uword NativeCallWrapperEntry();
   static void NativeCallWrapper(Dart_NativeArguments args,
                                 Dart_NativeFunction func);
 
-  static const ExternalLabel& LinkNativeCallLabel();
+  static uword LinkNativeCallEntry();
   static void LinkNativeCall(Dart_NativeArguments args);
 };
 
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index d95e73d..2366142 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -115,7 +115,6 @@
 LanguageError* Object::snapshot_writer_error_ = NULL;
 LanguageError* Object::branch_offset_error_ = NULL;
 Array* Object::vm_isolate_snapshot_object_table_ = NULL;
-const uint8_t* Object::instructions_snapshot_buffer_ = NULL;
 
 RawObject* Object::null_ = reinterpret_cast<RawObject*>(RAW_NULL);
 RawClass* Object::class_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
@@ -832,11 +831,16 @@
   explicit PremarkingVisitor(Isolate* isolate) : ObjectVisitor(isolate) {}
 
   void VisitObject(RawObject* obj) {
-    ASSERT(!obj->IsMarked());
     // Free list elements should never be marked.
     if (!obj->IsFreeListElement()) {
       ASSERT(obj->IsVMHeapObject());
-      obj->SetMarkBitUnsynchronized();
+      if (obj->IsMarked()) {
+        // Precompiled instructions are loaded pre-marked.
+        ASSERT(Dart::IsRunningPrecompiledCode());
+        ASSERT(obj->IsInstructions());
+      } else {
+        obj->SetMarkBitUnsynchronized();
+      }
     }
   }
 };
@@ -3707,7 +3711,9 @@
   }
   ASSERT(!CodePatcher::IsEntryPatched(existing_stub));
   // Patch the stub so that the next caller will regenerate the stub.
-  CodePatcher::PatchEntry(existing_stub);
+  CodePatcher::PatchEntry(
+      existing_stub,
+      Code::Handle(StubCode::FixAllocationStubTarget_entry()->code()));
   // Disassociate the existing stub from class.
   StorePointer(&raw_ptr()->allocation_stub_, Code::null());
 }
@@ -5225,7 +5231,7 @@
 
 
 void Function::SetInstructions(const Code& value) const {
-  StorePointer(&raw_ptr()->instructions_, value.instructions());
+  StorePointer(&raw_ptr()->code_, value.raw());
   StoreNonPointer(&raw_ptr()->entry_point_, value.EntryPoint());
 }
 
@@ -5238,9 +5244,8 @@
 
 
 bool Function::HasCode() const {
-  ASSERT(raw_ptr()->instructions_ != Instructions::null());
-  return raw_ptr()->instructions_ !=
-      StubCode::LazyCompile_entry()->code()->ptr()->instructions_;
+  ASSERT(raw_ptr()->code_ != Code::null());
+  return raw_ptr()->code_ != StubCode::LazyCompile_entry()->code();
 }
 
 
@@ -5264,7 +5269,8 @@
       current_code.EntryPoint());
   }
   // Patch entry of the optimized code.
-  CodePatcher::PatchEntry(current_code);
+  CodePatcher::PatchEntry(
+      current_code, Code::Handle(StubCode::FixCallersTarget_entry()->code()));
   const Error& error = Error::Handle(zone,
       Compiler::EnsureUnoptimizedCode(thread, *this));
   if (!error.IsNull()) {
@@ -6728,8 +6734,7 @@
 
 
 bool Function::HasOptimizedCode() const {
-  return HasCode() &&  Code::Handle(Instructions::Handle(
-      raw_ptr()->instructions_).code()).is_optimized();
+  return HasCode() && Code::Handle(CurrentCode()).is_optimized();
 }
 
 
@@ -8584,9 +8589,9 @@
   CSTAT_TIMER_SCOPE(thread, scanner_timer);
   const String& src = String::Handle(zone, Source());
   Scanner scanner(src, private_key);
-  set_tokens(TokenStream::Handle(zone,
-                                 TokenStream::New(scanner.GetStream(),
-                                                  private_key)));
+  const Scanner::GrowableTokenStream& ts = scanner.GetStream();
+  INC_STAT(thread, num_tokens_scanned, ts.length());
+  set_tokens(TokenStream::Handle(zone, TokenStream::New(ts, private_key)));
   INC_STAT(thread, src_length, src.Length());
 }
 
@@ -10920,11 +10925,9 @@
   JSONObject jsobj(stream);
   AddCommonObjectProperties(&jsobj, "Object", ref);
   jsobj.AddServiceId(*this);
-  jsobj.AddProperty("_code", Code::Handle(code()));
   if (ref) {
     return;
   }
-  jsobj.AddProperty("_objectPool", ObjectPool::Handle(object_pool()));
 }
 
 
@@ -11033,7 +11036,6 @@
         imm = RawValueAt(i);
         jsarr.AddValue64(imm);
         break;
-      case ObjectPool::kExternalLabel:
       case ObjectPool::kNativeEntry:
         imm = RawValueAt(i);
         jsarr.AddValueF("0x%" Px, imm);
@@ -11046,16 +11048,6 @@
 }
 
 
-static const char* DescribeExternalLabel(uword addr) {
-  const char* stub_name = StubCode::NameOfStub(addr);
-  if (stub_name != NULL) {
-    return stub_name;
-  }
-
-  return "UNKNOWN";
-}
-
-
 void ObjectPool::DebugPrint() const {
   THR_Print("Object Pool: {\n");
   for (intptr_t i = 0; i < Length(); i++) {
@@ -11066,10 +11058,6 @@
       THR_Print("0x%" Px " %s (obj)\n",
           reinterpret_cast<uword>(obj),
           Object::Handle(obj).ToCString());
-    } else if (InfoAt(i) == kExternalLabel) {
-      uword addr = RawValueAt(i);
-      THR_Print("0x%" Px " (external label: %s)\n",
-                addr, DescribeExternalLabel(addr));
     } else if (InfoAt(i) == kNativeEntry) {
       THR_Print("0x%" Px " (native entry)\n", RawValueAt(i));
     } else {
@@ -12858,13 +12846,6 @@
 
 
 void Code::Disassemble(DisassemblyFormatter* formatter) const {
-  const bool fix_patch = CodePatcher::CodeIsPatchable(*this) &&
-                         CodePatcher::IsEntryPatched(*this);
-  if (fix_patch) {
-    // The disassembler may choke on illegal instructions if the code has been
-    // patched, un-patch the code before disassembling and re-patch after.
-    CodePatcher::RestoreEntry(*this);
-  }
   const Instructions& instr = Instructions::Handle(instructions());
   uword start = instr.EntryPoint();
   if (formatter == NULL) {
@@ -12872,10 +12853,6 @@
   } else {
     Disassembler::Disassemble(start, start + instr.size(), formatter, *this);
   }
-  if (fix_patch) {
-    // Redo the patch.
-    CodePatcher::PatchEntry(*this);
-  }
 }
 
 
@@ -12997,8 +12974,6 @@
     result.set_is_alive(false);
     result.set_comments(Comments::New(0));
     result.set_compile_timestamp(0);
-    result.set_entry_patch_pc_offset(kInvalidPc);
-    result.set_patch_code_pc_offset(kInvalidPc);
     result.set_lazy_deopt_pc_offset(kInvalidPc);
     result.set_pc_descriptors(Object::empty_descriptors());
   }
@@ -13023,6 +12998,9 @@
   // pages read-only.
   intptr_t pointer_offset_count = assembler->CountPointerOffsets();
   Code& code = Code::ZoneHandle(Code::New(pointer_offset_count));
+#ifdef TARGET_ARCH_IA32
+  assembler->set_code_object(code);
+#endif
   Instructions& instrs =
       Instructions::ZoneHandle(Instructions::New(assembler->CodeSize()));
   INC_STAT(Thread::Current(), total_instr_size, assembler->CodeSize());
@@ -13061,14 +13039,14 @@
     }
 
     // Hook up Code and Instructions objects.
-    instrs.set_code(code.raw());
+    code.set_active_instructions(instrs.raw());
     code.set_instructions(instrs.raw());
     code.set_is_alive(true);
 
     // Set object pool in Instructions object.
     INC_STAT(Thread::Current(),
              total_code_size, object_pool.Length() * sizeof(uintptr_t));
-    instrs.set_object_pool(object_pool.raw());
+    code.set_object_pool(object_pool.raw());
 
     if (FLAG_write_protect_code) {
       uword address = RawObject::ToAddr(instrs.raw());
@@ -13110,7 +13088,7 @@
 
 // Check if object matches find condition.
 bool Code::FindRawCodeVisitor::FindObject(RawObject* obj) const {
-  return RawInstructions::ContainsPC(obj, pc_);
+  return RawCode::ContainsPC(obj, pc_);
 }
 
 
@@ -13118,13 +13096,13 @@
   ASSERT((isolate == Isolate::Current()) || (isolate == Dart::vm_isolate()));
   NoSafepointScope no_safepoint;
   FindRawCodeVisitor visitor(pc);
-  RawInstructions* instr;
+  RawObject* instr;
   if (isolate->heap() == NULL) {
     return Code::null();
   }
-  instr = isolate->heap()->FindObjectInCodeSpace(&visitor);
-  if (instr != Instructions::null()) {
-    return instr->ptr()->code_;
+  instr = isolate->heap()->FindOldObject(&visitor);
+  if (instr != Code::null()) {
+    return static_cast<RawCode*>(instr);
   }
   return Code::null();
 }
@@ -13365,18 +13343,6 @@
 }
 
 
-uword Code::GetEntryPatchPc() const {
-  return (entry_patch_pc_offset() != kInvalidPc)
-      ? EntryPoint() + entry_patch_pc_offset() : 0;
-}
-
-
-uword Code::GetPatchCodePc() const {
-  return (patch_code_pc_offset() != kInvalidPc)
-      ? EntryPoint() + patch_code_pc_offset() : 0;
-}
-
-
 uword Code::GetLazyDeoptPc() const {
   return (lazy_deopt_pc_offset() != kInvalidPc)
       ? EntryPoint() + lazy_deopt_pc_offset() : 0;
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 75ec1f4..1b398dd 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -488,12 +488,6 @@
     return *vm_isolate_snapshot_object_table_;
   }
   static void InitVmIsolateSnapshotObjectTable(intptr_t len);
-  static const uint8_t* instructions_snapshot_buffer() {
-    return instructions_snapshot_buffer_;
-  }
-  static void set_instructions_snapshot_buffer(const uint8_t* buffer) {
-    instructions_snapshot_buffer_ = buffer;
-  }
 
   static RawClass* class_class() { return class_class_; }
   static RawClass* dynamic_class() { return dynamic_class_; }
@@ -819,7 +813,6 @@
   static LanguageError* snapshot_writer_error_;
   static LanguageError* branch_offset_error_;
   static Array* vm_isolate_snapshot_object_table_;
-  static const uint8_t* instructions_snapshot_buffer_;
 
   friend void ClassTable::Register(const Class& cls);
   friend void RawObject::Validate(Isolate* isolate) const;
@@ -2170,13 +2163,17 @@
   // Return the most recently compiled and installed code for this function.
   // It is not the only Code object that points to this function.
   RawCode* CurrentCode() const {
-    return raw_ptr()->instructions_->ptr()->code_;
+    return raw_ptr()->code_;
   }
 
   RawCode* unoptimized_code() const { return raw_ptr()->unoptimized_code_; }
   void set_unoptimized_code(const Code& value) const;
   bool HasCode() const;
 
+  static intptr_t code_offset() {
+    return OFFSET_OF(RawFunction, code_);
+  }
+
   static intptr_t entry_point_offset() {
     return OFFSET_OF(RawFunction, entry_point_);
   }
@@ -3609,7 +3606,6 @@
   enum EntryType {
     kTaggedObject,
     kImmediate,
-    kExternalLabel,
     kNativeEntry,
   };
 
@@ -3714,14 +3710,6 @@
 class Instructions : public Object {
  public:
   intptr_t size() const { return raw_ptr()->size_; }  // Excludes HeaderSize().
-  RawCode* code() const { return raw_ptr()->code_; }
-  static intptr_t code_offset() {
-    return OFFSET_OF(RawInstructions, code_);
-  }
-  RawObjectPool* object_pool() const { return raw_ptr()->object_pool_; }
-  static intptr_t object_pool_offset() {
-    return OFFSET_OF(RawInstructions, object_pool_);
-  }
 
   uword EntryPoint() const {
     return reinterpret_cast<uword>(raw_ptr()) + HeaderSize();
@@ -3760,12 +3748,6 @@
   void set_size(intptr_t size) const {
     StoreNonPointer(&raw_ptr()->size_, size);
   }
-  void set_code(RawCode* code) const {
-    StorePointer(&raw_ptr()->code_, code);
-  }
-  void set_object_pool(RawObjectPool* object_pool) const {
-    StorePointer(&raw_ptr()->object_pool_, object_pool);
-  }
 
   // New is a private method as RawInstruction and RawCode objects should
   // only be created using the Code::FinalizeCode method. This method creates
@@ -3776,6 +3758,7 @@
   FINAL_HEAP_OBJECT_IMPLEMENTATION(Instructions, Object);
   friend class Class;
   friend class Code;
+  friend class InstructionsWriter;
 };
 
 
@@ -4097,12 +4080,25 @@
 
 class Code : public Object {
  public:
+  RawInstructions* active_instructions() const {
+    return raw_ptr()->active_instructions_;
+  }
+
   RawInstructions* instructions() const { return raw_ptr()->instructions_; }
 
+  static intptr_t saved_instructions_offset() {
+    return OFFSET_OF(RawCode, instructions_);
+  }
+
   static intptr_t entry_point_offset() {
     return OFFSET_OF(RawCode, entry_point_);
   }
 
+  RawObjectPool* object_pool() const { return raw_ptr()->object_pool_; }
+  static intptr_t object_pool_offset() {
+    return OFFSET_OF(RawCode, object_pool_);
+  }
+
   intptr_t pointer_offsets_length() const {
     return PtrOffBits::decode(raw_ptr()->state_bits_);
   }
@@ -4117,17 +4113,14 @@
   void set_is_alive(bool value) const;
 
   uword EntryPoint() const {
-    ASSERT(raw_ptr()->entry_point_ ==
-           Instructions::Handle(instructions()).EntryPoint());
-    return raw_ptr()->entry_point_;
+    return Instructions::Handle(instructions()).EntryPoint();
   }
   intptr_t Size() const {
     const Instructions& instr = Instructions::Handle(instructions());
     return instr.size();
   }
   RawObjectPool* GetObjectPool() const {
-    const Instructions& instr = Instructions::Handle(instructions());
-    return instr.object_pool();
+    return object_pool();
   }
   bool ContainsInstructionAt(uword addr) const {
     const Instructions& instr = Instructions::Handle(instructions());
@@ -4322,10 +4315,6 @@
     kInvalidPc = -1
   };
 
-  // Returns 0 if code is not patchable
-  uword GetEntryPatchPc() const;
-  uword GetPatchCodePc() const;
-
   uword GetLazyDeoptPc() const;
 
   // Find pc, return 0 if not found.
@@ -4339,22 +4328,6 @@
     return raw_ptr()->compile_timestamp_;
   }
 
-  intptr_t entry_patch_pc_offset() const {
-    return raw_ptr()->entry_patch_pc_offset_;
-  }
-  void set_entry_patch_pc_offset(intptr_t pc) const {
-    StoreNonPointer(&raw_ptr()->entry_patch_pc_offset_, pc);
-  }
-
-
-  intptr_t patch_code_pc_offset() const {
-    return raw_ptr()->patch_code_pc_offset_;
-  }
-  void set_patch_code_pc_offset(intptr_t pc) const {
-    StoreNonPointer(&raw_ptr()->patch_code_pc_offset_, pc);
-  }
-
-
   intptr_t lazy_deopt_pc_offset() const {
     return raw_ptr()->lazy_deopt_pc_offset_;
   }
@@ -4369,6 +4342,10 @@
  private:
   void set_state_bits(intptr_t bits) const;
 
+  void set_object_pool(RawObjectPool* object_pool) const {
+    StorePointer(&raw_ptr()->object_pool_, object_pool);
+  }
+
   friend class RawObject;  // For RawObject::SizeFromClass().
   friend class RawCode;
   enum {
@@ -4389,8 +4366,6 @@
         : FindObjectVisitor(Isolate::Current()), pc_(pc) { }
     virtual ~FindRawCodeVisitor() { }
 
-    virtual uword filter_addr() const { return pc_; }
-
     // Check if object matches find condition.
     virtual bool FindObject(RawObject* obj) const;
 
@@ -4410,13 +4385,17 @@
     StoreNonPointer(&raw_ptr()->compile_timestamp_, timestamp);
   }
 
-  void set_instructions(RawInstructions* instructions) {
+  void set_active_instructions(RawInstructions* instructions) const {
     // 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());
+  }
+
+  void set_instructions(RawInstructions* instructions) const {
     StorePointer(&raw_ptr()->instructions_, instructions);
-    uword entry_point = reinterpret_cast<uword>(instructions->ptr()) +
-        Instructions::HeaderSize();
-    StoreNonPointer(&raw_ptr()->entry_point_, entry_point);
   }
 
   void set_pointer_offsets_length(intptr_t value) {
@@ -4450,7 +4429,7 @@
   FINAL_HEAP_OBJECT_IMPLEMENTATION(Code, Object);
   friend class Class;
   friend class SnapshotWriter;
-
+  friend class CodePatcher;  // for set_instructions
   // So that the RawFunction pointer visitor can determine whether code the
   // function points to is optimized.
   friend class RawFunction;
diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc
index 79ea761..40b6c05 100644
--- a/runtime/vm/pages.cc
+++ b/runtime/vm/pages.cc
@@ -212,6 +212,10 @@
     }
     pages_tail_ = page;
   } else {
+    // Should not allocate executable pages when running from a precompiled
+    // snapshot.
+    ASSERT(!Dart::IsRunningPrecompiledCode());
+
     if (exec_pages_ == NULL) {
       exec_pages_ = page;
     } else {
@@ -1022,6 +1026,40 @@
 }
 
 
+void PageSpace::SetupInstructionsSnapshotPage(void* pointer, uword size) {
+  // Setup a HeapPage so precompiled Instructions can be traversed.
+  // Instructions are contiguous at [pointer, pointer + size). HeapPage
+  // expects to find objects at [memory->start() + ObjectStartOffset,
+  // memory->end()).
+  uword offset = HeapPage::ObjectStartOffset();
+  pointer = reinterpret_cast<void*>(reinterpret_cast<uword>(pointer) - offset);
+  size += offset;
+
+  ASSERT(Utils::IsAligned(pointer, OS::PreferredCodeAlignment()));
+
+  VirtualMemory* memory = VirtualMemory::ForInstructionsSnapshot(pointer, size);
+  ASSERT(memory != NULL);
+  HeapPage* page = reinterpret_cast<HeapPage*>(malloc(sizeof(HeapPage)));
+  page->memory_ = memory;
+  page->next_ = NULL;
+  page->object_end_ = memory->end();
+  page->executable_ = true;
+
+#if defined(DEBUG)
+  OS::Print("Precompiled instructions page at [0x%" Px ", 0x%" Px ")\n",
+            page->object_start(), page->object_end());
+#endif
+
+  MutexLocker ml(pages_lock_);
+  if (exec_pages_ == NULL) {
+    exec_pages_ = page;
+  } else {
+    exec_pages_tail_->set_next(page);
+  }
+  exec_pages_tail_ = page;
+}
+
+
 PageSpaceController::PageSpaceController(Heap* heap,
                                          int heap_growth_ratio,
                                          int heap_growth_max,
diff --git a/runtime/vm/pages.h b/runtime/vm/pages.h
index cb5c1dc..e67bc81 100644
--- a/runtime/vm/pages.h
+++ b/runtime/vm/pages.h
@@ -42,7 +42,7 @@
   }
 
   uword object_start() const {
-    return (reinterpret_cast<uword>(this) + ObjectStartOffset());
+    return memory_->start() + ObjectStartOffset();
   }
   uword object_end() const {
     return object_end_;
@@ -340,6 +340,8 @@
   static intptr_t top_offset() { return OFFSET_OF(PageSpace, bump_top_); }
   static intptr_t end_offset() { return OFFSET_OF(PageSpace, bump_end_); }
 
+  void SetupInstructionsSnapshotPage(void* pointer, uword size);
+
  private:
   // Ids for time and data records in Heap::GCStats.
   enum {
diff --git a/runtime/vm/precompiler.cc b/runtime/vm/precompiler.cc
index 426aa88..6fb4247 100644
--- a/runtime/vm/precompiler.cc
+++ b/runtime/vm/precompiler.cc
@@ -211,11 +211,13 @@
     { "dart:_builtin", "::", "_getUriBaseClosure" },
     { "dart:_builtin", "::", "_resolveUri" },
     { "dart:_builtin", "::", "_setWorkingDirectory" },
+    { "dart:_builtin", "::", "_loadDataAsync" },
     { "dart:async", "::", "_setScheduleImmediateClosure" },
     { "dart:core", "_InternalError", "_InternalError." },
     { "dart:core", "_InvocationMirror", "_allocateInvocationMirror" },
     { "dart:io", "::", "_makeUint8ListView" },
     { "dart:io", "::", "_makeDatagram" },
+    { "dart:io", "::", "_setupHooks" },
     { "dart:io", "CertificateException", "CertificateException." },
     { "dart:io", "HandshakeException", "HandshakeException." },
     { "dart:io", "TlsException", "TlsException." },
@@ -228,6 +230,7 @@
     { "dart:io", "_SecureFilterImpl", "get:SIZE" },
     { "dart:isolate", "::", "_getIsolateScheduleImmediateClosure" },
     { "dart:isolate", "::", "_startMainIsolate" },
+    { "dart:isolate", "::", "_setupHooks" },
     { "dart:isolate", "_RawReceivePortImpl", "_handleMessage" },
     { "dart:isolate", "_RawReceivePortImpl", "_lookupHandler" },
     { "dart:vmservice", "::", "_registerIsolate" },
@@ -444,7 +447,7 @@
       if (FLAG_trace_precompiler) {
         THR_Print("Precompiling initializer for %s\n", field.ToCString());
       }
-      ASSERT(Object::instructions_snapshot_buffer() == NULL);
+      ASSERT(!Dart::IsRunningPrecompiledCode());
       field.SetStaticValue(Instance::Handle(field.SavedInitialStaticValue()));
       Compiler::CompileStaticInitializer(field);
 
diff --git a/runtime/vm/profiler.cc b/runtime/vm/profiler.cc
index c470b6a..98fd63d 100644
--- a/runtime/vm/profiler.cc
+++ b/runtime/vm/profiler.cc
@@ -759,35 +759,8 @@
 };
 
 
-static void CopyPCMarkerIfSafe(Sample* sample, uword fp_addr, uword sp_addr) {
-  ASSERT(sample != NULL);
-
-  if (sample->vm_tag() != VMTag::kDartTagId) {
-    // We can only trust the stack pointer if we are executing Dart code.
-    // See http://dartbug.com/20421 for details.
-    return;
-  }
-  uword* fp = reinterpret_cast<uword*>(fp_addr);
-  uword* sp = reinterpret_cast<uword*>(sp_addr);
-
-  // If FP == SP, the pc marker hasn't been pushed.
-  if (fp > sp) {
-    uword* pc_marker_ptr = fp + kPcMarkerSlotFromFp;
-    // MSan/ASan are unaware of frames initialized by generated code.
-    MSAN_UNPOISON(pc_marker_ptr, kWordSize);
-    ASAN_UNPOISON(pc_marker_ptr, kWordSize);
-    sample->set_pc_marker(*pc_marker_ptr);
-  }
-}
-
-
 static void CopyStackBuffer(Sample* sample, uword sp_addr) {
   ASSERT(sample != NULL);
-  if (sample->vm_tag() != VMTag::kDartTagId) {
-    // We can only trust the stack pointer if we are executing Dart code.
-    // See http://dartbug.com/20421 for details.
-    return;
-  }
   uword* sp = reinterpret_cast<uword*>(sp_addr);
   uword* buffer = sample->GetStackBuffer();
   if (sp != NULL) {
@@ -834,8 +807,11 @@
   __try {
 #endif
 
-  CopyStackBuffer(sample, sp);
-  CopyPCMarkerIfSafe(sample, fp, sp);
+  if (in_dart_code) {
+    // We can only trust the stack pointer if we are executing Dart code.
+    // See http://dartbug.com/20421 for details.
+    CopyStackBuffer(sample, sp);
+  }
 
   if (FLAG_profile_vm) {
     // Always walk the native stack collecting both native and Dart frames.
diff --git a/runtime/vm/random.cc b/runtime/vm/random.cc
index 18703d0..6f1b6eb 100644
--- a/runtime/vm/random.cc
+++ b/runtime/vm/random.cc
@@ -25,6 +25,12 @@
     // We did not get a seed so far. As a fallback we do use the current time.
     seed = OS::GetCurrentTimeMicros();
   }
+  Initialize(seed);
+}
+
+
+void Random::Initialize(uint64_t seed) {
+  ASSERT(seed != 0);
   // Crank the next state a couple of times.
   _state = seed;
   NextState();
@@ -33,6 +39,12 @@
   NextState();
 }
 
+
+Random::Random(uint64_t seed) {
+  Initialize(seed);
+}
+
+
 Random::~Random() {
   // Nothing to be done here.
 }
diff --git a/runtime/vm/random.h b/runtime/vm/random.h
index cda8dd8..f5614de 100644
--- a/runtime/vm/random.h
+++ b/runtime/vm/random.h
@@ -13,6 +13,8 @@
 class Random {
  public:
   Random();
+  // Seed must be non-zero.
+  explicit Random(uint64_t seed);
   ~Random();
 
   uint32_t NextUInt32();
@@ -23,6 +25,7 @@
 
  private:
   void NextState();
+  void Initialize(uint64_t seed);
 
   uint64_t _state;
 
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index 47e9306..74013a6 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -439,9 +439,9 @@
   }
   visitor->VisitPointers(raw_obj->from(), raw_obj->to_no_code());
 
-  if (ShouldVisitCode(raw_obj->ptr()->instructions_->ptr()->code_)) {
+  if (ShouldVisitCode(raw_obj->ptr()->code_)) {
     visitor->VisitPointer(
-        reinterpret_cast<RawObject**>(&raw_obj->ptr()->instructions_));
+        reinterpret_cast<RawObject**>(&raw_obj->ptr()->code_));
   } else {
     visitor->add_skipped_code_function(raw_obj);
   }
@@ -505,6 +505,16 @@
 }
 
 
+bool RawCode::ContainsPC(RawObject* raw_obj, uword pc) {
+  uword tags = raw_obj->ptr()->tags_;
+  if (RawObject::ClassIdTag::decode(tags) == kCodeCid) {
+    RawCode* raw_code = reinterpret_cast<RawCode*>(raw_obj);
+    return RawInstructions::ContainsPC(raw_code->ptr()->instructions_, pc);
+  }
+  return false;
+}
+
+
 intptr_t RawCode::VisitCodePointers(RawCode* raw_obj,
                                     ObjectPointerVisitor* visitor) {
   visitor->VisitPointers(raw_obj->from(), raw_obj->to());
@@ -546,24 +556,16 @@
 intptr_t RawInstructions::VisitInstructionsPointers(
     RawInstructions* raw_obj, ObjectPointerVisitor* visitor) {
   RawInstructions* obj = raw_obj->ptr();
-  visitor->VisitPointers(raw_obj->from(), raw_obj->to());
   return Instructions::InstanceSize(obj->size_);
 }
 
 
-bool RawInstructions::ContainsPC(RawObject* raw_obj, uword pc) {
-  uword tags = raw_obj->ptr()->tags_;
-  if (RawObject::ClassIdTag::decode(tags) == kInstructionsCid) {
-    RawInstructions* raw_instr = reinterpret_cast<RawInstructions*>(raw_obj);
-    uword start_pc =
-        reinterpret_cast<uword>(raw_instr->ptr()) + Instructions::HeaderSize();
-    uword end_pc = start_pc + raw_instr->ptr()->size_;
-    ASSERT(end_pc > start_pc);
-    if ((pc >= start_pc) && (pc < end_pc)) {
-      return true;
-    }
-  }
-  return false;
+bool RawInstructions::ContainsPC(RawInstructions* raw_instr, uword pc) {
+  uword start_pc =
+      reinterpret_cast<uword>(raw_instr->ptr()) + Instructions::HeaderSize();
+  uword end_pc = start_pc + raw_instr->ptr()->size_;
+  ASSERT(end_pc > start_pc);
+  return (pc >= start_pc) && (pc < end_pc);
 }
 
 
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 2110436..73bbfbc 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -410,6 +410,12 @@
   bool IsFunction() {
     return ((GetClassId() == kFunctionCid));
   }
+  bool IsInstructions() {
+    return ((GetClassId() == kInstructionsCid));
+  }
+  bool IsCode() {
+    return ((GetClassId() == kCodeCid));
+  }
 
   intptr_t Size() const {
     uword tags = ptr()->tags_;
@@ -575,6 +581,7 @@
   friend class Mint;
   friend class Object;
   friend class OneByteString;  // StoreSmi
+  friend class RawCode;
   friend class RawExternalTypedData;
   friend class RawInstructions;
   friend class RawInstance;
@@ -585,6 +592,7 @@
   friend class RetainingPathVisitor;  // GetClassId
   friend class SkippedCodeFunctions;  // StorePointer
   friend class InstructionsReader;  // tags_ check
+  friend class InstructionsWriter;
   friend class SnapshotReader;
   friend class SnapshotWriter;
   friend class String;
@@ -592,6 +600,7 @@
   friend class TypedDataView;
   friend class WeakProperty;  // StorePointer
   friend class Instance;  // StorePointer
+  friend class StackFrame;  // GetCodeObject assertion.
 
   DISALLOW_ALLOCATION();
   DISALLOW_IMPLICIT_CONSTRUCTORS(RawObject);
@@ -770,7 +779,7 @@
   RawObject** to_no_code() {
     return reinterpret_cast<RawObject**>(&ptr()->ic_data_array_);
   }
-  RawInstructions* instructions_;  // Instructions of currently active code.
+  RawCode* code_;  // Currently active code.
   RawCode* unoptimized_code_;  // Unoptimized code, keep it after optimization.
   RawObject** to() {
     return reinterpret_cast<RawObject**>(&ptr()->unoptimized_code_);
@@ -1000,10 +1009,14 @@
 
   RAW_HEAP_OBJECT_IMPLEMENTATION(Code);
 
+  uword entry_point_;
+
   RawObject** from() {
-    return reinterpret_cast<RawObject**>(&ptr()->instructions_);
+    return reinterpret_cast<RawObject**>(&ptr()->active_instructions_);
   }
+  RawInstructions* active_instructions_;
   RawInstructions* instructions_;
+  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.
   // Else, owner_ is a regular Dart Function.
@@ -1022,7 +1035,6 @@
   RawObject** to() {
     return reinterpret_cast<RawObject**>(&ptr()->return_address_metadata_);
   }
-  uword entry_point_;
 
   // Compilation timestamp.
   int64_t compile_timestamp_;
@@ -1034,18 +1046,19 @@
   int32_t state_bits_;
 
   // PC offsets for code patching.
-  int32_t entry_patch_pc_offset_;
-  int32_t patch_code_pc_offset_;
   int32_t lazy_deopt_pc_offset_;
 
   // Variable length data follows here.
   int32_t* data() { OPEN_ARRAY_START(int32_t, int32_t); }
   const int32_t* data() const { OPEN_ARRAY_START(int32_t, int32_t); }
 
+  static bool ContainsPC(RawObject* raw_obj, uword pc);
+
   friend class Function;
   friend class MarkingVisitor;
   friend class SkippedCodeFunctions;
   friend class StackFrame;
+  friend class Profiler;
 };
 
 
@@ -1074,14 +1087,6 @@
 class RawInstructions : public RawObject {
   RAW_HEAP_OBJECT_IMPLEMENTATION(Instructions);
 
-  RawObject** from() {
-    return reinterpret_cast<RawObject**>(&ptr()->code_);
-  }
-  RawCode* code_;
-  RawObjectPool* object_pool_;
-  RawObject** to() {
-    return reinterpret_cast<RawObject**>(&ptr()->object_pool_);
-  }
   int32_t size_;
 
   // Variable length data follows here.
@@ -1090,7 +1095,7 @@
   // Private helper function used while visiting stack frames. The
   // code which iterates over dart frames is also called during GC and
   // is not allowed to create handles.
-  static bool ContainsPC(RawObject* raw_obj, uword pc);
+  static bool ContainsPC(RawInstructions* raw_instr, uword pc);
 
   friend class RawCode;
   friend class RawFunction;
@@ -1100,6 +1105,7 @@
   friend class SkippedCodeFunctions;
   friend class Function;
   friend class InstructionsReader;
+  friend class InstructionsWriter;
 };
 
 
diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
index 051855f..7f20153 100644
--- a/runtime/vm/raw_object_snapshot.cc
+++ b/runtime/vm/raw_object_snapshot.cc
@@ -654,7 +654,7 @@
          func.raw()->to_snapshot());
     READ_OBJECT_FIELDS(func,
                        func.raw()->from(), toobj,
-                       kAsReference);
+                       kAsInlinedObject);
     if (!reader->snapshot_code()) {
       // Initialize all fields that are not part of the snapshot.
       if (!is_optimized) {
@@ -662,7 +662,11 @@
       }
       func.ClearCode();
     } else {
-      // TODO(rmacnak): Fix entry_point_.
+      // Fix entry point.
+      (*reader->CodeHandle()) = func.CurrentCode();
+      uword new_entry = (*reader->CodeHandle()).EntryPoint();
+      ASSERT(Dart::vm_isolate()->heap()->CodeContains(new_entry));
+      func.StoreNonPointer(&func.raw_ptr()->entry_point_, new_entry);
     }
     return func.raw();
   } else {
@@ -701,7 +705,7 @@
   writer->Write<bool>(is_in_fullsnapshot);
 
   if (kind == Snapshot::kFull || !is_in_fullsnapshot) {
-    bool is_optimized = Code::IsOptimized(ptr()->instructions_->ptr()->code_);
+    bool is_optimized = Code::IsOptimized(ptr()->code_);
 
     // Write out all the non object fields.
     writer->Write<int32_t>(ptr()->token_pos_);
@@ -722,7 +726,7 @@
     RawObject** toobj =
         writer->snapshot_code() ? to() :
         (is_optimized ? to_optimized_snapshot() : to_snapshot());
-    SnapshotWriterVisitor visitor(writer);
+    SnapshotWriterVisitor visitor(writer, kAsInlinedObject);
     visitor.VisitPointers(from(), toobj);
   } else {
     writer->WriteFunctionId(this, owner_is_class);
@@ -1191,16 +1195,17 @@
 
   result.set_compile_timestamp(reader->Read<int64_t>());
   result.set_state_bits(reader->Read<int32_t>());
-  result.set_entry_patch_pc_offset(reader->Read<int32_t>());
-  result.set_patch_code_pc_offset(reader->Read<int32_t>());
   result.set_lazy_deopt_pc_offset(reader->Read<int32_t>());
 
   // Set all the object fields.
   READ_OBJECT_FIELDS(result,
                      result.raw()->from(), result.raw()->to(),
-                     kAsReference);
+                     kAsInlinedObject);
 
-  // TODO(rmacnak): Fix entry_point_.
+  // 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);
 
   return result.raw();
 }
@@ -1229,12 +1234,10 @@
   // Write out all the non object fields.
   writer->Write<int64_t>(ptr()->compile_timestamp_);
   writer->Write<int32_t>(ptr()->state_bits_);
-  writer->Write<int32_t>(ptr()->entry_patch_pc_offset_);
-  writer->Write<int32_t>(ptr()->patch_code_pc_offset_);
   writer->Write<int32_t>(ptr()->lazy_deopt_pc_offset_);
 
   // Write out all the object pointer fields.
-  SnapshotWriterVisitor visitor(writer);
+  SnapshotWriterVisitor visitor(writer, kAsInlinedObject);
   visitor.VisitPointers(from(), to());
 
   writer->SetInstructionsCode(ptr()->instructions_, this);
@@ -1255,12 +1258,6 @@
                                reader->GetInstructionsAt(offset, full_tags));
   reader->AddBackRef(object_id, &result, kIsDeserialized);
 
-  {
-    // TODO(rmacnak): Drop after calling convention change.
-    Code::CheckedHandle(reader->ReadObjectImpl(kAsReference));
-    ObjectPool::CheckedHandle(reader->ReadObjectImpl(kAsReference));
-  }
-
   return result.raw();
 }
 
@@ -1271,28 +1268,19 @@
   ASSERT(writer->snapshot_code());
   ASSERT(kind == Snapshot::kFull);
 
-  {
-    // TODO(rmacnak): Drop after calling convention change.
-    writer->WriteInlinedObjectHeader(object_id);
-    writer->WriteVMIsolateObject(kInstructionsCid);
-    writer->WriteTags(writer->GetObjectTags(this));
-  }
+  writer->WriteInlinedObjectHeader(object_id);
+  writer->WriteVMIsolateObject(kInstructionsCid);
+  writer->WriteTags(writer->GetObjectTags(this));
 
-  writer->Write<intptr_t>(writer->GetObjectTags(this));  // For sanity check.
+  // 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);
 
-  // Temporarily restore the object header for writing to the text section.
-  // TODO(asiva): Don't mutate object headers during serialization.
-  uword object_tags = writer->GetObjectTags(this);
-  uword snapshot_tags = ptr()->tags_;
-  ptr()->tags_ = object_tags;
   writer->Write<int32_t>(writer->GetInstructionsId(this));
-  ptr()->tags_ = snapshot_tags;
-
-  {
-    // TODO(rmacnak): Drop after calling convention change.
-    writer->WriteObjectImpl(ptr()->code_, kAsReference);
-    writer->WriteObjectImpl(ptr()->object_pool_, kAsReference);
-  }
 }
 
 
@@ -1330,20 +1318,10 @@
         result.SetRawValueAt(i, raw_value);
         break;
       }
-      case ObjectPool::kExternalLabel: {
-        // TODO(rmacnak): Relocate.
-        intptr_t raw_value = reader->Read<intptr_t>();
-        result.SetRawValueAt(i, raw_value);
-        break;
-      }
       case ObjectPool::kNativeEntry: {
         // Read nothing. Initialize with the lazy link entry.
-        uword entry = reinterpret_cast<uword>(&NativeEntry::LinkNativeCall);
-#if defined(USING_SIMULATOR)
-        entry = Simulator::RedirectExternalReference(
-            entry, Simulator::kBootstrapNativeCall, NativeEntry::kNumArguments);
-#endif
-        result.SetRawValueAt(i, entry);
+        uword new_entry = NativeEntry::LinkNativeCallEntry();
+        result.SetRawValueAt(i, static_cast<intptr_t>(new_entry));
         break;
       }
       default:
@@ -1379,19 +1357,18 @@
     writer->Write<int8_t>(entry_type);
     Entry& entry = ptr()->data()[i];
     switch (entry_type) {
-      case ObjectPool::kTaggedObject:
+      case ObjectPool::kTaggedObject: {
         writer->WriteObjectImpl(entry.raw_obj_, kAsReference);
         break;
-      case ObjectPool::kImmediate:
+      }
+      case ObjectPool::kImmediate: {
         writer->Write<intptr_t>(entry.raw_value_);
         break;
-      case ObjectPool::kExternalLabel:
-        // TODO(rmacnak): Write symbolically.
-        writer->Write<intptr_t>(entry.raw_value_);
-        break;
-      case ObjectPool::kNativeEntry:
+      }
+      case ObjectPool::kNativeEntry: {
         // Write nothing. Will initialize with the lazy link entry.
         break;
+      }
       default:
         UNREACHABLE();
     }
diff --git a/runtime/vm/runtime_entry_list.h b/runtime/vm/runtime_entry_list.h
index acdb5bf..e44d0d4 100644
--- a/runtime/vm/runtime_entry_list.h
+++ b/runtime/vm/runtime_entry_list.h
@@ -46,7 +46,7 @@
 
 #define LEAF_RUNTIME_ENTRY_LIST(V)                                             \
   V(void, PrintStopMessage, const char*)                                       \
-  V(intptr_t, DeoptimizeCopyFrame, uword)                                      \
+  V(intptr_t, DeoptimizeCopyFrame, uword, uword)                               \
   V(void, DeoptimizeFillFrame, uword)                                          \
   V(void, StoreBufferBlockProcess, Thread*)                                    \
   V(intptr_t, BigintCompare, RawBigint*, RawBigint*)                           \
diff --git a/runtime/vm/scavenger.cc b/runtime/vm/scavenger.cc
index fd1256e..e223803 100644
--- a/runtime/vm/scavenger.cc
+++ b/runtime/vm/scavenger.cc
@@ -526,7 +526,8 @@
       raw_object->VisitPointers(visitor);
     }
     pending->Reset();
-    isolate->store_buffer()->PushBlock(pending);
+    // Return the emptied block for recycling (no need to check threshold).
+    isolate->store_buffer()->PushBlock(pending, StoreBuffer::kIgnoreThreshold);
     pending = next;
   }
   heap_->RecordData(kStoreBufferEntries, total_count);
diff --git a/runtime/vm/service/running_isolates.dart b/runtime/vm/service/running_isolates.dart
index 48ac1f5..b10128c 100644
--- a/runtime/vm/service/running_isolates.dart
+++ b/runtime/vm/service/running_isolates.dart
@@ -47,8 +47,14 @@
     }
     var isolate = isolates[isolateId];
     if (isolate == null) {
-      message.setErrorResponse(
-          kInvalidParams, "invalid 'isolateId' parameter: $isolateParam");
+      // There is some chance that this isolate may have lived before,
+      // so return a sentinel rather than an error.
+      var result = {
+        'type' : 'Sentinel',
+        'kind' : 'Collected',
+        'valueAsString' : '<collected>',
+      };
+      message.setResponse(encodeResult(message, result));
       return message.response;
     }
     return isolate.route(message);
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index b390460..5aeab86 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -478,18 +478,21 @@
 ### getIsolate
 
 ```
-Isolate getIsolate(string isolateId)
+Isolate|Sentinel getIsolate(string isolateId)
 ```
 
 The _getIsolate_ RPC is used to lookup an _Isolate_ object by its _id_.
 
+If _isolateId_ refers to an isolate which has exited, then the
+_Collected_ [Sentinel](#sentinel) is returned.
+
 See [Isolate](#isolate).
 
 ### getObject
 
 ```
-Object|Sentinel  getObject(string isolateId,
-                           string objectId)
+Object|Sentinel getObject(string isolateId,
+                          string objectId)
 ```
 
 The _getObject_ RPC is used to lookup an _object_ from some isolate by
@@ -2113,7 +2116,7 @@
 ------- | --------
 1.0 draft 1 | initial revision
 1.1 | Describe protocol version 2.0.
-1.2 | Describe protocol version 3.0.  Added UnresolvedSourceLocation.
+1.2 | Describe protocol version 3.0.  Added UnresolvedSourceLocation.  Added Sentinel return to getIsolate.
 
 
 [discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observatory-discuss
diff --git a/runtime/vm/service/vmservice.dart b/runtime/vm/service/vmservice.dart
index f2210c5..3c66673 100644
--- a/runtime/vm/service/vmservice.dart
+++ b/runtime/vm/service/vmservice.dart
@@ -51,6 +51,16 @@
   return JSON.encode(response);
 }
 
+String encodeResult(Message message, Map result) {
+  var response = {
+    'jsonrpc': '2.0',
+    'id' : message.serial,
+    'result' : result,
+  };
+  return JSON.encode(response);
+}
+
+
 class VMService extends MessageRouter {
   static VMService _instance;
 
@@ -174,15 +184,6 @@
     message.setResponse(JSON.encode(result));
   }
 
-  String _encodeResult(Message message, Map result) {
-    var response = {
-      'jsonrpc': '2.0',
-      'id' : message.serial,
-      'result' : result,
-    };
-    return JSON.encode(response);
-  }
-
   bool _isAnyClientSubscribed(String streamId) {
     for (var client in clients) {
       if (client.streams.contains(streamId)) {
@@ -209,7 +210,7 @@
     client.streams.add(streamId);
 
     var result = { 'type' : 'Success' };
-    return _encodeResult(message, result);
+    return encodeResult(message, result);
   }
 
   Future<String> _streamCancel(Message message) async {
@@ -225,7 +226,7 @@
     }
 
     var result = { 'type' : 'Success' };
-    return _encodeResult(message, result);
+    return encodeResult(message, result);
   }
 
   // TODO(johnmccutchan): Turn this into a command line tool that uses the
@@ -283,7 +284,7 @@
     }
 
     // Encode the entire crash dump.
-    return _encodeResult(message, responses);
+    return encodeResult(message, responses);
   }
 
   Future<String> route(Message message) {
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc
index decc5a7..515d5a5 100644
--- a/runtime/vm/snapshot.cc
+++ b/runtime/vm/snapshot.cc
@@ -1179,8 +1179,12 @@
 
 
 int32_t InstructionsWriter::GetOffsetFor(RawInstructions* instructions) {
+  // Can't use instructions->Size() because the header was mutated by the
+  // snapshot writer.
+  intptr_t heap_size =
+      Instructions::InstanceSize(instructions->ptr()->size_);
   intptr_t offset = next_offset_;
-  next_offset_ += instructions->Size();
+  next_offset_ += heap_size;
   instructions_.Add(InstructionsData(instructions));
   return offset;
 }
@@ -1212,9 +1216,18 @@
 
   stream_.Print(".text\n");
   stream_.Print(".globl _kInstructionsSnapshot\n");
-  stream_.Print(".balign %" Pd ", 0\n", OS::PreferredCodeAlignment());
+  stream_.Print(".balign %" Pd ", 0\n", OS::kMaxPreferredCodeAlignment);
   stream_.Print("_kInstructionsSnapshot:\n");
 
+  // This head also provides the gap to make the instructions snapshot
+  // look like a HeapPage.
+  intptr_t instructions_length = next_offset_;
+  WriteWordLiteral(instructions_length);
+  intptr_t header_words = InstructionsSnapshot::kHeaderSize / sizeof(uword);
+  for (intptr_t i = 1; i < header_words; i++) {
+    WriteWordLiteral(0);
+  }
+
   Object& owner = Object::Handle(Z);
   String& str = String::Handle(Z);
 
@@ -1227,16 +1240,25 @@
     {
       // 1. Write from the header to the entry point.
       NoSafepointScope no_safepoint;
-      uword beginning = reinterpret_cast<uword>(insns.raw()) - kHeapObjectTag;
+
+      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)));
 
-      for (uint64_t* cursor = reinterpret_cast<uint64_t*>(beginning);
-           cursor < reinterpret_cast<uint64_t*>(entry);
+      // 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++) {
-        stream_.Print(".quad 0x%0.16" Px64 "\n", *cursor);
+        WriteWordLiteral(*cursor);
       }
     }
 
@@ -1269,10 +1291,10 @@
       ASSERT(Utils::IsAligned(entry, sizeof(uint64_t)));
       ASSERT(Utils::IsAligned(end, sizeof(uint64_t)));
 
-      for (uint64_t* cursor = reinterpret_cast<uint64_t*>(entry);
-           cursor < reinterpret_cast<uint64_t*>(end);
+      for (uword* cursor = reinterpret_cast<uword*>(entry);
+           cursor < reinterpret_cast<uword*>(end);
            cursor++) {
-        stream_.Print(".quad 0x%0.16" Px64 "\n", *cursor);
+        WriteWordLiteral(*cursor);
       }
     }
   }
@@ -1294,9 +1316,9 @@
            actual_tags);
   }
 
-  // TODO(rmacnak): The above contains stale pointers to a Code and an
-  // ObjectPool. Return the actual result after calling convention change.
-  return Instructions::null();
+  ASSERT(result->IsMarked());
+
+  return result;
 }
 
 
@@ -1533,7 +1555,7 @@
         i, *(backrefs->At(i).reference()));
   }
   ResetBackwardReferenceTable();
-  Object::set_instructions_snapshot_buffer(instructions_buffer_);
+  Dart::set_instructions_snapshot_buffer(instructions_buffer_);
 }
 
 
@@ -2646,7 +2668,9 @@
 
 
 bool SnapshotWriter::AllowObjectsInDartLibrary(RawLibrary* library) {
-  return library == object_store()->typed_data_library();
+  return (library == object_store()->collection_library() ||
+          library == object_store()->core_library() ||
+          library == object_store()->typed_data_library());
 }
 
 
diff --git a/runtime/vm/snapshot.h b/runtime/vm/snapshot.h
index a23e692..4623e9d 100644
--- a/runtime/vm/snapshot.h
+++ b/runtime/vm/snapshot.h
@@ -196,6 +196,32 @@
 };
 
 
+class InstructionsSnapshot : ValueObject {
+ public:
+  explicit InstructionsSnapshot(const void* raw_memory)
+    : raw_memory_(raw_memory) {
+    ASSERT(Utils::IsAligned(raw_memory, OS::kMaxPreferredCodeAlignment));
+  }
+
+  void* instructions_start() {
+    return reinterpret_cast<void*>(
+        reinterpret_cast<uword>(raw_memory_) + kHeaderSize);
+  }
+
+  uword instructions_size() {
+    uword snapshot_size = *reinterpret_cast<const uword*>(raw_memory_);
+    return snapshot_size - kHeaderSize;
+  }
+
+  static const intptr_t kHeaderSize = OS::kMaxPreferredCodeAlignment;
+
+ private:
+  const void* raw_memory_;  // The symbol kInstructionsSnapshot.
+
+  DISALLOW_COPY_AND_ASSIGN(InstructionsSnapshot);
+};
+
+
 class BaseReader {
  public:
   BaseReader(const uint8_t* buffer, intptr_t size) : stream_(buffer, size) {}
@@ -786,7 +812,7 @@
                      ReAlloc alloc,
                      intptr_t initial_size)
     : stream_(buffer, alloc, initial_size),
-      next_offset_(0),
+      next_offset_(InstructionsSnapshot::kHeaderSize),
       instructions_() {
     ASSERT(buffer != NULL);
     ASSERT(alloc != NULL);
@@ -824,6 +850,14 @@
     };
   };
 
+  void WriteWordLiteral(uword value) {
+    // Padding is helpful for comparing the .S with --disassemble.
+#if defined(ARCH_IS_64_BIT)
+    stream_.Print(".quad 0x%0.16" Px "\n", value);
+#else
+    stream_.Print(".long 0x%0.8" Px "\n", value);
+#endif
+  }
 
   WriteStream stream_;
   intptr_t next_offset_;
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index bf5a05d..ff5f8a3 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -22,9 +22,15 @@
 
 bool StackFrame::IsStubFrame() const {
   ASSERT(!(IsEntryFrame() || IsExitFrame()));
-  uword saved_pc =
-      *(reinterpret_cast<uword*>(fp() + (kPcMarkerSlotFromFp * kWordSize)));
-  return (saved_pc == 0);
+#if !defined(TARGET_OS_WINDOWS)
+  // On Windows, the profiler calls this from a separate thread where
+  // Thread::Current() is NULL, so we cannot create a NoSafepointScope.
+  NoSafepointScope no_safepoint;
+#endif
+  RawCode* code = GetCodeObject();
+  intptr_t cid = code->ptr()->owner_->GetClassId();
+  ASSERT(cid == kNullCid || cid == kClassCid || cid == kFunctionCid);
+  return cid == kNullCid || cid == kClassCid;
 }
 
 
@@ -173,29 +179,27 @@
   // We add a no gc scope to ensure that the code below does not trigger
   // a GC as we are handling raw object references here. It is possible
   // that the code is called while a GC is in progress, that is ok.
+#if !defined(TARGET_OS_WINDOWS)
+  // On Windows, the profiler calls this from a separate thread where
+  // Thread::Current() is NULL, so we cannot create a NoSafepointScope.
   NoSafepointScope no_safepoint;
+#endif
   RawCode* code = GetCodeObject();
-  ASSERT(code == Code::null() || code->ptr()->owner_ != Function::null());
-  return code;
+  if ((code != Code::null()) &&
+      (code->ptr()->owner_->GetClassId() == kFunctionCid)) {
+    return code;
+  }
+  return Code::null();
 }
 
 
 RawCode* StackFrame::GetCodeObject() const {
-  // We add a no gc scope to ensure that the code below does not trigger
-  // a GC as we are handling raw object references here. It is possible
-  // that the code is called while a GC is in progress, that is ok.
-  NoSafepointScope no_safepoint;
   const uword pc_marker =
       *(reinterpret_cast<uword*>(fp() + (kPcMarkerSlotFromFp * kWordSize)));
-  if (pc_marker != 0) {
-    const uword entry_point =
-        (pc_marker - Assembler::EntryPointToPcMarkerOffset());
-    RawInstructions* instr = Instructions::FromEntryPoint(entry_point);
-    if (instr != Instructions::null()) {
-      return instr->ptr()->code_;
-    }
-  }
-  return Code::null();
+  ASSERT(pc_marker != 0);
+  ASSERT(reinterpret_cast<RawObject*>(pc_marker)->GetClassId() == kCodeCid ||
+         reinterpret_cast<RawObject*>(pc_marker) == Object::null());
+  return reinterpret_cast<RawCode*>(pc_marker);
 }
 
 
diff --git a/runtime/vm/stack_frame.h b/runtime/vm/stack_frame.h
index 94ba9d3..5dd0f14 100644
--- a/runtime/vm/stack_frame.h
+++ b/runtime/vm/stack_frame.h
@@ -50,7 +50,12 @@
   }
 
   void set_pc(uword value) {
-    *reinterpret_cast<uword*>(sp_ + (kSavedPcSlotFromSp * kWordSize)) = value;
+    *reinterpret_cast<uword*>(sp() + (kSavedPcSlotFromSp * kWordSize)) = value;
+  }
+
+  void set_pc_marker(RawCode* code) {
+    *reinterpret_cast<RawCode**>(fp() + (kPcMarkerSlotFromFp * kWordSize)) =
+        code;
   }
 
   // Visit objects in the frame.
diff --git a/runtime/vm/stack_frame_arm.h b/runtime/vm/stack_frame_arm.h
index e391334..8f22815 100644
--- a/runtime/vm/stack_frame_arm.h
+++ b/runtime/vm/stack_frame_arm.h
@@ -12,16 +12,16 @@
                |                    | <- TOS
 Callee frame   | ...                |
                | saved PP           |    (PP of current frame)
+               | code object        |
                | saved FP           |    (FP of current frame)
                | saved LR           |    (PC of current frame)
-               | callee's PC marker |
                +--------------------+
 Current frame  | ...               T| <- SP of current frame
                | first local       T|
                | caller's PP       T|
+               | code object       T|    (current frame's code object)
                | caller's FP        | <- FP of current frame
                | caller's LR        |    (PC of caller frame)
-               | PC marker          |    (current frame's code entry + offset)
                +--------------------+
 Caller frame   | last parameter     | <- SP of caller frame
                |  ...               |
@@ -30,20 +30,20 @@
 */
 
 static const int kDartFrameFixedSize = 4;  // PP, FP, LR, PC marker.
-static const int kSavedPcSlotFromSp = -2;
+static const int kSavedPcSlotFromSp = -1;
 
 static const int kFirstObjectSlotFromFp = -1;  // Used by GC to traverse stack.
 
-static const int kFirstLocalSlotFromFp = -2;
-static const int kSavedCallerPpSlotFromFp = -1;
+static const int kFirstLocalSlotFromFp = -3;
+static const int kSavedCallerPpSlotFromFp = -2;
+static const int kPcMarkerSlotFromFp = -1;
 static const int kSavedCallerFpSlotFromFp = 0;
 static const int kSavedCallerPcSlotFromFp = 1;
-static const int kPcMarkerSlotFromFp = 2;
-static const int kParamEndSlotFromFp = 2;  // One slot past last parameter.
-static const int kCallerSpSlotFromFp = 3;
+static const int kParamEndSlotFromFp = 1;  // One slot past last parameter.
+static const int kCallerSpSlotFromFp = 2;
 
 // Entry and exit frame layout.
-static const int kExitLinkSlotFromEntryFp = -26;
+static const int kExitLinkSlotFromEntryFp = -27;
 
 }  // namespace dart
 
diff --git a/runtime/vm/stack_frame_arm64.h b/runtime/vm/stack_frame_arm64.h
index f252897..6733724 100644
--- a/runtime/vm/stack_frame_arm64.h
+++ b/runtime/vm/stack_frame_arm64.h
@@ -11,14 +11,14 @@
                |                    | <- TOS
 Callee frame   | ...                |
                | saved PP           |
-               | callee's PC marker |
+               | code object        |
                | saved FP           |    (FP of current frame)
                | saved PC           |    (PC of current frame)
                +--------------------+
 Current frame  | ...               T| <- SP of current frame
                | first local       T|
                | caller's PP       T|
-               | PC marker          |    (current frame's code entry + offset)
+               | code object       T|    (current frame's code object)
                | caller's FP        | <- FP of current frame
                | caller's LR        |    (PC of caller frame)
                +--------------------+
@@ -31,7 +31,7 @@
 static const int kDartFrameFixedSize = 4;  // PP, FP, LR, PC marker.
 static const int kSavedPcSlotFromSp = -1;
 
-static const int kFirstObjectSlotFromFp = -2;  // Used by GC to traverse stack.
+static const int kFirstObjectSlotFromFp = -1;  // Used by GC to traverse stack.
 
 static const int kFirstLocalSlotFromFp = -3;
 static const int kSavedCallerPpSlotFromFp = -2;
@@ -44,7 +44,7 @@
 static const int kSavedAboveReturnAddress = 3;  // Saved above return address.
 
 // Entry and exit frame layout.
-static const int kExitLinkSlotFromEntryFp = -21;
+static const int kExitLinkSlotFromEntryFp = -22;
 
 }  // namespace dart
 
diff --git a/runtime/vm/stack_frame_ia32.h b/runtime/vm/stack_frame_ia32.h
index f1a379b..a331aef 100644
--- a/runtime/vm/stack_frame_ia32.h
+++ b/runtime/vm/stack_frame_ia32.h
@@ -16,7 +16,7 @@
                +--------------------+
 Current frame  | ...               T| <- ESP of current frame
                | first local       T|
-               | PC marker          |    (current frame's code entry + offset)
+               | code object       T|    (current frame's code object)
                | caller's EBP       | <- EBP of current frame
                | caller's ret addr  |    (PC of caller frame)
                +--------------------+
@@ -29,7 +29,7 @@
 static const int kDartFrameFixedSize = 3;  // PC marker, EBP, PC.
 static const int kSavedPcSlotFromSp = -1;
 
-static const int kFirstObjectSlotFromFp = -2;  // Used by GC to traverse stack.
+static const int kFirstObjectSlotFromFp = -1;  // Used by GC to traverse stack.
 
 static const int kFirstLocalSlotFromFp = -2;
 static const int kPcMarkerSlotFromFp = -1;
@@ -42,7 +42,7 @@
 static const int kSavedCallerPpSlotFromFp = kSavedCallerFpSlotFromFp;
 
 // Entry and exit frame layout.
-static const int kExitLinkSlotFromEntryFp = -6;
+static const int kExitLinkSlotFromEntryFp = -7;
 
 }  // namespace dart
 
diff --git a/runtime/vm/stack_frame_mips.h b/runtime/vm/stack_frame_mips.h
index 142ed61..3f7c7e5 100644
--- a/runtime/vm/stack_frame_mips.h
+++ b/runtime/vm/stack_frame_mips.h
@@ -17,9 +17,9 @@
 Current frame  | ...               T| <- SP of current frame
                | first local       T|
                | caller's PP       T|
+               | CODE_REG          T|    (current frame's code object)
                | caller's FP        | <- FP of current frame
                | caller's RA        |    (PC of caller frame)
-               | PC marker          |    (current frame's code entry + offset)
                +--------------------+
 Caller frame   | last parameter     | <- SP of caller frame
                |  ...               |
@@ -28,20 +28,20 @@
 */
 
 static const int kDartFrameFixedSize = 4;  // PP, FP, RA, PC marker.
-static const int kSavedPcSlotFromSp = -2;
+static const int kSavedPcSlotFromSp = -1;
 
 static const int kFirstObjectSlotFromFp = -1;  // Used by GC to traverse stack.
 
-static const int kFirstLocalSlotFromFp = -2;
-static const int kSavedCallerPpSlotFromFp = -1;
+static const int kFirstLocalSlotFromFp = -3;
+static const int kSavedCallerPpSlotFromFp = -2;
+static const int kPcMarkerSlotFromFp = -1;
 static const int kSavedCallerFpSlotFromFp = 0;
 static const int kSavedCallerPcSlotFromFp = 1;
-static const int kPcMarkerSlotFromFp = 2;
-static const int kParamEndSlotFromFp = 2;  // One slot past last parameter.
-static const int kCallerSpSlotFromFp = 3;
+static const int kParamEndSlotFromFp = 1;  // One slot past last parameter.
+static const int kCallerSpSlotFromFp = 2;
 
 // Entry and exit frame layout.
-static const int kExitLinkSlotFromEntryFp = -23;
+static const int kExitLinkSlotFromEntryFp = -24;
 
 }  // namespace dart
 
diff --git a/runtime/vm/stack_frame_x64.h b/runtime/vm/stack_frame_x64.h
index 3d87d27..8fc20a4 100644
--- a/runtime/vm/stack_frame_x64.h
+++ b/runtime/vm/stack_frame_x64.h
@@ -12,14 +12,14 @@
                |                    | <- TOS
 Callee frame   | ...                |
                | saved PP           |
-               | callee's PC marker |
+               | code object        |
                | saved RBP          |    (RBP of current frame)
                | saved PC           |    (PC of current frame)
                +--------------------+
 Current frame  | ...               T| <- RSP of current frame
                | first local       T|
                | caller's PP       T|
-               | PC marker          |    (current frame's code entry + offset)
+               | code object       T|    (current frame's code object)
                | caller's RBP       | <- RBP of current frame
                | caller's ret addr  |    (PC of caller frame)
                +--------------------+
@@ -32,7 +32,7 @@
 static const int kDartFrameFixedSize = 4;  // PC marker, RBP, PP, PC.
 static const int kSavedPcSlotFromSp = -1;
 
-static const int kFirstObjectSlotFromFp = -2;  // Used by GC to traverse stack.
+static const int kFirstObjectSlotFromFp = -1;  // Used by GC to traverse stack.
 
 static const int kFirstLocalSlotFromFp = -3;
 static const int kSavedCallerPpSlotFromFp = -2;
@@ -46,9 +46,9 @@
 
 // Entry and exit frame layout.
 #if defined(_WIN64)
-static const int kExitLinkSlotFromEntryFp = -31;
+static const int kExitLinkSlotFromEntryFp = -32;
 #else
-static const int kExitLinkSlotFromEntryFp = -9;
+static const int kExitLinkSlotFromEntryFp = -10;
 #endif  // defined(_WIN64)
 
 }  // namespace dart
diff --git a/runtime/vm/store_buffer.cc b/runtime/vm/store_buffer.cc
index ca1ff21..cc0a816 100644
--- a/runtime/vm/store_buffer.cc
+++ b/runtime/vm/store_buffer.cc
@@ -11,49 +11,56 @@
 namespace dart {
 
 DEFINE_LEAF_RUNTIME_ENTRY(void, StoreBufferBlockProcess, 1, Thread* thread) {
-  thread->StoreBufferBlockProcess(true);
+  thread->StoreBufferBlockProcess(StoreBuffer::kCheckThreshold);
 }
 END_LEAF_RUNTIME_ENTRY
 
-
-StoreBuffer::List* StoreBuffer::global_empty_ = NULL;
-Mutex* StoreBuffer::global_mutex_ = NULL;
+template<int BlockSize>
+typename BlockStack<BlockSize>::List*
+BlockStack<BlockSize>::global_empty_ = NULL;
+template<int BlockSize>
+Mutex* BlockStack<BlockSize>::global_mutex_ = NULL;
 
 
-void StoreBuffer::InitOnce() {
+template<int BlockSize>
+void BlockStack<BlockSize>::InitOnce() {
   global_empty_ = new List();
   global_mutex_ = new Mutex();
 }
 
 
-void StoreBuffer::ShutDown() {
+template<int BlockSize>
+void BlockStack<BlockSize>::ShutDown() {
   delete global_empty_;
   delete global_mutex_;
 }
 
 
-StoreBuffer::StoreBuffer() : mutex_(new Mutex()) {
+template<int BlockSize>
+BlockStack<BlockSize>::BlockStack() : mutex_(new Mutex()) {
 }
 
 
-StoreBuffer::~StoreBuffer() {
+template<int BlockSize>
+BlockStack<BlockSize>::~BlockStack() {
   Reset();
   delete mutex_;
 }
 
 
-void StoreBuffer::Reset() {
+template<int BlockSize>
+void BlockStack<BlockSize>::Reset() {
   MutexLocker local_mutex_locker(mutex_);
   {
     // Empty all blocks and move them to the global cache.
     MutexLocker global_mutex_locker(global_mutex_);
     while (!full_.IsEmpty()) {
-      StoreBufferBlock* block = full_.Pop();
+      Block* block = full_.Pop();
       block->Reset();
       global_empty_->Push(block);
     }
     while (!partial_.IsEmpty()) {
-      StoreBufferBlock* block = partial_.Pop();
+      Block* block = partial_.Pop();
       block->Reset();
       global_empty_->Push(block);
     }
@@ -62,7 +69,8 @@
 }
 
 
-StoreBufferBlock* StoreBuffer::Blocks() {
+template<int BlockSize>
+typename BlockStack<BlockSize>::Block* BlockStack<BlockSize>::Blocks() {
   MutexLocker ml(mutex_);
   while (!partial_.IsEmpty()) {
     full_.Push(partial_.Pop());
@@ -71,7 +79,8 @@
 }
 
 
-void StoreBuffer::PushBlock(StoreBufferBlock* block, bool check_threshold) {
+template<int BlockSize>
+void BlockStack<BlockSize>::PushBlockImpl(Block* block) {
   ASSERT(block->next() == NULL);  // Should be just a single block.
   if (block->IsFull()) {
     MutexLocker ml(mutex_);
@@ -84,7 +93,12 @@
     MutexLocker ml(mutex_);
     partial_.Push(block);
   }
-  if (check_threshold && Overflowed()) {
+}
+
+
+void StoreBuffer::PushBlock(Block* block, ThresholdPolicy policy) {
+  BlockStack<Block::kSize>::PushBlockImpl(block);
+  if ((policy == kCheckThreshold) && Overflowed()) {
     MutexLocker ml(mutex_);
     Isolate* isolate = Isolate::Current();
     // Sanity check: it makes no sense to schedule the GC in another isolate.
@@ -96,7 +110,9 @@
 }
 
 
-StoreBufferBlock* StoreBuffer::PopNonFullBlock() {
+template<int BlockSize>
+typename BlockStack<BlockSize>::Block*
+BlockStack<BlockSize>::PopNonFullBlock() {
   {
     MutexLocker ml(mutex_);
     if (!partial_.IsEmpty()) {
@@ -107,18 +123,21 @@
 }
 
 
-StoreBufferBlock* StoreBuffer::PopEmptyBlock() {
+template<int BlockSize>
+typename BlockStack<BlockSize>::Block* BlockStack<BlockSize>::PopEmptyBlock() {
   {
     MutexLocker ml(global_mutex_);
     if (!global_empty_->IsEmpty()) {
       return global_empty_->Pop();
     }
   }
-  return new StoreBufferBlock();
+  return new Block();
 }
 
 
-StoreBufferBlock* StoreBuffer::PopNonEmptyBlock() {
+template<int BlockSize>
+typename BlockStack<BlockSize>::Block*
+BlockStack<BlockSize>::PopNonEmptyBlock() {
   MutexLocker ml(mutex_);
   if (!full_.IsEmpty()) {
     return full_.Pop();
@@ -130,21 +149,24 @@
 }
 
 
-bool StoreBuffer::IsEmpty() {
-  MutexLocker ml(global_mutex_);
+template<int BlockSize>
+bool BlockStack<BlockSize>::IsEmpty() {
+  MutexLocker ml(mutex_);
   return full_.IsEmpty() && partial_.IsEmpty();
 }
 
 
-StoreBuffer::List::~List() {
+template<int BlockSize>
+BlockStack<BlockSize>::List::~List() {
   while (!IsEmpty()) {
     delete Pop();
   }
 }
 
 
-StoreBufferBlock* StoreBuffer::List::Pop() {
-  StoreBufferBlock* result = head_;
+template<int BlockSize>
+typename BlockStack<BlockSize>::Block* BlockStack<BlockSize>::List::Pop() {
+  Block* result = head_;
   head_ = head_->next_;
   --length_;
   result->next_ = NULL;
@@ -152,15 +174,17 @@
 }
 
 
-StoreBufferBlock* StoreBuffer::List::PopAll() {
-  StoreBufferBlock* result = head_;
+template<int BlockSize>
+typename BlockStack<BlockSize>::Block* BlockStack<BlockSize>::List::PopAll() {
+  Block* result = head_;
   head_ = NULL;
   length_ = 0;
   return result;
 }
 
 
-void StoreBuffer::List::Push(StoreBufferBlock* block) {
+template<int BlockSize>
+void BlockStack<BlockSize>::List::Push(Block* block) {
   ASSERT(block->next_ == NULL);
   block->next_ = head_;
   head_ = block;
@@ -174,11 +198,16 @@
 }
 
 
-void StoreBuffer::TrimGlobalEmpty() {
+template<int BlockSize>
+void BlockStack<BlockSize>::TrimGlobalEmpty() {
   DEBUG_ASSERT(global_mutex_->IsOwnedByCurrentThread());
   while (global_empty_->length() > kMaxGlobalEmpty) {
     delete global_empty_->Pop();
   }
 }
 
+
+template class BlockStack<kStoreBufferBlockSize>;
+template class BlockStack<kMarkingStackBlockSize>;
+
 }  // namespace dart
diff --git a/runtime/vm/store_buffer.h b/runtime/vm/store_buffer.h
index d6fcb7d..36f17bc 100644
--- a/runtime/vm/store_buffer.h
+++ b/runtime/vm/store_buffer.h
@@ -16,17 +16,17 @@
 class RawObject;
 
 // A set of RawObject*. Must be emptied before destruction (using Pop/Reset).
-class StoreBufferBlock {
+template<int Size>
+class PointerBlock {
  public:
-  // Each full block contains kSize pointers.
-  static const int32_t kSize = 1024;
+  enum { kSize = Size };
 
   void Reset() {
     top_ = 0;
     next_ = NULL;
   }
 
-  StoreBufferBlock* next() const { return next_; }
+  PointerBlock<Size>* next() const { return next_; }
 
   intptr_t Count() const { return top_; }
   bool IsFull() const { return Count() == kSize; }
@@ -53,73 +53,74 @@
   }
 #endif  // TESTING
 
-  static intptr_t top_offset() { return OFFSET_OF(StoreBufferBlock, top_); }
+  static intptr_t top_offset() { return OFFSET_OF(PointerBlock<Size>, top_); }
   static intptr_t pointers_offset() {
-    return OFFSET_OF(StoreBufferBlock, pointers_);
+    return OFFSET_OF(PointerBlock<Size>, pointers_);
   }
 
  private:
-  StoreBufferBlock() : next_(NULL), top_(0) {}
-  ~StoreBufferBlock() {
+  PointerBlock() : next_(NULL), top_(0) {}
+  ~PointerBlock() {
     ASSERT(IsEmpty());  // Guard against unintentionally discarding pointers.
   }
 
-  StoreBufferBlock* next_;
+  PointerBlock<Size>* next_;
   int32_t top_;
   RawObject* pointers_[kSize];
 
-  friend class StoreBuffer;
+  template<int> friend class BlockStack;
 
-  DISALLOW_COPY_AND_ASSIGN(StoreBufferBlock);
+  DISALLOW_COPY_AND_ASSIGN(PointerBlock);
 };
 
 
-class StoreBuffer {
+// A synchronized collection of pointer blocks of a particular size.
+// This class is meant to be used as a base (note PushBlockImpl is protected).
+// The global list of cached empty blocks is currently per-size.
+template<int BlockSize>
+class BlockStack {
  public:
-  StoreBuffer();
-  ~StoreBuffer();
+  typedef PointerBlock<BlockSize> Block;
+
+  BlockStack();
+  ~BlockStack();
   static void InitOnce();
   static void ShutDown();
 
-  // Interrupt when crossing this threshold of non-empty blocks in the buffer.
-  static const intptr_t kMaxNonEmpty = 100;
-
-  // Adds and transfers ownership of the block to the buffer.
-  void PushBlock(StoreBufferBlock* block, bool check_threshold = true);
   // Partially filled blocks can be reused, and there is an "inifite" supply
   // of empty blocks (reused or newly allocated). In any case, the caller
   // takes ownership of the returned block.
-  StoreBufferBlock* PopNonFullBlock();
-  StoreBufferBlock* PopEmptyBlock();
-  StoreBufferBlock* PopNonEmptyBlock();
+  Block* PopNonFullBlock();
+  Block* PopEmptyBlock();
+  Block* PopNonEmptyBlock();
 
   // Pops and returns all non-empty blocks as a linked list (owned by caller).
-  StoreBufferBlock* Blocks();
+  Block* Blocks();
 
-  // Discards the contents of this store buffer.
+  // Discards the contents of all non-empty blocks.
   void Reset();
 
-  // Check whether non-empty blocks have exceeded kMaxNonEmpty.
-  bool Overflowed();
-
   bool IsEmpty();
 
- private:
+ protected:
   class List {
    public:
     List() : head_(NULL), length_(0) {}
     ~List();
-    void Push(StoreBufferBlock* block);
-    StoreBufferBlock* Pop();
+    void Push(Block* block);
+    Block* Pop();
     intptr_t length() const { return length_; }
     bool IsEmpty() const { return head_ == NULL; }
-    StoreBufferBlock* PopAll();
+    Block* PopAll();
    private:
-    StoreBufferBlock* head_;
+    Block* head_;
     intptr_t length_;
     DISALLOW_COPY_AND_ASSIGN(List);
   };
 
+  // Adds and transfers ownership of the block to the buffer.
+  void PushBlockImpl(Block* block);
+
   // If needed, trims the the global cache of empty blocks.
   static void TrimGlobalEmpty();
 
@@ -127,13 +128,51 @@
   List partial_;
   Mutex* mutex_;
 
+  // Note: This is shared on the basis of block size.
   static const intptr_t kMaxGlobalEmpty = 100;
   static List* global_empty_;
   static Mutex* global_mutex_;
 
-  DISALLOW_COPY_AND_ASSIGN(StoreBuffer);
+ private:
+  DISALLOW_COPY_AND_ASSIGN(BlockStack);
 };
 
+
+static const int kStoreBufferBlockSize = 1024;
+class StoreBuffer : public BlockStack<kStoreBufferBlockSize> {
+ public:
+  // Interrupt when crossing this threshold of non-empty blocks in the buffer.
+  static const intptr_t kMaxNonEmpty = 100;
+
+  enum ThresholdPolicy {
+    kCheckThreshold,
+    kIgnoreThreshold
+  };
+
+  // Adds and transfers ownership of the block to the buffer. Optionally
+  // checks the number of non-empty blocks for overflow, and schedules an
+  // interrupt on the current isolate if so.
+  void PushBlock(Block* block, ThresholdPolicy policy);
+
+  // Check whether non-empty blocks have exceeded kMaxNonEmpty (but takes no
+  // action).
+  bool Overflowed();
+};
+
+
+typedef StoreBuffer::Block StoreBufferBlock;
+
+
+static const int kMarkingStackBlockSize = 64;
+class MarkingStack : public BlockStack<kMarkingStackBlockSize> {
+ public:
+  // Adds and transfers ownership of the block to the buffer.
+  void PushBlock(Block* block) {
+    BlockStack<Block::kSize>::PushBlockImpl(block);
+  }
+};
+
+
 }  // namespace dart
 
 #endif  // VM_STORE_BUFFER_H_
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 65a4966..df7773d 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -104,10 +104,7 @@
   if (stub.IsNull()) {
     Assembler assembler;
     const char* name = cls.ToCString();
-    uword patch_code_offset = 0;
-    uword entry_patch_offset = 0;
-    StubCode::GenerateAllocationStubForClass(
-        &assembler, cls, &entry_patch_offset, &patch_code_offset);
+    StubCode::GenerateAllocationStubForClass(&assembler, cls);
     stub ^= Code::FinalizeCode(name, &assembler);
     stub.set_owner(cls);
     cls.set_allocation_stub(stub);
@@ -117,12 +114,9 @@
       DisassembleToStdout formatter;
       stub.Disassemble(&formatter);
       THR_Print("}\n");
-      const ObjectPool& object_pool = ObjectPool::Handle(
-          Instructions::Handle(stub.instructions()).object_pool());
+      const ObjectPool& object_pool = ObjectPool::Handle(stub.object_pool());
       object_pool.DebugPrint();
     }
-    stub.set_entry_patch_pc_offset(entry_patch_offset);
-    stub.set_patch_code_pc_offset(patch_code_offset);
   }
   return stub.raw();
 }
@@ -155,8 +149,7 @@
     DisassembleToStdout formatter;
     code.Disassemble(&formatter);
     THR_Print("}\n");
-    const ObjectPool& object_pool = ObjectPool::Handle(
-        Instructions::Handle(code.instructions()).object_pool());
+    const ObjectPool& object_pool = ObjectPool::Handle(code.object_pool());
     object_pool.DebugPrint();
   }
   return code.raw();
diff --git a/runtime/vm/stub_code.h b/runtime/vm/stub_code.h
index 3d3c016..e7da564 100644
--- a/runtime/vm/stub_code.h
+++ b/runtime/vm/stub_code.h
@@ -165,9 +165,8 @@
                            void (*GenerateStub)(Assembler* assembler));
 
   static void GenerateMegamorphicMissStub(Assembler* assembler);
-  static void GenerateAllocationStubForClass(
-      Assembler* assembler, const Class& cls,
-      uword* entry_patch_offset, uword* patch_code_pc_offset);
+  static void GenerateAllocationStubForClass(Assembler* assembler,
+                                             const Class& cls);
   static void GenerateNArgsCheckInlineCacheStub(
       Assembler* assembler,
       intptr_t num_args,
@@ -180,6 +179,12 @@
   static void GenerateOptimizedUsageCounterIncrement(Assembler* assembler);
 };
 
+
+enum DeoptStubKind {
+  kLazyDeopt,
+  kEagerDeopt
+};
+
 }  // namespace dart
 
 #endif  // VM_STUB_CODE_H_
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 9d2883b..6c6f283 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -42,12 +42,11 @@
   const intptr_t argc_tag_offset = NativeArguments::argc_tag_offset();
   const intptr_t argv_offset = NativeArguments::argv_offset();
   const intptr_t retval_offset = NativeArguments::retval_offset();
-  const intptr_t exitframe_last_param_slot_from_fp = 2;
 
   __ EnterStubFrame();
 
-  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << R9)) != 0);
-  __ LoadIsolate(R9);
+  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << R7)) != 0);
+  __ LoadIsolate(R7);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to Dart VM C++ code.
@@ -56,7 +55,7 @@
 #if defined(DEBUG)
   { Label ok;
     // Check that we are always entering from Dart code.
-    __ LoadFromOffset(kWord, R6, R9, Isolate::vm_tag_offset());
+    __ LoadFromOffset(kWord, R6, R7, Isolate::vm_tag_offset());
     __ CompareImmediate(R6, VMTag::kDartTagId);
     __ b(&ok, EQ);
     __ Stop("Not coming from Dart code.");
@@ -65,7 +64,7 @@
 #endif
 
   // Mark that the isolate is executing VM code.
-  __ StoreToOffset(kWord, R5, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R5, R7, Isolate::vm_tag_offset());
 
   // Reserve space for arguments and align frame before entering C++ world.
   // NativeArguments are passed in registers.
@@ -87,7 +86,7 @@
   ASSERT(argv_offset == 2 * kWordSize);
   __ add(R2, FP, Operand(R4, LSL, 2));  // Compute argv.
   // Set argv in NativeArguments.
-  __ AddImmediate(R2, exitframe_last_param_slot_from_fp * kWordSize);
+  __ AddImmediate(R2, kParamEndSlotFromFp * kWordSize);
 
   ASSERT(retval_offset == 3 * kWordSize);
   __ add(R3, R2, Operand(kWordSize));  // Retval is next to 1st argument.
@@ -97,7 +96,7 @@
 
   // Mark that the isolate is executing Dart code.
   __ LoadImmediate(R2, VMTag::kDartTagId);
-  __ StoreToOffset(kWord, R2, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R2, R7, Isolate::vm_tag_offset());
 
   // Reset exit frame information in Isolate structure.
   __ LoadImmediate(R2, 0);
@@ -141,8 +140,8 @@
 
   __ EnterStubFrame();
 
-  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << R9)) != 0);
-  __ LoadIsolate(R9);
+  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << R7)) != 0);
+  __ LoadIsolate(R7);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -151,7 +150,7 @@
 #if defined(DEBUG)
   { Label ok;
     // Check that we are always entering from Dart code.
-    __ LoadFromOffset(kWord, R6, R9, Isolate::vm_tag_offset());
+    __ LoadFromOffset(kWord, R6, R7, Isolate::vm_tag_offset());
     __ CompareImmediate(R6, VMTag::kDartTagId);
     __ b(&ok, EQ);
     __ Stop("Not coming from Dart code.");
@@ -160,7 +159,7 @@
 #endif
 
   // Mark that the isolate is executing Native code.
-  __ StoreToOffset(kWord, R5, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R5, R7, Isolate::vm_tag_offset());
 
   // Reserve space for the native arguments structure passed on the stack (the
   // outgoing pointer parameter to the native arguments structure is passed in
@@ -183,7 +182,8 @@
   // Set argv in NativeArguments: R2 already contains argv.
 
   ASSERT(retval_offset == 3 * kWordSize);
-  __ add(R3, FP, Operand(3 * kWordSize));  // Set retval in NativeArgs.
+  // Set retval in NativeArgs.
+  __ add(R3, FP, Operand(kCallerSpSlotFromFp * kWordSize));
 
   // Passing the structure by value as in runtime calls would require changing
   // Dart API for native functions.
@@ -192,20 +192,14 @@
   __ mov(R0, Operand(SP));  // Pass the pointer to the NativeArguments.
 
   __ mov(R1, Operand(R5));  // Pass the function entrypoint to call.
+
   // Call native function invocation wrapper or redirection via simulator.
-#if defined(USING_SIMULATOR)
-  uword entry = reinterpret_cast<uword>(NativeEntry::NativeCallWrapper);
-  entry = Simulator::RedirectExternalReference(
-      entry, Simulator::kNativeCall, NativeEntry::kNumCallWrapperArguments);
-  __ LoadImmediate(R2, entry);
-  __ blx(R2);
-#else
-  __ BranchLink(&NativeEntry::NativeCallWrapperLabel(), kNotPatchable);
-#endif
+  __ ldr(LR, Address(THR, Thread::native_call_wrapper_entry_point_offset()));
+  __ blx(LR);
 
   // Mark that the isolate is executing Dart code.
   __ LoadImmediate(R2, VMTag::kDartTagId);
-  __ StoreToOffset(kWord, R2, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R2, R7, Isolate::vm_tag_offset());
 
   // Reset exit frame information in Isolate structure.
   __ LoadImmediate(R2, 0);
@@ -230,8 +224,8 @@
 
   __ EnterStubFrame();
 
-  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << R9)) != 0);
-  __ LoadIsolate(R9);
+  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << R7)) != 0);
+  __ LoadIsolate(R7);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -240,7 +234,7 @@
 #if defined(DEBUG)
   { Label ok;
     // Check that we are always entering from Dart code.
-    __ LoadFromOffset(kWord, R6, R9, Isolate::vm_tag_offset());
+    __ LoadFromOffset(kWord, R6, R7, Isolate::vm_tag_offset());
     __ CompareImmediate(R6, VMTag::kDartTagId);
     __ b(&ok, EQ);
     __ Stop("Not coming from Dart code.");
@@ -249,7 +243,7 @@
 #endif
 
   // Mark that the isolate is executing Native code.
-  __ StoreToOffset(kWord, R5, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R5, R7, Isolate::vm_tag_offset());
 
   // Reserve space for the native arguments structure passed on the stack (the
   // outgoing pointer parameter to the native arguments structure is passed in
@@ -272,7 +266,8 @@
   // Set argv in NativeArguments: R2 already contains argv.
 
   ASSERT(retval_offset == 3 * kWordSize);
-  __ add(R3, FP, Operand(3 * kWordSize));  // Set retval in NativeArgs.
+  // Set retval in NativeArgs.
+  __ add(R3, FP, Operand(kCallerSpSlotFromFp * kWordSize));
 
   // Passing the structure by value as in runtime calls would require changing
   // Dart API for native functions.
@@ -285,7 +280,7 @@
 
   // Mark that the isolate is executing Dart code.
   __ LoadImmediate(R2, VMTag::kDartTagId);
-  __ StoreToOffset(kWord, R2, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R2, R7, Isolate::vm_tag_offset());
 
   // Reset exit frame information in Isolate structure.
   __ LoadImmediate(R2, 0);
@@ -311,6 +306,7 @@
   // Remove the stub frame.
   __ LeaveStubFrame();
   // Jump to the dart function.
+  __ mov(CODE_REG, Operand(R0));
   __ ldr(R0, FieldAddress(R0, Code::entry_point_offset()));
   __ bx(R0);
 }
@@ -320,6 +316,10 @@
 // (invalid because its function was optimized or deoptimized).
 // R4: arguments descriptor array.
 void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ ldr(CODE_REG, Address(THR, Thread::fix_callers_target_code_offset()));
   // Create a stub frame as we are pushing some objects on the stack before
   // calling into the runtime.
   __ EnterStubFrame();
@@ -332,6 +332,7 @@
   // Remove the stub frame.
   __ LeaveStubFrame();
   // Jump to the dart function.
+  __ mov(CODE_REG, Operand(R0));
   __ ldr(R0, FieldAddress(R0, Code::entry_point_offset()));
   __ bx(R0);
 }
@@ -340,6 +341,10 @@
 // Called from object allocate instruction when the allocation stub has been
 // disabled.
 void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) {
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ ldr(CODE_REG, Address(THR, Thread::fix_allocation_stub_code_offset()));
   __ EnterStubFrame();
   // Setup space on stack for return value.
   __ LoadObject(R0, Object::null_object());
@@ -350,6 +355,7 @@
   // Remove the stub frame.
   __ LeaveStubFrame();
   // Jump to the dart function.
+  __ mov(CODE_REG, Operand(R0));
   __ ldr(R0, FieldAddress(R0, Code::entry_point_offset()));
   __ bx(R0);
 }
@@ -403,13 +409,15 @@
 //   +------------------+
 //   | Saved LR         |  (deoptimization point)
 //   +------------------+
-//   | PC marker        |
+//   | pc marker        |
+//   +------------------+
+//   | Saved CODE_REG   |
 //   +------------------+
 //   | ...              | <- SP of optimized frame
 //
 // Parts of the code cannot GC, part of the code can GC.
 static void GenerateDeoptimizationSequence(Assembler* assembler,
-                                           bool preserve_result) {
+                                           DeoptStubKind kind) {
   // DeoptimizeCopyFrame expects a Dart frame, i.e. EnterDartFrame(0), but there
   // is no need to set the correct PC marker or load PP, since they get patched.
 
@@ -419,21 +427,10 @@
   __ eor(LR, IP, Operand(LR));
   __ eor(IP, IP, Operand(LR));
 
-  // Set up the frame manually. We can't use EnterFrame because we can't
-  // clobber LR (or any other register) with 0, yet.
-  __ sub(SP, SP, Operand(kWordSize));  // Make room for PC marker of 0.
-  __ Push(IP);  // Push return address.
-  __ Push(FP);
-  __ mov(FP, Operand(SP));
-  __ Push(PP);
-
+  // Set up the frame manually with return address now stored in IP.
+  __ EnterFrame((1 << PP) | (1 << CODE_REG) | (1 << FP) | (1 << IP), 0);
   __ LoadPoolPointer();
 
-  // Now that IP holding the return address has been written to the stack,
-  // we can clobber it with 0 to write the null PC marker.
-  __ mov(IP, Operand(0));
-  __ str(IP, Address(SP, +3 * kWordSize));
-
   // The code in this frame may not cause GC. kDeoptimizeCopyFrameRuntimeEntry
   // and kDeoptimizeFillFrameRuntimeEntry are leaf runtime calls.
   const intptr_t saved_result_slot_from_fp =
@@ -442,7 +439,17 @@
 
   // Push registers in their enumeration order: lowest register number at
   // lowest address.
-  __ PushList(kAllCpuRegistersList);
+  for (intptr_t i = kNumberOfCpuRegisters - 1; i >= 0; --i) {
+    if (i == CODE_REG) {
+      // Save the original value of CODE_REG pushed before invoking this stub
+      // instead of the value used to call this stub.
+      COMPILE_ASSERT(IP > CODE_REG);  // Assert IP is pushed first.
+      __ ldr(IP, Address(FP, kCallerSpSlotFromFp * kWordSize));
+      __ Push(IP);
+    } else {
+      __ Push(static_cast<Register>(i));
+    }
+  }
 
   if (TargetCPUFeatures::vfp_supported()) {
     ASSERT(kFpuRegisterSize == 4 * kWordSize);
@@ -457,15 +464,18 @@
   }
 
   __ mov(R0, Operand(SP));  // Pass address of saved registers block.
+  __ mov(R1, Operand(kind == kLazyDeopt ? 1 : 0));
   __ ReserveAlignedFrameSpace(0);
-  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 1);
+  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 2);
   // Result (R0) is stack-size (FP - SP) in bytes.
 
+  const bool preserve_result = (kind == kLazyDeopt);
   if (preserve_result) {
     // Restore result into R1 temporarily.
     __ ldr(R1, Address(FP, saved_result_slot_from_fp * kWordSize));
   }
 
+  __ RestoreCodePointer();
   __ LeaveDartFrame();
   __ sub(SP, FP, Operand(R0));
 
@@ -483,6 +493,7 @@
     __ ldr(R1, Address(FP, kFirstLocalSlotFromFp * kWordSize));
   }
   // Code above cannot cause GC.
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   // Frame is fully rewritten at this point and it is safe to perform a GC.
@@ -511,13 +522,16 @@
 void StubCode::GenerateDeoptimizeLazyStub(Assembler* assembler) {
   // Correct return address to point just after the call that is being
   // deoptimized.
-  __ AddImmediate(LR, -CallPattern::LengthInBytes());
-  GenerateDeoptimizationSequence(assembler, true);  // Preserve R0.
+  __ AddImmediate(LR, -CallPattern::DeoptCallPatternLengthInBytes());
+  // Push zap value instead of CODE_REG for lazy deopt.
+  __ LoadImmediate(IP, 0xf1f1f1f1);
+  __ Push(IP);
+  GenerateDeoptimizationSequence(assembler, kLazyDeopt);
 }
 
 
 void StubCode::GenerateDeoptimizeStub(Assembler* assembler) {
-  GenerateDeoptimizationSequence(assembler, false);  // Don't preserve R0.
+  GenerateDeoptimizationSequence(assembler, kEagerDeopt);
 }
 
 
@@ -573,6 +587,7 @@
   // Restore IC data and arguments descriptor.
   __ PopList((1 << R4) | (1 << R5));
 
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   if (!FLAG_lazy_dispatchers) {
@@ -582,6 +597,7 @@
   }
 
   // Tail-call to target function.
+  __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
   __ ldr(R2, FieldAddress(R0, Function::entry_point_offset()));
   __ bx(R2);
 }
@@ -620,24 +636,24 @@
                           /* inline_isolate = */ false);
 
   const intptr_t fixed_size = sizeof(RawArray) + kObjectAlignment - 1;
-  __ LoadImmediate(R9, fixed_size);
-  __ add(R9, R9, Operand(R3, LSL, 1));  // R3 is  a Smi.
+  __ LoadImmediate(R5, fixed_size);
+  __ add(R5, R5, Operand(R3, LSL, 1));  // R3 is  a Smi.
   ASSERT(kSmiTagShift == 1);
-  __ bic(R9, R9, Operand(kObjectAlignment - 1));
+  __ bic(R5, R5, Operand(kObjectAlignment - 1));
 
-  // R9: Allocation size.
+  // R5: Allocation size.
   Heap::Space space = Heap::SpaceForAllocation(cid);
   __ LoadIsolate(R6);
   __ ldr(R6, Address(R6, Isolate::heap_offset()));
   // Potential new object start.
   __ ldr(R0, Address(R6, Heap::TopOffset(space)));
-  __ adds(R7, R0, Operand(R9));  // Potential next object start.
+  __ adds(R7, R0, Operand(R5));  // Potential next object start.
   __ b(&slow_case, CS);  // Branch if unsigned overflow.
 
   // Check if the allocation fits into the remaining space.
   // R0: potential new object start.
   // R7: potential next object start.
-  // R9: allocation size.
+  // R5: allocation size.
   __ ldr(R3, Address(R6, Heap::EndOffset(space)));
   __ cmp(R7, Operand(R3));
   __ b(&slow_case, CS);
@@ -652,12 +668,12 @@
   // R0: new object start as a tagged pointer.
   // R3: allocation stats address.
   // R7: new object end address.
-  // R9: allocation size.
+  // R5: allocation size.
   {
     const intptr_t shift = RawObject::kSizeTagPos - kObjectAlignmentLog2;
 
-    __ CompareImmediate(R9, RawObject::SizeTag::kMaxSizeTag);
-    __ mov(R6, Operand(R9, LSL, shift), LS);
+    __ CompareImmediate(R5, RawObject::SizeTag::kMaxSizeTag);
+    __ mov(R6, Operand(R5, LSL, shift), LS);
     __ mov(R6, Operand(0), HI);
 
     // Get the class index and insert it into the tags.
@@ -686,13 +702,13 @@
   // R6: iterator which initially points to the start of the variable
   // data area to be initialized.
   // R7: new object end address.
-  // R9: allocation size.
+  // R5: allocation size.
+  __ IncrementAllocationStatsWithSize(R3, R5, space);
 
   __ LoadObject(R4, Object::null_object());
   __ mov(R5, Operand(R4));
   __ AddImmediate(R6, R0, sizeof(RawArray) - kHeapObjectTag);
   __ InitializeFieldsNoBarrier(R0, R6, R7, R4, R5);
-  __ IncrementAllocationStatsWithSize(R3, R9, space);
   __ Ret();  // Returns the newly allocated object in R0.
   // Unable to allocate the array using the fast inline code, just call
   // into the runtime.
@@ -717,7 +733,7 @@
 // Called when invoking Dart code from C++ (VM code).
 // Input parameters:
 //   LR : points to return address.
-//   R0 : entrypoint of the Dart function to call.
+//   R0 : code object of the Dart function to call.
 //   R1 : arguments descriptor array.
 //   R2 : arguments array.
 //   R3 : current thread.
@@ -725,6 +741,10 @@
   // Save frame pointer coming in.
   __ EnterFrame((1 << FP) | (1 << LR), 0);
 
+  // Push code object to PC marker slot.
+  __ ldr(IP, Address(R3, Thread::invoke_dart_code_stub_offset()));
+  __ Push(IP);
+
   // Save new context and C++ ABI callee-saved registers.
   __ PushList(kAbiPreservedCpuRegs);
 
@@ -737,24 +757,19 @@
     __ sub(SP, SP, Operand(kAbiPreservedFpuRegCount * kFpuRegisterSize));
   }
 
-  // We now load the pool pointer(PP) as we are about to invoke dart code and we
-  // could potentially invoke some intrinsic functions which need the PP to be
-  // set up.
-  __ LoadPoolPointer();
-
   // Set up THR, which caches the current thread in Dart code.
   if (THR != R3) {
     __ mov(THR, Operand(R3));
   }
-  __ LoadIsolate(R9);
+  __ LoadIsolate(R7);
 
   // Save the current VMTag on the stack.
-  __ LoadFromOffset(kWord, R5, R9, Isolate::vm_tag_offset());
+  __ LoadFromOffset(kWord, R5, R7, Isolate::vm_tag_offset());
   __ Push(R5);
 
   // Mark that the isolate is executing Dart code.
   __ LoadImmediate(R5, VMTag::kDartTagId);
-  __ StoreToOffset(kWord, R5, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R5, R7, Isolate::vm_tag_offset());
 
   // Save top resource and top exit frame info. Use R4-6 as temporary registers.
   // StackFrameIterator reads the top exit frame info saved in this frame.
@@ -766,7 +781,7 @@
 
   // kExitLinkSlotFromEntryFp must be kept in sync with the code below.
   __ Push(R4);
-  ASSERT(kExitLinkSlotFromEntryFp == -26);
+  ASSERT(kExitLinkSlotFromEntryFp == -27);
   __ Push(R5);
 
   // Load arguments descriptor array into R4, which is passed to Dart code.
@@ -796,12 +811,15 @@
   __ Bind(&done_push_arguments);
 
   // Call the Dart code entrypoint.
+  __ LoadImmediate(PP, 0);  // GC safe value into PP.
+  __ ldr(CODE_REG, Address(R0, VMHandles::kOffsetOfRawPtrInHandle));
+  __ ldr(R0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ blx(R0);  // R4 is the arguments descriptor array.
 
   // Get rid of arguments pushed on the stack.
   __ AddImmediate(SP, FP, kExitLinkSlotFromEntryFp * kWordSize);
 
-  __ LoadIsolate(R9);
+  __ LoadIsolate(R7);
   // Restore the saved top exit frame info and top resource back into the
   // Isolate structure. Uses R5 as a temporary register for this.
   __ Pop(R5);
@@ -811,7 +829,7 @@
 
   // Restore the current VMTag from the stack.
   __ Pop(R4);
-  __ StoreToOffset(kWord, R4, R9, Isolate::vm_tag_offset());
+  __ StoreToOffset(kWord, R4, R7, Isolate::vm_tag_offset());
 
   // Restore C++ ABI callee-saved registers.
   if (TargetCPUFeatures::vfp_supported()) {
@@ -1030,12 +1048,11 @@
 // Input parameters:
 //   LR : return address.
 //   SP + 0 : type arguments object (only if class is parameterized).
-// Returns patch_code_pc offset where patching code for disabling the stub
-// has been generated (similar to regularly generated Dart code).
-void StubCode::GenerateAllocationStubForClass(
-    Assembler* assembler, const Class& cls,
-    uword* entry_patch_offset, uword* patch_code_pc_offset) {
-  *entry_patch_offset = assembler->CodeSize();
+void StubCode::GenerateAllocationStubForClass(Assembler* assembler,
+                                              const Class& cls) {
+  // Must load pool pointer before being able to patch.
+  Register new_pp = R7;
+  __ LoadPoolPointer(new_pp);
   // The generated code is different if the class is parameterized.
   const bool is_cls_parameterized = cls.NumTypeArguments() > 0;
   ASSERT(!is_cls_parameterized ||
@@ -1161,8 +1178,6 @@
   // Restore the frame pointer.
   __ LeaveStubFrame();
   __ Ret();
-  *patch_code_pc_offset = assembler->CodeSize();
-  __ BranchPatchable(*StubCode::FixAllocationStubTarget_entry());
 }
 
 
@@ -1317,6 +1332,7 @@
     Token::Kind kind,
     RangeCollectionMode range_collection_mode,
     bool optimized) {
+  __ CheckCodePointer();
   ASSERT(num_args > 0);
 #if defined(DEBUG)
   { Label ok;
@@ -1441,6 +1457,9 @@
   // Pop returned function object into R0.
   // Restore arguments descriptor array and IC data array.
   __ PopList((1 << R0) | (1 << R4) | (1 << R5));
+  if (range_collection_mode == kCollectRanges) {
+    __ RestoreCodePointer();
+  }
   __ LeaveStubFrame();
   Label call_target_function;
   if (!FLAG_lazy_dispatchers) {
@@ -1478,15 +1497,18 @@
     } else {
       __ PushList((1 << R1) | (1 << R5));
     }
+    __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
     __ blx(R2);
 
     Label done;
     __ ldr(R5, Address(FP, kFirstLocalSlotFromFp * kWordSize));
     __ UpdateRangeFeedback(R0, 2, R5, R1, R4, &done);
     __ Bind(&done);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ Ret();
   } else {
+    __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
     __ bx(R2);
   }
 
@@ -1496,6 +1518,7 @@
     __ Push(R5);  // Preserve IC data.
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
     __ Pop(R5);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -1646,6 +1669,7 @@
 
   // Get function and call it, if possible.
   __ LoadFromOffset(kWord, R0, R6, target_offset);
+  __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
   __ ldr(R2, FieldAddress(R0, Function::entry_point_offset()));
   __ bx(R2);
 
@@ -1655,6 +1679,7 @@
     __ Push(R5);  // Preserve IC data.
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
     __ Pop(R5);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -1691,6 +1716,7 @@
   __ PopList((1 << R4) | (1 << R5));  // Restore arg desc. and IC data.
   __ LeaveStubFrame();
 
+  __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
   __ ldr(R2, FieldAddress(R0, Function::entry_point_offset()));
   __ bx(R2);
 }
@@ -1705,6 +1731,8 @@
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
   __ PopList((1 << R0) | (1 << R5));
   __ LeaveStubFrame();
+  __ mov(CODE_REG, Operand(R0));
+  __ ldr(R0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ bx(R0);
 }
 
@@ -1715,8 +1743,9 @@
   // Make room for result.
   __ PushList((1 << R0));
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
-  __ PopList((1 << R0));
+  __ PopList((1 << CODE_REG));
   __ LeaveStubFrame();
+  __ ldr(R0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ bx(R0);
 }
 
@@ -1896,8 +1925,9 @@
   __ Pop(R0);  // Discard argument.
   __ Pop(R0);  // Get Code object
   __ Pop(R4);  // Restore argument descriptor.
-  __ ldr(R0, FieldAddress(R0, Code::entry_point_offset()));
   __ LeaveStubFrame();
+  __ mov(CODE_REG, Operand(R0));
+  __ ldr(R0, FieldAddress(R0, Code::entry_point_offset()));
   __ bx(R0);
   __ bkpt(0);
 }
@@ -1999,6 +2029,7 @@
     __ Bind(&stepping);
     __ EnterStubFrame();
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -2058,6 +2089,7 @@
   // be invoked as a normal Dart function.
   __ add(IP, R2, Operand(R3, LSL, 2));
   __ ldr(R0, FieldAddress(IP, base + kWordSize));
+  __ ldr(CODE_REG, FieldAddress(R0, Function::code_offset()));
   __ ldr(target, FieldAddress(R0, Function::entry_point_offset()));
 }
 
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index 4148925..41d4544 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -41,7 +41,6 @@
   const intptr_t argc_tag_offset = NativeArguments::argc_tag_offset();
   const intptr_t argv_offset = NativeArguments::argv_offset();
   const intptr_t retval_offset = NativeArguments::retval_offset();
-  const intptr_t exitframe_last_param_slot_from_fp = 1;
 
   __ SetPrologueOffset();
   __ Comment("CallToRuntimeStub");
@@ -91,7 +90,7 @@
   __ add(R2, ZR, Operand(R4, LSL, 3));
   __ add(R2, FP, Operand(R2));  // Compute argv.
   // Set argv in NativeArguments.
-  __ AddImmediate(R2, R2, exitframe_last_param_slot_from_fp * kWordSize);
+  __ AddImmediate(R2, R2, kParamEndSlotFromFp * kWordSize);
 
     ASSERT(retval_offset == 3 * kWordSize);
   __ AddImmediate(R3, R2, kWordSize);
@@ -215,16 +214,10 @@
   __ mov(CSP, SP);
 
   __ mov(R1, R5);  // Pass the function entrypoint to call.
+
   // Call native function invocation wrapper or redirection via simulator.
-#if defined(USING_SIMULATOR)
-  uword entry = reinterpret_cast<uword>(NativeEntry::NativeCallWrapper);
-  entry = Simulator::RedirectExternalReference(
-      entry, Simulator::kNativeCall, NativeEntry::kNumCallWrapperArguments);
-  __ LoadImmediate(R2, entry);
-  __ blr(R2);
-#else
-  __ BranchLink(&NativeEntry::NativeCallWrapperLabel());
-#endif
+  __ ldr(LR, Address(THR, Thread::native_call_wrapper_entry_point_offset()));
+  __ blr(LR);
 
   // Restore SP and CSP.
   __ mov(SP, CSP);
@@ -346,12 +339,12 @@
   __ PushObject(Object::null_object());
   __ CallRuntime(kPatchStaticCallRuntimeEntry, 0);
   // Get Code object result and restore arguments descriptor array.
-  __ Pop(R0);
+  __ Pop(CODE_REG);
   __ Pop(R4);
   // Remove the stub frame.
   __ LeaveStubFrame();
   // Jump to the dart function.
-  __ LoadFieldFromOffset(R0, R0, Code::entry_point_offset());
+  __ LoadFieldFromOffset(R0, CODE_REG, Code::entry_point_offset());
   __ br(R0);
 }
 
@@ -360,6 +353,10 @@
 // (invalid because its function was optimized or deoptimized).
 // R4: arguments descriptor array.
 void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ ldr(CODE_REG, Address(THR, Thread::fix_callers_target_code_offset()));
   // Create a stub frame as we are pushing some objects on the stack before
   // calling into the runtime.
   __ EnterStubFrame();
@@ -368,12 +365,12 @@
   __ PushObject(Object::null_object());
   __ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
   // Get Code object result and restore arguments descriptor array.
-  __ Pop(R0);
+  __ Pop(CODE_REG);
   __ Pop(R4);
   // Remove the stub frame.
   __ LeaveStubFrame();
   // Jump to the dart function.
-  __ LoadFieldFromOffset(R0, R0, Code::entry_point_offset());
+  __ LoadFieldFromOffset(R0, CODE_REG, Code::entry_point_offset());
   __ br(R0);
 }
 
@@ -381,16 +378,20 @@
 // Called from object allocate instruction when the allocation stub has been
 // disabled.
 void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) {
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ ldr(CODE_REG, Address(THR, Thread::fix_allocation_stub_code_offset()));
   __ EnterStubFrame();
   // Setup space on stack for return value.
   __ PushObject(Object::null_object());
   __ CallRuntime(kFixAllocationStubTargetRuntimeEntry, 0);
   // Get Code object result.
-  __ Pop(R0);
+  __ Pop(CODE_REG);
   // Remove the stub frame.
   __ LeaveStubFrame();
   // Jump to the dart function.
-  __ LoadFieldFromOffset(R0, R0, Code::entry_point_offset());
+  __ LoadFieldFromOffset(R0, CODE_REG, Code::entry_point_offset());
   __ br(R0);
 }
 
@@ -448,11 +449,13 @@
 //   +------------------+
 //   | return-address   |  (deoptimization point)
 //   +------------------+
+//   | Saved CODE_REG   |
+//   +------------------+
 //   | ...              | <- SP of optimized frame
 //
 // Parts of the code cannot GC, part of the code can GC.
 static void GenerateDeoptimizationSequence(Assembler* assembler,
-                                           bool preserve_result) {
+                                           DeoptStubKind kind) {
   // DeoptimizeCopyFrame expects a Dart frame, i.e. EnterDartFrame(0), but there
   // is no need to set the correct PC marker or load PP, since they get patched.
   __ EnterStubFrame();
@@ -467,7 +470,15 @@
   // lowest address.
   for (intptr_t i = kNumberOfCpuRegisters - 1; i >= 0; i--) {
     const Register r = static_cast<Register>(i);
-    __ str(r, Address(SP, -1 * kWordSize, Address::PreIndex));
+    if (r == CODE_REG) {
+      // Save the original value of CODE_REG pushed before invoking this stub
+      // instead of the value used to call this stub.
+      COMPILE_ASSERT(R25 > CODE_REG);
+      __ ldr(R25, Address(FP, 2 * kWordSize));
+      __ str(R25, Address(SP, -1 * kWordSize, Address::PreIndex));
+    } else {
+      __ str(r, Address(SP, -1 * kWordSize, Address::PreIndex));
+    }
   }
 
   for (intptr_t reg_idx = kNumberOfVRegisters - 1; reg_idx >= 0; reg_idx--) {
@@ -476,16 +487,19 @@
   }
 
   __ mov(R0, SP);  // Pass address of saved registers block.
+  __ LoadImmediate(R1, kind == kLazyDeopt ? 1 : 0);
   __ ReserveAlignedFrameSpace(0);
-  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 1);
+  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 2);
   // Result (R0) is stack-size (FP - SP) in bytes.
 
+  const bool preserve_result = (kind == kLazyDeopt);
   if (preserve_result) {
     // Restore result into R1 temporarily.
     __ LoadFromOffset(R1, FP, saved_result_slot_from_fp * kWordSize);
   }
 
   // There is a Dart Frame on the stack. We must restore PP and leave frame.
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
   __ sub(SP, FP, Operand(R0));
 
@@ -505,6 +519,7 @@
   }
   // Code above cannot cause GC.
   // There is a Dart Frame on the stack. We must restore PP and leave frame.
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   // Frame is fully rewritten at this point and it is safe to perform a GC.
@@ -534,13 +549,16 @@
 void StubCode::GenerateDeoptimizeLazyStub(Assembler* assembler) {
   // Correct return address to point just after the call that is being
   // deoptimized.
-  __ AddImmediate(LR, LR, -CallPattern::kLengthInBytes);
-  GenerateDeoptimizationSequence(assembler, true);  // Preserve R0.
+  __ AddImmediate(LR, LR, -CallPattern::kDeoptCallLengthInBytes);
+  // Push zap value instead of CODE_REG for lazy deopt.
+  __ LoadImmediate(TMP, 0xf1f1f1f1);
+  __ Push(TMP);
+  GenerateDeoptimizationSequence(assembler, kLazyDeopt);
 }
 
 
 void StubCode::GenerateDeoptimizeStub(Assembler* assembler) {
-  GenerateDeoptimizationSequence(assembler, false);  // Don't preserve R0.
+  GenerateDeoptimizationSequence(assembler, kEagerDeopt);
 }
 
 
@@ -601,6 +619,7 @@
   __ Pop(R4);
   __ Pop(R5);
 
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   if (!FLAG_lazy_dispatchers) {
@@ -610,6 +629,7 @@
   }
 
   // Tail-call to target function.
+  __ LoadFieldFromOffset(CODE_REG, R0, Function::code_offset());
   __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset());
   __ br(R2);
 }
@@ -766,7 +786,7 @@
 // Called when invoking Dart code from C++ (VM code).
 // Input parameters:
 //   LR : points to return address.
-//   R0 : entrypoint of the Dart function to call.
+//   R0 : code object of the Dart function to call.
 //   R1 : arguments descriptor array.
 //   R2 : arguments array.
 //   R3 : current thread.
@@ -778,6 +798,10 @@
   __ SetupDartSP(Isolate::GetSpecifiedStackSize());
   __ EnterFrame(0);
 
+  // Push code object to PC marker slot.
+  __ ldr(TMP, Address(R3, Thread::invoke_dart_code_stub_offset()));
+  __ Push(TMP);
+
   // Save the callee-saved registers.
   for (int i = kAbiFirstPreservedCpuReg; i <= kAbiLastPreservedCpuReg; i++) {
     const Register r = static_cast<Register>(i);
@@ -793,11 +817,6 @@
     __ PushDouble(r);
   }
 
-  // We now load the pool pointer(PP) as we are about to invoke dart code and we
-  // could potentially invoke some intrinsic functions which need the PP to be
-  // set up.
-  __ LoadPoolPointer();
-
   // Set up THR, which caches the current thread in Dart code.
   if (THR != R3) {
     __ mov(THR, R3);
@@ -821,7 +840,7 @@
   __ LoadFromOffset(R6, THR, Thread::top_exit_frame_info_offset());
   __ StoreToOffset(ZR, THR, Thread::top_exit_frame_info_offset());
   // kExitLinkSlotFromEntryFp must be kept in sync with the code below.
-  ASSERT(kExitLinkSlotFromEntryFp == -21);
+  ASSERT(kExitLinkSlotFromEntryFp == -22);
   __ Push(R6);
 
   // Load arguments descriptor array into R4, which is passed to Dart code.
@@ -850,13 +869,17 @@
   __ b(&push_arguments, LT);
   __ Bind(&done_push_arguments);
 
+  // We now load the pool pointer(PP) with a GC safe value as we are about to
+  // invoke dart code. We don't need a real object pool here.
+  // Smi zero does not work because ARM64 assumes PP to be untagged.
+  __ LoadObject(PP, Object::null_object());
+
   // Call the Dart code entrypoint.
+  __ ldr(CODE_REG, Address(R0, VMHandles::kOffsetOfRawPtrInHandle));
+  __ ldr(R0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ blr(R0);  // R4 is the arguments descriptor array.
   __ Comment("InvokeDartCodeStub return");
 
-  // Restore constant pool pointer after return.
-  __ LoadPoolPointer();
-
   // Get rid of arguments pushed on the stack.
   __ AddImmediate(SP, FP, kExitLinkSlotFromEntryFp * kWordSize);
 
@@ -888,7 +911,6 @@
     // using it as the stack pointer.
     __ ldr(r, Address(SP, 1 * kWordSize, Address::PostIndex));
   }
-  __ set_constant_pool_allowed(false);
 
   // Restore the frame pointer and C stack pointer and return.
   __ LeaveFrame();
@@ -1074,10 +1096,8 @@
 // Input parameters:
 //   LR : return address.
 //   SP + 0 : type arguments object (only if class is parameterized).
-void StubCode::GenerateAllocationStubForClass(
-    Assembler* assembler, const Class& cls,
-    uword* entry_patch_offset, uword* patch_code_pc_offset) {
-  *entry_patch_offset = assembler->CodeSize();
+void StubCode::GenerateAllocationStubForClass(Assembler* assembler,
+                                              const Class& cls) {
   // The generated code is different if the class is parameterized.
   const bool is_cls_parameterized = cls.NumTypeArguments() > 0;
   ASSERT(!is_cls_parameterized ||
@@ -1197,8 +1217,6 @@
   // Restore the frame pointer.
   __ LeaveStubFrame();
   __ ret();
-  *patch_code_pc_offset = assembler->CodeSize();
-  __ BranchPatchable(*StubCode::FixAllocationStubTarget_entry());
 }
 
 
@@ -1515,6 +1533,9 @@
   __ Pop(R0);  // Pop returned function object into R0.
   __ Pop(R5);  // Restore IC Data.
   __ Pop(R4);  // Restore arguments descriptor array.
+  if (range_collection_mode == kCollectRanges) {
+    __ RestoreCodePointer();
+  }
   __ LeaveStubFrame();
   Label call_target_function;
   if (!FLAG_lazy_dispatchers) {
@@ -1542,8 +1563,8 @@
   __ Comment("Call target");
   __ Bind(&call_target_function);
   // R0: target function.
-  __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset());
   if (range_collection_mode == kCollectRanges) {
+    __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset());
     __ ldr(R1, Address(SP, 0 * kWordSize));
     if (num_args == 2) {
       __ ldr(R3, Address(SP, 1 * kWordSize));
@@ -1554,6 +1575,7 @@
       __ Push(R3);
     }
     __ Push(R1);
+    __ LoadFieldFromOffset(CODE_REG, R0, Function::code_offset());
     __ blr(R2);
 
     Label done;
@@ -1563,6 +1585,8 @@
     __ LeaveStubFrame();
     __ ret();
   } else {
+    __ LoadFieldFromOffset(CODE_REG, R0, Function::code_offset());
+    __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset());
     __ br(R2);
   }
 
@@ -1572,6 +1596,7 @@
     __ Push(R5);  // Preserve IC data.
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
     __ Pop(R5);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -1716,6 +1741,7 @@
 
   // Get function and call it, if possible.
   __ LoadFromOffset(R0, R6, target_offset);
+  __ LoadFieldFromOffset(CODE_REG, R0, Function::code_offset());
   __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset());
   __ br(R2);
 
@@ -1725,6 +1751,7 @@
     __ Push(R5);  // Preserve IC data.
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
     __ Pop(R5);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -1763,6 +1790,7 @@
   __ Pop(R5);  // Restore IC Data.
   __ LeaveStubFrame();
 
+  __ LoadFieldFromOffset(CODE_REG, R0, Function::code_offset());
   __ LoadFieldFromOffset(R2, R0, Function::entry_point_offset());
   __ br(R2);
 }
@@ -1774,9 +1802,10 @@
   __ Push(R5);
   __ PushObject(Object::null_object());  // Space for result.
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
-  __ Pop(R0);
+  __ Pop(CODE_REG);
   __ Pop(R5);
   __ LeaveStubFrame();
+  __ LoadFieldFromOffset(R0, CODE_REG, Code::entry_point_offset());
   __ br(R0);
 }
 
@@ -1785,8 +1814,9 @@
   __ EnterStubFrame();
   __ PushObject(Object::null_object());  // Space for result.
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
-  __ Pop(R0);
+  __ Pop(CODE_REG);
   __ LeaveStubFrame();
+  __ LoadFieldFromOffset(R0, CODE_REG, Code::entry_point_offset());
   __ br(R0);
 }
 
@@ -1964,9 +1994,9 @@
   __ Push(R6);
   __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
   __ Pop(R0);  // Discard argument.
-  __ Pop(R0);  // Get Code object
+  __ Pop(CODE_REG);  // Get Code object
   __ Pop(R4);  // Restore argument descriptor.
-  __ LoadFieldFromOffset(R0, R0, Code::entry_point_offset());
+  __ LoadFieldFromOffset(R0, CODE_REG, Code::entry_point_offset());
   __ LeaveStubFrame();
   __ br(R0);
   __ brk(0);
@@ -2059,6 +2089,7 @@
     __ Bind(&stepping);
     __ EnterStubFrame();
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -2117,6 +2148,7 @@
   // be invoked as a normal Dart function.
   __ add(TMP, R2, Operand(R3, LSL, 3));
   __ LoadFieldFromOffset(R0, TMP, base + kWordSize);
+  __ LoadFieldFromOffset(CODE_REG, R0, Function::code_offset());
   __ LoadFieldFromOffset(R1, R0, Function::entry_point_offset());
 }
 
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 669c874..f070b1b 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -80,7 +80,8 @@
   // There are no runtime calls to closures, so we do not need to set the tag
   // bits kClosureFunctionBit and kInstanceFunctionBit in argc_tag_.
   __ movl(Address(ESP, argc_tag_offset), EDX);  // Set argc in NativeArguments.
-  __ leal(EAX, Address(EBP, EDX, TIMES_4, 1 * kWordSize));  // Compute argv.
+  // Compute argv.
+  __ leal(EAX, Address(EBP, EDX, TIMES_4, kParamEndSlotFromFp * kWordSize));
   __ movl(Address(ESP, argv_offset), EAX);  // Set argv in NativeArguments.
   __ addl(EAX, Immediate(1 * kWordSize));  // Retval is next to 1st argument.
   __ movl(Address(ESP, retval_offset), EAX);  // Set retval in NativeArguments.
@@ -178,7 +179,8 @@
   __ movl(Address(ESP, 0), EAX);  // Pass the pointer to the NativeArguments.
 
   __ movl(Address(ESP, kWordSize), ECX);  // Function to call.
-  __ call(&NativeEntry::NativeCallWrapperLabel());
+  ExternalLabel label(NativeEntry::NativeCallWrapperEntry());
+  __ call(&label);
 
   // Mark that the isolate is executing Dart code. EDI is callee saved.
   __ movl(Address(EDI, Isolate::vm_tag_offset()),
@@ -369,11 +371,13 @@
 //   +------------------+
 //   | return-address   |  (deoptimization point)
 //   +------------------+
+//   | Saved CODE_REG   |
+//   +------------------+
 //   | ...              | <- SP of optimized frame
 //
 // Parts of the code cannot GC, part of the code can GC.
 static void GenerateDeoptimizationSequence(Assembler* assembler,
-                                           bool preserve_result) {
+                                           DeoptStubKind kind) {
   // Leaf runtime function DeoptimizeCopyFrame expects a Dart frame.
   __ EnterDartFrame(0);
   // The code in this frame may not cause GC. kDeoptimizeCopyFrameRuntimeEntry
@@ -385,7 +389,13 @@
   // Push registers in their enumeration order: lowest register number at
   // lowest address.
   for (intptr_t i = kNumberOfCpuRegisters - 1; i >= 0; i--) {
-    __ pushl(static_cast<Register>(i));
+    if (i == CODE_REG) {
+      // Save the original value of CODE_REG pushed before invoking this stub
+      // instead of the value used to call this stub.
+      __ pushl(Address(EBP, 2 * kWordSize));
+    } else {
+      __ pushl(static_cast<Register>(i));
+    }
   }
   __ subl(ESP, Immediate(kNumberOfXmmRegisters * kFpuRegisterSize));
   intptr_t offset = 0;
@@ -396,11 +406,13 @@
   }
 
   __ movl(ECX, ESP);  // Preserve saved registers block.
-  __ ReserveAlignedFrameSpace(1 * kWordSize);
-  __ movl(Address(ESP, 0), ECX);  // Start of register block.
-  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 1);
+  __ ReserveAlignedFrameSpace(2 * kWordSize);
+  __ movl(Address(ESP, 0 * kWordSize), ECX);  // Start of register block.
+  __ movl(Address(ESP, 1 * kWordSize), Immediate(kind == kLazyDeopt ? 1 : 0));
+  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 2);
   // Result (EAX) is stack-size (FP - SP) in bytes.
 
+  const bool preserve_result = (kind == kLazyDeopt);
   if (preserve_result) {
     // Restore result into EBX temporarily.
     __ movl(EBX, Address(EBP, saved_result_slot_from_fp * kWordSize));
@@ -460,12 +472,12 @@
   __ popl(EBX);
   __ subl(EBX, Immediate(CallPattern::pattern_length_in_bytes()));
   __ pushl(EBX);
-  GenerateDeoptimizationSequence(assembler, true);  // Preserve EAX.
+  GenerateDeoptimizationSequence(assembler, kLazyDeopt);
 }
 
 
 void StubCode::GenerateDeoptimizeStub(Assembler* assembler) {
-  GenerateDeoptimizationSequence(assembler, false);  // Don't preserve EAX.
+  GenerateDeoptimizationSequence(assembler, kEagerDeopt);
 }
 
 
@@ -684,13 +696,13 @@
 // Called when invoking dart code from C++ (VM code).
 // Input parameters:
 //   ESP : points to return address.
-//   ESP + 4 : entrypoint of the dart function to call.
+//   ESP + 4 : code object of the dart function to call.
 //   ESP + 8 : arguments descriptor array.
 //   ESP + 12 : arguments array.
 //   ESP + 16 : current thread.
 // Uses EAX, EDX, ECX, EDI as temporary registers.
 void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) {
-  const intptr_t kEntryPointOffset = 2 * kWordSize;
+  const intptr_t kTargetCodeOffset = 2 * kWordSize;
   const intptr_t kArgumentsDescOffset = 3 * kWordSize;
   const intptr_t kArgumentsOffset = 4 * kWordSize;
   const intptr_t kThreadOffset = 5 * kWordSize;
@@ -698,13 +710,17 @@
   // Save frame pointer coming in.
   __ EnterFrame(0);
 
+  // Push code object to PC marker slot.
+  __ movl(EAX, Address(EBP, kThreadOffset));
+  __ pushl(Address(EAX, Thread::invoke_dart_code_stub_offset()));
+
   // Save C++ ABI callee-saved registers.
   __ pushl(EBX);
   __ pushl(ESI);
   __ pushl(EDI);
 
   // Set up THR, which caches the current thread in Dart code.
-  __ movl(THR, Address(EBP, kThreadOffset));
+  __ movl(THR, EAX);
   __ LoadIsolate(EDI);
 
   // Save the current VMTag on the stack.
@@ -722,7 +738,7 @@
   __ movl(Address(THR, Thread::top_resource_offset()), Immediate(0));
   // The constant kExitLinkSlotFromEntryFp must be kept in sync with the
   // code below.
-  ASSERT(kExitLinkSlotFromEntryFp == -6);
+  ASSERT(kExitLinkSlotFromEntryFp == -7);
   __ movl(EDX, Address(THR, Thread::top_exit_frame_info_offset()));
   __ pushl(EDX);
   __ movl(Address(THR, Thread::top_exit_frame_info_offset()), Immediate(0));
@@ -756,7 +772,9 @@
   __ Bind(&done_push_arguments);
 
   // Call the dart code entrypoint.
-  __ call(Address(EBP, kEntryPointOffset));
+  __ movl(EAX, Address(EBP, kTargetCodeOffset));
+  __ movl(EAX, Address(EAX, VMHandles::kOffsetOfRawPtrInHandle));
+  __ call(FieldAddress(EAX, Code::entry_point_offset()));
 
   // Reread the arguments descriptor array to obtain the number of passed
   // arguments.
@@ -1001,9 +1019,7 @@
 // Returns patch_code_pc offset where patching code for disabling the stub
 // has been generated (similar to regularly generated Dart code).
 void StubCode::GenerateAllocationStubForClass(
-    Assembler* assembler, const Class& cls,
-    uword* entry_patch_offset, uword* patch_code_pc_offset) {
-  *entry_patch_offset = assembler->CodeSize();
+    Assembler* assembler, const Class& cls) {
   const intptr_t kObjectTypeArgumentsOffset = 1 * kWordSize;
   const Immediate& raw_null =
       Immediate(reinterpret_cast<intptr_t>(Object::null()));
@@ -1125,10 +1141,6 @@
   // Restore the frame pointer.
   __ LeaveFrame();
   __ ret();
-  // Emit function patching code. This will be swapped with the first 5 bytes
-  // at entry point.
-  *patch_code_pc_offset = assembler->CodeSize();
-  __ Jmp(*StubCode::FixAllocationStubTarget_entry());
 }
 
 
@@ -1168,7 +1180,7 @@
 // function and not the top-scope function.
 void StubCode::GenerateOptimizedUsageCounterIncrement(Assembler* assembler) {
   Register ic_reg = ECX;
-  Register func_reg = EDI;
+  Register func_reg = EBX;
   if (FLAG_trace_optimized_ic_calls) {
     __ EnterStubFrame();
     __ pushl(func_reg);     // Preserve
@@ -1704,10 +1716,12 @@
       Immediate(reinterpret_cast<intptr_t>(Object::null()));
   __ pushl(raw_null);  // Room for result.
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
-  __ popl(EAX);  // Address of original stub.
+  __ popl(EAX);  // Code of original stub.
   __ popl(ECX);  // Restore IC data.
   __ LeaveFrame();
-  __ jmp(EAX);   // Jump to original stub.
+  // Jump to original stub.
+  __ movl(EAX, FieldAddress(EAX, Code::entry_point_offset()));
+  __ jmp(EAX);
 }
 
 
@@ -1719,9 +1733,11 @@
       Immediate(reinterpret_cast<intptr_t>(Object::null()));
   __ pushl(raw_null);  // Room for result.
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
-  __ popl(EAX);  // Address of original stub.
+  __ popl(EAX);  // Code of the original stub
   __ LeaveFrame();
-  __ jmp(EAX);   // Jump to original stub.
+  // Jump to original stub.
+  __ movl(EAX, FieldAddress(EAX, Code::entry_point_offset()));
+  __ jmp(EAX);
 }
 
 
@@ -1893,7 +1909,7 @@
 
 
 // Calls to the runtime to optimize the given function.
-// EDI: function to be reoptimized.
+// EBX: function to be reoptimized.
 // EDX: argument descriptor (preserved).
 void StubCode::GenerateOptimizeFunctionStub(Assembler* assembler) {
   const Immediate& raw_null =
@@ -1901,7 +1917,7 @@
   __ EnterStubFrame();
   __ pushl(EDX);
   __ pushl(raw_null);  // Setup space on stack for return value.
-  __ pushl(EDI);
+  __ pushl(EBX);
   __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
   __ popl(EAX);  // Discard argument.
   __ popl(EAX);  // Get Code object
@@ -2068,12 +2084,12 @@
 
 
 // Called from megamorphic calls.
-//  EDI: receiver.
+//  ECX: receiver.
 //  EBX: lookup cache.
 // Result:
 //  EBX: entry point.
 void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
-  EmitMegamorphicLookup(assembler, EDI, EBX, EBX);
+  EmitMegamorphicLookup(assembler, ECX, EBX, EBX);
   __ ret();
 }
 
diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc
index d6b55f8..36f73f7 100644
--- a/runtime/vm/stub_code_mips.cc
+++ b/runtime/vm/stub_code_mips.cc
@@ -41,14 +41,13 @@
   const intptr_t argc_tag_offset = NativeArguments::argc_tag_offset();
   const intptr_t argv_offset = NativeArguments::argv_offset();
   const intptr_t retval_offset = NativeArguments::retval_offset();
-  const intptr_t exitframe_last_param_slot_from_fp = 2;
 
   __ SetPrologueOffset();
   __ Comment("CallToRuntimeStub");
   __ EnterStubFrame();
 
-  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << S6)) != 0);
-  __ LoadIsolate(S6);
+  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << S2)) != 0);
+  __ LoadIsolate(S2);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to Dart VM C++ code.
@@ -57,7 +56,7 @@
 #if defined(DEBUG)
   { Label ok;
     // Check that we are always entering from Dart code.
-    __ lw(T0, Address(S6, Isolate::vm_tag_offset()));
+    __ lw(T0, Address(S2, Isolate::vm_tag_offset()));
     __ BranchEqual(T0, Immediate(VMTag::kDartTagId), &ok);
     __ Stop("Not coming from Dart code.");
     __ Bind(&ok);
@@ -65,7 +64,7 @@
 #endif
 
   // Mark that the isolate is executing VM code.
-  __ sw(S5, Address(S6, Isolate::vm_tag_offset()));
+  __ sw(S5, Address(S2, Isolate::vm_tag_offset()));
 
   // Reserve space for arguments and align frame before entering C++ world.
   // NativeArguments are passed in registers.
@@ -88,7 +87,7 @@
   __ sll(A2, S4, 2);
   __ addu(A2, FP, A2);  // Compute argv.
   // Set argv in NativeArguments.
-  __ addiu(A2, A2, Immediate(exitframe_last_param_slot_from_fp * kWordSize));
+  __ addiu(A2, A2, Immediate(kParamEndSlotFromFp * kWordSize));
 
 
   // Call runtime or redirection via simulator.
@@ -104,7 +103,7 @@
 
   // Mark that the isolate is executing Dart code.
   __ LoadImmediate(A2, VMTag::kDartTagId);
-  __ sw(A2, Address(S6, Isolate::vm_tag_offset()));
+  __ sw(A2, Address(S2, Isolate::vm_tag_offset()));
 
   // Reset exit frame information in Isolate structure.
   __ sw(ZR, Address(THR, Thread::top_exit_frame_info_offset()));
@@ -148,8 +147,8 @@
   __ Comment("CallNativeCFunctionStub");
   __ EnterStubFrame();
 
-  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << S6)) != 0);
-  __ LoadIsolate(S6);
+  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << S2)) != 0);
+  __ LoadIsolate(S2);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -158,7 +157,7 @@
 #if defined(DEBUG)
   { Label ok;
     // Check that we are always entering from Dart code.
-    __ lw(T0, Address(S6, Isolate::vm_tag_offset()));
+    __ lw(T0, Address(S2, Isolate::vm_tag_offset()));
     __ BranchEqual(T0, Immediate(VMTag::kDartTagId), &ok);
     __ Stop("Not coming from Dart code.");
     __ Bind(&ok);
@@ -166,7 +165,7 @@
 #endif
 
   // Mark that the isolate is executing Native code.
-  __ sw(T5, Address(S6, Isolate::vm_tag_offset()));
+  __ sw(T5, Address(S2, Isolate::vm_tag_offset()));
 
   // Initialize NativeArguments structure and call native function.
   // Registers A0, A1, A2, and A3 are used.
@@ -184,7 +183,8 @@
   // Set argv in NativeArguments: A2 already contains argv.
 
   ASSERT(retval_offset == 3 * kWordSize);
-  __ addiu(A3, FP, Immediate(3 * kWordSize));  // Set retval in NativeArgs.
+  // Set retval in NativeArgs.
+  __ addiu(A3, FP, Immediate(kCallerSpSlotFromFp * kWordSize));
 
   // Passing the structure by value as in runtime calls would require changing
   // Dart API for native functions.
@@ -199,21 +199,15 @@
 
   __ mov(A1, T5);  // Pass the function entrypoint.
   __ ReserveAlignedFrameSpace(2 * kWordSize);  // Just passing A0, A1.
+
   // Call native wrapper function or redirection via simulator.
-#if defined(USING_SIMULATOR)
-  uword entry = reinterpret_cast<uword>(NativeEntry::NativeCallWrapper);
-  entry = Simulator::RedirectExternalReference(
-      entry, Simulator::kNativeCall, NativeEntry::kNumCallWrapperArguments);
-  __ LoadImmediate(T9, entry);
+  __ lw(T9, Address(THR, Thread::native_call_wrapper_entry_point_offset()));
   __ jalr(T9);
-#else
-  __ BranchLink(&NativeEntry::NativeCallWrapperLabel(), kNotPatchable);
-#endif
   __ Comment("CallNativeCFunctionStub return");
 
   // Mark that the isolate is executing Dart code.
   __ LoadImmediate(A2, VMTag::kDartTagId);
-  __ sw(A2, Address(S6, Isolate::vm_tag_offset()));
+  __ sw(A2, Address(S2, Isolate::vm_tag_offset()));
 
   // Reset exit frame information in Isolate structure.
   __ sw(ZR, Address(THR, Thread::top_exit_frame_info_offset()));
@@ -238,8 +232,8 @@
   __ Comment("CallNativeCFunctionStub");
   __ EnterStubFrame();
 
-  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << S6)) != 0);
-  __ LoadIsolate(S6);
+  COMPILE_ASSERT((kAbiPreservedCpuRegs & (1 << S2)) != 0);
+  __ LoadIsolate(S2);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -248,7 +242,7 @@
 #if defined(DEBUG)
   { Label ok;
     // Check that we are always entering from Dart code.
-    __ lw(T0, Address(S6, Isolate::vm_tag_offset()));
+    __ lw(T0, Address(S2, Isolate::vm_tag_offset()));
     __ BranchEqual(T0, Immediate(VMTag::kDartTagId), &ok);
     __ Stop("Not coming from Dart code.");
     __ Bind(&ok);
@@ -256,7 +250,7 @@
 #endif
 
   // Mark that the isolate is executing Native code.
-  __ sw(T5, Address(S6, Isolate::vm_tag_offset()));
+  __ sw(T5, Address(S2, Isolate::vm_tag_offset()));
 
   // Initialize NativeArguments structure and call native function.
   // Registers A0, A1, A2, and A3 are used.
@@ -274,7 +268,8 @@
   // Set argv in NativeArguments: A2 already contains argv.
 
   ASSERT(retval_offset == 3 * kWordSize);
-  __ addiu(A3, FP, Immediate(3 * kWordSize));  // Set retval in NativeArgs.
+  // Set retval in NativeArgs.
+  __ addiu(A3, FP, Immediate(kCallerSpSlotFromFp * kWordSize));
 
   // Passing the structure by value as in runtime calls would require changing
   // Dart API for native functions.
@@ -298,7 +293,7 @@
 
   // Mark that the isolate is executing Dart code.
   __ LoadImmediate(A2, VMTag::kDartTagId);
-  __ sw(A2, Address(S6, Isolate::vm_tag_offset()));
+  __ sw(A2, Address(S2, Isolate::vm_tag_offset()));
 
   // Reset exit frame information in Isolate structure.
   __ sw(ZR, Address(THR, Thread::top_exit_frame_info_offset()));
@@ -323,11 +318,11 @@
   __ Comment("CallStaticFunctionStub return");
 
   // Get Code object result and restore arguments descriptor array.
-  __ lw(T0, Address(SP, 0 * kWordSize));
+  __ lw(CODE_REG, Address(SP, 0 * kWordSize));
   __ lw(S4, Address(SP, 1 * kWordSize));
   __ addiu(SP, SP, Immediate(2 * kWordSize));
 
-  __ lw(T0, FieldAddress(T0, Code::entry_point_offset()));
+  __ lw(T0, FieldAddress(CODE_REG, Code::entry_point_offset()));
 
   // Remove the stub frame as we are about to jump to the dart function.
   __ LeaveStubFrameAndReturn(T0);
@@ -338,9 +333,12 @@
 // (invalid because its function was optimized or deoptimized).
 // S4: arguments descriptor array.
 void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ lw(CODE_REG, Address(THR, Thread::fix_callers_target_code_offset()));
   // Create a stub frame as we are pushing some objects on the stack before
   // calling into the runtime.
-  __ Comment("FixCallersTarget");
   __ EnterStubFrame();
   // Setup space on stack for return value and preserve arguments descriptor.
   __ addiu(SP, SP, Immediate(-2 * kWordSize));
@@ -349,12 +347,12 @@
   __ sw(TMP, Address(SP, 0 * kWordSize));
   __ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
   // Get Code object result and restore arguments descriptor array.
-  __ lw(T0, Address(SP, 0 * kWordSize));
+  __ lw(CODE_REG, Address(SP, 0 * kWordSize));
   __ lw(S4, Address(SP, 1 * kWordSize));
   __ addiu(SP, SP, Immediate(2 * kWordSize));
 
   // Jump to the dart function.
-  __ lw(T0, FieldAddress(T0, Code::entry_point_offset()));
+  __ lw(T0, FieldAddress(CODE_REG, Code::entry_point_offset()));
 
   // Remove the stub frame.
   __ LeaveStubFrameAndReturn(T0);
@@ -364,7 +362,10 @@
 // Called from object allocate instruction when the allocation stub has been
 // disabled.
 void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) {
-  __ Comment("FixAllocationStubTarget");
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ lw(CODE_REG, Address(THR, Thread::fix_allocation_stub_code_offset()));
   __ EnterStubFrame();
   // Setup space on stack for return value.
   __ addiu(SP, SP, Immediate(-1 * kWordSize));
@@ -372,11 +373,11 @@
   __ sw(TMP, Address(SP, 0 * kWordSize));
   __ CallRuntime(kFixAllocationStubTargetRuntimeEntry, 0);
   // Get Code object result.
-  __ lw(T0, Address(SP, 0 * kWordSize));
+  __ lw(CODE_REG, Address(SP, 0 * kWordSize));
   __ addiu(SP, SP, Immediate(1 * kWordSize));
 
   // Jump to the dart function.
-  __ lw(T0, FieldAddress(T0, Code::entry_point_offset()));
+  __ lw(T0, FieldAddress(CODE_REG, Code::entry_point_offset()));
 
   // Remove the stub frame.
   __ LeaveStubFrameAndReturn(T0);
@@ -433,34 +434,26 @@
 //   +------------------+
 //   | Saved PP         | <- TOS
 //   +------------------+
+//   | Saved CODE_REG   |
+//   +------------------+
 //   | Saved FP         | <- FP of stub
 //   +------------------+
 //   | Saved LR         |  (deoptimization point)
 //   +------------------+
-//   | PC marker        |
+//   | Saved CODE_REG   |
 //   +------------------+
 //   | ...              | <- SP of optimized frame
 //
 // Parts of the code cannot GC, part of the code can GC.
 static void GenerateDeoptimizationSequence(Assembler* assembler,
-                                           bool preserve_result) {
+                                           DeoptStubKind kind) {
   const intptr_t kPushedRegistersSize =
-      kNumberOfCpuRegisters * kWordSize +
-      4 * kWordSize +  // PP, FP, RA, PC marker.
-      kNumberOfFRegisters * kWordSize;
+      kNumberOfCpuRegisters * kWordSize + kNumberOfFRegisters * kWordSize;
 
   __ SetPrologueOffset();
   __ Comment("GenerateDeoptimizationSequence");
-  // DeoptimizeCopyFrame expects a Dart frame, i.e. EnterDartFrame(0), but there
-  // is no need to set the correct PC marker or load PP, since they get patched.
-  __ addiu(SP, SP, Immediate(-kPushedRegistersSize * kWordSize));
-  __ sw(ZR, Address(SP, kPushedRegistersSize - 1 * kWordSize));
-  __ sw(RA, Address(SP, kPushedRegistersSize - 2 * kWordSize));
-  __ sw(FP, Address(SP, kPushedRegistersSize - 3 * kWordSize));
-  __ sw(PP, Address(SP, kPushedRegistersSize - 4 * kWordSize));
-  __ addiu(FP, SP, Immediate(kPushedRegistersSize - 3 * kWordSize));
-
-  __ LoadPoolPointer();
+  // DeoptimizeCopyFrame expects a Dart frame.
+  __ EnterStubFrame(kPushedRegistersSize);
 
   // The code in this frame may not cause GC. kDeoptimizeCopyFrameRuntimeEntry
   // and kDeoptimizeFillFrameRuntimeEntry are leaf runtime calls.
@@ -471,27 +464,38 @@
   // Push registers in their enumeration order: lowest register number at
   // lowest address.
   for (int i = 0; i < kNumberOfCpuRegisters; i++) {
-    const int slot = 4 + kNumberOfCpuRegisters - i;
+    const int slot = kNumberOfCpuRegisters - i;
     Register reg = static_cast<Register>(i);
-    __ sw(reg, Address(SP, kPushedRegistersSize - slot * kWordSize));
+    if (reg == CODE_REG) {
+      // Save the original value of CODE_REG pushed before invoking this stub
+      // instead of the value used to call this stub.
+      COMPILE_ASSERT(TMP < CODE_REG);  // Assert TMP is pushed first.
+      __ lw(TMP, Address(FP, kCallerSpSlotFromFp * kWordSize));
+      __ sw(TMP, Address(SP, kPushedRegistersSize - slot * kWordSize));
+    } else {
+      __ sw(reg, Address(SP, kPushedRegistersSize - slot * kWordSize));
+    }
   }
   for (int i = 0; i < kNumberOfFRegisters; i++) {
     // These go below the CPU registers.
-    const int slot = 4 + kNumberOfCpuRegisters + kNumberOfFRegisters - i;
+    const int slot = kNumberOfCpuRegisters + kNumberOfFRegisters - i;
     FRegister reg = static_cast<FRegister>(i);
     __ swc1(reg, Address(SP, kPushedRegistersSize - slot * kWordSize));
   }
 
   __ mov(A0, SP);  // Pass address of saved registers block.
+  __ LoadImmediate(A1, (kind == kLazyDeopt) ? 1 : 0);
   __ ReserveAlignedFrameSpace(1 * kWordSize);
-  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 1);
+  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 2);
   // Result (V0) is stack-size (FP - SP) in bytes, incl. the return address.
 
+  const bool preserve_result = (kind == kLazyDeopt);
   if (preserve_result) {
     // Restore result into T1 temporarily.
     __ lw(T1, Address(FP, saved_result_slot_from_fp * kWordSize));
   }
 
+  __ RestoreCodePointer();
   __ LeaveDartFrame();
   __ subu(SP, FP, V0);
 
@@ -510,6 +514,7 @@
     __ lw(T1, Address(FP, kFirstLocalSlotFromFp * kWordSize));
   }
   // Code above cannot cause GC.
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   // Frame is fully rewritten at this point and it is safe to perform a GC.
@@ -539,13 +544,16 @@
 void StubCode::GenerateDeoptimizeLazyStub(Assembler* assembler) {
   // Correct return address to point just after the call that is being
   // deoptimized.
-  __ AddImmediate(RA, -CallPattern::kFixedLengthInBytes);
-  GenerateDeoptimizationSequence(assembler, true);  // Preserve V0.
+  __ AddImmediate(RA, -CallPattern::kDeoptCallLengthInBytes);
+  // Push zap value instead of CODE_REG for lazy deopt.
+  __ LoadImmediate(TMP, 0xf1f1f1f1);
+  __ Push(TMP);
+  GenerateDeoptimizationSequence(assembler, kLazyDeopt);
 }
 
 
 void StubCode::GenerateDeoptimizeStub(Assembler* assembler) {
-  GenerateDeoptimizationSequence(assembler, false);  // Don't preserve V0.
+  GenerateDeoptimizationSequence(assembler, kEagerDeopt);
 }
 
 
@@ -615,6 +623,7 @@
   __ lw(S5, Address(SP, 5 * kWordSize));  // Restore IC data.
   __ addiu(SP, SP, Immediate(6 * kWordSize));
 
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   if (!FLAG_lazy_dispatchers) {
@@ -623,6 +632,7 @@
     __ Bind(&call_target_function);
   }
 
+  __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
   __ lw(T2, FieldAddress(T0, Function::entry_point_offset()));
   __ jr(T2);
 }
@@ -780,7 +790,7 @@
 // Called when invoking Dart code from C++ (VM code).
 // Input parameters:
 //   RA : points to return address.
-//   A0 : entrypoint of the Dart function to call.
+//   A0 : code object of the Dart function to call.
 //   A1 : arguments descriptor array.
 //   A2 : arguments array.
 //   A3 : current thread.
@@ -789,6 +799,10 @@
   __ Comment("InvokeDartCodeStub");
   __ EnterFrame();
 
+  // Push code object to PC marker slot.
+  __ lw(TMP, Address(A3, Thread::invoke_dart_code_stub_offset()));
+  __ Push(TMP);
+
   // Save new context and C++ ABI callee-saved registers.
 
   // The saved vm tag, top resource, and top exit frame info.
@@ -813,10 +827,9 @@
     __ swc1(r, Address(SP, slot * kWordSize));
   }
 
-  // We now load the pool pointer(PP) as we are about to invoke dart code and we
-  // could potentially invoke some intrinsic functions which need the PP to be
-  // set up.
-  __ LoadPoolPointer();
+  // We now load the pool pointer(PP) with a GC safe value as we are about
+  // to invoke dart code.
+  __ LoadImmediate(PP, 0);
 
   // Set up THR, which caches the current thread in Dart code.
   if (THR != A3) {
@@ -840,7 +853,7 @@
   __ lw(T0, Address(THR, Thread::top_exit_frame_info_offset()));
   __ sw(ZR, Address(THR, Thread::top_exit_frame_info_offset()));
   // kExitLinkSlotFromEntryFp must be kept in sync with the code below.
-  ASSERT(kExitLinkSlotFromEntryFp == -23);
+  ASSERT(kExitLinkSlotFromEntryFp == -24);
   __ sw(T0, Address(SP, 0 * kWordSize));
 
   // After the call, The stack pointer is restored to this location.
@@ -875,17 +888,19 @@
   // Call the Dart code entrypoint.
   // We are calling into Dart code, here, so there is no need to call through
   // T9 to match the ABI.
+  __ lw(CODE_REG, Address(A0, VMHandles::kOffsetOfRawPtrInHandle));
+  __ lw(A0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ jalr(A0);  // S4 is the arguments descriptor array.
   __ Comment("InvokeDartCodeStub return");
 
   // Get rid of arguments pushed on the stack.
   __ AddImmediate(SP, FP, kExitLinkSlotFromEntryFp * kWordSize);
 
-  __ LoadIsolate(S6);
+  __ LoadIsolate(S2);
 
   // Restore the current VMTag from the stack.
   __ lw(T1, Address(SP, 2 * kWordSize));
-  __ sw(T1, Address(S6, Isolate::vm_tag_offset()));
+  __ sw(T1, Address(S2, Isolate::vm_tag_offset()));
 
   // Restore the saved top resource and top exit frame info back into the
   // Isolate structure. Uses T0 as a temporary register for this.
@@ -1108,13 +1123,9 @@
 // Input parameters:
 //   RA : return address.
 //   SP + 0 : type arguments object (only if class is parameterized).
-// Returns patch_code_pc offset where patching code for disabling the stub
-// has been generated (similar to regularly generated Dart code).
-void StubCode::GenerateAllocationStubForClass(
-    Assembler* assembler, const Class& cls,
-    uword* entry_patch_offset, uword* patch_code_pc_offset) {
+void StubCode::GenerateAllocationStubForClass(Assembler* assembler,
+                                              const Class& cls) {
   __ Comment("AllocationStubForClass");
-  *entry_patch_offset = assembler->CodeSize();
   // The generated code is different if the class is parameterized.
   const bool is_cls_parameterized = cls.NumTypeArguments() > 0;
   ASSERT(!is_cls_parameterized ||
@@ -1237,8 +1248,6 @@
   // V0: new object
   // Restore the frame pointer and return.
   __ LeaveStubFrameAndReturn(RA);
-  *patch_code_pc_offset = assembler->CodeSize();
-  __ BranchPatchable(*StubCode::FixAllocationStubTarget_entry());
 }
 
 
@@ -1558,6 +1567,9 @@
   // Remove the call arguments pushed earlier, including the IC data object
   // and the arguments descriptor array.
   __ addiu(SP, SP, Immediate(num_slots * kWordSize));
+  if (range_collection_mode == kCollectRanges) {
+    __ RestoreCodePointer();
+  }
   __ LeaveStubFrame();
 
   Label call_target_function;
@@ -1605,6 +1617,7 @@
     if (num_args == 2) {
       __ sw(T1, Address(SP, 1 * kWordSize));
     }
+    __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
     __ jalr(T4);
     __ lw(S5, Address(SP, (frame_size - 2) * kWordSize));
     __ lw(RA, Address(SP, (frame_size - 1) * kWordSize));
@@ -1612,9 +1625,11 @@
     __ UpdateRangeFeedback(V0, 2, S5, T1, &done);
     __ Bind(&done);
     __ addiu(SP, SP, Immediate(frame_size * kWordSize));
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ Ret();
   } else {
+    __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
     __ jr(T4);
   }
 
@@ -1629,6 +1644,7 @@
     __ lw(RA, Address(SP, 0 * kWordSize));
     __ lw(S5, Address(SP, 1 * kWordSize));
     __ addiu(SP, SP, Immediate(2 * kWordSize));
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -1774,6 +1790,7 @@
 
   // Get function and call it, if possible.
   __ lw(T0, Address(T0, target_offset));
+  __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
   __ lw(T4, FieldAddress(T0, Function::entry_point_offset()));
   __ jr(T4);
 
@@ -1788,6 +1805,7 @@
     __ lw(RA, Address(SP, 0 * kWordSize));
     __ lw(S5, Address(SP, 1 * kWordSize));
     __ addiu(SP, SP, Immediate(2 * kWordSize));
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -1827,6 +1845,7 @@
   __ addiu(SP, SP, Immediate(3 * kWordSize));
   __ LeaveStubFrame();
 
+  __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
   __ lw(T2, FieldAddress(T0, Function::entry_point_offset()));
   __ jr(T2);
 }
@@ -1844,9 +1863,10 @@
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
 
   __ lw(S5, Address(SP, 1 * kWordSize));
-  __ lw(T0, Address(SP, 0 * kWordSize));
+  __ lw(CODE_REG, Address(SP, 0 * kWordSize));
   __ addiu(SP, SP, Immediate(2 * kWordSize));
   __ LeaveStubFrame();
+  __ lw(T0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ jr(T0);
 }
 
@@ -1860,9 +1880,10 @@
 
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
 
-  __ lw(T0, Address(SP, 0 * kWordSize));
+  __ lw(CODE_REG, Address(SP, 0 * kWordSize));
   __ addiu(SP, SP, Immediate(3 * kWordSize));
   __ LeaveStubFrame();
+  __ lw(T0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ jr(T0);
 }
 
@@ -2053,11 +2074,11 @@
   __ sw(T0, Address(SP, 0 * kWordSize));
   __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
   __ Comment("OptimizeFunctionStub return");
-  __ lw(T0, Address(SP, 1 * kWordSize));  // Get Code object
+  __ lw(CODE_REG, Address(SP, 1 * kWordSize));  // Get Code object
   __ lw(S4, Address(SP, 2 * kWordSize));  // Restore argument descriptor.
   __ addiu(SP, SP, Immediate(3 * kWordSize));  // Discard argument.
 
-  __ lw(T0, FieldAddress(T0, Code::entry_point_offset()));
+  __ lw(T0, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ LeaveStubFrameAndReturn(T0);
   __ break_(0);
 }
@@ -2178,6 +2199,7 @@
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
     __ lw(RA, Address(SP, 0 * kWordSize));
     __ addiu(SP, SP, Immediate(1 * kWordSize));
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ b(&done_stepping);
   }
@@ -2238,6 +2260,7 @@
   __ addu(T1, T2, T1);
   __ lw(T0, FieldAddress(T1, base + kWordSize));
 
+  __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
   __ lw(target, FieldAddress(T0, Function::entry_point_offset()));
 }
 
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index 0dd4640..7b4561d 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -79,7 +79,8 @@
   // There are no runtime calls to closures, so we do not need to set the tag
   // bits kClosureFunctionBit and kInstanceFunctionBit in argc_tag_.
   __ movq(Address(RSP, argc_tag_offset), R10);  // Set argc in NativeArguments.
-  __ leaq(RAX, Address(RBP, R10, TIMES_8, 1 * kWordSize));  // Compute argv.
+  // Compute argv.
+  __ leaq(RAX, Address(RBP, R10, TIMES_8, kParamEndSlotFromFp * kWordSize));
   __ movq(Address(RSP, argv_offset), RAX);  // Set argv in NativeArguments.
   __ addq(RAX, Immediate(1 * kWordSize));  // Retval is next to 1st argument.
   __ movq(Address(RSP, retval_offset), RAX);  // Set retval in NativeArguments.
@@ -184,8 +185,8 @@
   __ movq(CallingConventions::kArg1Reg, RSP);
   // Pass pointer to function entrypoint.
   __ movq(CallingConventions::kArg2Reg, RBX);
-  __ LoadExternalLabel(
-      RAX, &NativeEntry::NativeCallWrapperLabel(), kNotPatchable);
+
+  __ movq(RAX, Address(THR, Thread::native_call_wrapper_entry_point_offset()));
   __ CallCFunction(RAX);
 
   // Mark that the isolate is executing Dart code.
@@ -280,12 +281,12 @@
   // Setup space on stack for return value.
   __ PushObject(Object::null_object());
   __ CallRuntime(kPatchStaticCallRuntimeEntry, 0);
-  __ popq(RAX);  // Get Code object result.
+  __ popq(CODE_REG);  // Get Code object result.
   __ popq(R10);  // Restore arguments descriptor array.
   // Remove the stub frame as we are about to jump to the dart function.
   __ LeaveStubFrame();
 
-  __ movq(RBX, FieldAddress(RAX, Code::entry_point_offset()));
+  __ movq(RBX, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ jmp(RBX);
 }
 
@@ -294,14 +295,18 @@
 // (invalid because its function was optimized or deoptimized).
 // R10: arguments descriptor array.
 void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ movq(CODE_REG, Address(THR, Thread::fix_callers_target_code_offset()));
   __ EnterStubFrame();
   __ pushq(R10);  // Preserve arguments descriptor array.
   // Setup space on stack for return value.
   __ PushObject(Object::null_object());
   __ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
-  __ popq(RAX);  // Get Code object.
+  __ popq(CODE_REG);  // Get Code object.
   __ popq(R10);  // Restore arguments descriptor array.
-  __ movq(RAX, FieldAddress(RAX, Code::entry_point_offset()));
+  __ movq(RAX, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ LeaveStubFrame();
   __ jmp(RAX);
   __ int3();
@@ -311,12 +316,16 @@
 // Called from object allocate instruction when the allocation stub has been
 // disabled.
 void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) {
+  // Load code pointer to this stub from the thread:
+  // The one that is passed in, is not correct - it points to the code object
+  // that needs to be replaced.
+  __ movq(CODE_REG, Address(THR, Thread::fix_allocation_stub_code_offset()));
   __ EnterStubFrame();
   // Setup space on stack for return value.
   __ PushObject(Object::null_object());
   __ CallRuntime(kFixAllocationStubTargetRuntimeEntry, 0);
-  __ popq(RAX);  // Get Code object.
-  __ movq(RAX, FieldAddress(RAX, Code::entry_point_offset()));
+  __ popq(CODE_REG);  // Get Code object.
+  __ movq(RAX, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ LeaveStubFrame();
   __ jmp(RAX);
   __ int3();
@@ -379,11 +388,13 @@
 //   +------------------+
 //   | return-address   |  (deoptimization point)
 //   +------------------+
+//   | Saved CODE_REG   |
+//   +------------------+
 //   | ...              | <- SP of optimized frame
 //
 // Parts of the code cannot GC, part of the code can GC.
 static void GenerateDeoptimizationSequence(Assembler* assembler,
-                                           bool preserve_result) {
+                                           DeoptStubKind kind) {
   // DeoptimizeCopyFrame expects a Dart frame, i.e. EnterDartFrame(0), but there
   // is no need to set the correct PC marker or load PP, since they get patched.
   __ EnterStubFrame();
@@ -397,7 +408,13 @@
   // Push registers in their enumeration order: lowest register number at
   // lowest address.
   for (intptr_t i = kNumberOfCpuRegisters - 1; i >= 0; i--) {
-    __ pushq(static_cast<Register>(i));
+    if (i == CODE_REG) {
+      // Save the original value of CODE_REG pushed before invoking this stub
+      // instead of the value used to call this stub.
+      __ pushq(Address(RBP, 2 * kWordSize));
+    } else {
+      __ pushq(static_cast<Register>(i));
+    }
   }
   __ subq(RSP, Immediate(kNumberOfXmmRegisters * kFpuRegisterSize));
   intptr_t offset = 0;
@@ -409,16 +426,19 @@
 
   // Pass address of saved registers block.
   __ movq(CallingConventions::kArg1Reg, RSP);
+  __ movq(CallingConventions::kArg2Reg, Immediate(kind == kLazyDeopt ? 1 : 0));
   __ ReserveAlignedFrameSpace(0);  // Ensure stack is aligned before the call.
-  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 1);
+  __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 2);
   // Result (RAX) is stack-size (FP - SP) in bytes.
 
+  const bool preserve_result = (kind == kLazyDeopt);
   if (preserve_result) {
     // Restore result into RBX temporarily.
     __ movq(RBX, Address(RBP, saved_result_slot_from_fp * kWordSize));
   }
 
   // There is a Dart Frame on the stack. We must restore PP and leave frame.
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   __ popq(RCX);   // Preserve return address.
@@ -443,6 +463,7 @@
   }
   // Code above cannot cause GC.
   // There is a Dart Frame on the stack. We must restore PP and leave frame.
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
 
   // Frame is fully rewritten at this point and it is safe to perform a GC.
@@ -478,13 +499,15 @@
   // deoptimized.
   __ popq(RBX);
   __ subq(RBX, Immediate(ShortCallPattern::pattern_length_in_bytes()));
+  // Push zap value instead of CODE_REG for lazy deopt.
+  __ pushq(Immediate(0xf1f1f1f1));
   __ pushq(RBX);
-  GenerateDeoptimizationSequence(assembler, true);  // Preserve RAX.
+  GenerateDeoptimizationSequence(assembler, kLazyDeopt);
 }
 
 
 void StubCode::GenerateDeoptimizeStub(Assembler* assembler) {
-  GenerateDeoptimizationSequence(assembler, false);  // Don't preserve RAX.
+  GenerateDeoptimizationSequence(assembler, kEagerDeopt);
 }
 
 
@@ -542,14 +565,14 @@
   __ popq(RAX);  // Return value from the runtime call (function).
   __ popq(R10);  // Restore arguments descriptor.
   __ popq(RBX);  // Restore IC data.
+  __ RestoreCodePointer();
   __ LeaveStubFrame();
-
   if (!FLAG_lazy_dispatchers) {
     Label call_target_function;
     GenerateDispatcherCode(assembler, &call_target_function);
     __ Bind(&call_target_function);
   }
-
+  __ movq(CODE_REG, FieldAddress(RAX, Function::code_offset()));
   __ movq(RCX, FieldAddress(RAX, Function::entry_point_offset()));
   __ jmp(RCX);
 }
@@ -693,7 +716,7 @@
 // Called when invoking Dart code from C++ (VM code).
 // Input parameters:
 //   RSP : points to return address.
-//   RDI : entrypoint of the Dart function to call.
+//   RDI : target code
 //   RSI : arguments descriptor array.
 //   RDX : arguments array.
 //   RCX : current thread.
@@ -701,16 +724,20 @@
   // Save frame pointer coming in.
   __ EnterFrame(0);
 
-  const Register kEntryPointReg = CallingConventions::kArg1Reg;
+  const Register kTargetCodeReg = CallingConventions::kArg1Reg;
   const Register kArgDescReg    = CallingConventions::kArg2Reg;
   const Register kArgsReg       = CallingConventions::kArg3Reg;
   const Register kThreadReg     = CallingConventions::kArg4Reg;
 
+  // Push code object to PC marker slot.
+  __ pushq(Address(kThreadReg, Thread::invoke_dart_code_stub_offset()));
+
   // At this point, the stack looks like:
+  // | stub code object
   // | saved RBP                                      | <-- RBP
   // | saved PC (return to DartEntry::InvokeFunction) |
 
-  const intptr_t kInitialOffset = 1;
+  const intptr_t kInitialOffset = 2;
   // Save arguments descriptor array.
   const intptr_t kArgumentsDescOffset = -(kInitialOffset) * kWordSize;
   __ pushq(kArgDescReg);
@@ -719,11 +746,6 @@
   __ PushRegisters(CallingConventions::kCalleeSaveCpuRegisters,
                    CallingConventions::kCalleeSaveXmmRegisters);
 
-  // We now load the pool pointer(PP) as we are about to invoke dart code and we
-  // could potentially invoke some intrinsic functions which need the PP to be
-  // set up.
-  __ LoadPoolPointer();
-
   // If any additional (or fewer) values are pushed, the offsets in
   // kExitLinkSlotFromEntryFp will need to be changed.
 
@@ -763,14 +785,15 @@
     __ Bind(&ok);
   }
 #endif
+
   __ movq(Address(THR, Thread::top_exit_frame_info_offset()),
           Immediate(0));
 
   // Load arguments descriptor array into R10, which is passed to Dart code.
   __ movq(R10, Address(kArgDescReg, VMHandles::kOffsetOfRawPtrInHandle));
 
-  // Push arguments. At this point we only need to preserve kEntryPointReg.
-  ASSERT(kEntryPointReg != RDX);
+  // Push arguments. At this point we only need to preserve kTargetCodeReg.
+  ASSERT(kTargetCodeReg != RDX);
 
   // Load number of arguments into RBX.
   __ movq(RBX, FieldAddress(R10, ArgumentsDescriptor::count_offset()));
@@ -794,7 +817,11 @@
   __ Bind(&done_push_arguments);
 
   // Call the Dart code entrypoint.
-  __ call(kEntryPointReg);  // R10 is the arguments descriptor array.
+  __ xorq(PP, PP);  // GC-safe value into PP.
+  __ movq(CODE_REG,
+          Address(kTargetCodeReg, VMHandles::kOffsetOfRawPtrInHandle));
+  __ movq(kTargetCodeReg, FieldAddress(CODE_REG, Code::entry_point_offset()));
+  __ call(kTargetCodeReg);  // R10 is the arguments descriptor array.
 
   // Read the saved arguments descriptor array to obtain the number of passed
   // arguments.
@@ -831,7 +858,7 @@
 // Output:
 // RAX: new allocated RawContext object.
 void StubCode::GenerateAllocateContextStub(Assembler* assembler) {
-  __ LoadObject(R12, Object::null_object());
+  __ LoadObject(R9, Object::null_object());
   if (FLAG_inline_alloc) {
     Label slow_case;
     // First compute the rounded instance size.
@@ -915,7 +942,7 @@
     // No generational barrier needed, since we are storing null.
     __ InitializeFieldNoBarrier(RAX,
                                 FieldAddress(RAX, Context::parent_offset()),
-                                R12);
+                                R9);
 
     // Initialize the context variables.
     // RAX: new object.
@@ -934,7 +961,7 @@
       // No generational barrier needed, since we are storing null.
       __ InitializeFieldNoBarrier(RAX,
                                   Address(R13, R10, TIMES_8, 0),
-                                  R12);
+                                  R9);
       __ Bind(&entry);
       __ cmpq(R10, Immediate(0));
       __ j(NOT_EQUAL, &loop, Assembler::kNearJump);
@@ -948,7 +975,7 @@
   }
   // Create a stub frame.
   __ EnterStubFrame();
-  __ pushq(R12);  // Setup space on stack for the return value.
+  __ pushq(R9);  // Setup space on stack for the return value.
   __ SmiTag(R10);
   __ pushq(R10);  // Push number of context variables.
   __ CallRuntime(kAllocateContextRuntimeEntry, 1);  // Allocate context.
@@ -1028,14 +1055,8 @@
 // Input parameters:
 //   RSP + 8 : type arguments object (only if class is parameterized).
 //   RSP : points to return address.
-void StubCode::GenerateAllocationStubForClass(
-    Assembler* assembler, const Class& cls,
-    uword* entry_patch_offset, uword* patch_code_pc_offset) {
-  // Must load pool pointer before being able to patch.
-  Register new_pp = R13;
-  __ LoadPoolPointer(new_pp);
-  *entry_patch_offset = assembler->CodeSize();
-
+void StubCode::GenerateAllocationStubForClass(Assembler* assembler,
+                                              const Class& cls) {
   const intptr_t kObjectTypeArgumentsOffset = 1 * kWordSize;
   // The generated code is different if the class is parameterized.
   const bool is_cls_parameterized = cls.NumTypeArguments() > 0;
@@ -1047,7 +1068,7 @@
   const int kInlineInstanceSize = 12;  // In words.
   const intptr_t instance_size = cls.instance_size();
   ASSERT(instance_size > 0);
-  __ LoadObject(R12, Object::null_object());
+  __ LoadObject(R9, Object::null_object());
   if (is_cls_parameterized) {
     __ movq(RDX, Address(RSP, kObjectTypeArgumentsOffset));
     // RDX: instantiated type arguments.
@@ -1091,7 +1112,7 @@
     // RAX: new object (tagged).
     // RBX: next object start.
     // RDX: new object type arguments (if is_cls_parameterized).
-    // R12: raw null.
+    // R9: raw null.
     // First try inlining the initialization without a loop.
     if (instance_size < (kInlineInstanceSize * kWordSize)) {
       // Check if the object contains any non-header fields.
@@ -1101,7 +1122,7 @@
            current_offset += kWordSize) {
         __ InitializeFieldNoBarrier(RAX,
                                     FieldAddress(RAX, current_offset),
-                                    R12);
+                                    R9);
       }
     } else {
       __ leaq(RCX, FieldAddress(RAX, Instance::NextFieldOffset()));
@@ -1120,7 +1141,7 @@
       static const bool kJumpLength = Assembler::kNearJump;
 #endif  // DEBUG
       __ j(ABOVE_EQUAL, &done, kJumpLength);
-      __ InitializeFieldNoBarrier(RAX, Address(RCX, 0), R12);
+      __ InitializeFieldNoBarrier(RAX, Address(RCX, 0), R9);
       __ addq(RCX, Immediate(kWordSize));
       __ jmp(&init_loop, Assembler::kNearJump);
       __ Bind(&done);
@@ -1141,12 +1162,12 @@
   // RDX: new object type arguments.
   // Create a stub frame.
   __ EnterStubFrame();  // Uses PP to access class object.
-  __ pushq(R12);  // Setup space on stack for return value.
+  __ pushq(R9);  // Setup space on stack for return value.
   __ PushObject(cls);  // Push class of object to be allocated.
   if (is_cls_parameterized) {
     __ pushq(RDX);  // Push type arguments of object to be allocated.
   } else {
-    __ pushq(R12);  // Push null type arguments.
+    __ pushq(R9);  // Push null type arguments.
   }
   __ CallRuntime(kAllocateObjectRuntimeEntry, 2);  // Allocate object.
   __ popq(RAX);  // Pop argument (type arguments of object).
@@ -1156,8 +1177,6 @@
   // Restore the frame pointer.
   __ LeaveStubFrame();
   __ ret();
-  *patch_code_pc_offset = assembler->CodeSize();
-  __ JmpPatchable(*StubCode::FixAllocationStubTarget_entry(), new_pp);
 }
 
 
@@ -1243,9 +1262,9 @@
   ASSERT(num_args == 2);
   __ movq(RCX, Address(RSP, + 1 * kWordSize));  // Right
   __ movq(RAX, Address(RSP, + 2 * kWordSize));  // Left.
-  __ movq(R12, RCX);
-  __ orq(R12, RAX);
-  __ testq(R12, Immediate(kSmiTagMask));
+  __ movq(R13, RCX);
+  __ orq(R13, RAX);
+  __ testq(R13, Immediate(kSmiTagMask));
   __ j(NOT_ZERO, not_smi_or_overflow);
   switch (kind) {
     case Token::kADD: {
@@ -1281,18 +1300,18 @@
   }
 
   // RBX: IC data object (preserved).
-  __ movq(R12, FieldAddress(RBX, ICData::ic_data_offset()));
-  // R12: ic_data_array with check entries: classes and target functions.
-  __ leaq(R12, FieldAddress(R12, Array::data_offset()));
-  // R12: points directly to the first ic data array element.
+  __ movq(R13, FieldAddress(RBX, ICData::ic_data_offset()));
+  // R13: ic_data_array with check entries: classes and target functions.
+  __ leaq(R13, FieldAddress(R13, Array::data_offset()));
+  // R13: points directly to the first ic data array element.
 #if defined(DEBUG)
   // Check that first entry is for Smi/Smi.
   Label error, ok;
   const Immediate& imm_smi_cid =
       Immediate(reinterpret_cast<intptr_t>(Smi::New(kSmiCid)));
-  __ cmpq(Address(R12, 0 * kWordSize), imm_smi_cid);
+  __ cmpq(Address(R13, 0 * kWordSize), imm_smi_cid);
   __ j(NOT_EQUAL, &error, Assembler::kNearJump);
-  __ cmpq(Address(R12, 1 * kWordSize), imm_smi_cid);
+  __ cmpq(Address(R13, 1 * kWordSize), imm_smi_cid);
   __ j(EQUAL, &ok, Assembler::kNearJump);
   __ Bind(&error);
   __ Stop("Incorrect IC data");
@@ -1302,11 +1321,11 @@
   if (FLAG_optimization_counter_threshold >= 0) {
     const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
     // Update counter.
-    __ movq(R8, Address(R12, count_offset));
+    __ movq(R8, Address(R13, count_offset));
     __ addq(R8, Immediate(Smi::RawValue(1)));
-    __ movq(R13, Immediate(Smi::RawValue(Smi::kMaxValue)));
-    __ cmovnoq(R13, R8);
-    __ StoreIntoSmiField(Address(R12, count_offset), R13);
+    __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
+    __ cmovnoq(R9, R8);
+    __ StoreIntoSmiField(Address(R13, count_offset), R9);
   }
 
   __ ret();
@@ -1382,18 +1401,18 @@
   // Loop that checks if there is an IC data match.
   Label loop, update, test, found;
   // RBX: IC data object (preserved).
-  __ movq(R12, FieldAddress(RBX, ICData::ic_data_offset()));
-  // R12: ic_data_array with check entries: classes and target functions.
-  __ leaq(R12, FieldAddress(R12, Array::data_offset()));
-  // R12: points directly to the first ic data array element.
+  __ movq(R13, FieldAddress(RBX, ICData::ic_data_offset()));
+  // R13: ic_data_array with check entries: classes and target functions.
+  __ leaq(R13, FieldAddress(R13, Array::data_offset()));
+  // R13: points directly to the first ic data array element.
 
   // Get the receiver's class ID (first read number of arguments from
   // arguments descriptor array and then access the receiver from the stack).
   __ movq(RAX, FieldAddress(R10, ArgumentsDescriptor::count_offset()));
-  __ movq(R13, Address(RSP, RAX, TIMES_4, 0));  // RAX (argument count) is Smi.
-  __ LoadTaggedClassIdMayBeSmi(RAX, R13);
+  __ movq(R9, Address(RSP, RAX, TIMES_4, 0));  // RAX (argument count) is Smi.
+  __ LoadTaggedClassIdMayBeSmi(RAX, R9);
   // RAX: receiver's class ID as smi.
-  __ movq(R13, Address(R12, 0));  // First class ID (Smi) to check.
+  __ movq(R9, Address(R13, 0));  // First class ID (Smi) to check.
   __ jmp(&test);
 
   __ Comment("ICData loop");
@@ -1402,13 +1421,13 @@
     if (i > 0) {
       // If not the first, load the next argument's class ID.
       __ movq(RAX, FieldAddress(R10, ArgumentsDescriptor::count_offset()));
-      __ movq(R13, Address(RSP, RAX, TIMES_4, - i * kWordSize));
-      __ LoadTaggedClassIdMayBeSmi(RAX, R13);
+      __ movq(R9, Address(RSP, RAX, TIMES_4, - i * kWordSize));
+      __ LoadTaggedClassIdMayBeSmi(RAX, R9);
       // RAX: next argument class ID (smi).
-      __ movq(R13, Address(R12, i * kWordSize));
-      // R13: next class ID to check (smi).
+      __ movq(R9, Address(R13, i * kWordSize));
+      // R9: next class ID to check (smi).
     }
-    __ cmpq(RAX, R13);  // Class id match?
+    __ cmpq(RAX, R9);  // Class id match?
     if (i < (num_args - 1)) {
       __ j(NOT_EQUAL, &update);  // Continue.
     } else {
@@ -1420,20 +1439,20 @@
   // Reload receiver class ID.  It has not been destroyed when num_args == 1.
   if (num_args > 1) {
     __ movq(RAX, FieldAddress(R10, ArgumentsDescriptor::count_offset()));
-    __ movq(R13, Address(RSP, RAX, TIMES_4, 0));
-    __ LoadTaggedClassIdMayBeSmi(RAX, R13);
+    __ movq(R9, Address(RSP, RAX, TIMES_4, 0));
+    __ LoadTaggedClassIdMayBeSmi(RAX, R9);
   }
 
   const intptr_t entry_size = ICData::TestEntryLengthFor(num_args) * kWordSize;
-  __ addq(R12, Immediate(entry_size));  // Next entry.
-  __ movq(R13, Address(R12, 0));  // Next class ID.
+  __ addq(R13, Immediate(entry_size));  // Next entry.
+  __ movq(R9, Address(R13, 0));  // Next class ID.
 
   __ Bind(&test);
-  __ cmpq(R13, Immediate(Smi::RawValue(kIllegalCid)));  // Done?
+  __ cmpq(R9, Immediate(Smi::RawValue(kIllegalCid)));  // Done?
   __ j(NOT_EQUAL, &loop, Assembler::kNearJump);
 
   __ Comment("IC miss");
-  __ LoadObject(R12, Object::null_object());
+  __ LoadObject(R13, Object::null_object());
   // Compute address of arguments (first read number of arguments from
   // arguments descriptor array and then compute address on the stack).
   __ movq(RAX, FieldAddress(R10, ArgumentsDescriptor::count_offset()));
@@ -1441,7 +1460,7 @@
   __ EnterStubFrame();
   __ pushq(R10);  // Preserve arguments descriptor array.
   __ pushq(RBX);  // Preserve IC data object.
-  __ pushq(R12);  // Setup space on stack for result (target code object).
+  __ pushq(R13);  // Setup space on stack for result (target code object).
   // Push call arguments.
   for (intptr_t i = 0; i < num_args; i++) {
     __ movq(RCX, Address(RAX, -kWordSize * i));
@@ -1456,6 +1475,9 @@
   __ popq(RAX);  // Pop returned function object into RAX.
   __ popq(RBX);  // Restore IC data array.
   __ popq(R10);  // Restore arguments descriptor array.
+  if (range_collection_mode == kCollectRanges) {
+    __ RestoreCodePointer();
+  }
   __ LeaveStubFrame();
   Label call_target_function;
   if (!FLAG_lazy_dispatchers) {
@@ -1465,37 +1487,39 @@
   }
 
   __ Bind(&found);
-  // R12: Pointer to an IC data check group.
+  // R13: Pointer to an IC data check group.
   const intptr_t target_offset = ICData::TargetIndexFor(num_args) * kWordSize;
   const intptr_t count_offset = ICData::CountIndexFor(num_args) * kWordSize;
-  __ movq(RAX, Address(R12, target_offset));
+  __ movq(RAX, Address(R13, target_offset));
 
   if (FLAG_optimization_counter_threshold >= 0) {
     // Update counter.
     __ Comment("Update caller's counter");
-    __ movq(R8, Address(R12, count_offset));
+    __ movq(R8, Address(R13, count_offset));
     __ addq(R8, Immediate(Smi::RawValue(1)));
-    __ movq(R13, Immediate(Smi::RawValue(Smi::kMaxValue)));
-    __ cmovnoq(R13, R8);
-    __ StoreIntoSmiField(Address(R12, count_offset), R13);
+    __ movq(R9, Immediate(Smi::RawValue(Smi::kMaxValue)));
+    __ cmovnoq(R9, R8);
+    __ StoreIntoSmiField(Address(R13, count_offset), R9);
   }
 
   __ Comment("Call target");
   __ Bind(&call_target_function);
   // RAX: Target function.
   Label is_compiled;
-  __ movq(RCX, FieldAddress(RAX, Function::entry_point_offset()));
   if (range_collection_mode == kCollectRanges) {
+    __ movq(R13, FieldAddress(RAX, Function::code_offset()));
+    __ movq(RCX, FieldAddress(RAX, Function::entry_point_offset()));
     __ movq(R8, Address(RSP, + 1 * kWordSize));
     if (num_args == 2) {
-      __ movq(R13, Address(RSP, + 2 * kWordSize));
+      __ movq(R9, Address(RSP, + 2 * kWordSize));
     }
     __ EnterStubFrame();
     __ pushq(RBX);
     if (num_args == 2) {
-      __ pushq(R13);
+      __ pushq(R9);
     }
     __ pushq(R8);
+    __ movq(CODE_REG, R13);
     __ call(RCX);
 
     Label done;
@@ -1506,6 +1530,8 @@
     __ LeaveStubFrame();
     __ ret();
   } else {
+    __ movq(CODE_REG, FieldAddress(RAX, Function::code_offset()));
+    __ movq(RCX, FieldAddress(RAX, Function::entry_point_offset()));
     __ jmp(RCX);
   }
 
@@ -1515,6 +1541,7 @@
     __ pushq(RBX);
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
     __ popq(RBX);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ jmp(&done_stepping);
   }
@@ -1683,6 +1710,7 @@
 
   // Get function and call it, if possible.
   __ movq(RAX, Address(R12, target_offset));
+  __ movq(CODE_REG, FieldAddress(RAX, Function::code_offset()));
   __ movq(RCX, FieldAddress(RAX, Function::entry_point_offset()));
   __ jmp(RCX);
 
@@ -1692,6 +1720,7 @@
     __ pushq(RBX);  // Preserve IC data object.
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
     __ popq(RBX);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ jmp(&done_stepping, Assembler::kNearJump);
   }
@@ -1734,6 +1763,7 @@
   __ popq(R10);  // Restore arguments descriptor array.
   __ LeaveStubFrame();
 
+  __ movq(CODE_REG, FieldAddress(RAX, Function::code_offset()));
   __ movq(RAX, FieldAddress(RAX, Function::entry_point_offset()));
   __ jmp(RAX);
 }
@@ -1750,9 +1780,11 @@
   __ LoadObject(R12, Object::null_object());
   __ pushq(R12);  // Room for result.
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
-  __ popq(RAX);  // Address of original.
+  __ popq(CODE_REG);  // Address of original.
   __ popq(RBX);  // Restore IC data.
   __ LeaveStubFrame();
+
+  __ movq(RAX, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ jmp(RAX);   // Jump to original stub.
 }
 
@@ -1765,8 +1797,10 @@
   __ LoadObject(R12, Object::null_object());
   __ pushq(R12);  // Room for result.
   __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
-  __ popq(RAX);  // Address of original.
+  __ popq(CODE_REG);  // Address of original.
   __ LeaveStubFrame();
+
+  __ movq(RAX, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ jmp(RAX);   // Jump to original stub.
 }
 
@@ -1802,12 +1836,12 @@
   const intptr_t kInstanceOffsetInBytes = 2 * kWordSize;
   const intptr_t kCacheOffsetInBytes = 3 * kWordSize;
   __ movq(RAX, Address(RSP, kInstanceOffsetInBytes));
-  __ LoadObject(R12, Object::null_object());
+  __ LoadObject(R9, Object::null_object());
   if (n > 1) {
     __ LoadClass(R10, RAX);
     // Compute instance type arguments into R13.
     Label has_no_type_arguments;
-    __ movq(R13, R12);
+    __ movq(R13, R9);
     __ movl(RDI, FieldAddress(R10,
         Class::type_arguments_field_offset_in_words_offset()));
     __ cmpl(RDI, Immediate(Class::kNoTypeArguments));
@@ -1829,7 +1863,7 @@
   __ SmiTag(R10);
   __ Bind(&loop);
   __ movq(RDI, Address(RDX, kWordSize * SubtypeTestCache::kInstanceClassId));
-  __ cmpq(RDI, R12);
+  __ cmpq(RDI, R9);
   __ j(EQUAL, &not_found, Assembler::kNearJump);
   __ cmpq(RDI, R10);
   if (n == 1) {
@@ -1856,7 +1890,7 @@
   __ jmp(&loop, Assembler::kNearJump);
   // Fall through to not found.
   __ Bind(&not_found);
-  __ movq(RCX, R12);
+  __ movq(RCX, R9);
   __ ret();
 
   __ Bind(&found);
@@ -1959,9 +1993,9 @@
   __ pushq(RDI);
   __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
   __ popq(RAX);  // Disard argument.
-  __ popq(RAX);  // Get Code object.
+  __ popq(CODE_REG);  // Get Code object.
   __ popq(R10);  // Restore argument descriptor.
-  __ movq(RAX, FieldAddress(RAX, Code::entry_point_offset()));
+  __ movq(RAX, FieldAddress(CODE_REG, Code::entry_point_offset()));
   __ LeaveStubFrame();
   __ jmp(RAX);
   __ int3();
@@ -1988,27 +2022,27 @@
   __ CompareClassId(left, kDoubleCid);
   __ j(NOT_EQUAL, &check_mint, Assembler::kNearJump);
   __ CompareClassId(right, kDoubleCid);
-  __ j(NOT_EQUAL, &done, Assembler::kNearJump);
+  __ j(NOT_EQUAL, &done, Assembler::kFarJump);
 
   // Double values bitwise compare.
   __ movq(left, FieldAddress(left, Double::value_offset()));
   __ cmpq(left, FieldAddress(right, Double::value_offset()));
-  __ jmp(&done, Assembler::kNearJump);
+  __ jmp(&done, Assembler::kFarJump);
 
   __ Bind(&check_mint);
   __ CompareClassId(left, kMintCid);
   __ j(NOT_EQUAL, &check_bigint, Assembler::kNearJump);
   __ CompareClassId(right, kMintCid);
-  __ j(NOT_EQUAL, &done, Assembler::kNearJump);
+  __ j(NOT_EQUAL, &done, Assembler::kFarJump);
   __ movq(left, FieldAddress(left, Mint::value_offset()));
   __ cmpq(left, FieldAddress(right, Mint::value_offset()));
-  __ jmp(&done, Assembler::kNearJump);
+  __ jmp(&done, Assembler::kFarJump);
 
   __ Bind(&check_bigint);
   __ CompareClassId(left, kBigintCid);
-  __ j(NOT_EQUAL, &reference_compare, Assembler::kNearJump);
+  __ j(NOT_EQUAL, &reference_compare, Assembler::kFarJump);
   __ CompareClassId(right, kBigintCid);
-  __ j(NOT_EQUAL, &done, Assembler::kNearJump);
+  __ j(NOT_EQUAL, &done, Assembler::kFarJump);
   __ EnterStubFrame();
   __ ReserveAlignedFrameSpace(0);
   __ movq(CallingConventions::kArg1Reg, left);
@@ -2054,6 +2088,7 @@
     __ Bind(&stepping);
     __ EnterStubFrame();
     __ CallRuntime(kSingleStepHandlerRuntimeEntry, 0);
+    __ RestoreCodePointer();
     __ LeaveStubFrame();
     __ jmp(&done_stepping);
   }
@@ -2111,6 +2146,7 @@
   // illegal class id was found, the target is a cache miss handler that can
   // be invoked as a normal Dart function.
   __ movq(RAX, FieldAddress(RDI, RCX, TIMES_8, base + kWordSize));
+  __ movq(CODE_REG, FieldAddress(RAX, Function::code_offset()));
   __ movq(target, FieldAddress(RAX, Function::entry_point_offset()));
 }
 
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc
index ceba83f..79ccec8 100644
--- a/runtime/vm/thread.cc
+++ b/runtime/vm/thread.cc
@@ -8,6 +8,7 @@
 #include "vm/isolate.h"
 #include "vm/lockers.h"
 #include "vm/log.h"
+#include "vm/native_entry.h"
 #include "vm/object.h"
 #include "vm/os_thread.h"
 #include "vm/profiler.h"
@@ -255,8 +256,8 @@
 // TODO(koda): Make non-static and invoke in SafepointThreads.
 void Thread::PrepareForGC() {
   Thread* thread = Thread::Current();
-  const bool kDoNotCheckThreshold = false;  // Prevent scheduling another GC.
-  thread->StoreBufferRelease(kDoNotCheckThreshold);
+  // Prevent scheduling another GC.
+  thread->StoreBufferRelease(StoreBuffer::kIgnoreThreshold);
   // Make sure to get an *empty* block; the isolate needs all entries
   // at GC time.
   // TODO(koda): Replace with an epilogue (PrepareAfterGC) that acquires.
@@ -265,8 +266,8 @@
 }
 
 
-void Thread::StoreBufferBlockProcess(bool check_threshold) {
-  StoreBufferRelease(check_threshold);
+void Thread::StoreBufferBlockProcess(StoreBuffer::ThresholdPolicy policy) {
+  StoreBufferRelease(policy);
   StoreBufferAcquire();
 }
 
@@ -274,7 +275,7 @@
 void Thread::StoreBufferAddObject(RawObject* obj) {
   store_buffer_block_->Push(obj);
   if (store_buffer_block_->IsFull()) {
-    StoreBufferBlockProcess(true);
+    StoreBufferBlockProcess(StoreBuffer::kCheckThreshold);
   }
 }
 
@@ -282,15 +283,15 @@
 void Thread::StoreBufferAddObjectGC(RawObject* obj) {
   store_buffer_block_->Push(obj);
   if (store_buffer_block_->IsFull()) {
-    StoreBufferBlockProcess(false);
+    StoreBufferBlockProcess(StoreBuffer::kIgnoreThreshold);
   }
 }
 
 
-void Thread::StoreBufferRelease(bool check_threshold) {
+void Thread::StoreBufferRelease(StoreBuffer::ThresholdPolicy policy) {
   StoreBufferBlock* block = store_buffer_block_;
   store_buffer_block_ = NULL;
-  isolate_->store_buffer()->PushBlock(block, check_threshold);
+  isolate_->store_buffer()->PushBlock(block, policy);
 }
 
 
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 5e14a8f..1847f5b 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -21,6 +21,7 @@
 class Object;
 class RawBool;
 class RawObject;
+class RawCode;
 class RawString;
 class RuntimeEntry;
 class StackResource;
@@ -32,10 +33,21 @@
   V(RawObject*, object_null_, Object::null(), NULL)                            \
   V(RawBool*, bool_true_, Object::bool_true().raw(), NULL)                     \
   V(RawBool*, bool_false_, Object::bool_false().raw(), NULL)                   \
+  V(RawCode*, update_store_buffer_code_,                                       \
+    StubCode::UpdateStoreBuffer_entry()->code(), NULL)                         \
+  V(RawCode*, fix_callers_target_code_,                                        \
+    StubCode::FixCallersTarget_entry()->code(), NULL)                          \
+  V(RawCode*, fix_allocation_stub_code_,                                       \
+    StubCode::FixAllocationStubTarget_entry()->code(), NULL)                   \
+  V(RawCode*, invoke_dart_code_stub_,                                          \
+    StubCode::InvokeDartCode_entry()->code(), NULL)                            \
+
 
 #define CACHED_ADDRESSES_LIST(V)                                               \
   V(uword, update_store_buffer_entry_point_,                                   \
     StubCode::UpdateStoreBuffer_entry()->EntryPoint(), 0)                      \
+  V(uword, native_call_wrapper_entry_point_,                                   \
+    NativeEntry::NativeCallWrapperEntry(), 0)                                  \
   V(RawString**, predefined_symbols_address_,                                  \
     Symbols::PredefinedAddress(), NULL)                                        \
 
@@ -129,7 +141,7 @@
     return store_buffer_block_->Contains(obj);
   }
 #endif
-  void StoreBufferBlockProcess(bool check_threshold);
+  void StoreBufferBlockProcess(StoreBuffer::ThresholdPolicy policy);
   static intptr_t store_buffer_block_offset() {
     return OFFSET_OF(Thread, store_buffer_block_);
   }
@@ -309,7 +321,8 @@
     memset(&state_, 0, sizeof(state_));
   }
 
-  void StoreBufferRelease(bool check_threshold = true);
+  void StoreBufferRelease(
+      StoreBuffer::ThresholdPolicy policy = StoreBuffer::kCheckThreshold);
   void StoreBufferAcquire();
 
   void set_zone(Zone* zone) {
diff --git a/runtime/vm/thread_barrier.h b/runtime/vm/thread_barrier.h
new file mode 100644
index 0000000..9cc1d97
--- /dev/null
+++ b/runtime/vm/thread_barrier.h
@@ -0,0 +1,116 @@
+// 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.
+
+#ifndef VM_THREAD_BARRIER_H_
+#define VM_THREAD_BARRIER_H_
+
+#include "vm/globals.h"
+#include "vm/os_thread.h"
+#include "vm/lockers.h"
+
+namespace dart {
+
+// Thread barrier with:
+// * fixed (at construction) number n of participating threads {T1,T2,T3,...,Tn}
+// * unknown number of rounds.
+// Requirements:
+// * there is some R such that each participating thread makes
+//   R calls to Sync() followed by its one and only call to Exit().
+// Guarantees:
+// * for any two threads Ti and Tj and round number r <= R,
+//   everything done by Ti before its r'th call to Sync() happens before
+//   everything done by Tj after its r'th call to Sync().
+// Note:
+// * it's not required that the thread that constructs the barrier participates.
+//
+// Example usage with 3 threads (1 controller + 2 workers) and 3 rounds:
+//
+// T1:
+// ThreadBarrier barrier(3);
+// Dart::thread_pool()->Run(              T2:
+//     new FooTask(&barrier));            fooSetup();
+// Dart::thread_pool()->Run(              ...                T3:
+//     new BarTask(&barrier));            ...                barSetup();
+// barrier.Sync();                        barrier_->Sync();  barrier_->Sync();
+// /* Both tasks have finished setup */   ...                ...
+// prepareWorkForTasks();                 ...                ...
+// barrier.Sync();                        barrier_->Sync();  barrier_->Sync();
+// /* Idle while tasks are working */     fooWork();         barWork();
+// barrier.Sync();                        barrier_->Sync();  barrier_->Sync();
+// collectResultsFromTasks();             barrier_->Exit();  barrier_->Exit();
+// barrier.Exit();
+//
+// Note that the calls to Sync() "line up" in time, but there is no such
+// guarantee for Exit().
+//
+class ThreadBarrier {
+ public:
+  explicit ThreadBarrier(intptr_t num_threads)
+    : num_threads_(num_threads),
+      remaining_(num_threads),
+      parity_(false),
+      done_(false) {
+    ASSERT(remaining_ > 0);
+  }
+
+  void Sync() {
+    MonitorLocker ml(&monitor_);
+    ASSERT(remaining_ > 0);
+    if (--remaining_ > 0) {
+      // I'm not last to arrive; wait until next round.
+      bool old_parity = parity_;
+      while (parity_ == old_parity) {
+        ml.Wait();
+      }
+    } else {
+      // Last one to arrive initiates the next round.
+      remaining_ = num_threads_;
+      parity_ = !parity_;
+      // Tell everyone else about the new round.
+      ml.NotifyAll();
+    }
+  }
+
+  void Exit() {
+    bool last = false;
+    {
+      MonitorLocker ml(&monitor_);
+      ASSERT(remaining_ > 0);
+      last = (--remaining_ == 0);
+    }
+    if (last) {
+      // Last one to exit sets done_.
+      MonitorLocker ml(&done_monitor_);
+      ASSERT(!done_);
+      done_ = true;
+      // Tell the destructor in case it's already waiting.
+      ml.Notify();
+    }
+  }
+
+  ~ThreadBarrier() {
+    MonitorLocker ml(&done_monitor_);
+    // Wait for everyone to exit before destroying the monitors.
+    while (!done_) {
+      ml.Wait();
+    }
+    ASSERT(remaining_ == 0);
+  }
+
+ private:
+  const intptr_t num_threads_;
+
+  Monitor monitor_;
+  intptr_t remaining_;
+  bool parity_;
+
+  Monitor done_monitor_;  // TODO(koda): Try to optimize this away.
+  bool done_;
+
+  DISALLOW_COPY_AND_ASSIGN(ThreadBarrier);
+};
+
+}  // namespace dart
+
+#endif  // VM_THREAD_BARRIER_H_
diff --git a/runtime/vm/thread_barrier_test.cc b/runtime/vm/thread_barrier_test.cc
new file mode 100644
index 0000000..4517e18
--- /dev/null
+++ b/runtime/vm/thread_barrier_test.cc
@@ -0,0 +1,59 @@
+// 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.
+
+#include "platform/assert.h"
+#include "vm/random.h"
+#include "vm/thread_barrier.h"
+#include "vm/thread_pool.h"
+#include "vm/unit_test.h"
+
+namespace dart {
+
+class FuzzTask : public ThreadPool::Task {
+ public:
+  FuzzTask(intptr_t num_rounds,
+           ThreadBarrier* barrier,
+           uint64_t seed)
+    : num_rounds_(num_rounds),
+      barrier_(barrier),
+      rng_(seed) {
+  }
+
+  virtual void Run() {
+    for (intptr_t i = 0; i < num_rounds_; ++i) {
+      RandomSleep();
+      barrier_->Sync();
+    }
+    barrier_->Exit();
+  }
+
+ private:
+  void RandomSleep() {
+    int64_t ms = rng_.NextUInt32() % 4;
+    if (ms > 0) {
+      OS::Sleep(ms);
+    }
+  }
+
+  const intptr_t num_rounds_;
+  ThreadBarrier* barrier_;
+  Random rng_;
+};
+
+
+UNIT_TEST_CASE(ThreadBarrier) {
+  static const intptr_t kNumTasks = 5;
+  static const intptr_t kNumRounds = 500;
+
+  ThreadBarrier barrier(kNumTasks + 1);
+  for (intptr_t i = 0; i < kNumTasks; ++i) {
+    Dart::thread_pool()->Run(new FuzzTask(kNumRounds, &barrier, i + 1));
+  }
+  for (intptr_t i = 0; i < kNumRounds; ++i) {
+    barrier.Sync();
+  }
+  barrier.Exit();
+}
+
+}  // namespace dart
diff --git a/runtime/vm/timeline.cc b/runtime/vm/timeline.cc
index d510d5e..6b03d99 100644
--- a/runtime/vm/timeline.cc
+++ b/runtime/vm/timeline.cc
@@ -39,7 +39,12 @@
     recorder_ = new TimelineEventRingRecorder();
   }
   vm_stream_ = new TimelineStream();
-  vm_stream_->Init("VM", EnableStreamByDefault("VM"));
+  vm_stream_->Init("VM", EnableStreamByDefault("VM"), NULL);
+  // Global overrides.
+#define ISOLATE_TIMELINE_STREAM_FLAG_DEFAULT(name, not_used)                   \
+  stream_##name##_enabled_ = false;
+  ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_FLAG_DEFAULT)
+#undef ISOLATE_TIMELINE_STREAM_FLAG_DEFAULT
 }
 
 
@@ -75,6 +80,11 @@
 TimelineEventRecorder* Timeline::recorder_ = NULL;
 TimelineStream* Timeline::vm_stream_ = NULL;
 
+#define ISOLATE_TIMELINE_STREAM_DEFINE_FLAG(name, enabled_by_default)          \
+  bool Timeline::stream_##name##_enabled_ = false;
+  ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_DEFINE_FLAG)
+#undef ISOLATE_TIMELINE_STREAM_DEFINE_FLAG
+
 TimelineEvent::TimelineEvent()
     : timestamp0_(0),
       timestamp1_(0),
@@ -311,19 +321,23 @@
 
 TimelineStream::TimelineStream()
     : name_(NULL),
-      enabled_(false) {
+      enabled_(false),
+      globally_enabled_(NULL) {
 }
 
 
-void TimelineStream::Init(const char* name, bool enabled) {
+void TimelineStream::Init(const char* name,
+                          bool enabled,
+                          const bool* globally_enabled) {
   name_ = name;
   enabled_ = enabled;
+  globally_enabled_ = globally_enabled;
 }
 
 
 TimelineEvent* TimelineStream::StartEvent() {
   TimelineEventRecorder* recorder = Timeline::recorder();
-  if (!enabled_ || (recorder == NULL)) {
+  if (!Enabled() || (recorder == NULL)) {
     return NULL;
   }
   ASSERT(name_ != NULL);
diff --git a/runtime/vm/timeline.h b/runtime/vm/timeline.h
index 3c771292..335ff14 100644
--- a/runtime/vm/timeline.h
+++ b/runtime/vm/timeline.h
@@ -22,6 +22,13 @@
 class TimelineEventRecorder;
 class TimelineStream;
 
+// (name, enabled by default for isolate).
+#define ISOLATE_TIMELINE_STREAM_LIST(V)                                        \
+  V(API, false)                                                                \
+  V(Compiler, false)                                                           \
+  V(Embedder, false)                                                           \
+  V(GC, false)                                                                 \
+  V(Isolate, false)                                                            \
 
 class Timeline : public AllStatic {
  public:
@@ -38,10 +45,25 @@
 
   static TimelineStream* GetVMStream();
 
+#define ISOLATE_TIMELINE_STREAM_FLAGS(name, not_used)                          \
+  static const bool* Stream##name##EnabledFlag() {                             \
+    return &stream_##name##_enabled_;                                          \
+  }                                                                            \
+  static void SetStream##name##Enabled(bool enabled) {                         \
+    stream_##name##_enabled_ = enabled;                                        \
+  }
+  ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_FLAGS)
+#undef ISOLATE_TIMELINE_STREAM_FLAGS
+
  private:
   static TimelineEventRecorder* recorder_;
   static TimelineStream* vm_stream_;
 
+#define ISOLATE_TIMELINE_STREAM_DECLARE_FLAG(name, not_used)                   \
+  static bool stream_##name##_enabled_;
+  ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_DECLARE_FLAG)
+#undef ISOLATE_TIMELINE_STREAM_DECLARE_FLAG
+
   friend class TimelineRecorderOverride;
 };
 
@@ -190,17 +212,24 @@
 
 
 // A stream of timeline events. A stream has a name and can be enabled or
-// disabled.
+// disabled (globally and per isolate).
 class TimelineStream {
  public:
   TimelineStream();
 
-  void Init(const char* name, bool enabled);
+  void Init(const char* name,
+            bool enabled,
+            const bool* globally_enabled = NULL);
 
   const char* name() const {
     return name_;
   }
 
+  bool Enabled() const {
+    return ((globally_enabled_ != NULL) && *globally_enabled_) ||
+           enabled();
+  }
+
   bool enabled() const {
     return enabled_;
   }
@@ -216,18 +245,9 @@
  private:
   const char* name_;
   bool enabled_;
+  const bool* globally_enabled_;
 };
 
-
-// (name, enabled by default).
-#define ISOLATE_TIMELINE_STREAM_LIST(V)                                        \
-  V(API, false)                                                                \
-  V(Compiler, false)                                                           \
-  V(Embedder, false)                                                           \
-  V(GC, false)                                                                 \
-  V(Isolate, false)                                                            \
-
-
 #define TIMELINE_FUNCTION_COMPILATION_DURATION(thread, suffix, function)       \
   TimelineDurationScope tds(thread,                                            \
                             thread->isolate()->GetCompilerStream(),            \
diff --git a/runtime/vm/unit_test.h b/runtime/vm/unit_test.h
index d4853e4..6e1ca5c 100644
--- a/runtime/vm/unit_test.h
+++ b/runtime/vm/unit_test.h
@@ -360,34 +360,36 @@
 
   uword entry() const { return code_.EntryPoint(); }
 
-  // Invoke is used to call assembler test functions using the ABI calling
-  // convention.
+  // Invoke/InvokeWithCode is used to call assembler test functions using the
+  // ABI calling convention.
   // ResultType is the return type of the assembler test function.
   // ArgNType is the type of the Nth argument.
 #if defined(USING_SIMULATOR)
 
 #if defined(ARCH_IS_64_BIT)
-  // TODO(fschneider): Make Invoke<> more general and work on 32-bit platforms.
+  // TODO(fschneider): Make InvokeWithCode<> more general and work on 32-bit.
   // Since Simulator::Call always return a int64_t, bit_cast does not work
   // on 32-bit platforms when returning an int32_t. Since template functions
   // don't support partial specialization, we'd need to introduce a helper
   // class to support 32-bit return types.
-  template<typename ResultType> ResultType Invoke() {
+  template<typename ResultType> ResultType InvokeWithCode() {
     const bool fp_return = is_double<ResultType>::value;
     const bool fp_args = false;
     return bit_cast<ResultType, int64_t>(Simulator::Current()->Call(
-        bit_cast<intptr_t, uword>(entry()), 0, 0, 0, 0, fp_return, fp_args));
+        bit_cast<intptr_t, uword>(entry()),
+        reinterpret_cast<intptr_t>(&code_), 0, 0, 0, fp_return, fp_args));
   }
   template<typename ResultType, typename Arg1Type>
-  ResultType Invoke(Arg1Type arg1) {
+  ResultType InvokeWithCode(Arg1Type arg1) {
     const bool fp_return = is_double<ResultType>::value;
     const bool fp_args = is_double<Arg1Type>::value;
     // TODO(fschneider): Support double arguments for simulator calls.
     COMPILE_ASSERT(!fp_args);
     return bit_cast<ResultType, int64_t>(Simulator::Current()->Call(
         bit_cast<intptr_t, uword>(entry()),
+        reinterpret_cast<intptr_t>(&code_),
         reinterpret_cast<intptr_t>(arg1),
-        0, 0, 0, fp_return, fp_args));
+        0, 0, fp_return, fp_args));
   }
 #endif  // ARCH_IS_64_BIT
 
@@ -411,15 +413,15 @@
         0, fp_return, fp_args);
   }
 #else
-  template<typename ResultType> ResultType Invoke() {
-    typedef ResultType (*FunctionType) ();
-    return reinterpret_cast<FunctionType>(entry())();
+  template<typename ResultType> ResultType InvokeWithCode() {
+    typedef ResultType (*FunctionType) (const Code&);
+    return reinterpret_cast<FunctionType>(entry())(code_);
   }
 
   template<typename ResultType, typename Arg1Type>
-  ResultType Invoke(Arg1Type arg1) {
-    typedef ResultType (*FunctionType) (Arg1Type);
-    return reinterpret_cast<FunctionType>(entry())(arg1);
+  ResultType InvokeWithCode(Arg1Type arg1) {
+    typedef ResultType (*FunctionType) (const Code&, Arg1Type);
+    return reinterpret_cast<FunctionType>(entry())(code_, arg1);
   }
 
   template<typename ResultType,
diff --git a/runtime/vm/virtual_memory.cc b/runtime/vm/virtual_memory.cc
index 050c83d..2f2c1bc 100644
--- a/runtime/vm/virtual_memory.cc
+++ b/runtime/vm/virtual_memory.cc
@@ -27,4 +27,13 @@
   region_.Subregion(region_, 0, new_size);
 }
 
+
+VirtualMemory* VirtualMemory::ForInstructionsSnapshot(void* pointer,
+                                                      uword size) {
+  // Memory for precompilated instructions was allocated by the embedder, so
+  // create a VirtualMemory without allocating.
+  MemoryRegion region(pointer, size);
+  return new VirtualMemory(region);
+}
+
 }  // namespace dart
diff --git a/runtime/vm/virtual_memory.h b/runtime/vm/virtual_memory.h
index 607e6b2..44f3491 100644
--- a/runtime/vm/virtual_memory.h
+++ b/runtime/vm/virtual_memory.h
@@ -69,6 +69,8 @@
   // Commit a reserved memory area, so that the memory can be accessed.
   bool Commit(uword addr, intptr_t size, bool is_executable);
 
+  static VirtualMemory* ForInstructionsSnapshot(void* pointer, uword size);
+
  private:
   static VirtualMemory* ReserveInternal(intptr_t size);
 
diff --git a/runtime/vm/vm_sources.gypi b/runtime/vm/vm_sources.gypi
index 6eb0056..5f5fc57 100644
--- a/runtime/vm/vm_sources.gypi
+++ b/runtime/vm/vm_sources.gypi
@@ -103,8 +103,6 @@
     'constants_ia32.h',
     'constants_mips.h',
     'constants_x64.h',
-    'counters.cc',
-    'counters.h',
     'coverage.cc',
     'coverage.h',
     'coverage_test.cc',
@@ -446,6 +444,8 @@
     'tags.h',
     'thread.cc',
     'thread.h',
+    'thread_barrier.h',
+    'thread_barrier_test.cc',
     'thread_interrupter.cc',
     'thread_interrupter.h',
     'thread_interrupter_android.cc',
diff --git a/runtime/vm/weak_code.cc b/runtime/vm/weak_code.cc
index 3177ba6..85e623a 100644
--- a/runtime/vm/weak_code.cc
+++ b/runtime/vm/weak_code.cc
@@ -117,15 +117,15 @@
       // Invalidate the old code object so existing references to it
       // (from optimized code) will fail when invoked.
       if (!CodePatcher::IsEntryPatched(code)) {
-        CodePatcher::PatchEntry(code);
+        CodePatcher::PatchEntry(
+            code, Code::Handle(StubCode::FixCallersTarget_entry()->code()));
       }
     } else {
       // Make non-OSR code non-entrant.
-      if (code.GetEntryPatchPc() != 0) {
-        if (!CodePatcher::IsEntryPatched(code)) {
-          ReportSwitchingCode(code);
-          CodePatcher::PatchEntry(code);
-        }
+      if (!CodePatcher::IsEntryPatched(code)) {
+        ReportSwitchingCode(code);
+        CodePatcher::PatchEntry(
+            code, Code::Handle(StubCode::FixCallersTarget_entry()->code()));
       }
     }
   }
diff --git a/sdk/bin/dartdocgen b/sdk/bin/dartdocgen
deleted file mode 100755
index bf807ad..0000000
--- a/sdk/bin/dartdocgen
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-# 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.
-
-function follow_links() {
-  file="$1"
-  while [ -h "$file" ]; do
-    # On Mac OS, readlink -f doesn't work.
-    file="$(readlink "$file")"
-  done
-  echo "$file"
-}
-
-# Unlike $0, $BASH_SOURCE points to the absolute path of this file.
-PROG_NAME="$(follow_links "$BASH_SOURCE")"
-
-# Handle the case where dart-sdk/bin has been symlinked to.
-BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
-
-SDK_DIR="$(cd "${BIN_DIR}/.." ; pwd -P)"
-
-unset SNAPSHOT
-
-SNAPSHOT="$BIN_DIR/snapshots/utils_wrapper.dart.snapshot"
-
-if test -f "$SNAPSHOT"; then
-  exec "$BIN_DIR"/dart \
-      "--package-root=$BIN_DIR/../packages/" "--old_gen_heap_size=1024" \
-      "$SNAPSHOT" \
-       docgen "--sdk=$SDK_DIR" "$@"
-else
-  exec "$BIN_DIR"/dart \
-      "--package-root=$BIN_DIR/../packages/" "--old_gen_heap_size=1024" \
-      "$BIN_DIR/../../pkg/docgen/bin/docgen.dart" "--sdk=$SDK_DIR" "$@"
-fi
diff --git a/sdk/bin/dartdocgen.bat b/sdk/bin/dartdocgen.bat
deleted file mode 100644
index 136b7f9..0000000
--- a/sdk/bin/dartdocgen.bat
+++ /dev/null
@@ -1,49 +0,0 @@
-@echo off
-REM Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-REM for details. All rights reserved. Use of this source code is governed by a
-REM BSD-style license that can be found in the LICENSE file.
-
-setlocal
-rem Handle the case where dart-sdk/bin has been symlinked to.
-set DIR_NAME_WITH_SLASH=%~dp0
-set DIR_NAME=%DIR_NAME_WITH_SLASH:~0,-1%%
-call :follow_links "%DIR_NAME%", RETURNED_BIN_DIR
-rem Get rid of surrounding quotes.
-for %%i in ("%RETURNED_BIN_DIR%") do set BIN_DIR=%%~fi
-
-rem Get absolute full name for SDK_DIR.
-for %%i in ("%BIN_DIR%\..\") do set SDK_DIR=%%~fi
-
-rem Remove trailing backslash if there is one
-IF %SDK_DIR:~-1%==\ set SDK_DIR=%SDK_DIR:~0,-1%
-
-set DOCGEN=%SDK_DIR%\pkg\docgen\bin\docgen.dart
-set DART=%BIN_DIR%\dart
-set SNAPSHOT=%BIN_DIR%\snapshots\utils_wrapper.dart.snapshot
-
-if not defined DART_CONFIGURATION set DART_CONFIGURATION=ReleaseIA32
-
-set BUILD_DIR=%SDK_DIR%\..\build\%DART_CONFIGURATION%
-if exist "%SNAPSHOT%" (
-  "%DART%" "%SNAPSHOT%" "docgen" "--sdk=%SDK_DIR%" %*
-) else (
-  "%BUILD_DIR%\dart-sdk\bin\dart" "--package-root=%BUILD_DIR%\packages" "%DOCGEN%" "--sdk=%SDK_DIR%" %*
-)
-
-endlocal
-
-exit /b %errorlevel%
-
-:follow_links
-setlocal
-for %%i in (%1) do set result=%%~fi
-set current=
-for /f "tokens=2 delims=[]" %%i in ('dir /a:l ^"%~dp1^" 2^>nul ^
-                                     ^| find ">     %~n1 ["') do (
-  set current=%%i
-)
-if not "%current%"=="" call :follow_links "%current%", result
-endlocal & set %~2=%result%
-goto :eof
-
-:end
diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart
index a3d3f8d..eac32e7 100644
--- a/sdk/lib/_blink/dartium/_blink_dartium.dart
+++ b/sdk/lib/_blink/dartium/_blink_dartium.dart
@@ -5,6 +5,8 @@
 // WARNING: Do not edit - generated code.
 library dart.dom._blink;
 
+import 'dart:js' as js;
+
 // This is a place to put custom renames if we need them.
 final resolverMap = {
 };
@@ -627,153 +629,75 @@
 class BlinkANGLEInstancedArrays {
   static final instance = new BlinkANGLEInstancedArrays();
 
-  static drawArraysInstancedANGLE_Callback_2(mthis, __arg_0, __arg_1) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
-  drawArraysInstancedANGLE_Callback_2_(mthis, __arg_0, __arg_1) => drawArraysInstancedANGLE_Callback_2(mthis, __arg_0, __arg_1);
+  drawArraysInstancedANGLE_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("drawArraysInstancedANGLE", [__arg_0, __arg_1]);
 
-  static drawArraysInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
-  drawArraysInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawArraysInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  drawArraysInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("drawArraysInstancedANGLE", [__arg_0, __arg_1, __arg_2]);
 
-  static drawArraysInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
-  drawArraysInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawArraysInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  drawArraysInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("drawArraysInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static drawArraysInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
-  drawArraysInstancedANGLE_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawArraysInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  drawElementsInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2]);
 
-  static drawArraysInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
-  drawArraysInstancedANGLE_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawArraysInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  drawElementsInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static drawElementsInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
-  drawElementsInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawElementsInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  drawElementsInstancedANGLE_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("drawElementsInstancedANGLE", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static drawElementsInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
-  drawElementsInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawElementsInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  vertexAttribDivisorANGLE_Callback_0_(mthis) => mthis.callMethod("vertexAttribDivisorANGLE", []);
 
-  static drawElementsInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
-  drawElementsInstancedANGLE_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawElementsInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  vertexAttribDivisorANGLE_Callback_1_(mthis, __arg_0) => mthis.callMethod("vertexAttribDivisorANGLE", [__arg_0]);
 
-  static drawElementsInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
-  drawElementsInstancedANGLE_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawElementsInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static drawElementsInstancedANGLE_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
-  drawElementsInstancedANGLE_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => drawElementsInstancedANGLE_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static vertexAttribDivisorANGLE_Callback_0(mthis) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
-  vertexAttribDivisorANGLE_Callback_0_(mthis) => vertexAttribDivisorANGLE_Callback_0(mthis);
-
-  static vertexAttribDivisorANGLE_Callback_1(mthis, __arg_0) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
-  vertexAttribDivisorANGLE_Callback_1_(mthis, __arg_0) => vertexAttribDivisorANGLE_Callback_1(mthis, __arg_0);
-
-  static vertexAttribDivisorANGLE_Callback_2(mthis, __arg_0, __arg_1) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
-  vertexAttribDivisorANGLE_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttribDivisorANGLE_Callback_2(mthis, __arg_0, __arg_1);
-
-  static vertexAttribDivisorANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
-  vertexAttribDivisorANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttribDivisorANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static vertexAttribDivisorANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
-  vertexAttribDivisorANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttribDivisorANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  vertexAttribDivisorANGLE_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttribDivisorANGLE", [__arg_0, __arg_1]);
 
 }
 
 class BlinkAnalyserNode extends BlinkAudioNode {
   static final instance = new BlinkAnalyserNode();
 
-  static fftSize_Getter(mthis) native "AnalyserNode_fftSize_Getter";
-  fftSize_Getter_(mthis) => fftSize_Getter(mthis);
+  fftSize_Getter_(mthis) => mthis["fftSize"];
 
-  static fftSize_Setter(mthis, __arg_0) native "AnalyserNode_fftSize_Setter";
-  fftSize_Setter_(mthis, __arg_0) => fftSize_Setter(mthis, __arg_0);
+  fftSize_Setter_(mthis, __arg_0) => mthis["fftSize"] = __arg_0;
 
-  static frequencyBinCount_Getter(mthis) native "AnalyserNode_frequencyBinCount_Getter";
-  frequencyBinCount_Getter_(mthis) => frequencyBinCount_Getter(mthis);
+  frequencyBinCount_Getter_(mthis) => mthis["frequencyBinCount"];
 
-  static getByteFrequencyData_Callback_0(mthis) native "AnalyserNode_getByteFrequencyData_Callback";
-  getByteFrequencyData_Callback_0_(mthis) => getByteFrequencyData_Callback_0(mthis);
+  getByteFrequencyData_Callback_0_(mthis) => mthis.callMethod("getByteFrequencyData", []);
 
-  static getByteFrequencyData_Callback_1(mthis, __arg_0) native "AnalyserNode_getByteFrequencyData_Callback";
-  getByteFrequencyData_Callback_1_(mthis, __arg_0) => getByteFrequencyData_Callback_1(mthis, __arg_0);
+  getByteFrequencyData_Callback_1_(mthis, __arg_0) => mthis.callMethod("getByteFrequencyData", [__arg_0]);
 
-  static getByteFrequencyData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getByteFrequencyData_Callback";
-  getByteFrequencyData_Callback_2_(mthis, __arg_0, __arg_1) => getByteFrequencyData_Callback_2(mthis, __arg_0, __arg_1);
+  getByteTimeDomainData_Callback_0_(mthis) => mthis.callMethod("getByteTimeDomainData", []);
 
-  static getByteFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getByteFrequencyData_Callback";
-  getByteFrequencyData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getByteFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getByteTimeDomainData_Callback_1_(mthis, __arg_0) => mthis.callMethod("getByteTimeDomainData", [__arg_0]);
 
-  static getByteTimeDomainData_Callback_0(mthis) native "AnalyserNode_getByteTimeDomainData_Callback";
-  getByteTimeDomainData_Callback_0_(mthis) => getByteTimeDomainData_Callback_0(mthis);
+  getFloatFrequencyData_Callback_0_(mthis) => mthis.callMethod("getFloatFrequencyData", []);
 
-  static getByteTimeDomainData_Callback_1(mthis, __arg_0) native "AnalyserNode_getByteTimeDomainData_Callback";
-  getByteTimeDomainData_Callback_1_(mthis, __arg_0) => getByteTimeDomainData_Callback_1(mthis, __arg_0);
+  getFloatFrequencyData_Callback_1_(mthis, __arg_0) => mthis.callMethod("getFloatFrequencyData", [__arg_0]);
 
-  static getByteTimeDomainData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getByteTimeDomainData_Callback";
-  getByteTimeDomainData_Callback_2_(mthis, __arg_0, __arg_1) => getByteTimeDomainData_Callback_2(mthis, __arg_0, __arg_1);
+  getFloatTimeDomainData_Callback_0_(mthis) => mthis.callMethod("getFloatTimeDomainData", []);
 
-  static getByteTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getByteTimeDomainData_Callback";
-  getByteTimeDomainData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getByteTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getFloatTimeDomainData_Callback_1_(mthis, __arg_0) => mthis.callMethod("getFloatTimeDomainData", [__arg_0]);
 
-  static getFloatFrequencyData_Callback_0(mthis) native "AnalyserNode_getFloatFrequencyData_Callback";
-  getFloatFrequencyData_Callback_0_(mthis) => getFloatFrequencyData_Callback_0(mthis);
+  maxDecibels_Getter_(mthis) => mthis["maxDecibels"];
 
-  static getFloatFrequencyData_Callback_1(mthis, __arg_0) native "AnalyserNode_getFloatFrequencyData_Callback";
-  getFloatFrequencyData_Callback_1_(mthis, __arg_0) => getFloatFrequencyData_Callback_1(mthis, __arg_0);
+  maxDecibels_Setter_(mthis, __arg_0) => mthis["maxDecibels"] = __arg_0;
 
-  static getFloatFrequencyData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getFloatFrequencyData_Callback";
-  getFloatFrequencyData_Callback_2_(mthis, __arg_0, __arg_1) => getFloatFrequencyData_Callback_2(mthis, __arg_0, __arg_1);
+  minDecibels_Getter_(mthis) => mthis["minDecibels"];
 
-  static getFloatFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getFloatFrequencyData_Callback";
-  getFloatFrequencyData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFloatFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  minDecibels_Setter_(mthis, __arg_0) => mthis["minDecibels"] = __arg_0;
 
-  static getFloatTimeDomainData_Callback_0(mthis) native "AnalyserNode_getFloatTimeDomainData_Callback";
-  getFloatTimeDomainData_Callback_0_(mthis) => getFloatTimeDomainData_Callback_0(mthis);
+  smoothingTimeConstant_Getter_(mthis) => mthis["smoothingTimeConstant"];
 
-  static getFloatTimeDomainData_Callback_1(mthis, __arg_0) native "AnalyserNode_getFloatTimeDomainData_Callback";
-  getFloatTimeDomainData_Callback_1_(mthis, __arg_0) => getFloatTimeDomainData_Callback_1(mthis, __arg_0);
-
-  static getFloatTimeDomainData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getFloatTimeDomainData_Callback";
-  getFloatTimeDomainData_Callback_2_(mthis, __arg_0, __arg_1) => getFloatTimeDomainData_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getFloatTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getFloatTimeDomainData_Callback";
-  getFloatTimeDomainData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFloatTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static maxDecibels_Getter(mthis) native "AnalyserNode_maxDecibels_Getter";
-  maxDecibels_Getter_(mthis) => maxDecibels_Getter(mthis);
-
-  static maxDecibels_Setter(mthis, __arg_0) native "AnalyserNode_maxDecibels_Setter";
-  maxDecibels_Setter_(mthis, __arg_0) => maxDecibels_Setter(mthis, __arg_0);
-
-  static minDecibels_Getter(mthis) native "AnalyserNode_minDecibels_Getter";
-  minDecibels_Getter_(mthis) => minDecibels_Getter(mthis);
-
-  static minDecibels_Setter(mthis, __arg_0) native "AnalyserNode_minDecibels_Setter";
-  minDecibels_Setter_(mthis, __arg_0) => minDecibels_Setter(mthis, __arg_0);
-
-  static smoothingTimeConstant_Getter(mthis) native "AnalyserNode_smoothingTimeConstant_Getter";
-  smoothingTimeConstant_Getter_(mthis) => smoothingTimeConstant_Getter(mthis);
-
-  static smoothingTimeConstant_Setter(mthis, __arg_0) native "AnalyserNode_smoothingTimeConstant_Setter";
-  smoothingTimeConstant_Setter_(mthis, __arg_0) => smoothingTimeConstant_Setter(mthis, __arg_0);
+  smoothingTimeConstant_Setter_(mthis, __arg_0) => mthis["smoothingTimeConstant"] = __arg_0;
 
 }
 
 class BlinkAnimation extends BlinkAnimationNode {
   static final instance = new BlinkAnimation();
 
-  static constructorCallback_0() native "Animation_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["Animation"], []);
 
-  static constructorCallback_1(__arg_0) native "Animation_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Animation"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Animation_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Animation"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Animation_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
-
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Animation_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
-
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Animation_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["Animation"], [__arg_0, __arg_1, __arg_2]);
 
 }
 
@@ -785,900 +709,445 @@
 class BlinkAnimationNode {
   static final instance = new BlinkAnimationNode();
 
-  static activeDuration_Getter(mthis) native "AnimationNode_activeDuration_Getter";
-  activeDuration_Getter_(mthis) => activeDuration_Getter(mthis);
+  activeDuration_Getter_(mthis) => mthis["activeDuration"];
 
-  static currentIteration_Getter(mthis) native "AnimationNode_currentIteration_Getter";
-  currentIteration_Getter_(mthis) => currentIteration_Getter(mthis);
+  currentIteration_Getter_(mthis) => mthis["currentIteration"];
 
-  static duration_Getter(mthis) native "AnimationNode_duration_Getter";
-  duration_Getter_(mthis) => duration_Getter(mthis);
+  duration_Getter_(mthis) => mthis["duration"];
 
-  static endTime_Getter(mthis) native "AnimationNode_endTime_Getter";
-  endTime_Getter_(mthis) => endTime_Getter(mthis);
+  endTime_Getter_(mthis) => mthis["endTime"];
 
-  static localTime_Getter(mthis) native "AnimationNode_localTime_Getter";
-  localTime_Getter_(mthis) => localTime_Getter(mthis);
+  localTime_Getter_(mthis) => mthis["localTime"];
 
-  static player_Getter(mthis) native "AnimationNode_player_Getter";
-  player_Getter_(mthis) => player_Getter(mthis);
+  player_Getter_(mthis) => mthis["player"];
 
-  static startTime_Getter(mthis) native "AnimationNode_startTime_Getter";
-  startTime_Getter_(mthis) => startTime_Getter(mthis);
+  startTime_Getter_(mthis) => mthis["startTime"];
 
-  static timing_Getter(mthis) native "AnimationNode_timing_Getter";
-  timing_Getter_(mthis) => timing_Getter(mthis);
+  timing_Getter_(mthis) => mthis["timing"];
 
 }
 
 class BlinkAnimationPlayer extends BlinkEventTarget {
   static final instance = new BlinkAnimationPlayer();
 
-  static cancel_Callback_0(mthis) native "AnimationPlayer_cancel_Callback";
-  cancel_Callback_0_(mthis) => cancel_Callback_0(mthis);
+  cancel_Callback_0_(mthis) => mthis.callMethod("cancel", []);
 
-  static cancel_Callback_1(mthis, __arg_0) native "AnimationPlayer_cancel_Callback";
-  cancel_Callback_1_(mthis, __arg_0) => cancel_Callback_1(mthis, __arg_0);
+  currentTime_Getter_(mthis) => mthis["currentTime"];
 
-  static cancel_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_cancel_Callback";
-  cancel_Callback_2_(mthis, __arg_0, __arg_1) => cancel_Callback_2(mthis, __arg_0, __arg_1);
+  currentTime_Setter_(mthis, __arg_0) => mthis["currentTime"] = __arg_0;
 
-  static currentTime_Getter(mthis) native "AnimationPlayer_currentTime_Getter";
-  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
+  finish_Callback_0_(mthis) => mthis.callMethod("finish", []);
 
-  static currentTime_Setter(mthis, __arg_0) native "AnimationPlayer_currentTime_Setter";
-  currentTime_Setter_(mthis, __arg_0) => currentTime_Setter(mthis, __arg_0);
+  onfinish_Getter_(mthis) => mthis["onfinish"];
 
-  static finish_Callback_0(mthis) native "AnimationPlayer_finish_Callback";
-  finish_Callback_0_(mthis) => finish_Callback_0(mthis);
+  onfinish_Setter_(mthis, __arg_0) => mthis["onfinish"] = __arg_0;
 
-  static finish_Callback_1(mthis, __arg_0) native "AnimationPlayer_finish_Callback";
-  finish_Callback_1_(mthis, __arg_0) => finish_Callback_1(mthis, __arg_0);
+  pause_Callback_0_(mthis) => mthis.callMethod("pause", []);
 
-  static finish_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_finish_Callback";
-  finish_Callback_2_(mthis, __arg_0, __arg_1) => finish_Callback_2(mthis, __arg_0, __arg_1);
+  playState_Getter_(mthis) => mthis["playState"];
 
-  static onfinish_Getter(mthis) native "AnimationPlayer_onfinish_Getter";
-  onfinish_Getter_(mthis) => onfinish_Getter(mthis);
+  play_Callback_0_(mthis) => mthis.callMethod("play", []);
 
-  static onfinish_Setter(mthis, __arg_0) native "AnimationPlayer_onfinish_Setter";
-  onfinish_Setter_(mthis, __arg_0) => onfinish_Setter(mthis, __arg_0);
+  playbackRate_Getter_(mthis) => mthis["playbackRate"];
 
-  static pause_Callback_0(mthis) native "AnimationPlayer_pause_Callback";
-  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
+  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
 
-  static pause_Callback_1(mthis, __arg_0) native "AnimationPlayer_pause_Callback";
-  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
+  reverse_Callback_0_(mthis) => mthis.callMethod("reverse", []);
 
-  static pause_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_pause_Callback";
-  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
+  source_Getter_(mthis) => mthis["source"];
 
-  static playState_Getter(mthis) native "AnimationPlayer_playState_Getter";
-  playState_Getter_(mthis) => playState_Getter(mthis);
+  source_Setter_(mthis, __arg_0) => mthis["source"] = __arg_0;
 
-  static play_Callback_0(mthis) native "AnimationPlayer_play_Callback";
-  play_Callback_0_(mthis) => play_Callback_0(mthis);
+  startTime_Getter_(mthis) => mthis["startTime"];
 
-  static play_Callback_1(mthis, __arg_0) native "AnimationPlayer_play_Callback";
-  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
-
-  static play_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_play_Callback";
-  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
-
-  static playbackRate_Getter(mthis) native "AnimationPlayer_playbackRate_Getter";
-  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
-
-  static playbackRate_Setter(mthis, __arg_0) native "AnimationPlayer_playbackRate_Setter";
-  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
-
-  static reverse_Callback_0(mthis) native "AnimationPlayer_reverse_Callback";
-  reverse_Callback_0_(mthis) => reverse_Callback_0(mthis);
-
-  static reverse_Callback_1(mthis, __arg_0) native "AnimationPlayer_reverse_Callback";
-  reverse_Callback_1_(mthis, __arg_0) => reverse_Callback_1(mthis, __arg_0);
-
-  static reverse_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_reverse_Callback";
-  reverse_Callback_2_(mthis, __arg_0, __arg_1) => reverse_Callback_2(mthis, __arg_0, __arg_1);
-
-  static source_Getter(mthis) native "AnimationPlayer_source_Getter";
-  source_Getter_(mthis) => source_Getter(mthis);
-
-  static source_Setter(mthis, __arg_0) native "AnimationPlayer_source_Setter";
-  source_Setter_(mthis, __arg_0) => source_Setter(mthis, __arg_0);
-
-  static startTime_Getter(mthis) native "AnimationPlayer_startTime_Getter";
-  startTime_Getter_(mthis) => startTime_Getter(mthis);
-
-  static startTime_Setter(mthis, __arg_0) native "AnimationPlayer_startTime_Setter";
-  startTime_Setter_(mthis, __arg_0) => startTime_Setter(mthis, __arg_0);
+  startTime_Setter_(mthis, __arg_0) => mthis["startTime"] = __arg_0;
 
 }
 
 class BlinkAnimationPlayerEvent extends BlinkEvent {
   static final instance = new BlinkAnimationPlayerEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "AnimationPlayerEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["AnimationPlayerEvent"], [__arg_0, __arg_1]);
 
-  static currentTime_Getter(mthis) native "AnimationPlayerEvent_currentTime_Getter";
-  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
+  currentTime_Getter_(mthis) => mthis["currentTime"];
 
-  static timelineTime_Getter(mthis) native "AnimationPlayerEvent_timelineTime_Getter";
-  timelineTime_Getter_(mthis) => timelineTime_Getter(mthis);
+  timelineTime_Getter_(mthis) => mthis["timelineTime"];
 
 }
 
 class BlinkAnimationTimeline {
   static final instance = new BlinkAnimationTimeline();
 
-  static currentTime_Getter(mthis) native "AnimationTimeline_currentTime_Getter";
-  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
+  currentTime_Getter_(mthis) => mthis["currentTime"];
 
-  static getAnimationPlayers_Callback_0(mthis) native "AnimationTimeline_getAnimationPlayers_Callback";
-  getAnimationPlayers_Callback_0_(mthis) => getAnimationPlayers_Callback_0(mthis);
+  getAnimationPlayers_Callback_0_(mthis) => mthis.callMethod("getAnimationPlayers", []);
 
-  static getAnimationPlayers_Callback_1(mthis, __arg_0) native "AnimationTimeline_getAnimationPlayers_Callback";
-  getAnimationPlayers_Callback_1_(mthis, __arg_0) => getAnimationPlayers_Callback_1(mthis, __arg_0);
+  play_Callback_0_(mthis) => mthis.callMethod("play", []);
 
-  static getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1) native "AnimationTimeline_getAnimationPlayers_Callback";
-  getAnimationPlayers_Callback_2_(mthis, __arg_0, __arg_1) => getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1);
-
-  static play_Callback_0(mthis) native "AnimationTimeline_play_Callback";
-  play_Callback_0_(mthis) => play_Callback_0(mthis);
-
-  static play_Callback_1(mthis, __arg_0) native "AnimationTimeline_play_Callback";
-  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
-
-  static play_Callback_2(mthis, __arg_0, __arg_1) native "AnimationTimeline_play_Callback";
-  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
-
-  static play_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnimationTimeline_play_Callback";
-  play_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => play_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  play_Callback_1_(mthis, __arg_0) => mthis.callMethod("play", [__arg_0]);
 
 }
 
 class BlinkApplicationCache extends BlinkEventTarget {
   static final instance = new BlinkApplicationCache();
 
-  static abort_Callback_0(mthis) native "ApplicationCache_abort_Callback";
-  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+  abort_Callback_0_(mthis) => mthis.callMethod("abort", []);
 
-  static abort_Callback_1(mthis, __arg_0) native "ApplicationCache_abort_Callback";
-  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+  oncached_Getter_(mthis) => mthis["oncached"];
 
-  static abort_Callback_2(mthis, __arg_0, __arg_1) native "ApplicationCache_abort_Callback";
-  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+  oncached_Setter_(mthis, __arg_0) => mthis["oncached"] = __arg_0;
 
-  static oncached_Getter(mthis) native "ApplicationCache_oncached_Getter";
-  oncached_Getter_(mthis) => oncached_Getter(mthis);
+  onchecking_Getter_(mthis) => mthis["onchecking"];
 
-  static oncached_Setter(mthis, __arg_0) native "ApplicationCache_oncached_Setter";
-  oncached_Setter_(mthis, __arg_0) => oncached_Setter(mthis, __arg_0);
+  onchecking_Setter_(mthis, __arg_0) => mthis["onchecking"] = __arg_0;
 
-  static onchecking_Getter(mthis) native "ApplicationCache_onchecking_Getter";
-  onchecking_Getter_(mthis) => onchecking_Getter(mthis);
+  ondownloading_Getter_(mthis) => mthis["ondownloading"];
 
-  static onchecking_Setter(mthis, __arg_0) native "ApplicationCache_onchecking_Setter";
-  onchecking_Setter_(mthis, __arg_0) => onchecking_Setter(mthis, __arg_0);
+  ondownloading_Setter_(mthis, __arg_0) => mthis["ondownloading"] = __arg_0;
 
-  static ondownloading_Getter(mthis) native "ApplicationCache_ondownloading_Getter";
-  ondownloading_Getter_(mthis) => ondownloading_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static ondownloading_Setter(mthis, __arg_0) native "ApplicationCache_ondownloading_Setter";
-  ondownloading_Setter_(mthis, __arg_0) => ondownloading_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onerror_Getter(mthis) native "ApplicationCache_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onnoupdate_Getter_(mthis) => mthis["onnoupdate"];
 
-  static onerror_Setter(mthis, __arg_0) native "ApplicationCache_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onnoupdate_Setter_(mthis, __arg_0) => mthis["onnoupdate"] = __arg_0;
 
-  static onnoupdate_Getter(mthis) native "ApplicationCache_onnoupdate_Getter";
-  onnoupdate_Getter_(mthis) => onnoupdate_Getter(mthis);
+  onobsolete_Getter_(mthis) => mthis["onobsolete"];
 
-  static onnoupdate_Setter(mthis, __arg_0) native "ApplicationCache_onnoupdate_Setter";
-  onnoupdate_Setter_(mthis, __arg_0) => onnoupdate_Setter(mthis, __arg_0);
+  onobsolete_Setter_(mthis, __arg_0) => mthis["onobsolete"] = __arg_0;
 
-  static onobsolete_Getter(mthis) native "ApplicationCache_onobsolete_Getter";
-  onobsolete_Getter_(mthis) => onobsolete_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onobsolete_Setter(mthis, __arg_0) native "ApplicationCache_onobsolete_Setter";
-  onobsolete_Setter_(mthis, __arg_0) => onobsolete_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static onprogress_Getter(mthis) native "ApplicationCache_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+  onupdateready_Getter_(mthis) => mthis["onupdateready"];
 
-  static onprogress_Setter(mthis, __arg_0) native "ApplicationCache_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+  onupdateready_Setter_(mthis, __arg_0) => mthis["onupdateready"] = __arg_0;
 
-  static onupdateready_Getter(mthis) native "ApplicationCache_onupdateready_Getter";
-  onupdateready_Getter_(mthis) => onupdateready_Getter(mthis);
+  status_Getter_(mthis) => mthis["status"];
 
-  static onupdateready_Setter(mthis, __arg_0) native "ApplicationCache_onupdateready_Setter";
-  onupdateready_Setter_(mthis, __arg_0) => onupdateready_Setter(mthis, __arg_0);
+  swapCache_Callback_0_(mthis) => mthis.callMethod("swapCache", []);
 
-  static status_Getter(mthis) native "ApplicationCache_status_Getter";
-  status_Getter_(mthis) => status_Getter(mthis);
-
-  static swapCache_Callback_0(mthis) native "ApplicationCache_swapCache_Callback";
-  swapCache_Callback_0_(mthis) => swapCache_Callback_0(mthis);
-
-  static swapCache_Callback_1(mthis, __arg_0) native "ApplicationCache_swapCache_Callback";
-  swapCache_Callback_1_(mthis, __arg_0) => swapCache_Callback_1(mthis, __arg_0);
-
-  static swapCache_Callback_2(mthis, __arg_0, __arg_1) native "ApplicationCache_swapCache_Callback";
-  swapCache_Callback_2_(mthis, __arg_0, __arg_1) => swapCache_Callback_2(mthis, __arg_0, __arg_1);
-
-  static update_Callback_0(mthis) native "ApplicationCache_update_Callback";
-  update_Callback_0_(mthis) => update_Callback_0(mthis);
-
-  static update_Callback_1(mthis, __arg_0) native "ApplicationCache_update_Callback";
-  update_Callback_1_(mthis, __arg_0) => update_Callback_1(mthis, __arg_0);
-
-  static update_Callback_2(mthis, __arg_0, __arg_1) native "ApplicationCache_update_Callback";
-  update_Callback_2_(mthis, __arg_0, __arg_1) => update_Callback_2(mthis, __arg_0, __arg_1);
+  update_Callback_0_(mthis) => mthis.callMethod("update", []);
 
 }
 
 class BlinkApplicationCacheErrorEvent extends BlinkEvent {
   static final instance = new BlinkApplicationCacheErrorEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "ApplicationCacheErrorEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["ApplicationCacheErrorEvent"], [__arg_0, __arg_1]);
 
-  static message_Getter(mthis) native "ApplicationCacheErrorEvent_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
-  static reason_Getter(mthis) native "ApplicationCacheErrorEvent_reason_Getter";
-  reason_Getter_(mthis) => reason_Getter(mthis);
+  reason_Getter_(mthis) => mthis["reason"];
 
-  static status_Getter(mthis) native "ApplicationCacheErrorEvent_status_Getter";
-  status_Getter_(mthis) => status_Getter(mthis);
+  status_Getter_(mthis) => mthis["status"];
 
-  static url_Getter(mthis) native "ApplicationCacheErrorEvent_url_Getter";
-  url_Getter_(mthis) => url_Getter(mthis);
+  url_Getter_(mthis) => mthis["url"];
 
 }
 
 class BlinkAttr extends BlinkNode {
   static final instance = new BlinkAttr();
 
-  static localName_Getter(mthis) native "Attr_localName_Getter";
-  localName_Getter_(mthis) => localName_Getter(mthis);
+  localName_Getter_(mthis) => mthis["localName"];
 
-  static name_Getter(mthis) native "Attr_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static namespaceURI_Getter(mthis) native "Attr_namespaceURI_Getter";
-  namespaceURI_Getter_(mthis) => namespaceURI_Getter(mthis);
+  namespaceURI_Getter_(mthis) => mthis["namespaceURI"];
 
-  static nodeValue_Getter(mthis) native "Attr_nodeValue_Getter";
-  nodeValue_Getter_(mthis) => nodeValue_Getter(mthis);
+  nodeValue_Getter_(mthis) => mthis["nodeValue"];
 
-  static nodeValue_Setter(mthis, __arg_0) native "Attr_nodeValue_Setter";
-  nodeValue_Setter_(mthis, __arg_0) => nodeValue_Setter(mthis, __arg_0);
+  nodeValue_Setter_(mthis, __arg_0) => mthis["nodeValue"] = __arg_0;
 
-  static ownerElement_Getter(mthis) native "Attr_ownerElement_Getter";
-  ownerElement_Getter_(mthis) => ownerElement_Getter(mthis);
+  ownerElement_Getter_(mthis) => mthis["ownerElement"];
 
-  static prefix_Getter(mthis) native "Attr_prefix_Getter";
-  prefix_Getter_(mthis) => prefix_Getter(mthis);
+  prefix_Getter_(mthis) => mthis["prefix"];
 
-  static specified_Getter(mthis) native "Attr_specified_Getter";
-  specified_Getter_(mthis) => specified_Getter(mthis);
+  specified_Getter_(mthis) => mthis["specified"];
 
-  static textContent_Getter(mthis) native "Attr_textContent_Getter";
-  textContent_Getter_(mthis) => textContent_Getter(mthis);
+  textContent_Getter_(mthis) => mthis["textContent"];
 
-  static textContent_Setter(mthis, __arg_0) native "Attr_textContent_Setter";
-  textContent_Setter_(mthis, __arg_0) => textContent_Setter(mthis, __arg_0);
+  textContent_Setter_(mthis, __arg_0) => mthis["textContent"] = __arg_0;
 
-  static value_Getter(mthis) native "Attr_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "Attr_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkAudioBuffer {
   static final instance = new BlinkAudioBuffer();
 
-  static duration_Getter(mthis) native "AudioBuffer_duration_Getter";
-  duration_Getter_(mthis) => duration_Getter(mthis);
+  duration_Getter_(mthis) => mthis["duration"];
 
-  static getChannelData_Callback_0(mthis) native "AudioBuffer_getChannelData_Callback";
-  getChannelData_Callback_0_(mthis) => getChannelData_Callback_0(mthis);
+  getChannelData_Callback_0_(mthis) => mthis.callMethod("getChannelData", []);
 
-  static getChannelData_Callback_1(mthis, __arg_0) native "AudioBuffer_getChannelData_Callback";
-  getChannelData_Callback_1_(mthis, __arg_0) => getChannelData_Callback_1(mthis, __arg_0);
+  getChannelData_Callback_1_(mthis, __arg_0) => mthis.callMethod("getChannelData", [__arg_0]);
 
-  static getChannelData_Callback_2(mthis, __arg_0, __arg_1) native "AudioBuffer_getChannelData_Callback";
-  getChannelData_Callback_2_(mthis, __arg_0, __arg_1) => getChannelData_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static getChannelData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioBuffer_getChannelData_Callback";
-  getChannelData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getChannelData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  numberOfChannels_Getter_(mthis) => mthis["numberOfChannels"];
 
-  static length_Getter(mthis) native "AudioBuffer_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static numberOfChannels_Getter(mthis) native "AudioBuffer_numberOfChannels_Getter";
-  numberOfChannels_Getter_(mthis) => numberOfChannels_Getter(mthis);
-
-  static sampleRate_Getter(mthis) native "AudioBuffer_sampleRate_Getter";
-  sampleRate_Getter_(mthis) => sampleRate_Getter(mthis);
+  sampleRate_Getter_(mthis) => mthis["sampleRate"];
 
 }
 
 class BlinkAudioBufferSourceNode extends BlinkAudioSourceNode {
   static final instance = new BlinkAudioBufferSourceNode();
 
-  static buffer_Getter(mthis) native "AudioBufferSourceNode_buffer_Getter";
-  buffer_Getter_(mthis) => buffer_Getter(mthis);
+  buffer_Getter_(mthis) => mthis["buffer"];
 
-  static buffer_Setter(mthis, __arg_0) native "AudioBufferSourceNode_buffer_Setter";
-  buffer_Setter_(mthis, __arg_0) => buffer_Setter(mthis, __arg_0);
+  buffer_Setter_(mthis, __arg_0) => mthis["buffer"] = __arg_0;
 
-  static loopEnd_Getter(mthis) native "AudioBufferSourceNode_loopEnd_Getter";
-  loopEnd_Getter_(mthis) => loopEnd_Getter(mthis);
+  loopEnd_Getter_(mthis) => mthis["loopEnd"];
 
-  static loopEnd_Setter(mthis, __arg_0) native "AudioBufferSourceNode_loopEnd_Setter";
-  loopEnd_Setter_(mthis, __arg_0) => loopEnd_Setter(mthis, __arg_0);
+  loopEnd_Setter_(mthis, __arg_0) => mthis["loopEnd"] = __arg_0;
 
-  static loopStart_Getter(mthis) native "AudioBufferSourceNode_loopStart_Getter";
-  loopStart_Getter_(mthis) => loopStart_Getter(mthis);
+  loopStart_Getter_(mthis) => mthis["loopStart"];
 
-  static loopStart_Setter(mthis, __arg_0) native "AudioBufferSourceNode_loopStart_Setter";
-  loopStart_Setter_(mthis, __arg_0) => loopStart_Setter(mthis, __arg_0);
+  loopStart_Setter_(mthis, __arg_0) => mthis["loopStart"] = __arg_0;
 
-  static loop_Getter(mthis) native "AudioBufferSourceNode_loop_Getter";
-  loop_Getter_(mthis) => loop_Getter(mthis);
+  loop_Getter_(mthis) => mthis["loop"];
 
-  static loop_Setter(mthis, __arg_0) native "AudioBufferSourceNode_loop_Setter";
-  loop_Setter_(mthis, __arg_0) => loop_Setter(mthis, __arg_0);
+  loop_Setter_(mthis, __arg_0) => mthis["loop"] = __arg_0;
 
-  static onended_Getter(mthis) native "AudioBufferSourceNode_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static onended_Setter(mthis, __arg_0) native "AudioBufferSourceNode_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static playbackRate_Getter(mthis) native "AudioBufferSourceNode_playbackRate_Getter";
-  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
+  playbackRate_Getter_(mthis) => mthis["playbackRate"];
 
-  static start_Callback_0(mthis) native "AudioBufferSourceNode_start_Callback";
-  start_Callback_0_(mthis) => start_Callback_0(mthis);
+  start_Callback_0_(mthis) => mthis.callMethod("start", []);
 
-  static start_Callback_1(mthis, __arg_0) native "AudioBufferSourceNode_start_Callback";
-  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
+  start_Callback_1_(mthis, __arg_0) => mthis.callMethod("start", [__arg_0]);
 
-  static start_Callback_2(mthis, __arg_0, __arg_1) native "AudioBufferSourceNode_start_Callback";
-  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
+  start_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("start", [__arg_0, __arg_1]);
 
-  static start_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioBufferSourceNode_start_Callback";
-  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => start_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("start", [__arg_0, __arg_1, __arg_2]);
 
-  static start_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioBufferSourceNode_start_Callback";
-  start_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => start_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  stop_Callback_0_(mthis) => mthis.callMethod("stop", []);
 
-  static start_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioBufferSourceNode_start_Callback";
-  start_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => start_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static stop_Callback_0(mthis) native "AudioBufferSourceNode_stop_Callback";
-  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
-
-  static stop_Callback_1(mthis, __arg_0) native "AudioBufferSourceNode_stop_Callback";
-  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
-
-  static stop_Callback_2(mthis, __arg_0, __arg_1) native "AudioBufferSourceNode_stop_Callback";
-  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioBufferSourceNode_stop_Callback";
-  stop_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stop_Callback_1_(mthis, __arg_0) => mthis.callMethod("stop", [__arg_0]);
 
 }
 
 class BlinkAudioContext extends BlinkEventTarget {
   static final instance = new BlinkAudioContext();
 
-  static constructorCallback_0() native "AudioContext_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["AudioContext"], []);
 
-  static constructorCallback_1(__arg_0) native "AudioContext_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  createAnalyser_Callback_0_(mthis) => mthis.callMethod("createAnalyser", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "AudioContext_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  createBiquadFilter_Callback_0_(mthis) => mthis.callMethod("createBiquadFilter", []);
 
-  static createAnalyser_Callback_0(mthis) native "AudioContext_createAnalyser_Callback";
-  createAnalyser_Callback_0_(mthis) => createAnalyser_Callback_0(mthis);
+  createBufferSource_Callback_0_(mthis) => mthis.callMethod("createBufferSource", []);
 
-  static createAnalyser_Callback_1(mthis, __arg_0) native "AudioContext_createAnalyser_Callback";
-  createAnalyser_Callback_1_(mthis, __arg_0) => createAnalyser_Callback_1(mthis, __arg_0);
+  createBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("createBuffer", [__arg_0]);
 
-  static createAnalyser_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createAnalyser_Callback";
-  createAnalyser_Callback_2_(mthis, __arg_0, __arg_1) => createAnalyser_Callback_2(mthis, __arg_0, __arg_1);
+  createBuffer_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createBuffer", [__arg_0, __arg_1]);
 
-  static createBiquadFilter_Callback_0(mthis) native "AudioContext_createBiquadFilter_Callback";
-  createBiquadFilter_Callback_0_(mthis) => createBiquadFilter_Callback_0(mthis);
+  createBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createBuffer", [__arg_0, __arg_1, __arg_2]);
 
-  static createBiquadFilter_Callback_1(mthis, __arg_0) native "AudioContext_createBiquadFilter_Callback";
-  createBiquadFilter_Callback_1_(mthis, __arg_0) => createBiquadFilter_Callback_1(mthis, __arg_0);
+  createChannelMerger_Callback_0_(mthis) => mthis.callMethod("createChannelMerger", []);
 
-  static createBiquadFilter_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createBiquadFilter_Callback";
-  createBiquadFilter_Callback_2_(mthis, __arg_0, __arg_1) => createBiquadFilter_Callback_2(mthis, __arg_0, __arg_1);
+  createChannelMerger_Callback_1_(mthis, __arg_0) => mthis.callMethod("createChannelMerger", [__arg_0]);
 
-  static createBufferSource_Callback_0(mthis) native "AudioContext_createBufferSource_Callback";
-  createBufferSource_Callback_0_(mthis) => createBufferSource_Callback_0(mthis);
+  createChannelSplitter_Callback_0_(mthis) => mthis.callMethod("createChannelSplitter", []);
 
-  static createBufferSource_Callback_1(mthis, __arg_0) native "AudioContext_createBufferSource_Callback";
-  createBufferSource_Callback_1_(mthis, __arg_0) => createBufferSource_Callback_1(mthis, __arg_0);
+  createChannelSplitter_Callback_1_(mthis, __arg_0) => mthis.callMethod("createChannelSplitter", [__arg_0]);
 
-  static createBufferSource_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createBufferSource_Callback";
-  createBufferSource_Callback_2_(mthis, __arg_0, __arg_1) => createBufferSource_Callback_2(mthis, __arg_0, __arg_1);
+  createConvolver_Callback_0_(mthis) => mthis.callMethod("createConvolver", []);
 
-  static createBuffer_Callback_1(mthis, __arg_0) native "AudioContext_createBuffer_Callback";
-  createBuffer_Callback_1_(mthis, __arg_0) => createBuffer_Callback_1(mthis, __arg_0);
+  createDelay_Callback_0_(mthis) => mthis.callMethod("createDelay", []);
 
-  static createBuffer_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createBuffer_Callback";
-  createBuffer_Callback_2_(mthis, __arg_0, __arg_1) => createBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  createDelay_Callback_1_(mthis, __arg_0) => mthis.callMethod("createDelay", [__arg_0]);
 
-  static createBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createBuffer_Callback";
-  createBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createDynamicsCompressor_Callback_0_(mthis) => mthis.callMethod("createDynamicsCompressor", []);
 
-  static createBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_createBuffer_Callback";
-  createBuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createGain_Callback_0_(mthis) => mthis.callMethod("createGain", []);
 
-  static createBuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioContext_createBuffer_Callback";
-  createBuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createBuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createMediaElementSource_Callback_0_(mthis) => mthis.callMethod("createMediaElementSource", []);
 
-  static createChannelMerger_Callback_0(mthis) native "AudioContext_createChannelMerger_Callback";
-  createChannelMerger_Callback_0_(mthis) => createChannelMerger_Callback_0(mthis);
+  createMediaElementSource_Callback_1_(mthis, __arg_0) => mthis.callMethod("createMediaElementSource", [__arg_0]);
 
-  static createChannelMerger_Callback_1(mthis, __arg_0) native "AudioContext_createChannelMerger_Callback";
-  createChannelMerger_Callback_1_(mthis, __arg_0) => createChannelMerger_Callback_1(mthis, __arg_0);
+  createMediaStreamDestination_Callback_0_(mthis) => mthis.callMethod("createMediaStreamDestination", []);
 
-  static createChannelMerger_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createChannelMerger_Callback";
-  createChannelMerger_Callback_2_(mthis, __arg_0, __arg_1) => createChannelMerger_Callback_2(mthis, __arg_0, __arg_1);
+  createMediaStreamSource_Callback_0_(mthis) => mthis.callMethod("createMediaStreamSource", []);
 
-  static createChannelMerger_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createChannelMerger_Callback";
-  createChannelMerger_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createChannelMerger_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createMediaStreamSource_Callback_1_(mthis, __arg_0) => mthis.callMethod("createMediaStreamSource", [__arg_0]);
 
-  static createChannelSplitter_Callback_0(mthis) native "AudioContext_createChannelSplitter_Callback";
-  createChannelSplitter_Callback_0_(mthis) => createChannelSplitter_Callback_0(mthis);
+  createOscillator_Callback_0_(mthis) => mthis.callMethod("createOscillator", []);
 
-  static createChannelSplitter_Callback_1(mthis, __arg_0) native "AudioContext_createChannelSplitter_Callback";
-  createChannelSplitter_Callback_1_(mthis, __arg_0) => createChannelSplitter_Callback_1(mthis, __arg_0);
+  createPanner_Callback_0_(mthis) => mthis.callMethod("createPanner", []);
 
-  static createChannelSplitter_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createChannelSplitter_Callback";
-  createChannelSplitter_Callback_2_(mthis, __arg_0, __arg_1) => createChannelSplitter_Callback_2(mthis, __arg_0, __arg_1);
+  createPeriodicWave_Callback_0_(mthis) => mthis.callMethod("createPeriodicWave", []);
 
-  static createChannelSplitter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createChannelSplitter_Callback";
-  createChannelSplitter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createChannelSplitter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createPeriodicWave_Callback_1_(mthis, __arg_0) => mthis.callMethod("createPeriodicWave", [__arg_0]);
 
-  static createConvolver_Callback_0(mthis) native "AudioContext_createConvolver_Callback";
-  createConvolver_Callback_0_(mthis) => createConvolver_Callback_0(mthis);
+  createPeriodicWave_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createPeriodicWave", [__arg_0, __arg_1]);
 
-  static createConvolver_Callback_1(mthis, __arg_0) native "AudioContext_createConvolver_Callback";
-  createConvolver_Callback_1_(mthis, __arg_0) => createConvolver_Callback_1(mthis, __arg_0);
+  createScriptProcessor_Callback_0_(mthis) => mthis.callMethod("createScriptProcessor", []);
 
-  static createConvolver_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createConvolver_Callback";
-  createConvolver_Callback_2_(mthis, __arg_0, __arg_1) => createConvolver_Callback_2(mthis, __arg_0, __arg_1);
+  createScriptProcessor_Callback_1_(mthis, __arg_0) => mthis.callMethod("createScriptProcessor", [__arg_0]);
 
-  static createDelay_Callback_0(mthis) native "AudioContext_createDelay_Callback";
-  createDelay_Callback_0_(mthis) => createDelay_Callback_0(mthis);
+  createScriptProcessor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createScriptProcessor", [__arg_0, __arg_1]);
 
-  static createDelay_Callback_1(mthis, __arg_0) native "AudioContext_createDelay_Callback";
-  createDelay_Callback_1_(mthis, __arg_0) => createDelay_Callback_1(mthis, __arg_0);
+  createScriptProcessor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createScriptProcessor", [__arg_0, __arg_1, __arg_2]);
 
-  static createDelay_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createDelay_Callback";
-  createDelay_Callback_2_(mthis, __arg_0, __arg_1) => createDelay_Callback_2(mthis, __arg_0, __arg_1);
+  createWaveShaper_Callback_0_(mthis) => mthis.callMethod("createWaveShaper", []);
 
-  static createDelay_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createDelay_Callback";
-  createDelay_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDelay_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  currentTime_Getter_(mthis) => mthis["currentTime"];
 
-  static createDynamicsCompressor_Callback_0(mthis) native "AudioContext_createDynamicsCompressor_Callback";
-  createDynamicsCompressor_Callback_0_(mthis) => createDynamicsCompressor_Callback_0(mthis);
+  decodeAudioData_Callback_0_(mthis) => mthis.callMethod("decodeAudioData", []);
 
-  static createDynamicsCompressor_Callback_1(mthis, __arg_0) native "AudioContext_createDynamicsCompressor_Callback";
-  createDynamicsCompressor_Callback_1_(mthis, __arg_0) => createDynamicsCompressor_Callback_1(mthis, __arg_0);
+  decodeAudioData_Callback_1_(mthis, __arg_0) => mthis.callMethod("decodeAudioData", [__arg_0]);
 
-  static createDynamicsCompressor_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createDynamicsCompressor_Callback";
-  createDynamicsCompressor_Callback_2_(mthis, __arg_0, __arg_1) => createDynamicsCompressor_Callback_2(mthis, __arg_0, __arg_1);
+  decodeAudioData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("decodeAudioData", [__arg_0, __arg_1]);
 
-  static createGain_Callback_0(mthis) native "AudioContext_createGain_Callback";
-  createGain_Callback_0_(mthis) => createGain_Callback_0(mthis);
+  decodeAudioData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("decodeAudioData", [__arg_0, __arg_1, __arg_2]);
 
-  static createGain_Callback_1(mthis, __arg_0) native "AudioContext_createGain_Callback";
-  createGain_Callback_1_(mthis, __arg_0) => createGain_Callback_1(mthis, __arg_0);
+  destination_Getter_(mthis) => mthis["destination"];
 
-  static createGain_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createGain_Callback";
-  createGain_Callback_2_(mthis, __arg_0, __arg_1) => createGain_Callback_2(mthis, __arg_0, __arg_1);
+  listener_Getter_(mthis) => mthis["listener"];
 
-  static createMediaElementSource_Callback_0(mthis) native "AudioContext_createMediaElementSource_Callback";
-  createMediaElementSource_Callback_0_(mthis) => createMediaElementSource_Callback_0(mthis);
+  oncomplete_Getter_(mthis) => mthis["oncomplete"];
 
-  static createMediaElementSource_Callback_1(mthis, __arg_0) native "AudioContext_createMediaElementSource_Callback";
-  createMediaElementSource_Callback_1_(mthis, __arg_0) => createMediaElementSource_Callback_1(mthis, __arg_0);
+  oncomplete_Setter_(mthis, __arg_0) => mthis["oncomplete"] = __arg_0;
 
-  static createMediaElementSource_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createMediaElementSource_Callback";
-  createMediaElementSource_Callback_2_(mthis, __arg_0, __arg_1) => createMediaElementSource_Callback_2(mthis, __arg_0, __arg_1);
+  sampleRate_Getter_(mthis) => mthis["sampleRate"];
 
-  static createMediaElementSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createMediaElementSource_Callback";
-  createMediaElementSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createMediaElementSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createMediaStreamDestination_Callback_0(mthis) native "AudioContext_createMediaStreamDestination_Callback";
-  createMediaStreamDestination_Callback_0_(mthis) => createMediaStreamDestination_Callback_0(mthis);
-
-  static createMediaStreamDestination_Callback_1(mthis, __arg_0) native "AudioContext_createMediaStreamDestination_Callback";
-  createMediaStreamDestination_Callback_1_(mthis, __arg_0) => createMediaStreamDestination_Callback_1(mthis, __arg_0);
-
-  static createMediaStreamDestination_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createMediaStreamDestination_Callback";
-  createMediaStreamDestination_Callback_2_(mthis, __arg_0, __arg_1) => createMediaStreamDestination_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createMediaStreamSource_Callback_0(mthis) native "AudioContext_createMediaStreamSource_Callback";
-  createMediaStreamSource_Callback_0_(mthis) => createMediaStreamSource_Callback_0(mthis);
-
-  static createMediaStreamSource_Callback_1(mthis, __arg_0) native "AudioContext_createMediaStreamSource_Callback";
-  createMediaStreamSource_Callback_1_(mthis, __arg_0) => createMediaStreamSource_Callback_1(mthis, __arg_0);
-
-  static createMediaStreamSource_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createMediaStreamSource_Callback";
-  createMediaStreamSource_Callback_2_(mthis, __arg_0, __arg_1) => createMediaStreamSource_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createMediaStreamSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createMediaStreamSource_Callback";
-  createMediaStreamSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createMediaStreamSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createOscillator_Callback_0(mthis) native "AudioContext_createOscillator_Callback";
-  createOscillator_Callback_0_(mthis) => createOscillator_Callback_0(mthis);
-
-  static createOscillator_Callback_1(mthis, __arg_0) native "AudioContext_createOscillator_Callback";
-  createOscillator_Callback_1_(mthis, __arg_0) => createOscillator_Callback_1(mthis, __arg_0);
-
-  static createOscillator_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createOscillator_Callback";
-  createOscillator_Callback_2_(mthis, __arg_0, __arg_1) => createOscillator_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createPanner_Callback_0(mthis) native "AudioContext_createPanner_Callback";
-  createPanner_Callback_0_(mthis) => createPanner_Callback_0(mthis);
-
-  static createPanner_Callback_1(mthis, __arg_0) native "AudioContext_createPanner_Callback";
-  createPanner_Callback_1_(mthis, __arg_0) => createPanner_Callback_1(mthis, __arg_0);
-
-  static createPanner_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createPanner_Callback";
-  createPanner_Callback_2_(mthis, __arg_0, __arg_1) => createPanner_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createPeriodicWave_Callback_0(mthis) native "AudioContext_createPeriodicWave_Callback";
-  createPeriodicWave_Callback_0_(mthis) => createPeriodicWave_Callback_0(mthis);
-
-  static createPeriodicWave_Callback_1(mthis, __arg_0) native "AudioContext_createPeriodicWave_Callback";
-  createPeriodicWave_Callback_1_(mthis, __arg_0) => createPeriodicWave_Callback_1(mthis, __arg_0);
-
-  static createPeriodicWave_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createPeriodicWave_Callback";
-  createPeriodicWave_Callback_2_(mthis, __arg_0, __arg_1) => createPeriodicWave_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createPeriodicWave_Callback";
-  createPeriodicWave_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createPeriodicWave_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_createPeriodicWave_Callback";
-  createPeriodicWave_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createPeriodicWave_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static createScriptProcessor_Callback_0(mthis) native "AudioContext_createScriptProcessor_Callback";
-  createScriptProcessor_Callback_0_(mthis) => createScriptProcessor_Callback_0(mthis);
-
-  static createScriptProcessor_Callback_1(mthis, __arg_0) native "AudioContext_createScriptProcessor_Callback";
-  createScriptProcessor_Callback_1_(mthis, __arg_0) => createScriptProcessor_Callback_1(mthis, __arg_0);
-
-  static createScriptProcessor_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createScriptProcessor_Callback";
-  createScriptProcessor_Callback_2_(mthis, __arg_0, __arg_1) => createScriptProcessor_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createScriptProcessor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createScriptProcessor_Callback";
-  createScriptProcessor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createScriptProcessor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createScriptProcessor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_createScriptProcessor_Callback";
-  createScriptProcessor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createScriptProcessor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static createScriptProcessor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioContext_createScriptProcessor_Callback";
-  createScriptProcessor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createScriptProcessor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static createWaveShaper_Callback_0(mthis) native "AudioContext_createWaveShaper_Callback";
-  createWaveShaper_Callback_0_(mthis) => createWaveShaper_Callback_0(mthis);
-
-  static createWaveShaper_Callback_1(mthis, __arg_0) native "AudioContext_createWaveShaper_Callback";
-  createWaveShaper_Callback_1_(mthis, __arg_0) => createWaveShaper_Callback_1(mthis, __arg_0);
-
-  static createWaveShaper_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createWaveShaper_Callback";
-  createWaveShaper_Callback_2_(mthis, __arg_0, __arg_1) => createWaveShaper_Callback_2(mthis, __arg_0, __arg_1);
-
-  static currentTime_Getter(mthis) native "AudioContext_currentTime_Getter";
-  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
-
-  static decodeAudioData_Callback_0(mthis) native "AudioContext_decodeAudioData_Callback";
-  decodeAudioData_Callback_0_(mthis) => decodeAudioData_Callback_0(mthis);
-
-  static decodeAudioData_Callback_1(mthis, __arg_0) native "AudioContext_decodeAudioData_Callback";
-  decodeAudioData_Callback_1_(mthis, __arg_0) => decodeAudioData_Callback_1(mthis, __arg_0);
-
-  static decodeAudioData_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_decodeAudioData_Callback";
-  decodeAudioData_Callback_2_(mthis, __arg_0, __arg_1) => decodeAudioData_Callback_2(mthis, __arg_0, __arg_1);
-
-  static decodeAudioData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_decodeAudioData_Callback";
-  decodeAudioData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => decodeAudioData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static decodeAudioData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_decodeAudioData_Callback";
-  decodeAudioData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => decodeAudioData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static decodeAudioData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioContext_decodeAudioData_Callback";
-  decodeAudioData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => decodeAudioData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static destination_Getter(mthis) native "AudioContext_destination_Getter";
-  destination_Getter_(mthis) => destination_Getter(mthis);
-
-  static listener_Getter(mthis) native "AudioContext_listener_Getter";
-  listener_Getter_(mthis) => listener_Getter(mthis);
-
-  static oncomplete_Getter(mthis) native "AudioContext_oncomplete_Getter";
-  oncomplete_Getter_(mthis) => oncomplete_Getter(mthis);
-
-  static oncomplete_Setter(mthis, __arg_0) native "AudioContext_oncomplete_Setter";
-  oncomplete_Setter_(mthis, __arg_0) => oncomplete_Setter(mthis, __arg_0);
-
-  static sampleRate_Getter(mthis) native "AudioContext_sampleRate_Getter";
-  sampleRate_Getter_(mthis) => sampleRate_Getter(mthis);
-
-  static startRendering_Callback_0(mthis) native "AudioContext_startRendering_Callback";
-  startRendering_Callback_0_(mthis) => startRendering_Callback_0(mthis);
-
-  static startRendering_Callback_1(mthis, __arg_0) native "AudioContext_startRendering_Callback";
-  startRendering_Callback_1_(mthis, __arg_0) => startRendering_Callback_1(mthis, __arg_0);
-
-  static startRendering_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_startRendering_Callback";
-  startRendering_Callback_2_(mthis, __arg_0, __arg_1) => startRendering_Callback_2(mthis, __arg_0, __arg_1);
+  startRendering_Callback_0_(mthis) => mthis.callMethod("startRendering", []);
 
 }
 
 class BlinkAudioDestinationNode extends BlinkAudioNode {
   static final instance = new BlinkAudioDestinationNode();
 
-  static maxChannelCount_Getter(mthis) native "AudioDestinationNode_maxChannelCount_Getter";
-  maxChannelCount_Getter_(mthis) => maxChannelCount_Getter(mthis);
+  maxChannelCount_Getter_(mthis) => mthis["maxChannelCount"];
 
 }
 
 class BlinkAudioListener {
   static final instance = new BlinkAudioListener();
 
-  static dopplerFactor_Getter(mthis) native "AudioListener_dopplerFactor_Getter";
-  dopplerFactor_Getter_(mthis) => dopplerFactor_Getter(mthis);
+  dopplerFactor_Getter_(mthis) => mthis["dopplerFactor"];
 
-  static dopplerFactor_Setter(mthis, __arg_0) native "AudioListener_dopplerFactor_Setter";
-  dopplerFactor_Setter_(mthis, __arg_0) => dopplerFactor_Setter(mthis, __arg_0);
+  dopplerFactor_Setter_(mthis, __arg_0) => mthis["dopplerFactor"] = __arg_0;
 
-  static setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioListener_setOrientation_Callback";
-  setOrientation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setOrientation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioListener_setOrientation_Callback";
-  setOrientation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setOrientation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static setOrientation_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "AudioListener_setOrientation_Callback";
-  setOrientation_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setOrientation_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  setOrientation_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("setOrientation", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static setOrientation_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "AudioListener_setOrientation_Callback";
-  setOrientation_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => setOrientation_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  setPosition_Callback_1_(mthis, __arg_0) => mthis.callMethod("setPosition", [__arg_0]);
 
-  static setOrientation_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "AudioListener_setOrientation_Callback";
-  setOrientation_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => setOrientation_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setPosition", [__arg_0, __arg_1]);
 
-  static setPosition_Callback_1(mthis, __arg_0) native "AudioListener_setPosition_Callback";
-  setPosition_Callback_1_(mthis, __arg_0) => setPosition_Callback_1(mthis, __arg_0);
+  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setPosition", [__arg_0, __arg_1, __arg_2]);
 
-  static setPosition_Callback_2(mthis, __arg_0, __arg_1) native "AudioListener_setPosition_Callback";
-  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => setPosition_Callback_2(mthis, __arg_0, __arg_1);
+  setVelocity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setVelocity", [__arg_0]);
 
-  static setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioListener_setPosition_Callback";
-  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setVelocity", [__arg_0, __arg_1]);
 
-  static setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioListener_setPosition_Callback";
-  setPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setVelocity", [__arg_0, __arg_1, __arg_2]);
 
-  static setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioListener_setPosition_Callback";
-  setPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  speedOfSound_Getter_(mthis) => mthis["speedOfSound"];
 
-  static setVelocity_Callback_1(mthis, __arg_0) native "AudioListener_setVelocity_Callback";
-  setVelocity_Callback_1_(mthis, __arg_0) => setVelocity_Callback_1(mthis, __arg_0);
-
-  static setVelocity_Callback_2(mthis, __arg_0, __arg_1) native "AudioListener_setVelocity_Callback";
-  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => setVelocity_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioListener_setVelocity_Callback";
-  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioListener_setVelocity_Callback";
-  setVelocity_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioListener_setVelocity_Callback";
-  setVelocity_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static speedOfSound_Getter(mthis) native "AudioListener_speedOfSound_Getter";
-  speedOfSound_Getter_(mthis) => speedOfSound_Getter(mthis);
-
-  static speedOfSound_Setter(mthis, __arg_0) native "AudioListener_speedOfSound_Setter";
-  speedOfSound_Setter_(mthis, __arg_0) => speedOfSound_Setter(mthis, __arg_0);
+  speedOfSound_Setter_(mthis, __arg_0) => mthis["speedOfSound"] = __arg_0;
 
 }
 
 class BlinkAudioNode extends BlinkEventTarget {
   static final instance = new BlinkAudioNode();
 
-  static channelCountMode_Getter(mthis) native "AudioNode_channelCountMode_Getter";
-  channelCountMode_Getter_(mthis) => channelCountMode_Getter(mthis);
+  channelCountMode_Getter_(mthis) => mthis["channelCountMode"];
 
-  static channelCountMode_Setter(mthis, __arg_0) native "AudioNode_channelCountMode_Setter";
-  channelCountMode_Setter_(mthis, __arg_0) => channelCountMode_Setter(mthis, __arg_0);
+  channelCountMode_Setter_(mthis, __arg_0) => mthis["channelCountMode"] = __arg_0;
 
-  static channelCount_Getter(mthis) native "AudioNode_channelCount_Getter";
-  channelCount_Getter_(mthis) => channelCount_Getter(mthis);
+  channelCount_Getter_(mthis) => mthis["channelCount"];
 
-  static channelCount_Setter(mthis, __arg_0) native "AudioNode_channelCount_Setter";
-  channelCount_Setter_(mthis, __arg_0) => channelCount_Setter(mthis, __arg_0);
+  channelCount_Setter_(mthis, __arg_0) => mthis["channelCount"] = __arg_0;
 
-  static channelInterpretation_Getter(mthis) native "AudioNode_channelInterpretation_Getter";
-  channelInterpretation_Getter_(mthis) => channelInterpretation_Getter(mthis);
+  channelInterpretation_Getter_(mthis) => mthis["channelInterpretation"];
 
-  static channelInterpretation_Setter(mthis, __arg_0) native "AudioNode_channelInterpretation_Setter";
-  channelInterpretation_Setter_(mthis, __arg_0) => channelInterpretation_Setter(mthis, __arg_0);
+  channelInterpretation_Setter_(mthis, __arg_0) => mthis["channelInterpretation"] = __arg_0;
 
-  static connect_Callback_0(mthis) native "AudioNode_connect_Callback";
-  connect_Callback_0_(mthis) => connect_Callback_0(mthis);
+  connect_Callback_0_(mthis) => mthis.callMethod("connect", []);
 
-  static connect_Callback_1(mthis, __arg_0) native "AudioNode_connect_Callback";
-  connect_Callback_1_(mthis, __arg_0) => connect_Callback_1(mthis, __arg_0);
+  connect_Callback_1_(mthis, __arg_0) => mthis.callMethod("connect", [__arg_0]);
 
-  static connect_Callback_2(mthis, __arg_0, __arg_1) native "AudioNode_connect_Callback";
-  connect_Callback_2_(mthis, __arg_0, __arg_1) => connect_Callback_2(mthis, __arg_0, __arg_1);
+  connect_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("connect", [__arg_0, __arg_1]);
 
-  static connect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioNode_connect_Callback";
-  connect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => connect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  connect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("connect", [__arg_0, __arg_1, __arg_2]);
 
-  static connect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioNode_connect_Callback";
-  connect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => connect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  context_Getter_(mthis) => mthis["context"];
 
-  static connect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioNode_connect_Callback";
-  connect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => connect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  disconnect_Callback_0_(mthis) => mthis.callMethod("disconnect", []);
 
-  static context_Getter(mthis) native "AudioNode_context_Getter";
-  context_Getter_(mthis) => context_Getter(mthis);
+  disconnect_Callback_1_(mthis, __arg_0) => mthis.callMethod("disconnect", [__arg_0]);
 
-  static disconnect_Callback_0(mthis) native "AudioNode_disconnect_Callback";
-  disconnect_Callback_0_(mthis) => disconnect_Callback_0(mthis);
+  numberOfInputs_Getter_(mthis) => mthis["numberOfInputs"];
 
-  static disconnect_Callback_1(mthis, __arg_0) native "AudioNode_disconnect_Callback";
-  disconnect_Callback_1_(mthis, __arg_0) => disconnect_Callback_1(mthis, __arg_0);
-
-  static disconnect_Callback_2(mthis, __arg_0, __arg_1) native "AudioNode_disconnect_Callback";
-  disconnect_Callback_2_(mthis, __arg_0, __arg_1) => disconnect_Callback_2(mthis, __arg_0, __arg_1);
-
-  static disconnect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioNode_disconnect_Callback";
-  disconnect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => disconnect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static numberOfInputs_Getter(mthis) native "AudioNode_numberOfInputs_Getter";
-  numberOfInputs_Getter_(mthis) => numberOfInputs_Getter(mthis);
-
-  static numberOfOutputs_Getter(mthis) native "AudioNode_numberOfOutputs_Getter";
-  numberOfOutputs_Getter_(mthis) => numberOfOutputs_Getter(mthis);
+  numberOfOutputs_Getter_(mthis) => mthis["numberOfOutputs"];
 
 }
 
 class BlinkAudioParam {
   static final instance = new BlinkAudioParam();
 
-  static cancelScheduledValues_Callback_0(mthis) native "AudioParam_cancelScheduledValues_Callback";
-  cancelScheduledValues_Callback_0_(mthis) => cancelScheduledValues_Callback_0(mthis);
+  cancelScheduledValues_Callback_0_(mthis) => mthis.callMethod("cancelScheduledValues", []);
 
-  static cancelScheduledValues_Callback_1(mthis, __arg_0) native "AudioParam_cancelScheduledValues_Callback";
-  cancelScheduledValues_Callback_1_(mthis, __arg_0) => cancelScheduledValues_Callback_1(mthis, __arg_0);
+  cancelScheduledValues_Callback_1_(mthis, __arg_0) => mthis.callMethod("cancelScheduledValues", [__arg_0]);
 
-  static cancelScheduledValues_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_cancelScheduledValues_Callback";
-  cancelScheduledValues_Callback_2_(mthis, __arg_0, __arg_1) => cancelScheduledValues_Callback_2(mthis, __arg_0, __arg_1);
+  defaultValue_Getter_(mthis) => mthis["defaultValue"];
 
-  static cancelScheduledValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_cancelScheduledValues_Callback";
-  cancelScheduledValues_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cancelScheduledValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  exponentialRampToValueAtTime_Callback_0_(mthis) => mthis.callMethod("exponentialRampToValueAtTime", []);
 
-  static defaultValue_Getter(mthis) native "AudioParam_defaultValue_Getter";
-  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
+  exponentialRampToValueAtTime_Callback_1_(mthis, __arg_0) => mthis.callMethod("exponentialRampToValueAtTime", [__arg_0]);
 
-  static exponentialRampToValueAtTime_Callback_0(mthis) native "AudioParam_exponentialRampToValueAtTime_Callback";
-  exponentialRampToValueAtTime_Callback_0_(mthis) => exponentialRampToValueAtTime_Callback_0(mthis);
+  exponentialRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("exponentialRampToValueAtTime", [__arg_0, __arg_1]);
 
-  static exponentialRampToValueAtTime_Callback_1(mthis, __arg_0) native "AudioParam_exponentialRampToValueAtTime_Callback";
-  exponentialRampToValueAtTime_Callback_1_(mthis, __arg_0) => exponentialRampToValueAtTime_Callback_1(mthis, __arg_0);
+  linearRampToValueAtTime_Callback_0_(mthis) => mthis.callMethod("linearRampToValueAtTime", []);
 
-  static exponentialRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_exponentialRampToValueAtTime_Callback";
-  exponentialRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => exponentialRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1);
+  linearRampToValueAtTime_Callback_1_(mthis, __arg_0) => mthis.callMethod("linearRampToValueAtTime", [__arg_0]);
 
-  static exponentialRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_exponentialRampToValueAtTime_Callback";
-  exponentialRampToValueAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => exponentialRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  linearRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("linearRampToValueAtTime", [__arg_0, __arg_1]);
 
-  static exponentialRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_exponentialRampToValueAtTime_Callback";
-  exponentialRampToValueAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => exponentialRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setTargetAtTime_Callback_1_(mthis, __arg_0) => mthis.callMethod("setTargetAtTime", [__arg_0]);
 
-  static linearRampToValueAtTime_Callback_0(mthis) native "AudioParam_linearRampToValueAtTime_Callback";
-  linearRampToValueAtTime_Callback_0_(mthis) => linearRampToValueAtTime_Callback_0(mthis);
+  setTargetAtTime_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setTargetAtTime", [__arg_0, __arg_1]);
 
-  static linearRampToValueAtTime_Callback_1(mthis, __arg_0) native "AudioParam_linearRampToValueAtTime_Callback";
-  linearRampToValueAtTime_Callback_1_(mthis, __arg_0) => linearRampToValueAtTime_Callback_1(mthis, __arg_0);
+  setTargetAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setTargetAtTime", [__arg_0, __arg_1, __arg_2]);
 
-  static linearRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_linearRampToValueAtTime_Callback";
-  linearRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => linearRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1);
+  setValueAtTime_Callback_0_(mthis) => mthis.callMethod("setValueAtTime", []);
 
-  static linearRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_linearRampToValueAtTime_Callback";
-  linearRampToValueAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => linearRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setValueAtTime_Callback_1_(mthis, __arg_0) => mthis.callMethod("setValueAtTime", [__arg_0]);
 
-  static linearRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_linearRampToValueAtTime_Callback";
-  linearRampToValueAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => linearRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setValueAtTime", [__arg_0, __arg_1]);
 
-  static setTargetAtTime_Callback_1(mthis, __arg_0) native "AudioParam_setTargetAtTime_Callback";
-  setTargetAtTime_Callback_1_(mthis, __arg_0) => setTargetAtTime_Callback_1(mthis, __arg_0);
+  setValueCurveAtTime_Callback_1_(mthis, __arg_0) => mthis.callMethod("setValueCurveAtTime", [__arg_0]);
 
-  static setTargetAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_setTargetAtTime_Callback";
-  setTargetAtTime_Callback_2_(mthis, __arg_0, __arg_1) => setTargetAtTime_Callback_2(mthis, __arg_0, __arg_1);
+  setValueCurveAtTime_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setValueCurveAtTime", [__arg_0, __arg_1]);
 
-  static setTargetAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_setTargetAtTime_Callback";
-  setTargetAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTargetAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setValueCurveAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setValueCurveAtTime", [__arg_0, __arg_1, __arg_2]);
 
-  static setTargetAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_setTargetAtTime_Callback";
-  setTargetAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTargetAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  value_Getter_(mthis) => mthis["value"];
 
-  static setTargetAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioParam_setTargetAtTime_Callback";
-  setTargetAtTime_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setTargetAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static setValueAtTime_Callback_0(mthis) native "AudioParam_setValueAtTime_Callback";
-  setValueAtTime_Callback_0_(mthis) => setValueAtTime_Callback_0(mthis);
-
-  static setValueAtTime_Callback_1(mthis, __arg_0) native "AudioParam_setValueAtTime_Callback";
-  setValueAtTime_Callback_1_(mthis, __arg_0) => setValueAtTime_Callback_1(mthis, __arg_0);
-
-  static setValueAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_setValueAtTime_Callback";
-  setValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => setValueAtTime_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_setValueAtTime_Callback";
-  setValueAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_setValueAtTime_Callback";
-  setValueAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setValueCurveAtTime_Callback_1(mthis, __arg_0) native "AudioParam_setValueCurveAtTime_Callback";
-  setValueCurveAtTime_Callback_1_(mthis, __arg_0) => setValueCurveAtTime_Callback_1(mthis, __arg_0);
-
-  static setValueCurveAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_setValueCurveAtTime_Callback";
-  setValueCurveAtTime_Callback_2_(mthis, __arg_0, __arg_1) => setValueCurveAtTime_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setValueCurveAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_setValueCurveAtTime_Callback";
-  setValueCurveAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValueCurveAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setValueCurveAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_setValueCurveAtTime_Callback";
-  setValueCurveAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setValueCurveAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setValueCurveAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioParam_setValueCurveAtTime_Callback";
-  setValueCurveAtTime_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setValueCurveAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static value_Getter(mthis) native "AudioParam_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "AudioParam_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkAudioProcessingEvent extends BlinkEvent {
   static final instance = new BlinkAudioProcessingEvent();
 
-  static inputBuffer_Getter(mthis) native "AudioProcessingEvent_inputBuffer_Getter";
-  inputBuffer_Getter_(mthis) => inputBuffer_Getter(mthis);
+  inputBuffer_Getter_(mthis) => mthis["inputBuffer"];
 
-  static outputBuffer_Getter(mthis) native "AudioProcessingEvent_outputBuffer_Getter";
-  outputBuffer_Getter_(mthis) => outputBuffer_Getter(mthis);
+  outputBuffer_Getter_(mthis) => mthis["outputBuffer"];
 
-  static playbackTime_Getter(mthis) native "AudioProcessingEvent_playbackTime_Getter";
-  playbackTime_Getter_(mthis) => playbackTime_Getter(mthis);
+  playbackTime_Getter_(mthis) => mthis["playbackTime"];
 
 }
 
@@ -1690,270 +1159,159 @@
 class BlinkAudioTrack {
   static final instance = new BlinkAudioTrack();
 
-  static enabled_Getter(mthis) native "AudioTrack_enabled_Getter";
-  enabled_Getter_(mthis) => enabled_Getter(mthis);
+  enabled_Getter_(mthis) => mthis["enabled"];
 
-  static enabled_Setter(mthis, __arg_0) native "AudioTrack_enabled_Setter";
-  enabled_Setter_(mthis, __arg_0) => enabled_Setter(mthis, __arg_0);
+  enabled_Setter_(mthis, __arg_0) => mthis["enabled"] = __arg_0;
 
-  static id_Getter(mthis) native "AudioTrack_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static kind_Getter(mthis) native "AudioTrack_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static label_Getter(mthis) native "AudioTrack_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static language_Getter(mthis) native "AudioTrack_language_Getter";
-  language_Getter_(mthis) => language_Getter(mthis);
+  language_Getter_(mthis) => mthis["language"];
 
 }
 
 class BlinkAudioTrackList extends BlinkEventTarget {
   static final instance = new BlinkAudioTrackList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "AudioTrackList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static getTrackById_Callback_0(mthis) native "AudioTrackList_getTrackById_Callback";
-  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+  getTrackById_Callback_0_(mthis) => mthis.callMethod("getTrackById", []);
 
-  static getTrackById_Callback_1(mthis, __arg_0) native "AudioTrackList_getTrackById_Callback";
-  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+  getTrackById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getTrackById", [__arg_0]);
 
-  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "AudioTrackList_getTrackById_Callback";
-  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioTrackList_getTrackById_Callback";
-  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onaddtrack_Getter_(mthis) => mthis["onaddtrack"];
 
-  static length_Getter(mthis) native "AudioTrackList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
 
-  static onaddtrack_Getter(mthis) native "AudioTrackList_onaddtrack_Getter";
-  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static onaddtrack_Setter(mthis, __arg_0) native "AudioTrackList_onaddtrack_Setter";
-  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static onchange_Getter(mthis) native "AudioTrackList_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  onremovetrack_Getter_(mthis) => mthis["onremovetrack"];
 
-  static onchange_Setter(mthis, __arg_0) native "AudioTrackList_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
-
-  static onremovetrack_Getter(mthis) native "AudioTrackList_onremovetrack_Getter";
-  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
-
-  static onremovetrack_Setter(mthis, __arg_0) native "AudioTrackList_onremovetrack_Setter";
-  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
+  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
 
 }
 
 class BlinkAutocompleteErrorEvent extends BlinkEvent {
   static final instance = new BlinkAutocompleteErrorEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "AutocompleteErrorEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["AutocompleteErrorEvent"], [__arg_0, __arg_1]);
 
-  static reason_Getter(mthis) native "AutocompleteErrorEvent_reason_Getter";
-  reason_Getter_(mthis) => reason_Getter(mthis);
+  reason_Getter_(mthis) => mthis["reason"];
 
 }
 
 class BlinkBarProp {
   static final instance = new BlinkBarProp();
 
-  static visible_Getter(mthis) native "BarProp_visible_Getter";
-  visible_Getter_(mthis) => visible_Getter(mthis);
+  visible_Getter_(mthis) => mthis["visible"];
 
 }
 
 class BlinkBatteryManager extends BlinkEventTarget {
   static final instance = new BlinkBatteryManager();
 
-  static chargingTime_Getter(mthis) native "BatteryManager_chargingTime_Getter";
-  chargingTime_Getter_(mthis) => chargingTime_Getter(mthis);
+  chargingTime_Getter_(mthis) => mthis["chargingTime"];
 
-  static charging_Getter(mthis) native "BatteryManager_charging_Getter";
-  charging_Getter_(mthis) => charging_Getter(mthis);
+  charging_Getter_(mthis) => mthis["charging"];
 
-  static dischargingTime_Getter(mthis) native "BatteryManager_dischargingTime_Getter";
-  dischargingTime_Getter_(mthis) => dischargingTime_Getter(mthis);
+  dischargingTime_Getter_(mthis) => mthis["dischargingTime"];
 
-  static level_Getter(mthis) native "BatteryManager_level_Getter";
-  level_Getter_(mthis) => level_Getter(mthis);
+  level_Getter_(mthis) => mthis["level"];
 
-  static onchargingchange_Getter(mthis) native "BatteryManager_onchargingchange_Getter";
-  onchargingchange_Getter_(mthis) => onchargingchange_Getter(mthis);
+  onchargingchange_Getter_(mthis) => mthis["onchargingchange"];
 
-  static onchargingchange_Setter(mthis, __arg_0) native "BatteryManager_onchargingchange_Setter";
-  onchargingchange_Setter_(mthis, __arg_0) => onchargingchange_Setter(mthis, __arg_0);
+  onchargingchange_Setter_(mthis, __arg_0) => mthis["onchargingchange"] = __arg_0;
 
-  static onchargingtimechange_Getter(mthis) native "BatteryManager_onchargingtimechange_Getter";
-  onchargingtimechange_Getter_(mthis) => onchargingtimechange_Getter(mthis);
+  onchargingtimechange_Getter_(mthis) => mthis["onchargingtimechange"];
 
-  static onchargingtimechange_Setter(mthis, __arg_0) native "BatteryManager_onchargingtimechange_Setter";
-  onchargingtimechange_Setter_(mthis, __arg_0) => onchargingtimechange_Setter(mthis, __arg_0);
+  onchargingtimechange_Setter_(mthis, __arg_0) => mthis["onchargingtimechange"] = __arg_0;
 
-  static ondischargingtimechange_Getter(mthis) native "BatteryManager_ondischargingtimechange_Getter";
-  ondischargingtimechange_Getter_(mthis) => ondischargingtimechange_Getter(mthis);
+  ondischargingtimechange_Getter_(mthis) => mthis["ondischargingtimechange"];
 
-  static ondischargingtimechange_Setter(mthis, __arg_0) native "BatteryManager_ondischargingtimechange_Setter";
-  ondischargingtimechange_Setter_(mthis, __arg_0) => ondischargingtimechange_Setter(mthis, __arg_0);
+  ondischargingtimechange_Setter_(mthis, __arg_0) => mthis["ondischargingtimechange"] = __arg_0;
 
-  static onlevelchange_Getter(mthis) native "BatteryManager_onlevelchange_Getter";
-  onlevelchange_Getter_(mthis) => onlevelchange_Getter(mthis);
+  onlevelchange_Getter_(mthis) => mthis["onlevelchange"];
 
-  static onlevelchange_Setter(mthis, __arg_0) native "BatteryManager_onlevelchange_Setter";
-  onlevelchange_Setter_(mthis, __arg_0) => onlevelchange_Setter(mthis, __arg_0);
+  onlevelchange_Setter_(mthis, __arg_0) => mthis["onlevelchange"] = __arg_0;
 
 }
 
 class BlinkBeforeUnloadEvent extends BlinkEvent {
   static final instance = new BlinkBeforeUnloadEvent();
 
-  static returnValue_Getter(mthis) native "BeforeUnloadEvent_returnValue_Getter";
-  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
+  returnValue_Getter_(mthis) => mthis["returnValue"];
 
-  static returnValue_Setter(mthis, __arg_0) native "BeforeUnloadEvent_returnValue_Setter";
-  returnValue_Setter_(mthis, __arg_0) => returnValue_Setter(mthis, __arg_0);
+  returnValue_Setter_(mthis, __arg_0) => mthis["returnValue"] = __arg_0;
 
 }
 
 class BlinkBiquadFilterNode extends BlinkAudioNode {
   static final instance = new BlinkBiquadFilterNode();
 
-  static Q_Getter(mthis) native "BiquadFilterNode_Q_Getter";
-  Q_Getter_(mthis) => Q_Getter(mthis);
+  Q_Getter_(mthis) => mthis["Q"];
 
-  static detune_Getter(mthis) native "BiquadFilterNode_detune_Getter";
-  detune_Getter_(mthis) => detune_Getter(mthis);
+  detune_Getter_(mthis) => mthis["detune"];
 
-  static frequency_Getter(mthis) native "BiquadFilterNode_frequency_Getter";
-  frequency_Getter_(mthis) => frequency_Getter(mthis);
+  frequency_Getter_(mthis) => mthis["frequency"];
 
-  static gain_Getter(mthis) native "BiquadFilterNode_gain_Getter";
-  gain_Getter_(mthis) => gain_Getter(mthis);
+  gain_Getter_(mthis) => mthis["gain"];
 
-  static getFrequencyResponse_Callback_1(mthis, __arg_0) native "BiquadFilterNode_getFrequencyResponse_Callback";
-  getFrequencyResponse_Callback_1_(mthis, __arg_0) => getFrequencyResponse_Callback_1(mthis, __arg_0);
+  getFrequencyResponse_Callback_1_(mthis, __arg_0) => mthis.callMethod("getFrequencyResponse", [__arg_0]);
 
-  static getFrequencyResponse_Callback_2(mthis, __arg_0, __arg_1) native "BiquadFilterNode_getFrequencyResponse_Callback";
-  getFrequencyResponse_Callback_2_(mthis, __arg_0, __arg_1) => getFrequencyResponse_Callback_2(mthis, __arg_0, __arg_1);
+  getFrequencyResponse_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getFrequencyResponse", [__arg_0, __arg_1]);
 
-  static getFrequencyResponse_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "BiquadFilterNode_getFrequencyResponse_Callback";
-  getFrequencyResponse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFrequencyResponse_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getFrequencyResponse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("getFrequencyResponse", [__arg_0, __arg_1, __arg_2]);
 
-  static getFrequencyResponse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "BiquadFilterNode_getFrequencyResponse_Callback";
-  getFrequencyResponse_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFrequencyResponse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  type_Getter_(mthis) => mthis["type"];
 
-  static getFrequencyResponse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "BiquadFilterNode_getFrequencyResponse_Callback";
-  getFrequencyResponse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getFrequencyResponse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static type_Getter(mthis) native "BiquadFilterNode_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static type_Setter(mthis, __arg_0) native "BiquadFilterNode_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkBlob {
   static final instance = new BlinkBlob();
 
-  static close_Callback_0(mthis) native "Blob_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "Blob_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["Blob"], []);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "Blob_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Blob"], [__arg_0]);
 
-  static constructorCallback_0() native "Blob_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Blob"], [__arg_0, __arg_1]);
 
-  static constructorCallback_1(__arg_0) native "Blob_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  size_Getter_(mthis) => mthis["size"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Blob_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  slice_Callback_0_(mthis) => mthis.callMethod("slice", []);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Blob_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  slice_Callback_1_(mthis, __arg_0) => mthis.callMethod("slice", [__arg_0]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Blob_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  slice_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("slice", [__arg_0, __arg_1]);
 
-  static size_Getter(mthis) native "Blob_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
+  slice_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("slice", [__arg_0, __arg_1, __arg_2]);
 
-  static slice_Callback_0(mthis) native "Blob_slice_Callback";
-  slice_Callback_0_(mthis) => slice_Callback_0(mthis);
-
-  static slice_Callback_1(mthis, __arg_0) native "Blob_slice_Callback";
-  slice_Callback_1_(mthis, __arg_0) => slice_Callback_1(mthis, __arg_0);
-
-  static slice_Callback_2(mthis, __arg_0, __arg_1) native "Blob_slice_Callback";
-  slice_Callback_2_(mthis, __arg_0, __arg_1) => slice_Callback_2(mthis, __arg_0, __arg_1);
-
-  static slice_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Blob_slice_Callback";
-  slice_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => slice_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static slice_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Blob_slice_Callback";
-  slice_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => slice_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static slice_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Blob_slice_Callback";
-  slice_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => slice_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static type_Getter(mthis) native "Blob_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkBody {
   static final instance = new BlinkBody();
 
-  static arrayBuffer_Callback_0(mthis) native "Body_arrayBuffer_Callback";
-  arrayBuffer_Callback_0_(mthis) => arrayBuffer_Callback_0(mthis);
+  arrayBuffer_Callback_0_(mthis) => mthis.callMethod("arrayBuffer", []);
 
-  static arrayBuffer_Callback_1(mthis, __arg_0) native "Body_arrayBuffer_Callback";
-  arrayBuffer_Callback_1_(mthis, __arg_0) => arrayBuffer_Callback_1(mthis, __arg_0);
+  blob_Callback_0_(mthis) => mthis.callMethod("blob", []);
 
-  static arrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "Body_arrayBuffer_Callback";
-  arrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => arrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  bodyUsed_Getter_(mthis) => mthis["bodyUsed"];
 
-  static blob_Callback_0(mthis) native "Body_blob_Callback";
-  blob_Callback_0_(mthis) => blob_Callback_0(mthis);
+  json_Callback_0_(mthis) => mthis.callMethod("json", []);
 
-  static blob_Callback_1(mthis, __arg_0) native "Body_blob_Callback";
-  blob_Callback_1_(mthis, __arg_0) => blob_Callback_1(mthis, __arg_0);
-
-  static blob_Callback_2(mthis, __arg_0, __arg_1) native "Body_blob_Callback";
-  blob_Callback_2_(mthis, __arg_0, __arg_1) => blob_Callback_2(mthis, __arg_0, __arg_1);
-
-  static bodyUsed_Getter(mthis) native "Body_bodyUsed_Getter";
-  bodyUsed_Getter_(mthis) => bodyUsed_Getter(mthis);
-
-  static json_Callback_0(mthis) native "Body_json_Callback";
-  json_Callback_0_(mthis) => json_Callback_0(mthis);
-
-  static json_Callback_1(mthis, __arg_0) native "Body_json_Callback";
-  json_Callback_1_(mthis, __arg_0) => json_Callback_1(mthis, __arg_0);
-
-  static json_Callback_2(mthis, __arg_0, __arg_1) native "Body_json_Callback";
-  json_Callback_2_(mthis, __arg_0, __arg_1) => json_Callback_2(mthis, __arg_0, __arg_1);
-
-  static text_Callback_0(mthis) native "Body_text_Callback";
-  text_Callback_0_(mthis) => text_Callback_0(mthis);
-
-  static text_Callback_1(mthis, __arg_0) native "Body_text_Callback";
-  text_Callback_1_(mthis, __arg_0) => text_Callback_1(mthis, __arg_0);
-
-  static text_Callback_2(mthis, __arg_0, __arg_1) native "Body_text_Callback";
-  text_Callback_2_(mthis, __arg_0, __arg_1) => text_Callback_2(mthis, __arg_0, __arg_1);
+  text_Callback_0_(mthis) => mthis.callMethod("text", []);
 
 }
 
@@ -1965,516 +1323,269 @@
 class BlinkCSS {
   static final instance = new BlinkCSS();
 
-  static supports_Callback_0(mthis) native "CSS_supports_Callback";
-  supports_Callback_0_(mthis) => supports_Callback_0(mthis);
+  supports_Callback_0_(mthis) => mthis.callMethod("supports", []);
 
-  static supports_Callback_1(mthis, __arg_0) native "CSS_supports_Callback";
-  supports_Callback_1_(mthis, __arg_0) => supports_Callback_1(mthis, __arg_0);
+  supports_Callback_1_(mthis, __arg_0) => mthis.callMethod("supports", [__arg_0]);
 
-  static supports_Callback_2(mthis, __arg_0, __arg_1) native "CSS_supports_Callback";
-  supports_Callback_2_(mthis, __arg_0, __arg_1) => supports_Callback_2(mthis, __arg_0, __arg_1);
-
-  static supports_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSS_supports_Callback";
-  supports_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => supports_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static supports_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSS_supports_Callback";
-  supports_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => supports_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  supports_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("supports", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCSSCharsetRule extends BlinkCSSRule {
   static final instance = new BlinkCSSCharsetRule();
 
-  static encoding_Getter(mthis) native "CSSCharsetRule_encoding_Getter";
-  encoding_Getter_(mthis) => encoding_Getter(mthis);
+  encoding_Getter_(mthis) => mthis["encoding"];
 
-  static encoding_Setter(mthis, __arg_0) native "CSSCharsetRule_encoding_Setter";
-  encoding_Setter_(mthis, __arg_0) => encoding_Setter(mthis, __arg_0);
+  encoding_Setter_(mthis, __arg_0) => mthis["encoding"] = __arg_0;
 
 }
 
 class BlinkCSSFontFaceRule extends BlinkCSSRule {
   static final instance = new BlinkCSSFontFaceRule();
 
-  static style_Getter(mthis) native "CSSFontFaceRule_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
 }
 
 class BlinkCSSImportRule extends BlinkCSSRule {
   static final instance = new BlinkCSSImportRule();
 
-  static href_Getter(mthis) native "CSSImportRule_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static media_Getter(mthis) native "CSSImportRule_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
-  static styleSheet_Getter(mthis) native "CSSImportRule_styleSheet_Getter";
-  styleSheet_Getter_(mthis) => styleSheet_Getter(mthis);
+  styleSheet_Getter_(mthis) => mthis["styleSheet"];
 
 }
 
 class BlinkCSSKeyframeRule extends BlinkCSSRule {
   static final instance = new BlinkCSSKeyframeRule();
 
-  static keyText_Getter(mthis) native "CSSKeyframeRule_keyText_Getter";
-  keyText_Getter_(mthis) => keyText_Getter(mthis);
+  keyText_Getter_(mthis) => mthis["keyText"];
 
-  static keyText_Setter(mthis, __arg_0) native "CSSKeyframeRule_keyText_Setter";
-  keyText_Setter_(mthis, __arg_0) => keyText_Setter(mthis, __arg_0);
+  keyText_Setter_(mthis, __arg_0) => mthis["keyText"] = __arg_0;
 
-  static style_Getter(mthis) native "CSSKeyframeRule_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
 }
 
 class BlinkCSSKeyframesRule extends BlinkCSSRule {
   static final instance = new BlinkCSSKeyframesRule();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "CSSKeyframesRule___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static cssRules_Getter(mthis) native "CSSKeyframesRule_cssRules_Getter";
-  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
+  cssRules_Getter_(mthis) => mthis["cssRules"];
 
-  static deleteRule_Callback_0(mthis) native "CSSKeyframesRule_deleteRule_Callback";
-  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
+  deleteRule_Callback_0_(mthis) => mthis.callMethod("deleteRule", []);
 
-  static deleteRule_Callback_1(mthis, __arg_0) native "CSSKeyframesRule_deleteRule_Callback";
-  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+  deleteRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteRule", [__arg_0]);
 
-  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSKeyframesRule_deleteRule_Callback";
-  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+  findRule_Callback_0_(mthis) => mthis.callMethod("findRule", []);
 
-  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSKeyframesRule_deleteRule_Callback";
-  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  findRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("findRule", [__arg_0]);
 
-  static findRule_Callback_0(mthis) native "CSSKeyframesRule_findRule_Callback";
-  findRule_Callback_0_(mthis) => findRule_Callback_0(mthis);
+  insertRule_Callback_0_(mthis) => mthis.callMethod("insertRule", []);
 
-  static findRule_Callback_1(mthis, __arg_0) native "CSSKeyframesRule_findRule_Callback";
-  findRule_Callback_1_(mthis, __arg_0) => findRule_Callback_1(mthis, __arg_0);
+  insertRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertRule", [__arg_0]);
 
-  static findRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSKeyframesRule_findRule_Callback";
-  findRule_Callback_2_(mthis, __arg_0, __arg_1) => findRule_Callback_2(mthis, __arg_0, __arg_1);
+  name_Getter_(mthis) => mthis["name"];
 
-  static findRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSKeyframesRule_findRule_Callback";
-  findRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => findRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertRule_Callback_0(mthis) native "CSSKeyframesRule_insertRule_Callback";
-  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
-
-  static insertRule_Callback_1(mthis, __arg_0) native "CSSKeyframesRule_insertRule_Callback";
-  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
-
-  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSKeyframesRule_insertRule_Callback";
-  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSKeyframesRule_insertRule_Callback";
-  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static name_Getter(mthis) native "CSSKeyframesRule_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
-
-  static name_Setter(mthis, __arg_0) native "CSSKeyframesRule_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
 }
 
 class BlinkCSSMediaRule extends BlinkCSSRule {
   static final instance = new BlinkCSSMediaRule();
 
-  static cssRules_Getter(mthis) native "CSSMediaRule_cssRules_Getter";
-  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
+  cssRules_Getter_(mthis) => mthis["cssRules"];
 
-  static deleteRule_Callback_0(mthis) native "CSSMediaRule_deleteRule_Callback";
-  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
+  deleteRule_Callback_0_(mthis) => mthis.callMethod("deleteRule", []);
 
-  static deleteRule_Callback_1(mthis, __arg_0) native "CSSMediaRule_deleteRule_Callback";
-  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+  deleteRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteRule", [__arg_0]);
 
-  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSMediaRule_deleteRule_Callback";
-  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+  insertRule_Callback_0_(mthis) => mthis.callMethod("insertRule", []);
 
-  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSMediaRule_deleteRule_Callback";
-  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  insertRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertRule", [__arg_0]);
 
-  static insertRule_Callback_0(mthis) native "CSSMediaRule_insertRule_Callback";
-  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertRule", [__arg_0, __arg_1]);
 
-  static insertRule_Callback_1(mthis, __arg_0) native "CSSMediaRule_insertRule_Callback";
-  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
-
-  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSMediaRule_insertRule_Callback";
-  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSMediaRule_insertRule_Callback";
-  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSMediaRule_insertRule_Callback";
-  insertRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static media_Getter(mthis) native "CSSMediaRule_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
 }
 
 class BlinkCSSPageRule extends BlinkCSSRule {
   static final instance = new BlinkCSSPageRule();
 
-  static selectorText_Getter(mthis) native "CSSPageRule_selectorText_Getter";
-  selectorText_Getter_(mthis) => selectorText_Getter(mthis);
+  selectorText_Getter_(mthis) => mthis["selectorText"];
 
-  static selectorText_Setter(mthis, __arg_0) native "CSSPageRule_selectorText_Setter";
-  selectorText_Setter_(mthis, __arg_0) => selectorText_Setter(mthis, __arg_0);
+  selectorText_Setter_(mthis, __arg_0) => mthis["selectorText"] = __arg_0;
 
-  static style_Getter(mthis) native "CSSPageRule_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
 }
 
 class BlinkCSSPrimitiveValue extends BlinkCSSValue {
   static final instance = new BlinkCSSPrimitiveValue();
 
-  static getCounterValue_Callback_0(mthis) native "CSSPrimitiveValue_getCounterValue_Callback";
-  getCounterValue_Callback_0_(mthis) => getCounterValue_Callback_0(mthis);
+  getCounterValue_Callback_0_(mthis) => mthis.callMethod("getCounterValue", []);
 
-  static getCounterValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getCounterValue_Callback";
-  getCounterValue_Callback_1_(mthis, __arg_0) => getCounterValue_Callback_1(mthis, __arg_0);
+  getFloatValue_Callback_0_(mthis) => mthis.callMethod("getFloatValue", []);
 
-  static getCounterValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getCounterValue_Callback";
-  getCounterValue_Callback_2_(mthis, __arg_0, __arg_1) => getCounterValue_Callback_2(mthis, __arg_0, __arg_1);
+  getFloatValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("getFloatValue", [__arg_0]);
 
-  static getFloatValue_Callback_0(mthis) native "CSSPrimitiveValue_getFloatValue_Callback";
-  getFloatValue_Callback_0_(mthis) => getFloatValue_Callback_0(mthis);
+  getRGBColorValue_Callback_0_(mthis) => mthis.callMethod("getRGBColorValue", []);
 
-  static getFloatValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getFloatValue_Callback";
-  getFloatValue_Callback_1_(mthis, __arg_0) => getFloatValue_Callback_1(mthis, __arg_0);
+  getRectValue_Callback_0_(mthis) => mthis.callMethod("getRectValue", []);
 
-  static getFloatValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getFloatValue_Callback";
-  getFloatValue_Callback_2_(mthis, __arg_0, __arg_1) => getFloatValue_Callback_2(mthis, __arg_0, __arg_1);
+  getStringValue_Callback_0_(mthis) => mthis.callMethod("getStringValue", []);
 
-  static getFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSPrimitiveValue_getFloatValue_Callback";
-  getFloatValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  primitiveType_Getter_(mthis) => mthis["primitiveType"];
 
-  static getRGBColorValue_Callback_0(mthis) native "CSSPrimitiveValue_getRGBColorValue_Callback";
-  getRGBColorValue_Callback_0_(mthis) => getRGBColorValue_Callback_0(mthis);
+  setFloatValue_Callback_0_(mthis) => mthis.callMethod("setFloatValue", []);
 
-  static getRGBColorValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getRGBColorValue_Callback";
-  getRGBColorValue_Callback_1_(mthis, __arg_0) => getRGBColorValue_Callback_1(mthis, __arg_0);
+  setFloatValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("setFloatValue", [__arg_0]);
 
-  static getRGBColorValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getRGBColorValue_Callback";
-  getRGBColorValue_Callback_2_(mthis, __arg_0, __arg_1) => getRGBColorValue_Callback_2(mthis, __arg_0, __arg_1);
+  setFloatValue_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setFloatValue", [__arg_0, __arg_1]);
 
-  static getRectValue_Callback_0(mthis) native "CSSPrimitiveValue_getRectValue_Callback";
-  getRectValue_Callback_0_(mthis) => getRectValue_Callback_0(mthis);
+  setStringValue_Callback_0_(mthis) => mthis.callMethod("setStringValue", []);
 
-  static getRectValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getRectValue_Callback";
-  getRectValue_Callback_1_(mthis, __arg_0) => getRectValue_Callback_1(mthis, __arg_0);
+  setStringValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("setStringValue", [__arg_0]);
 
-  static getRectValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getRectValue_Callback";
-  getRectValue_Callback_2_(mthis, __arg_0, __arg_1) => getRectValue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getStringValue_Callback_0(mthis) native "CSSPrimitiveValue_getStringValue_Callback";
-  getStringValue_Callback_0_(mthis) => getStringValue_Callback_0(mthis);
-
-  static getStringValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getStringValue_Callback";
-  getStringValue_Callback_1_(mthis, __arg_0) => getStringValue_Callback_1(mthis, __arg_0);
-
-  static getStringValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getStringValue_Callback";
-  getStringValue_Callback_2_(mthis, __arg_0, __arg_1) => getStringValue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static primitiveType_Getter(mthis) native "CSSPrimitiveValue_primitiveType_Getter";
-  primitiveType_Getter_(mthis) => primitiveType_Getter(mthis);
-
-  static setFloatValue_Callback_0(mthis) native "CSSPrimitiveValue_setFloatValue_Callback";
-  setFloatValue_Callback_0_(mthis) => setFloatValue_Callback_0(mthis);
-
-  static setFloatValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_setFloatValue_Callback";
-  setFloatValue_Callback_1_(mthis, __arg_0) => setFloatValue_Callback_1(mthis, __arg_0);
-
-  static setFloatValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_setFloatValue_Callback";
-  setFloatValue_Callback_2_(mthis, __arg_0, __arg_1) => setFloatValue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSPrimitiveValue_setFloatValue_Callback";
-  setFloatValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setFloatValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSPrimitiveValue_setFloatValue_Callback";
-  setFloatValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setFloatValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setStringValue_Callback_0(mthis) native "CSSPrimitiveValue_setStringValue_Callback";
-  setStringValue_Callback_0_(mthis) => setStringValue_Callback_0(mthis);
-
-  static setStringValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_setStringValue_Callback";
-  setStringValue_Callback_1_(mthis, __arg_0) => setStringValue_Callback_1(mthis, __arg_0);
-
-  static setStringValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_setStringValue_Callback";
-  setStringValue_Callback_2_(mthis, __arg_0, __arg_1) => setStringValue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setStringValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSPrimitiveValue_setStringValue_Callback";
-  setStringValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStringValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setStringValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSPrimitiveValue_setStringValue_Callback";
-  setStringValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStringValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setStringValue_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setStringValue", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCSSRule {
   static final instance = new BlinkCSSRule();
 
-  static cssText_Getter(mthis) native "CSSRule_cssText_Getter";
-  cssText_Getter_(mthis) => cssText_Getter(mthis);
+  cssText_Getter_(mthis) => mthis["cssText"];
 
-  static cssText_Setter(mthis, __arg_0) native "CSSRule_cssText_Setter";
-  cssText_Setter_(mthis, __arg_0) => cssText_Setter(mthis, __arg_0);
+  cssText_Setter_(mthis, __arg_0) => mthis["cssText"] = __arg_0;
 
-  static parentRule_Getter(mthis) native "CSSRule_parentRule_Getter";
-  parentRule_Getter_(mthis) => parentRule_Getter(mthis);
+  parentRule_Getter_(mthis) => mthis["parentRule"];
 
-  static parentStyleSheet_Getter(mthis) native "CSSRule_parentStyleSheet_Getter";
-  parentStyleSheet_Getter_(mthis) => parentStyleSheet_Getter(mthis);
+  parentStyleSheet_Getter_(mthis) => mthis["parentStyleSheet"];
 
-  static type_Getter(mthis) native "CSSRule_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkCSSRuleList {
   static final instance = new BlinkCSSRuleList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "CSSRuleList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "CSSRuleList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "CSSRuleList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "CSSRuleList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSRuleList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "CSSRuleList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkCSSStyleDeclaration {
   static final instance = new BlinkCSSStyleDeclaration();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "CSSStyleDeclaration___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__propertyQuery___Callback_1(mthis, __arg_0) native "CSSStyleDeclaration___propertyQuery___Callback";
-  $__propertyQuery___Callback_1_(mthis, __arg_0) => $__propertyQuery___Callback_1(mthis, __arg_0);
+  $__propertyQuery___Callback_1_(mthis, __arg_0) => mthis[__arg_0];
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static cssText_Getter(mthis) native "CSSStyleDeclaration_cssText_Getter";
-  cssText_Getter_(mthis) => cssText_Getter(mthis);
+  cssText_Getter_(mthis) => mthis["cssText"];
 
-  static cssText_Setter(mthis, __arg_0) native "CSSStyleDeclaration_cssText_Setter";
-  cssText_Setter_(mthis, __arg_0) => cssText_Setter(mthis, __arg_0);
+  cssText_Setter_(mthis, __arg_0) => mthis["cssText"] = __arg_0;
 
-  static getPropertyPriority_Callback_0(mthis) native "CSSStyleDeclaration_getPropertyPriority_Callback";
-  getPropertyPriority_Callback_0_(mthis) => getPropertyPriority_Callback_0(mthis);
+  getPropertyPriority_Callback_0_(mthis) => mthis.callMethod("getPropertyPriority", []);
 
-  static getPropertyPriority_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_getPropertyPriority_Callback";
-  getPropertyPriority_Callback_1_(mthis, __arg_0) => getPropertyPriority_Callback_1(mthis, __arg_0);
+  getPropertyPriority_Callback_1_(mthis, __arg_0) => mthis.callMethod("getPropertyPriority", [__arg_0]);
 
-  static getPropertyPriority_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_getPropertyPriority_Callback";
-  getPropertyPriority_Callback_2_(mthis, __arg_0, __arg_1) => getPropertyPriority_Callback_2(mthis, __arg_0, __arg_1);
+  getPropertyValue_Callback_0_(mthis) => mthis.callMethod("getPropertyValue", []);
 
-  static getPropertyPriority_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_getPropertyPriority_Callback";
-  getPropertyPriority_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPropertyPriority_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getPropertyValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("getPropertyValue", [__arg_0]);
 
-  static getPropertyValue_Callback_0(mthis) native "CSSStyleDeclaration_getPropertyValue_Callback";
-  getPropertyValue_Callback_0_(mthis) => getPropertyValue_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static getPropertyValue_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_getPropertyValue_Callback";
-  getPropertyValue_Callback_1_(mthis, __arg_0) => getPropertyValue_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static getPropertyValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_getPropertyValue_Callback";
-  getPropertyValue_Callback_2_(mthis, __arg_0, __arg_1) => getPropertyValue_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static getPropertyValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_getPropertyValue_Callback";
-  getPropertyValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPropertyValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  parentRule_Getter_(mthis) => mthis["parentRule"];
 
-  static item_Callback_0(mthis) native "CSSStyleDeclaration_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  removeProperty_Callback_0_(mthis) => mthis.callMethod("removeProperty", []);
 
-  static item_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  removeProperty_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeProperty", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  setProperty_Callback_0_(mthis) => mthis.callMethod("setProperty", []);
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setProperty_Callback_1_(mthis, __arg_0) => mthis.callMethod("setProperty", [__arg_0]);
 
-  static length_Getter(mthis) native "CSSStyleDeclaration_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  setProperty_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setProperty", [__arg_0, __arg_1]);
 
-  static parentRule_Getter(mthis) native "CSSStyleDeclaration_parentRule_Getter";
-  parentRule_Getter_(mthis) => parentRule_Getter(mthis);
-
-  static removeProperty_Callback_0(mthis) native "CSSStyleDeclaration_removeProperty_Callback";
-  removeProperty_Callback_0_(mthis) => removeProperty_Callback_0(mthis);
-
-  static removeProperty_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_removeProperty_Callback";
-  removeProperty_Callback_1_(mthis, __arg_0) => removeProperty_Callback_1(mthis, __arg_0);
-
-  static removeProperty_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_removeProperty_Callback";
-  removeProperty_Callback_2_(mthis, __arg_0, __arg_1) => removeProperty_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_removeProperty_Callback";
-  removeProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setProperty_Callback_0(mthis) native "CSSStyleDeclaration_setProperty_Callback";
-  setProperty_Callback_0_(mthis) => setProperty_Callback_0(mthis);
-
-  static setProperty_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_setProperty_Callback";
-  setProperty_Callback_1_(mthis, __arg_0) => setProperty_Callback_1(mthis, __arg_0);
-
-  static setProperty_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_setProperty_Callback";
-  setProperty_Callback_2_(mthis, __arg_0, __arg_1) => setProperty_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_setProperty_Callback";
-  setProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setProperty_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSStyleDeclaration_setProperty_Callback";
-  setProperty_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setProperty_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setProperty_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CSSStyleDeclaration_setProperty_Callback";
-  setProperty_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setProperty_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setProperty", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkCSSStyleRule extends BlinkCSSRule {
   static final instance = new BlinkCSSStyleRule();
 
-  static selectorText_Getter(mthis) native "CSSStyleRule_selectorText_Getter";
-  selectorText_Getter_(mthis) => selectorText_Getter(mthis);
+  selectorText_Getter_(mthis) => mthis["selectorText"];
 
-  static selectorText_Setter(mthis, __arg_0) native "CSSStyleRule_selectorText_Setter";
-  selectorText_Setter_(mthis, __arg_0) => selectorText_Setter(mthis, __arg_0);
+  selectorText_Setter_(mthis, __arg_0) => mthis["selectorText"] = __arg_0;
 
-  static style_Getter(mthis) native "CSSStyleRule_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
 }
 
 class BlinkCSSStyleSheet extends BlinkStyleSheet {
   static final instance = new BlinkCSSStyleSheet();
 
-  static addRule_Callback_0(mthis) native "CSSStyleSheet_addRule_Callback";
-  addRule_Callback_0_(mthis) => addRule_Callback_0(mthis);
+  addRule_Callback_0_(mthis) => mthis.callMethod("addRule", []);
 
-  static addRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_addRule_Callback";
-  addRule_Callback_1_(mthis, __arg_0) => addRule_Callback_1(mthis, __arg_0);
+  addRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("addRule", [__arg_0]);
 
-  static addRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_addRule_Callback";
-  addRule_Callback_2_(mthis, __arg_0, __arg_1) => addRule_Callback_2(mthis, __arg_0, __arg_1);
+  addRule_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addRule", [__arg_0, __arg_1]);
 
-  static addRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_addRule_Callback";
-  addRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  addRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("addRule", [__arg_0, __arg_1, __arg_2]);
 
-  static addRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSStyleSheet_addRule_Callback";
-  addRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  cssRules_Getter_(mthis) => mthis["cssRules"];
 
-  static addRule_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CSSStyleSheet_addRule_Callback";
-  addRule_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addRule_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  deleteRule_Callback_0_(mthis) => mthis.callMethod("deleteRule", []);
 
-  static cssRules_Getter(mthis) native "CSSStyleSheet_cssRules_Getter";
-  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
+  deleteRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteRule", [__arg_0]);
 
-  static deleteRule_Callback_0(mthis) native "CSSStyleSheet_deleteRule_Callback";
-  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
+  insertRule_Callback_0_(mthis) => mthis.callMethod("insertRule", []);
 
-  static deleteRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_deleteRule_Callback";
-  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+  insertRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertRule", [__arg_0]);
 
-  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_deleteRule_Callback";
-  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertRule", [__arg_0, __arg_1]);
 
-  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_deleteRule_Callback";
-  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ownerRule_Getter_(mthis) => mthis["ownerRule"];
 
-  static insertRule_Callback_0(mthis) native "CSSStyleSheet_insertRule_Callback";
-  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
+  removeRule_Callback_0_(mthis) => mthis.callMethod("removeRule", []);
 
-  static insertRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_insertRule_Callback";
-  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
+  removeRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeRule", [__arg_0]);
 
-  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_insertRule_Callback";
-  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_insertRule_Callback";
-  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSStyleSheet_insertRule_Callback";
-  insertRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static ownerRule_Getter(mthis) native "CSSStyleSheet_ownerRule_Getter";
-  ownerRule_Getter_(mthis) => ownerRule_Getter(mthis);
-
-  static removeRule_Callback_0(mthis) native "CSSStyleSheet_removeRule_Callback";
-  removeRule_Callback_0_(mthis) => removeRule_Callback_0(mthis);
-
-  static removeRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_removeRule_Callback";
-  removeRule_Callback_1_(mthis, __arg_0) => removeRule_Callback_1(mthis, __arg_0);
-
-  static removeRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_removeRule_Callback";
-  removeRule_Callback_2_(mthis, __arg_0, __arg_1) => removeRule_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_removeRule_Callback";
-  removeRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rules_Getter(mthis) native "CSSStyleSheet_rules_Getter";
-  rules_Getter_(mthis) => rules_Getter(mthis);
+  rules_Getter_(mthis) => mthis["rules"];
 
 }
 
 class BlinkCSSSupportsRule extends BlinkCSSRule {
   static final instance = new BlinkCSSSupportsRule();
 
-  static conditionText_Getter(mthis) native "CSSSupportsRule_conditionText_Getter";
-  conditionText_Getter_(mthis) => conditionText_Getter(mthis);
+  conditionText_Getter_(mthis) => mthis["conditionText"];
 
-  static cssRules_Getter(mthis) native "CSSSupportsRule_cssRules_Getter";
-  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
+  cssRules_Getter_(mthis) => mthis["cssRules"];
 
-  static deleteRule_Callback_0(mthis) native "CSSSupportsRule_deleteRule_Callback";
-  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
+  deleteRule_Callback_0_(mthis) => mthis.callMethod("deleteRule", []);
 
-  static deleteRule_Callback_1(mthis, __arg_0) native "CSSSupportsRule_deleteRule_Callback";
-  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+  deleteRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteRule", [__arg_0]);
 
-  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSSupportsRule_deleteRule_Callback";
-  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+  insertRule_Callback_0_(mthis) => mthis.callMethod("insertRule", []);
 
-  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSSupportsRule_deleteRule_Callback";
-  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  insertRule_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertRule", [__arg_0]);
 
-  static insertRule_Callback_0(mthis) native "CSSSupportsRule_insertRule_Callback";
-  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
-
-  static insertRule_Callback_1(mthis, __arg_0) native "CSSSupportsRule_insertRule_Callback";
-  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
-
-  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSSupportsRule_insertRule_Callback";
-  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSSupportsRule_insertRule_Callback";
-  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSSupportsRule_insertRule_Callback";
-  insertRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertRule", [__arg_0, __arg_1]);
 
 }
 
@@ -2486,1038 +1597,463 @@
 class BlinkCSSValue {
   static final instance = new BlinkCSSValue();
 
-  static cssText_Getter(mthis) native "CSSValue_cssText_Getter";
-  cssText_Getter_(mthis) => cssText_Getter(mthis);
+  cssText_Getter_(mthis) => mthis["cssText"];
 
-  static cssText_Setter(mthis, __arg_0) native "CSSValue_cssText_Setter";
-  cssText_Setter_(mthis, __arg_0) => cssText_Setter(mthis, __arg_0);
+  cssText_Setter_(mthis, __arg_0) => mthis["cssText"] = __arg_0;
 
-  static cssValueType_Getter(mthis) native "CSSValue_cssValueType_Getter";
-  cssValueType_Getter_(mthis) => cssValueType_Getter(mthis);
+  cssValueType_Getter_(mthis) => mthis["cssValueType"];
 
 }
 
 class BlinkCSSValueList extends BlinkCSSValue {
   static final instance = new BlinkCSSValueList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "CSSValueList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "CSSValueList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "CSSValueList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "CSSValueList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSValueList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "CSSValueList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkCSSViewportRule extends BlinkCSSRule {
   static final instance = new BlinkCSSViewportRule();
 
-  static style_Getter(mthis) native "CSSViewportRule_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
 }
 
 class BlinkCache {
   static final instance = new BlinkCache();
 
-  static addAll_Callback_0(mthis) native "Cache_addAll_Callback";
-  addAll_Callback_0_(mthis) => addAll_Callback_0(mthis);
+  addAll_Callback_0_(mthis) => mthis.callMethod("addAll", []);
 
-  static addAll_Callback_1(mthis, __arg_0) native "Cache_addAll_Callback";
-  addAll_Callback_1_(mthis, __arg_0) => addAll_Callback_1(mthis, __arg_0);
+  addAll_Callback_1_(mthis, __arg_0) => mthis.callMethod("addAll", [__arg_0]);
 
-  static addAll_Callback_2(mthis, __arg_0, __arg_1) native "Cache_addAll_Callback";
-  addAll_Callback_2_(mthis, __arg_0, __arg_1) => addAll_Callback_2(mthis, __arg_0, __arg_1);
+  add_Callback_0_(mthis) => mthis.callMethod("add", []);
 
-  static addAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_addAll_Callback";
-  addAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  add_Callback_1_(mthis, __arg_0) => mthis.callMethod("add", [__arg_0]);
 
-  static add_Callback_0(mthis) native "Cache_add_Callback";
-  add_Callback_0_(mthis) => add_Callback_0(mthis);
+  delete_Callback_0_(mthis) => mthis.callMethod("delete", []);
 
-  static add_Callback_1(mthis, __arg_0) native "Cache_add_Callback";
-  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+  delete_Callback_1_(mthis, __arg_0) => mthis.callMethod("delete", [__arg_0]);
 
-  static add_Callback_2(mthis, __arg_0, __arg_1) native "Cache_add_Callback";
-  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("delete", [__arg_0, __arg_1]);
 
-  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_add_Callback";
-  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  keys_Callback_0_(mthis) => mthis.callMethod("keys", []);
 
-  static delete_Callback_0(mthis) native "Cache_delete_Callback";
-  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+  keys_Callback_1_(mthis, __arg_0) => mthis.callMethod("keys", [__arg_0]);
 
-  static delete_Callback_1(mthis, __arg_0) native "Cache_delete_Callback";
-  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+  keys_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("keys", [__arg_0, __arg_1]);
 
-  static delete_Callback_2(mthis, __arg_0, __arg_1) native "Cache_delete_Callback";
-  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+  matchAll_Callback_0_(mthis) => mthis.callMethod("matchAll", []);
 
-  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_delete_Callback";
-  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  matchAll_Callback_1_(mthis, __arg_0) => mthis.callMethod("matchAll", [__arg_0]);
 
-  static delete_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_delete_Callback";
-  delete_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => delete_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  matchAll_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("matchAll", [__arg_0, __arg_1]);
 
-  static keys_Callback_0(mthis) native "Cache_keys_Callback";
-  keys_Callback_0_(mthis) => keys_Callback_0(mthis);
+  match_Callback_0_(mthis) => mthis.callMethod("match", []);
 
-  static keys_Callback_1(mthis, __arg_0) native "Cache_keys_Callback";
-  keys_Callback_1_(mthis, __arg_0) => keys_Callback_1(mthis, __arg_0);
+  match_Callback_1_(mthis, __arg_0) => mthis.callMethod("match", [__arg_0]);
 
-  static keys_Callback_2(mthis, __arg_0, __arg_1) native "Cache_keys_Callback";
-  keys_Callback_2_(mthis, __arg_0, __arg_1) => keys_Callback_2(mthis, __arg_0, __arg_1);
+  match_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("match", [__arg_0, __arg_1]);
 
-  static keys_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_keys_Callback";
-  keys_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => keys_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  put_Callback_0_(mthis) => mthis.callMethod("put", []);
 
-  static keys_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_keys_Callback";
-  keys_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => keys_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  put_Callback_1_(mthis, __arg_0) => mthis.callMethod("put", [__arg_0]);
 
-  static matchAll_Callback_0(mthis) native "Cache_matchAll_Callback";
-  matchAll_Callback_0_(mthis) => matchAll_Callback_0(mthis);
-
-  static matchAll_Callback_1(mthis, __arg_0) native "Cache_matchAll_Callback";
-  matchAll_Callback_1_(mthis, __arg_0) => matchAll_Callback_1(mthis, __arg_0);
-
-  static matchAll_Callback_2(mthis, __arg_0, __arg_1) native "Cache_matchAll_Callback";
-  matchAll_Callback_2_(mthis, __arg_0, __arg_1) => matchAll_Callback_2(mthis, __arg_0, __arg_1);
-
-  static matchAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_matchAll_Callback";
-  matchAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matchAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static matchAll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_matchAll_Callback";
-  matchAll_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => matchAll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static match_Callback_0(mthis) native "Cache_match_Callback";
-  match_Callback_0_(mthis) => match_Callback_0(mthis);
-
-  static match_Callback_1(mthis, __arg_0) native "Cache_match_Callback";
-  match_Callback_1_(mthis, __arg_0) => match_Callback_1(mthis, __arg_0);
-
-  static match_Callback_2(mthis, __arg_0, __arg_1) native "Cache_match_Callback";
-  match_Callback_2_(mthis, __arg_0, __arg_1) => match_Callback_2(mthis, __arg_0, __arg_1);
-
-  static match_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_match_Callback";
-  match_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => match_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static match_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_match_Callback";
-  match_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => match_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static put_Callback_0(mthis) native "Cache_put_Callback";
-  put_Callback_0_(mthis) => put_Callback_0(mthis);
-
-  static put_Callback_1(mthis, __arg_0) native "Cache_put_Callback";
-  put_Callback_1_(mthis, __arg_0) => put_Callback_1(mthis, __arg_0);
-
-  static put_Callback_2(mthis, __arg_0, __arg_1) native "Cache_put_Callback";
-  put_Callback_2_(mthis, __arg_0, __arg_1) => put_Callback_2(mthis, __arg_0, __arg_1);
-
-  static put_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_put_Callback";
-  put_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => put_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_put_Callback";
-  put_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  put_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("put", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCacheStorage {
   static final instance = new BlinkCacheStorage();
 
-  static create_Callback_0(mthis) native "CacheStorage_create_Callback";
-  create_Callback_0_(mthis) => create_Callback_0(mthis);
+  create_Callback_0_(mthis) => mthis.callMethod("create", []);
 
-  static create_Callback_1(mthis, __arg_0) native "CacheStorage_create_Callback";
-  create_Callback_1_(mthis, __arg_0) => create_Callback_1(mthis, __arg_0);
+  create_Callback_1_(mthis, __arg_0) => mthis.callMethod("create", [__arg_0]);
 
-  static create_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_create_Callback";
-  create_Callback_2_(mthis, __arg_0, __arg_1) => create_Callback_2(mthis, __arg_0, __arg_1);
+  delete_Callback_0_(mthis) => mthis.callMethod("delete", []);
 
-  static create_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_create_Callback";
-  create_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => create_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  delete_Callback_1_(mthis, __arg_0) => mthis.callMethod("delete", [__arg_0]);
 
-  static delete_Callback_0(mthis) native "CacheStorage_delete_Callback";
-  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+  get_Callback_0_(mthis) => mthis.callMethod("get", []);
 
-  static delete_Callback_1(mthis, __arg_0) native "CacheStorage_delete_Callback";
-  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+  get_Callback_1_(mthis, __arg_0) => mthis.callMethod("get", [__arg_0]);
 
-  static delete_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_delete_Callback";
-  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+  has_Callback_0_(mthis) => mthis.callMethod("has", []);
 
-  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_delete_Callback";
-  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  has_Callback_1_(mthis, __arg_0) => mthis.callMethod("has", [__arg_0]);
 
-  static get_Callback_0(mthis) native "CacheStorage_get_Callback";
-  get_Callback_0_(mthis) => get_Callback_0(mthis);
-
-  static get_Callback_1(mthis, __arg_0) native "CacheStorage_get_Callback";
-  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
-
-  static get_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_get_Callback";
-  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
-
-  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_get_Callback";
-  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static has_Callback_0(mthis) native "CacheStorage_has_Callback";
-  has_Callback_0_(mthis) => has_Callback_0(mthis);
-
-  static has_Callback_1(mthis, __arg_0) native "CacheStorage_has_Callback";
-  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
-
-  static has_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_has_Callback";
-  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
-
-  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_has_Callback";
-  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static keys_Callback_0(mthis) native "CacheStorage_keys_Callback";
-  keys_Callback_0_(mthis) => keys_Callback_0(mthis);
-
-  static keys_Callback_1(mthis, __arg_0) native "CacheStorage_keys_Callback";
-  keys_Callback_1_(mthis, __arg_0) => keys_Callback_1(mthis, __arg_0);
-
-  static keys_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_keys_Callback";
-  keys_Callback_2_(mthis, __arg_0, __arg_1) => keys_Callback_2(mthis, __arg_0, __arg_1);
+  keys_Callback_0_(mthis) => mthis.callMethod("keys", []);
 
 }
 
 class BlinkCanvas2DContextAttributes {
   static final instance = new BlinkCanvas2DContextAttributes();
 
-  static alpha_Getter(mthis) native "Canvas2DContextAttributes_alpha_Getter";
-  alpha_Getter_(mthis) => alpha_Getter(mthis);
+  alpha_Getter_(mthis) => mthis["alpha"];
 
-  static alpha_Setter(mthis, __arg_0) native "Canvas2DContextAttributes_alpha_Setter";
-  alpha_Setter_(mthis, __arg_0) => alpha_Setter(mthis, __arg_0);
+  alpha_Setter_(mthis, __arg_0) => mthis["alpha"] = __arg_0;
 
-  static storage_Getter(mthis) native "Canvas2DContextAttributes_storage_Getter";
-  storage_Getter_(mthis) => storage_Getter(mthis);
+  storage_Getter_(mthis) => mthis["storage"];
 
-  static storage_Setter(mthis, __arg_0) native "Canvas2DContextAttributes_storage_Setter";
-  storage_Setter_(mthis, __arg_0) => storage_Setter(mthis, __arg_0);
+  storage_Setter_(mthis, __arg_0) => mthis["storage"] = __arg_0;
 
 }
 
 class BlinkCanvasGradient {
   static final instance = new BlinkCanvasGradient();
 
-  static addColorStop_Callback_0(mthis) native "CanvasGradient_addColorStop_Callback";
-  addColorStop_Callback_0_(mthis) => addColorStop_Callback_0(mthis);
+  addColorStop_Callback_0_(mthis) => mthis.callMethod("addColorStop", []);
 
-  static addColorStop_Callback_1(mthis, __arg_0) native "CanvasGradient_addColorStop_Callback";
-  addColorStop_Callback_1_(mthis, __arg_0) => addColorStop_Callback_1(mthis, __arg_0);
+  addColorStop_Callback_1_(mthis, __arg_0) => mthis.callMethod("addColorStop", [__arg_0]);
 
-  static addColorStop_Callback_2(mthis, __arg_0, __arg_1) native "CanvasGradient_addColorStop_Callback";
-  addColorStop_Callback_2_(mthis, __arg_0, __arg_1) => addColorStop_Callback_2(mthis, __arg_0, __arg_1);
-
-  static addColorStop_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasGradient_addColorStop_Callback";
-  addColorStop_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addColorStop_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static addColorStop_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasGradient_addColorStop_Callback";
-  addColorStop_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addColorStop_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  addColorStop_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addColorStop", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCanvasPattern {
   static final instance = new BlinkCanvasPattern();
 
-  static setTransform_Callback_0(mthis) native "CanvasPattern_setTransform_Callback";
-  setTransform_Callback_0_(mthis) => setTransform_Callback_0(mthis);
+  setTransform_Callback_0_(mthis) => mthis.callMethod("setTransform", []);
 
-  static setTransform_Callback_1(mthis, __arg_0) native "CanvasPattern_setTransform_Callback";
-  setTransform_Callback_1_(mthis, __arg_0) => setTransform_Callback_1(mthis, __arg_0);
-
-  static setTransform_Callback_2(mthis, __arg_0, __arg_1) native "CanvasPattern_setTransform_Callback";
-  setTransform_Callback_2_(mthis, __arg_0, __arg_1) => setTransform_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setTransform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasPattern_setTransform_Callback";
-  setTransform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTransform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setTransform_Callback_1_(mthis, __arg_0) => mthis.callMethod("setTransform", [__arg_0]);
 
 }
 
 class BlinkCanvasRenderingContext2D {
   static final instance = new BlinkCanvasRenderingContext2D();
 
-  static addHitRegion_Callback_0(mthis) native "CanvasRenderingContext2D_addHitRegion_Callback";
-  addHitRegion_Callback_0_(mthis) => addHitRegion_Callback_0(mthis);
+  addHitRegion_Callback_0_(mthis) => mthis.callMethod("addHitRegion", []);
 
-  static addHitRegion_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_addHitRegion_Callback";
-  addHitRegion_Callback_1_(mthis, __arg_0) => addHitRegion_Callback_1(mthis, __arg_0);
+  addHitRegion_Callback_1_(mthis, __arg_0) => mthis.callMethod("addHitRegion", [__arg_0]);
 
-  static addHitRegion_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_addHitRegion_Callback";
-  addHitRegion_Callback_2_(mthis, __arg_0, __arg_1) => addHitRegion_Callback_2(mthis, __arg_0, __arg_1);
+  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("arcTo", [__arg_0, __arg_1, __arg_2]);
 
-  static addHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_addHitRegion_Callback";
-  addHitRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_arcTo_Callback";
-  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_arcTo_Callback";
-  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  arc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2]);
 
-  static arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_arcTo_Callback";
-  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_arcTo_Callback";
-  arcTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_arcTo_Callback";
-  arcTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_arc_Callback";
-  arc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  beginPath_Callback_0_(mthis) => mthis.callMethod("beginPath", []);
 
-  static arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_arc_Callback";
-  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_arc_Callback";
-  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_arc_Callback";
-  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_arc_Callback";
-  arc_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  canvas_Getter_(mthis) => mthis["canvas"];
 
-  static arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_arc_Callback";
-  arc_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  clearHitRegions_Callback_0_(mthis) => mthis.callMethod("clearHitRegions", []);
 
-  static beginPath_Callback_0(mthis) native "CanvasRenderingContext2D_beginPath_Callback";
-  beginPath_Callback_0_(mthis) => beginPath_Callback_0(mthis);
+  clearRect_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("clearRect", [__arg_0, __arg_1]);
 
-  static beginPath_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_beginPath_Callback";
-  beginPath_Callback_1_(mthis, __arg_0) => beginPath_Callback_1(mthis, __arg_0);
+  clearRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("clearRect", [__arg_0, __arg_1, __arg_2]);
 
-  static beginPath_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_beginPath_Callback";
-  beginPath_Callback_2_(mthis, __arg_0, __arg_1) => beginPath_Callback_2(mthis, __arg_0, __arg_1);
+  clearRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("clearRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  clip_Callback_0_(mthis) => mthis.callMethod("clip", []);
 
-  static bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  clip_Callback_1_(mthis, __arg_0) => mthis.callMethod("clip", [__arg_0]);
 
-  static bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  clip_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("clip", [__arg_0, __arg_1]);
 
-  static bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  closePath_Callback_0_(mthis) => mthis.callMethod("closePath", []);
 
-  static bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  createImageData_Callback_0_(mthis) => mthis.callMethod("createImageData", []);
 
-  static canvas_Getter(mthis) native "CanvasRenderingContext2D_canvas_Getter";
-  canvas_Getter_(mthis) => canvas_Getter(mthis);
+  createImageData_Callback_1_(mthis, __arg_0) => mthis.callMethod("createImageData", [__arg_0]);
 
-  static clearHitRegions_Callback_0(mthis) native "CanvasRenderingContext2D_clearHitRegions_Callback";
-  clearHitRegions_Callback_0_(mthis) => clearHitRegions_Callback_0(mthis);
+  createImageData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createImageData", [__arg_0, __arg_1]);
 
-  static clearHitRegions_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_clearHitRegions_Callback";
-  clearHitRegions_Callback_1_(mthis, __arg_0) => clearHitRegions_Callback_1(mthis, __arg_0);
+  createLinearGradient_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createLinearGradient", [__arg_0, __arg_1]);
 
-  static clearHitRegions_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_clearHitRegions_Callback";
-  clearHitRegions_Callback_2_(mthis, __arg_0, __arg_1) => clearHitRegions_Callback_2(mthis, __arg_0, __arg_1);
+  createLinearGradient_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createLinearGradient", [__arg_0, __arg_1, __arg_2]);
 
-  static clearRect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_clearRect_Callback";
-  clearRect_Callback_2_(mthis, __arg_0, __arg_1) => clearRect_Callback_2(mthis, __arg_0, __arg_1);
+  createLinearGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createLinearGradient", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static clearRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_clearRect_Callback";
-  clearRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createPattern_Callback_0_(mthis) => mthis.callMethod("createPattern", []);
 
-  static clearRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_clearRect_Callback";
-  clearRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => clearRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createPattern_Callback_1_(mthis, __arg_0) => mthis.callMethod("createPattern", [__arg_0]);
 
-  static clearRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_clearRect_Callback";
-  clearRect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => clearRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createPattern_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createPattern", [__arg_0, __arg_1]);
 
-  static clearRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_clearRect_Callback";
-  clearRect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => clearRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createRadialGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static clip_Callback_0(mthis) native "CanvasRenderingContext2D_clip_Callback";
-  clip_Callback_0_(mthis) => clip_Callback_0(mthis);
+  createRadialGradient_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static clip_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_clip_Callback";
-  clip_Callback_1_(mthis, __arg_0) => clip_Callback_1(mthis, __arg_0);
+  createRadialGradient_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("createRadialGradient", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static clip_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_clip_Callback";
-  clip_Callback_2_(mthis, __arg_0, __arg_1) => clip_Callback_2(mthis, __arg_0, __arg_1);
+  currentTransform_Getter_(mthis) => mthis["currentTransform"];
 
-  static clip_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_clip_Callback";
-  clip_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clip_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  currentTransform_Setter_(mthis, __arg_0) => mthis["currentTransform"] = __arg_0;
 
-  static clip_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_clip_Callback";
-  clip_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => clip_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  direction_Getter_(mthis) => mthis["direction"];
 
-  static closePath_Callback_0(mthis) native "CanvasRenderingContext2D_closePath_Callback";
-  closePath_Callback_0_(mthis) => closePath_Callback_0(mthis);
+  direction_Setter_(mthis, __arg_0) => mthis["direction"] = __arg_0;
 
-  static closePath_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_closePath_Callback";
-  closePath_Callback_1_(mthis, __arg_0) => closePath_Callback_1(mthis, __arg_0);
+  drawFocusIfNeeded_Callback_0_(mthis) => mthis.callMethod("drawFocusIfNeeded", []);
 
-  static closePath_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_closePath_Callback";
-  closePath_Callback_2_(mthis, __arg_0, __arg_1) => closePath_Callback_2(mthis, __arg_0, __arg_1);
+  drawFocusIfNeeded_Callback_1_(mthis, __arg_0) => mthis.callMethod("drawFocusIfNeeded", [__arg_0]);
 
-  static createImageData_Callback_0(mthis) native "CanvasRenderingContext2D_createImageData_Callback";
-  createImageData_Callback_0_(mthis) => createImageData_Callback_0(mthis);
+  drawFocusIfNeeded_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("drawFocusIfNeeded", [__arg_0, __arg_1]);
 
-  static createImageData_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_createImageData_Callback";
-  createImageData_Callback_1_(mthis, __arg_0) => createImageData_Callback_1(mthis, __arg_0);
+  drawImage_Callback_1_(mthis, __arg_0) => mthis.callMethod("drawImage", [__arg_0]);
 
-  static createImageData_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_createImageData_Callback";
-  createImageData_Callback_2_(mthis, __arg_0, __arg_1) => createImageData_Callback_2(mthis, __arg_0, __arg_1);
+  drawImage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("drawImage", [__arg_0, __arg_1]);
 
-  static createImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_createImageData_Callback";
-  createImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  drawImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("drawImage", [__arg_0, __arg_1, __arg_2]);
 
-  static createImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createImageData_Callback";
-  createImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  drawImage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("drawImage", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createLinearGradient_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_createLinearGradient_Callback";
-  createLinearGradient_Callback_2_(mthis, __arg_0, __arg_1) => createLinearGradient_Callback_2(mthis, __arg_0, __arg_1);
+  drawImage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createLinearGradient_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_createLinearGradient_Callback";
-  createLinearGradient_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createLinearGradient_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  drawImage_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static createLinearGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createLinearGradient_Callback";
-  createLinearGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createLinearGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  drawImage_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static createLinearGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_createLinearGradient_Callback";
-  createLinearGradient_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createLinearGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  drawImage_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => mthis.callMethod("drawImage", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  static createLinearGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_createLinearGradient_Callback";
-  createLinearGradient_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createLinearGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  ellipse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createPattern_Callback_0(mthis) native "CanvasRenderingContext2D_createPattern_Callback";
-  createPattern_Callback_0_(mthis) => createPattern_Callback_0(mthis);
+  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static createPattern_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_createPattern_Callback";
-  createPattern_Callback_1_(mthis, __arg_0) => createPattern_Callback_1(mthis, __arg_0);
+  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static createPattern_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_createPattern_Callback";
-  createPattern_Callback_2_(mthis, __arg_0, __arg_1) => createPattern_Callback_2(mthis, __arg_0, __arg_1);
+  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static createPattern_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_createPattern_Callback";
-  createPattern_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createPattern_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  fillRect_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("fillRect", [__arg_0, __arg_1]);
 
-  static createPattern_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createPattern_Callback";
-  createPattern_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createPattern_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  fillRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("fillRect", [__arg_0, __arg_1, __arg_2]);
 
-  static createRadialGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createRadialGradient_Callback";
-  createRadialGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createRadialGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  fillRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("fillRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createRadialGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_createRadialGradient_Callback";
-  createRadialGradient_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createRadialGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  fillStyle_Getter_(mthis) => mthis["fillStyle"];
 
-  static createRadialGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_createRadialGradient_Callback";
-  createRadialGradient_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createRadialGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  fillStyle_Setter_(mthis, __arg_0) => mthis["fillStyle"] = __arg_0;
 
-  static createRadialGradient_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_createRadialGradient_Callback";
-  createRadialGradient_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createRadialGradient_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  fillText_Callback_1_(mthis, __arg_0) => mthis.callMethod("fillText", [__arg_0]);
 
-  static createRadialGradient_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_createRadialGradient_Callback";
-  createRadialGradient_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createRadialGradient_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  fillText_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("fillText", [__arg_0, __arg_1]);
 
-  static currentTransform_Getter(mthis) native "CanvasRenderingContext2D_currentTransform_Getter";
-  currentTransform_Getter_(mthis) => currentTransform_Getter(mthis);
+  fillText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("fillText", [__arg_0, __arg_1, __arg_2]);
 
-  static currentTransform_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_currentTransform_Setter";
-  currentTransform_Setter_(mthis, __arg_0) => currentTransform_Setter(mthis, __arg_0);
+  fillText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("fillText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static direction_Getter(mthis) native "CanvasRenderingContext2D_direction_Getter";
-  direction_Getter_(mthis) => direction_Getter(mthis);
+  fill_Callback_0_(mthis) => mthis.callMethod("fill", []);
 
-  static direction_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_direction_Setter";
-  direction_Setter_(mthis, __arg_0) => direction_Setter(mthis, __arg_0);
+  fill_Callback_1_(mthis, __arg_0) => mthis.callMethod("fill", [__arg_0]);
 
-  static drawFocusIfNeeded_Callback_0(mthis) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
-  drawFocusIfNeeded_Callback_0_(mthis) => drawFocusIfNeeded_Callback_0(mthis);
+  fill_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("fill", [__arg_0, __arg_1]);
 
-  static drawFocusIfNeeded_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
-  drawFocusIfNeeded_Callback_1_(mthis, __arg_0) => drawFocusIfNeeded_Callback_1(mthis, __arg_0);
+  font_Getter_(mthis) => mthis["font"];
 
-  static drawFocusIfNeeded_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
-  drawFocusIfNeeded_Callback_2_(mthis, __arg_0, __arg_1) => drawFocusIfNeeded_Callback_2(mthis, __arg_0, __arg_1);
+  font_Setter_(mthis, __arg_0) => mthis["font"] = __arg_0;
 
-  static drawFocusIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
-  drawFocusIfNeeded_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawFocusIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getContextAttributes_Callback_0_(mthis) => mthis.callMethod("getContextAttributes", []);
 
-  static drawFocusIfNeeded_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
-  drawFocusIfNeeded_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawFocusIfNeeded_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getImageData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getImageData", [__arg_0, __arg_1]);
 
-  static drawImage_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_1_(mthis, __arg_0) => drawImage_Callback_1(mthis, __arg_0);
+  getImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("getImageData", [__arg_0, __arg_1, __arg_2]);
 
-  static drawImage_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => drawImage_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  getImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("getImageData", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static drawImage_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => drawImage_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+  getLineDash_Callback_0_(mthis) => mthis.callMethod("getLineDash", []);
 
-  static drawImage_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_2_(mthis, __arg_0, __arg_1) => drawImage_Callback_2(mthis, __arg_0, __arg_1);
+  globalAlpha_Getter_(mthis) => mthis["globalAlpha"];
 
-  static drawImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  globalAlpha_Setter_(mthis, __arg_0) => mthis["globalAlpha"] = __arg_0;
 
-  static drawImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  globalCompositeOperation_Getter_(mthis) => mthis["globalCompositeOperation"];
 
-  static drawImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  globalCompositeOperation_Setter_(mthis, __arg_0) => mthis["globalCompositeOperation"] = __arg_0;
 
-  static drawImage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawImage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  imageSmoothingEnabled_Getter_(mthis) => mthis["imageSmoothingEnabled"];
 
-  static drawImage_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => drawImage_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  imageSmoothingEnabled_Setter_(mthis, __arg_0) => mthis["imageSmoothingEnabled"] = __arg_0;
 
-  static drawImage_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => drawImage_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  isContextLost_Callback_0_(mthis) => mthis.callMethod("isContextLost", []);
 
-  static drawImage_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "CanvasRenderingContext2D_drawImage_Callback";
-  drawImage_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => drawImage_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  isPointInPath_Callback_0_(mthis) => mthis.callMethod("isPointInPath", []);
 
-  static ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "CanvasRenderingContext2D_ellipse_Callback";
-  ellipse_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  isPointInPath_Callback_1_(mthis, __arg_0) => mthis.callMethod("isPointInPath", [__arg_0]);
 
-  static ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_ellipse_Callback";
-  ellipse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  isPointInPath_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("isPointInPath", [__arg_0, __arg_1]);
 
-  static ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_ellipse_Callback";
-  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  isPointInPath_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("isPointInPath", [__arg_0, __arg_1, __arg_2]);
 
-  static ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_ellipse_Callback";
-  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  isPointInPath_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("isPointInPath", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_ellipse_Callback";
-  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  isPointInStroke_Callback_0_(mthis) => mthis.callMethod("isPointInStroke", []);
 
-  static ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "CanvasRenderingContext2D_ellipse_Callback";
-  ellipse_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  isPointInStroke_Callback_1_(mthis, __arg_0) => mthis.callMethod("isPointInStroke", [__arg_0]);
 
-  static fillRect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_fillRect_Callback";
-  fillRect_Callback_2_(mthis, __arg_0, __arg_1) => fillRect_Callback_2(mthis, __arg_0, __arg_1);
+  isPointInStroke_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("isPointInStroke", [__arg_0, __arg_1]);
 
-  static fillRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_fillRect_Callback";
-  fillRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fillRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isPointInStroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("isPointInStroke", [__arg_0, __arg_1, __arg_2]);
 
-  static fillRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_fillRect_Callback";
-  fillRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fillRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  lineCap_Getter_(mthis) => mthis["lineCap"];
 
-  static fillRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_fillRect_Callback";
-  fillRect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => fillRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  lineCap_Setter_(mthis, __arg_0) => mthis["lineCap"] = __arg_0;
 
-  static fillRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_fillRect_Callback";
-  fillRect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => fillRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  lineDashOffset_Getter_(mthis) => mthis["lineDashOffset"];
 
-  static fillStyle_Getter(mthis) native "CanvasRenderingContext2D_fillStyle_Getter";
-  fillStyle_Getter_(mthis) => fillStyle_Getter(mthis);
+  lineDashOffset_Setter_(mthis, __arg_0) => mthis["lineDashOffset"] = __arg_0;
 
-  static fillStyle_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_fillStyle_Setter";
-  fillStyle_Setter_(mthis, __arg_0) => fillStyle_Setter(mthis, __arg_0);
+  lineJoin_Getter_(mthis) => mthis["lineJoin"];
 
-  static fillText_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_fillText_Callback";
-  fillText_Callback_1_(mthis, __arg_0) => fillText_Callback_1(mthis, __arg_0);
+  lineJoin_Setter_(mthis, __arg_0) => mthis["lineJoin"] = __arg_0;
 
-  static fillText_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_fillText_Callback";
-  fillText_Callback_2_(mthis, __arg_0, __arg_1) => fillText_Callback_2(mthis, __arg_0, __arg_1);
+  lineTo_Callback_0_(mthis) => mthis.callMethod("lineTo", []);
 
-  static fillText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_fillText_Callback";
-  fillText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fillText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  lineTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("lineTo", [__arg_0]);
 
-  static fillText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_fillText_Callback";
-  fillText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fillText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("lineTo", [__arg_0, __arg_1]);
 
-  static fillText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_fillText_Callback";
-  fillText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => fillText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  lineWidth_Getter_(mthis) => mthis["lineWidth"];
 
-  static fillText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_fillText_Callback";
-  fillText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => fillText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  lineWidth_Setter_(mthis, __arg_0) => mthis["lineWidth"] = __arg_0;
 
-  static fill_Callback_0(mthis) native "CanvasRenderingContext2D_fill_Callback";
-  fill_Callback_0_(mthis) => fill_Callback_0(mthis);
+  measureText_Callback_0_(mthis) => mthis.callMethod("measureText", []);
 
-  static fill_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_fill_Callback";
-  fill_Callback_1_(mthis, __arg_0) => fill_Callback_1(mthis, __arg_0);
+  measureText_Callback_1_(mthis, __arg_0) => mthis.callMethod("measureText", [__arg_0]);
 
-  static fill_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_fill_Callback";
-  fill_Callback_2_(mthis, __arg_0, __arg_1) => fill_Callback_2(mthis, __arg_0, __arg_1);
+  miterLimit_Getter_(mthis) => mthis["miterLimit"];
 
-  static fill_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_fill_Callback";
-  fill_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fill_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  miterLimit_Setter_(mthis, __arg_0) => mthis["miterLimit"] = __arg_0;
 
-  static fill_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_fill_Callback";
-  fill_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fill_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  moveTo_Callback_0_(mthis) => mthis.callMethod("moveTo", []);
 
-  static font_Getter(mthis) native "CanvasRenderingContext2D_font_Getter";
-  font_Getter_(mthis) => font_Getter(mthis);
+  moveTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("moveTo", [__arg_0]);
 
-  static font_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_font_Setter";
-  font_Setter_(mthis, __arg_0) => font_Setter(mthis, __arg_0);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("moveTo", [__arg_0, __arg_1]);
 
-  static getContextAttributes_Callback_0(mthis) native "CanvasRenderingContext2D_getContextAttributes_Callback";
-  getContextAttributes_Callback_0_(mthis) => getContextAttributes_Callback_0(mthis);
+  putImageData_Callback_1_(mthis, __arg_0) => mthis.callMethod("putImageData", [__arg_0]);
 
-  static getContextAttributes_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_getContextAttributes_Callback";
-  getContextAttributes_Callback_1_(mthis, __arg_0) => getContextAttributes_Callback_1(mthis, __arg_0);
+  putImageData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("putImageData", [__arg_0, __arg_1]);
 
-  static getContextAttributes_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_getContextAttributes_Callback";
-  getContextAttributes_Callback_2_(mthis, __arg_0, __arg_1) => getContextAttributes_Callback_2(mthis, __arg_0, __arg_1);
+  putImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("putImageData", [__arg_0, __arg_1, __arg_2]);
 
-  static getImageData_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_getImageData_Callback";
-  getImageData_Callback_2_(mthis, __arg_0, __arg_1) => getImageData_Callback_2(mthis, __arg_0, __arg_1);
+  putImageData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("putImageData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static getImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_getImageData_Callback";
-  getImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  putImageData_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("putImageData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static getImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_getImageData_Callback";
-  getImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  putImageData_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("putImageData", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static getImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_getImageData_Callback";
-  getImageData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("quadraticCurveTo", [__arg_0, __arg_1]);
 
-  static getImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_getImageData_Callback";
-  getImageData_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
 
-  static getLineDash_Callback_0(mthis) native "CanvasRenderingContext2D_getLineDash_Callback";
-  getLineDash_Callback_0_(mthis) => getLineDash_Callback_0(mthis);
+  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getLineDash_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_getLineDash_Callback";
-  getLineDash_Callback_1_(mthis, __arg_0) => getLineDash_Callback_1(mthis, __arg_0);
+  rect_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("rect", [__arg_0, __arg_1]);
 
-  static getLineDash_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_getLineDash_Callback";
-  getLineDash_Callback_2_(mthis, __arg_0, __arg_1) => getLineDash_Callback_2(mthis, __arg_0, __arg_1);
+  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("rect", [__arg_0, __arg_1, __arg_2]);
 
-  static globalAlpha_Getter(mthis) native "CanvasRenderingContext2D_globalAlpha_Getter";
-  globalAlpha_Getter_(mthis) => globalAlpha_Getter(mthis);
+  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static globalAlpha_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_globalAlpha_Setter";
-  globalAlpha_Setter_(mthis, __arg_0) => globalAlpha_Setter(mthis, __arg_0);
+  removeHitRegion_Callback_0_(mthis) => mthis.callMethod("removeHitRegion", []);
 
-  static globalCompositeOperation_Getter(mthis) native "CanvasRenderingContext2D_globalCompositeOperation_Getter";
-  globalCompositeOperation_Getter_(mthis) => globalCompositeOperation_Getter(mthis);
+  removeHitRegion_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeHitRegion", [__arg_0]);
 
-  static globalCompositeOperation_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_globalCompositeOperation_Setter";
-  globalCompositeOperation_Setter_(mthis, __arg_0) => globalCompositeOperation_Setter(mthis, __arg_0);
+  resetTransform_Callback_0_(mthis) => mthis.callMethod("resetTransform", []);
 
-  static imageSmoothingEnabled_Getter(mthis) native "CanvasRenderingContext2D_imageSmoothingEnabled_Getter";
-  imageSmoothingEnabled_Getter_(mthis) => imageSmoothingEnabled_Getter(mthis);
+  restore_Callback_0_(mthis) => mthis.callMethod("restore", []);
 
-  static imageSmoothingEnabled_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_imageSmoothingEnabled_Setter";
-  imageSmoothingEnabled_Setter_(mthis, __arg_0) => imageSmoothingEnabled_Setter(mthis, __arg_0);
+  rotate_Callback_0_(mthis) => mthis.callMethod("rotate", []);
 
-  static isContextLost_Callback_0(mthis) native "CanvasRenderingContext2D_isContextLost_Callback";
-  isContextLost_Callback_0_(mthis) => isContextLost_Callback_0(mthis);
+  rotate_Callback_1_(mthis, __arg_0) => mthis.callMethod("rotate", [__arg_0]);
 
-  static isContextLost_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_isContextLost_Callback";
-  isContextLost_Callback_1_(mthis, __arg_0) => isContextLost_Callback_1(mthis, __arg_0);
+  save_Callback_0_(mthis) => mthis.callMethod("save", []);
 
-  static isContextLost_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_isContextLost_Callback";
-  isContextLost_Callback_2_(mthis, __arg_0, __arg_1) => isContextLost_Callback_2(mthis, __arg_0, __arg_1);
+  scale_Callback_0_(mthis) => mthis.callMethod("scale", []);
 
-  static isPointInPath_Callback_0(mthis) native "CanvasRenderingContext2D_isPointInPath_Callback";
-  isPointInPath_Callback_0_(mthis) => isPointInPath_Callback_0(mthis);
+  scale_Callback_1_(mthis, __arg_0) => mthis.callMethod("scale", [__arg_0]);
 
-  static isPointInPath_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_isPointInPath_Callback";
-  isPointInPath_Callback_1_(mthis, __arg_0) => isPointInPath_Callback_1(mthis, __arg_0);
-
-  static isPointInPath_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_isPointInPath_Callback";
-  isPointInPath_Callback_2_(mthis, __arg_0, __arg_1) => isPointInPath_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isPointInPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_isPointInPath_Callback";
-  isPointInPath_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isPointInPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_isPointInPath_Callback";
-  isPointInPath_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isPointInPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static isPointInPath_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_isPointInPath_Callback";
-  isPointInPath_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => isPointInPath_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static isPointInPath_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_isPointInPath_Callback";
-  isPointInPath_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => isPointInPath_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static isPointInStroke_Callback_0(mthis) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-  isPointInStroke_Callback_0_(mthis) => isPointInStroke_Callback_0(mthis);
-
-  static isPointInStroke_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-  isPointInStroke_Callback_1_(mthis, __arg_0) => isPointInStroke_Callback_1(mthis, __arg_0);
-
-  static isPointInStroke_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-  isPointInStroke_Callback_2_(mthis, __arg_0, __arg_1) => isPointInStroke_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-  isPointInStroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isPointInStroke_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-  isPointInStroke_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isPointInStroke_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static isPointInStroke_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-  isPointInStroke_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => isPointInStroke_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static lineCap_Getter(mthis) native "CanvasRenderingContext2D_lineCap_Getter";
-  lineCap_Getter_(mthis) => lineCap_Getter(mthis);
-
-  static lineCap_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineCap_Setter";
-  lineCap_Setter_(mthis, __arg_0) => lineCap_Setter(mthis, __arg_0);
-
-  static lineDashOffset_Getter(mthis) native "CanvasRenderingContext2D_lineDashOffset_Getter";
-  lineDashOffset_Getter_(mthis) => lineDashOffset_Getter(mthis);
-
-  static lineDashOffset_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineDashOffset_Setter";
-  lineDashOffset_Setter_(mthis, __arg_0) => lineDashOffset_Setter(mthis, __arg_0);
-
-  static lineJoin_Getter(mthis) native "CanvasRenderingContext2D_lineJoin_Getter";
-  lineJoin_Getter_(mthis) => lineJoin_Getter(mthis);
-
-  static lineJoin_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineJoin_Setter";
-  lineJoin_Setter_(mthis, __arg_0) => lineJoin_Setter(mthis, __arg_0);
-
-  static lineTo_Callback_0(mthis) native "CanvasRenderingContext2D_lineTo_Callback";
-  lineTo_Callback_0_(mthis) => lineTo_Callback_0(mthis);
-
-  static lineTo_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_lineTo_Callback";
-  lineTo_Callback_1_(mthis, __arg_0) => lineTo_Callback_1(mthis, __arg_0);
-
-  static lineTo_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_lineTo_Callback";
-  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => lineTo_Callback_2(mthis, __arg_0, __arg_1);
-
-  static lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_lineTo_Callback";
-  lineTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_lineTo_Callback";
-  lineTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static lineWidth_Getter(mthis) native "CanvasRenderingContext2D_lineWidth_Getter";
-  lineWidth_Getter_(mthis) => lineWidth_Getter(mthis);
-
-  static lineWidth_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineWidth_Setter";
-  lineWidth_Setter_(mthis, __arg_0) => lineWidth_Setter(mthis, __arg_0);
-
-  static measureText_Callback_0(mthis) native "CanvasRenderingContext2D_measureText_Callback";
-  measureText_Callback_0_(mthis) => measureText_Callback_0(mthis);
-
-  static measureText_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_measureText_Callback";
-  measureText_Callback_1_(mthis, __arg_0) => measureText_Callback_1(mthis, __arg_0);
-
-  static measureText_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_measureText_Callback";
-  measureText_Callback_2_(mthis, __arg_0, __arg_1) => measureText_Callback_2(mthis, __arg_0, __arg_1);
-
-  static measureText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_measureText_Callback";
-  measureText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => measureText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static miterLimit_Getter(mthis) native "CanvasRenderingContext2D_miterLimit_Getter";
-  miterLimit_Getter_(mthis) => miterLimit_Getter(mthis);
-
-  static miterLimit_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_miterLimit_Setter";
-  miterLimit_Setter_(mthis, __arg_0) => miterLimit_Setter(mthis, __arg_0);
-
-  static moveTo_Callback_0(mthis) native "CanvasRenderingContext2D_moveTo_Callback";
-  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
-
-  static moveTo_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_moveTo_Callback";
-  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
-
-  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_moveTo_Callback";
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
-
-  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_moveTo_Callback";
-  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_moveTo_Callback";
-  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static putImageData_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_1_(mthis, __arg_0) => putImageData_Callback_1(mthis, __arg_0);
-
-  static putImageData_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_2_(mthis, __arg_0, __arg_1) => putImageData_Callback_2(mthis, __arg_0, __arg_1);
-
-  static putImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => putImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static putImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => putImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static putImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => putImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static putImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => putImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static putImageData_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => putImageData_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static putImageData_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => putImageData_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static putImageData_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "CanvasRenderingContext2D_putImageData_Callback";
-  putImageData_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => putImageData_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
-
-  static quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1);
-
-  static quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static rect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_rect_Callback";
-  rect_Callback_2_(mthis, __arg_0, __arg_1) => rect_Callback_2(mthis, __arg_0, __arg_1);
-
-  static rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_rect_Callback";
-  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_rect_Callback";
-  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_rect_Callback";
-  rect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_rect_Callback";
-  rect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static removeHitRegion_Callback_0(mthis) native "CanvasRenderingContext2D_removeHitRegion_Callback";
-  removeHitRegion_Callback_0_(mthis) => removeHitRegion_Callback_0(mthis);
-
-  static removeHitRegion_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_removeHitRegion_Callback";
-  removeHitRegion_Callback_1_(mthis, __arg_0) => removeHitRegion_Callback_1(mthis, __arg_0);
-
-  static removeHitRegion_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_removeHitRegion_Callback";
-  removeHitRegion_Callback_2_(mthis, __arg_0, __arg_1) => removeHitRegion_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_removeHitRegion_Callback";
-  removeHitRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static resetTransform_Callback_0(mthis) native "CanvasRenderingContext2D_resetTransform_Callback";
-  resetTransform_Callback_0_(mthis) => resetTransform_Callback_0(mthis);
-
-  static resetTransform_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_resetTransform_Callback";
-  resetTransform_Callback_1_(mthis, __arg_0) => resetTransform_Callback_1(mthis, __arg_0);
-
-  static resetTransform_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_resetTransform_Callback";
-  resetTransform_Callback_2_(mthis, __arg_0, __arg_1) => resetTransform_Callback_2(mthis, __arg_0, __arg_1);
-
-  static restore_Callback_0(mthis) native "CanvasRenderingContext2D_restore_Callback";
-  restore_Callback_0_(mthis) => restore_Callback_0(mthis);
-
-  static restore_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_restore_Callback";
-  restore_Callback_1_(mthis, __arg_0) => restore_Callback_1(mthis, __arg_0);
-
-  static restore_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_restore_Callback";
-  restore_Callback_2_(mthis, __arg_0, __arg_1) => restore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static rotate_Callback_0(mthis) native "CanvasRenderingContext2D_rotate_Callback";
-  rotate_Callback_0_(mthis) => rotate_Callback_0(mthis);
-
-  static rotate_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_rotate_Callback";
-  rotate_Callback_1_(mthis, __arg_0) => rotate_Callback_1(mthis, __arg_0);
-
-  static rotate_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_rotate_Callback";
-  rotate_Callback_2_(mthis, __arg_0, __arg_1) => rotate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_rotate_Callback";
-  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static save_Callback_0(mthis) native "CanvasRenderingContext2D_save_Callback";
-  save_Callback_0_(mthis) => save_Callback_0(mthis);
-
-  static save_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_save_Callback";
-  save_Callback_1_(mthis, __arg_0) => save_Callback_1(mthis, __arg_0);
-
-  static save_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_save_Callback";
-  save_Callback_2_(mthis, __arg_0, __arg_1) => save_Callback_2(mthis, __arg_0, __arg_1);
-
-  static scale_Callback_0(mthis) native "CanvasRenderingContext2D_scale_Callback";
-  scale_Callback_0_(mthis) => scale_Callback_0(mthis);
-
-  static scale_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_scale_Callback";
-  scale_Callback_1_(mthis, __arg_0) => scale_Callback_1(mthis, __arg_0);
-
-  static scale_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_scale_Callback";
-  scale_Callback_2_(mthis, __arg_0, __arg_1) => scale_Callback_2(mthis, __arg_0, __arg_1);
-
-  static scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_scale_Callback";
-  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_scale_Callback";
-  scale_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static scrollPathIntoView_Callback_0(mthis) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
-  scrollPathIntoView_Callback_0_(mthis) => scrollPathIntoView_Callback_0(mthis);
-
-  static scrollPathIntoView_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
-  scrollPathIntoView_Callback_1_(mthis, __arg_0) => scrollPathIntoView_Callback_1(mthis, __arg_0);
-
-  static scrollPathIntoView_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
-  scrollPathIntoView_Callback_2_(mthis, __arg_0, __arg_1) => scrollPathIntoView_Callback_2(mthis, __arg_0, __arg_1);
-
-  static scrollPathIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
-  scrollPathIntoView_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollPathIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setLineDash_Callback_0(mthis) native "CanvasRenderingContext2D_setLineDash_Callback";
-  setLineDash_Callback_0_(mthis) => setLineDash_Callback_0(mthis);
-
-  static setLineDash_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_setLineDash_Callback";
-  setLineDash_Callback_1_(mthis, __arg_0) => setLineDash_Callback_1(mthis, __arg_0);
-
-  static setLineDash_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_setLineDash_Callback";
-  setLineDash_Callback_2_(mthis, __arg_0, __arg_1) => setLineDash_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setLineDash_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_setLineDash_Callback";
-  setLineDash_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setLineDash_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setTransform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_setTransform_Callback";
-  setTransform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTransform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setTransform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_setTransform_Callback";
-  setTransform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setTransform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static setTransform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_setTransform_Callback";
-  setTransform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setTransform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static setTransform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_setTransform_Callback";
-  setTransform_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => setTransform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static setTransform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_setTransform_Callback";
-  setTransform_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => setTransform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static shadowBlur_Getter(mthis) native "CanvasRenderingContext2D_shadowBlur_Getter";
-  shadowBlur_Getter_(mthis) => shadowBlur_Getter(mthis);
-
-  static shadowBlur_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowBlur_Setter";
-  shadowBlur_Setter_(mthis, __arg_0) => shadowBlur_Setter(mthis, __arg_0);
-
-  static shadowColor_Getter(mthis) native "CanvasRenderingContext2D_shadowColor_Getter";
-  shadowColor_Getter_(mthis) => shadowColor_Getter(mthis);
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scale", [__arg_0, __arg_1]);
 
-  static shadowColor_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowColor_Setter";
-  shadowColor_Setter_(mthis, __arg_0) => shadowColor_Setter(mthis, __arg_0);
+  scrollPathIntoView_Callback_0_(mthis) => mthis.callMethod("scrollPathIntoView", []);
 
-  static shadowOffsetX_Getter(mthis) native "CanvasRenderingContext2D_shadowOffsetX_Getter";
-  shadowOffsetX_Getter_(mthis) => shadowOffsetX_Getter(mthis);
+  scrollPathIntoView_Callback_1_(mthis, __arg_0) => mthis.callMethod("scrollPathIntoView", [__arg_0]);
 
-  static shadowOffsetX_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowOffsetX_Setter";
-  shadowOffsetX_Setter_(mthis, __arg_0) => shadowOffsetX_Setter(mthis, __arg_0);
+  setLineDash_Callback_0_(mthis) => mthis.callMethod("setLineDash", []);
 
-  static shadowOffsetY_Getter(mthis) native "CanvasRenderingContext2D_shadowOffsetY_Getter";
-  shadowOffsetY_Getter_(mthis) => shadowOffsetY_Getter(mthis);
+  setLineDash_Callback_1_(mthis, __arg_0) => mthis.callMethod("setLineDash", [__arg_0]);
 
-  static shadowOffsetY_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowOffsetY_Setter";
-  shadowOffsetY_Setter_(mthis, __arg_0) => shadowOffsetY_Setter(mthis, __arg_0);
+  setTransform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("setTransform", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static strokeRect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_strokeRect_Callback";
-  strokeRect_Callback_2_(mthis, __arg_0, __arg_1) => strokeRect_Callback_2(mthis, __arg_0, __arg_1);
+  setTransform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("setTransform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static strokeRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_strokeRect_Callback";
-  strokeRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => strokeRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setTransform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("setTransform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static strokeRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_strokeRect_Callback";
-  strokeRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => strokeRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  shadowBlur_Getter_(mthis) => mthis["shadowBlur"];
 
-  static strokeRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_strokeRect_Callback";
-  strokeRect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => strokeRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  shadowBlur_Setter_(mthis, __arg_0) => mthis["shadowBlur"] = __arg_0;
 
-  static strokeRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_strokeRect_Callback";
-  strokeRect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => strokeRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  shadowColor_Getter_(mthis) => mthis["shadowColor"];
 
-  static strokeStyle_Getter(mthis) native "CanvasRenderingContext2D_strokeStyle_Getter";
-  strokeStyle_Getter_(mthis) => strokeStyle_Getter(mthis);
+  shadowColor_Setter_(mthis, __arg_0) => mthis["shadowColor"] = __arg_0;
 
-  static strokeStyle_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_strokeStyle_Setter";
-  strokeStyle_Setter_(mthis, __arg_0) => strokeStyle_Setter(mthis, __arg_0);
+  shadowOffsetX_Getter_(mthis) => mthis["shadowOffsetX"];
 
-  static strokeText_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_strokeText_Callback";
-  strokeText_Callback_1_(mthis, __arg_0) => strokeText_Callback_1(mthis, __arg_0);
+  shadowOffsetX_Setter_(mthis, __arg_0) => mthis["shadowOffsetX"] = __arg_0;
 
-  static strokeText_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_strokeText_Callback";
-  strokeText_Callback_2_(mthis, __arg_0, __arg_1) => strokeText_Callback_2(mthis, __arg_0, __arg_1);
+  shadowOffsetY_Getter_(mthis) => mthis["shadowOffsetY"];
 
-  static strokeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_strokeText_Callback";
-  strokeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => strokeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  shadowOffsetY_Setter_(mthis, __arg_0) => mthis["shadowOffsetY"] = __arg_0;
 
-  static strokeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_strokeText_Callback";
-  strokeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => strokeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  strokeRect_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("strokeRect", [__arg_0, __arg_1]);
 
-  static strokeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_strokeText_Callback";
-  strokeText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => strokeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  strokeRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("strokeRect", [__arg_0, __arg_1, __arg_2]);
 
-  static strokeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_strokeText_Callback";
-  strokeText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => strokeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  strokeRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("strokeRect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static stroke_Callback_0(mthis) native "CanvasRenderingContext2D_stroke_Callback";
-  stroke_Callback_0_(mthis) => stroke_Callback_0(mthis);
+  strokeStyle_Getter_(mthis) => mthis["strokeStyle"];
 
-  static stroke_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_stroke_Callback";
-  stroke_Callback_1_(mthis, __arg_0) => stroke_Callback_1(mthis, __arg_0);
+  strokeStyle_Setter_(mthis, __arg_0) => mthis["strokeStyle"] = __arg_0;
 
-  static stroke_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_stroke_Callback";
-  stroke_Callback_2_(mthis, __arg_0, __arg_1) => stroke_Callback_2(mthis, __arg_0, __arg_1);
+  strokeText_Callback_1_(mthis, __arg_0) => mthis.callMethod("strokeText", [__arg_0]);
 
-  static stroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_stroke_Callback";
-  stroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  strokeText_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("strokeText", [__arg_0, __arg_1]);
 
-  static textAlign_Getter(mthis) native "CanvasRenderingContext2D_textAlign_Getter";
-  textAlign_Getter_(mthis) => textAlign_Getter(mthis);
+  strokeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("strokeText", [__arg_0, __arg_1, __arg_2]);
 
-  static textAlign_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_textAlign_Setter";
-  textAlign_Setter_(mthis, __arg_0) => textAlign_Setter(mthis, __arg_0);
+  strokeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("strokeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static textBaseline_Getter(mthis) native "CanvasRenderingContext2D_textBaseline_Getter";
-  textBaseline_Getter_(mthis) => textBaseline_Getter(mthis);
+  stroke_Callback_0_(mthis) => mthis.callMethod("stroke", []);
 
-  static textBaseline_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_textBaseline_Setter";
-  textBaseline_Setter_(mthis, __arg_0) => textBaseline_Setter(mthis, __arg_0);
+  stroke_Callback_1_(mthis, __arg_0) => mthis.callMethod("stroke", [__arg_0]);
 
-  static transform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_transform_Callback";
-  transform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  textAlign_Getter_(mthis) => mthis["textAlign"];
 
-  static transform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_transform_Callback";
-  transform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => transform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  textAlign_Setter_(mthis, __arg_0) => mthis["textAlign"] = __arg_0;
 
-  static transform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_transform_Callback";
-  transform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => transform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  textBaseline_Getter_(mthis) => mthis["textBaseline"];
 
-  static transform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_transform_Callback";
-  transform_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => transform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  textBaseline_Setter_(mthis, __arg_0) => mthis["textBaseline"] = __arg_0;
 
-  static transform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_transform_Callback";
-  transform_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => transform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  transform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("transform", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static translate_Callback_0(mthis) native "CanvasRenderingContext2D_translate_Callback";
-  translate_Callback_0_(mthis) => translate_Callback_0(mthis);
+  transform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("transform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static translate_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_translate_Callback";
-  translate_Callback_1_(mthis, __arg_0) => translate_Callback_1(mthis, __arg_0);
+  transform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("transform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static translate_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_translate_Callback";
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => translate_Callback_2(mthis, __arg_0, __arg_1);
+  translate_Callback_0_(mthis) => mthis.callMethod("translate", []);
 
-  static translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_translate_Callback";
-  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  translate_Callback_1_(mthis, __arg_0) => mthis.callMethod("translate", [__arg_0]);
 
-  static translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_translate_Callback";
-  translate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("translate", [__arg_0, __arg_1]);
 
 }
 
@@ -3534,3440 +2070,1846 @@
 class BlinkCharacterData extends BlinkNode {
   static final instance = new BlinkCharacterData();
 
-  static appendData_Callback_0(mthis) native "CharacterData_appendData_Callback";
-  appendData_Callback_0_(mthis) => appendData_Callback_0(mthis);
+  appendData_Callback_0_(mthis) => mthis.callMethod("appendData", []);
 
-  static appendData_Callback_1(mthis, __arg_0) native "CharacterData_appendData_Callback";
-  appendData_Callback_1_(mthis, __arg_0) => appendData_Callback_1(mthis, __arg_0);
+  appendData_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendData", [__arg_0]);
 
-  static appendData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_appendData_Callback";
-  appendData_Callback_2_(mthis, __arg_0, __arg_1) => appendData_Callback_2(mthis, __arg_0, __arg_1);
+  data_Getter_(mthis) => mthis["data"];
 
-  static appendData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_appendData_Callback";
-  appendData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  data_Setter_(mthis, __arg_0) => mthis["data"] = __arg_0;
 
-  static data_Getter(mthis) native "CharacterData_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
+  deleteData_Callback_0_(mthis) => mthis.callMethod("deleteData", []);
 
-  static data_Setter(mthis, __arg_0) native "CharacterData_data_Setter";
-  data_Setter_(mthis, __arg_0) => data_Setter(mthis, __arg_0);
+  deleteData_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteData", [__arg_0]);
 
-  static deleteData_Callback_0(mthis) native "CharacterData_deleteData_Callback";
-  deleteData_Callback_0_(mthis) => deleteData_Callback_0(mthis);
+  deleteData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("deleteData", [__arg_0, __arg_1]);
 
-  static deleteData_Callback_1(mthis, __arg_0) native "CharacterData_deleteData_Callback";
-  deleteData_Callback_1_(mthis, __arg_0) => deleteData_Callback_1(mthis, __arg_0);
+  insertData_Callback_0_(mthis) => mthis.callMethod("insertData", []);
 
-  static deleteData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_deleteData_Callback";
-  deleteData_Callback_2_(mthis, __arg_0, __arg_1) => deleteData_Callback_2(mthis, __arg_0, __arg_1);
+  insertData_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertData", [__arg_0]);
 
-  static deleteData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_deleteData_Callback";
-  deleteData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  insertData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertData", [__arg_0, __arg_1]);
 
-  static deleteData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_deleteData_Callback";
-  deleteData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => deleteData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  length_Getter_(mthis) => mthis["length"];
 
-  static insertData_Callback_0(mthis) native "CharacterData_insertData_Callback";
-  insertData_Callback_0_(mthis) => insertData_Callback_0(mthis);
+  nextElementSibling_Getter_(mthis) => mthis["nextElementSibling"];
 
-  static insertData_Callback_1(mthis, __arg_0) native "CharacterData_insertData_Callback";
-  insertData_Callback_1_(mthis, __arg_0) => insertData_Callback_1(mthis, __arg_0);
+  previousElementSibling_Getter_(mthis) => mthis["previousElementSibling"];
 
-  static insertData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_insertData_Callback";
-  insertData_Callback_2_(mthis, __arg_0, __arg_1) => insertData_Callback_2(mthis, __arg_0, __arg_1);
+  replaceData_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceData", [__arg_0]);
 
-  static insertData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_insertData_Callback";
-  insertData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceData", [__arg_0, __arg_1]);
 
-  static insertData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_insertData_Callback";
-  insertData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  replaceData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("replaceData", [__arg_0, __arg_1, __arg_2]);
 
-  static length_Getter(mthis) native "CharacterData_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  substringData_Callback_0_(mthis) => mthis.callMethod("substringData", []);
 
-  static nextElementSibling_Getter(mthis) native "CharacterData_nextElementSibling_Getter";
-  nextElementSibling_Getter_(mthis) => nextElementSibling_Getter(mthis);
+  substringData_Callback_1_(mthis, __arg_0) => mthis.callMethod("substringData", [__arg_0]);
 
-  static previousElementSibling_Getter(mthis) native "CharacterData_previousElementSibling_Getter";
-  previousElementSibling_Getter_(mthis) => previousElementSibling_Getter(mthis);
-
-  static replaceData_Callback_1(mthis, __arg_0) native "CharacterData_replaceData_Callback";
-  replaceData_Callback_1_(mthis, __arg_0) => replaceData_Callback_1(mthis, __arg_0);
-
-  static replaceData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_replaceData_Callback";
-  replaceData_Callback_2_(mthis, __arg_0, __arg_1) => replaceData_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_replaceData_Callback";
-  replaceData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_replaceData_Callback";
-  replaceData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static replaceData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CharacterData_replaceData_Callback";
-  replaceData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => replaceData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static substringData_Callback_0(mthis) native "CharacterData_substringData_Callback";
-  substringData_Callback_0_(mthis) => substringData_Callback_0(mthis);
-
-  static substringData_Callback_1(mthis, __arg_0) native "CharacterData_substringData_Callback";
-  substringData_Callback_1_(mthis, __arg_0) => substringData_Callback_1(mthis, __arg_0);
-
-  static substringData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_substringData_Callback";
-  substringData_Callback_2_(mthis, __arg_0, __arg_1) => substringData_Callback_2(mthis, __arg_0, __arg_1);
-
-  static substringData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_substringData_Callback";
-  substringData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => substringData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static substringData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_substringData_Callback";
-  substringData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => substringData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  substringData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("substringData", [__arg_0, __arg_1]);
 
 }
 
 class BlinkCircularGeofencingRegion extends BlinkGeofencingRegion {
   static final instance = new BlinkCircularGeofencingRegion();
 
-  static constructorCallback_0() native "CircularGeofencingRegion_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["CircularGeofencingRegion"], []);
 
-  static constructorCallback_1(__arg_0) native "CircularGeofencingRegion_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["CircularGeofencingRegion"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "CircularGeofencingRegion_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  latitude_Getter_(mthis) => mthis["latitude"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "CircularGeofencingRegion_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  longitude_Getter_(mthis) => mthis["longitude"];
 
-  static latitude_Getter(mthis) native "CircularGeofencingRegion_latitude_Getter";
-  latitude_Getter_(mthis) => latitude_Getter(mthis);
-
-  static longitude_Getter(mthis) native "CircularGeofencingRegion_longitude_Getter";
-  longitude_Getter_(mthis) => longitude_Getter(mthis);
-
-  static radius_Getter(mthis) native "CircularGeofencingRegion_radius_Getter";
-  radius_Getter_(mthis) => radius_Getter(mthis);
+  radius_Getter_(mthis) => mthis["radius"];
 
 }
 
 class BlinkClientRect {
   static final instance = new BlinkClientRect();
 
-  static bottom_Getter(mthis) native "ClientRect_bottom_Getter";
-  bottom_Getter_(mthis) => bottom_Getter(mthis);
+  bottom_Getter_(mthis) => mthis["bottom"];
 
-  static height_Getter(mthis) native "ClientRect_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static left_Getter(mthis) native "ClientRect_left_Getter";
-  left_Getter_(mthis) => left_Getter(mthis);
+  left_Getter_(mthis) => mthis["left"];
 
-  static right_Getter(mthis) native "ClientRect_right_Getter";
-  right_Getter_(mthis) => right_Getter(mthis);
+  right_Getter_(mthis) => mthis["right"];
 
-  static top_Getter(mthis) native "ClientRect_top_Getter";
-  top_Getter_(mthis) => top_Getter(mthis);
+  top_Getter_(mthis) => mthis["top"];
 
-  static width_Getter(mthis) native "ClientRect_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
 }
 
 class BlinkClientRectList {
   static final instance = new BlinkClientRectList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "ClientRectList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "ClientRectList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "ClientRectList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "ClientRectList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ClientRectList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "ClientRectList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkCloseEvent extends BlinkEvent {
   static final instance = new BlinkCloseEvent();
 
-  static code_Getter(mthis) native "CloseEvent_code_Getter";
-  code_Getter_(mthis) => code_Getter(mthis);
+  code_Getter_(mthis) => mthis["code"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "CloseEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["CloseEvent"], [__arg_0, __arg_1]);
 
-  static reason_Getter(mthis) native "CloseEvent_reason_Getter";
-  reason_Getter_(mthis) => reason_Getter(mthis);
+  reason_Getter_(mthis) => mthis["reason"];
 
-  static wasClean_Getter(mthis) native "CloseEvent_wasClean_Getter";
-  wasClean_Getter_(mthis) => wasClean_Getter(mthis);
+  wasClean_Getter_(mthis) => mthis["wasClean"];
 
 }
 
 class BlinkComment extends BlinkCharacterData {
   static final instance = new BlinkComment();
 
-  static constructorCallback_0() native "Comment_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["Comment"], []);
 
-  static constructorCallback_1(__arg_0) native "Comment_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
-
-  static constructorCallback_2(__arg_0, __arg_1) native "Comment_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
-
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Comment_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Comment"], [__arg_0]);
 
 }
 
 class BlinkCompositionEvent extends BlinkUIEvent {
   static final instance = new BlinkCompositionEvent();
 
-  static activeSegmentEnd_Getter(mthis) native "CompositionEvent_activeSegmentEnd_Getter";
-  activeSegmentEnd_Getter_(mthis) => activeSegmentEnd_Getter(mthis);
+  activeSegmentEnd_Getter_(mthis) => mthis["activeSegmentEnd"];
 
-  static activeSegmentStart_Getter(mthis) native "CompositionEvent_activeSegmentStart_Getter";
-  activeSegmentStart_Getter_(mthis) => activeSegmentStart_Getter(mthis);
+  activeSegmentStart_Getter_(mthis) => mthis["activeSegmentStart"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "CompositionEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["CompositionEvent"], [__arg_0, __arg_1]);
 
-  static data_Getter(mthis) native "CompositionEvent_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
+  data_Getter_(mthis) => mthis["data"];
 
-  static getSegments_Callback_0(mthis) native "CompositionEvent_getSegments_Callback";
-  getSegments_Callback_0_(mthis) => getSegments_Callback_0(mthis);
+  getSegments_Callback_0_(mthis) => mthis.callMethod("getSegments", []);
 
-  static getSegments_Callback_1(mthis, __arg_0) native "CompositionEvent_getSegments_Callback";
-  getSegments_Callback_1_(mthis, __arg_0) => getSegments_Callback_1(mthis, __arg_0);
+  initCompositionEvent_Callback_0_(mthis) => mthis.callMethod("initCompositionEvent", []);
 
-  static getSegments_Callback_2(mthis, __arg_0, __arg_1) native "CompositionEvent_getSegments_Callback";
-  getSegments_Callback_2_(mthis, __arg_0, __arg_1) => getSegments_Callback_2(mthis, __arg_0, __arg_1);
+  initCompositionEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initCompositionEvent", [__arg_0]);
 
-  static initCompositionEvent_Callback_0(mthis) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_0_(mthis) => initCompositionEvent_Callback_0(mthis);
+  initCompositionEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initCompositionEvent", [__arg_0, __arg_1]);
 
-  static initCompositionEvent_Callback_1(mthis, __arg_0) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_1_(mthis, __arg_0) => initCompositionEvent_Callback_1(mthis, __arg_0);
+  initCompositionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initCompositionEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initCompositionEvent_Callback_2(mthis, __arg_0, __arg_1) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_2_(mthis, __arg_0, __arg_1) => initCompositionEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initCompositionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initCompositionEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initCompositionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initCompositionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static initCompositionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initCompositionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static initCompositionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initCompositionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static initCompositionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initCompositionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static initCompositionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CompositionEvent_initCompositionEvent_Callback";
-  initCompositionEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initCompositionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initCompositionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initCompositionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkConsole extends BlinkConsoleBase {
   static final instance = new BlinkConsole();
 
-  static memory_Getter(mthis) native "Console_memory_Getter";
-  memory_Getter_(mthis) => memory_Getter(mthis);
+  memory_Getter_(mthis) => mthis["memory"];
 
 }
 
 class BlinkConsoleBase {
   static final instance = new BlinkConsoleBase();
 
-  static assert_Callback_0(mthis) native "ConsoleBase_assert_Callback";
-  assert_Callback_0_(mthis) => assert_Callback_0(mthis);
+  assert_Callback_0_(mthis) => mthis.callMethod("assert", []);
 
-  static assert_Callback_1(mthis, __arg_0) native "ConsoleBase_assert_Callback";
-  assert_Callback_1_(mthis, __arg_0) => assert_Callback_1(mthis, __arg_0);
+  assert_Callback_1_(mthis, __arg_0) => mthis.callMethod("assert", [__arg_0]);
 
-  static assert_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_assert_Callback";
-  assert_Callback_2_(mthis, __arg_0, __arg_1) => assert_Callback_2(mthis, __arg_0, __arg_1);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static assert_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_assert_Callback";
-  assert_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => assert_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  clear_Callback_1_(mthis, __arg_0) => mthis.callMethod("clear", [__arg_0]);
 
-  static clear_Callback_0(mthis) native "ConsoleBase_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  count_Callback_0_(mthis) => mthis.callMethod("count", []);
 
-  static clear_Callback_1(mthis, __arg_0) native "ConsoleBase_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  count_Callback_1_(mthis, __arg_0) => mthis.callMethod("count", [__arg_0]);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  debug_Callback_0_(mthis) => mthis.callMethod("debug", []);
 
-  static count_Callback_0(mthis) native "ConsoleBase_count_Callback";
-  count_Callback_0_(mthis) => count_Callback_0(mthis);
+  debug_Callback_1_(mthis, __arg_0) => mthis.callMethod("debug", [__arg_0]);
 
-  static count_Callback_1(mthis, __arg_0) native "ConsoleBase_count_Callback";
-  count_Callback_1_(mthis, __arg_0) => count_Callback_1(mthis, __arg_0);
+  dir_Callback_0_(mthis) => mthis.callMethod("dir", []);
 
-  static count_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_count_Callback";
-  count_Callback_2_(mthis, __arg_0, __arg_1) => count_Callback_2(mthis, __arg_0, __arg_1);
+  dir_Callback_1_(mthis, __arg_0) => mthis.callMethod("dir", [__arg_0]);
 
-  static debug_Callback_0(mthis) native "ConsoleBase_debug_Callback";
-  debug_Callback_0_(mthis) => debug_Callback_0(mthis);
+  dirxml_Callback_0_(mthis) => mthis.callMethod("dirxml", []);
 
-  static debug_Callback_1(mthis, __arg_0) native "ConsoleBase_debug_Callback";
-  debug_Callback_1_(mthis, __arg_0) => debug_Callback_1(mthis, __arg_0);
+  dirxml_Callback_1_(mthis, __arg_0) => mthis.callMethod("dirxml", [__arg_0]);
 
-  static debug_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_debug_Callback";
-  debug_Callback_2_(mthis, __arg_0, __arg_1) => debug_Callback_2(mthis, __arg_0, __arg_1);
+  error_Callback_0_(mthis) => mthis.callMethod("error", []);
 
-  static dir_Callback_0(mthis) native "ConsoleBase_dir_Callback";
-  dir_Callback_0_(mthis) => dir_Callback_0(mthis);
+  error_Callback_1_(mthis, __arg_0) => mthis.callMethod("error", [__arg_0]);
 
-  static dir_Callback_1(mthis, __arg_0) native "ConsoleBase_dir_Callback";
-  dir_Callback_1_(mthis, __arg_0) => dir_Callback_1(mthis, __arg_0);
+  groupCollapsed_Callback_0_(mthis) => mthis.callMethod("groupCollapsed", []);
 
-  static dir_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_dir_Callback";
-  dir_Callback_2_(mthis, __arg_0, __arg_1) => dir_Callback_2(mthis, __arg_0, __arg_1);
+  groupCollapsed_Callback_1_(mthis, __arg_0) => mthis.callMethod("groupCollapsed", [__arg_0]);
 
-  static dirxml_Callback_0(mthis) native "ConsoleBase_dirxml_Callback";
-  dirxml_Callback_0_(mthis) => dirxml_Callback_0(mthis);
+  groupEnd_Callback_0_(mthis) => mthis.callMethod("groupEnd", []);
 
-  static dirxml_Callback_1(mthis, __arg_0) native "ConsoleBase_dirxml_Callback";
-  dirxml_Callback_1_(mthis, __arg_0) => dirxml_Callback_1(mthis, __arg_0);
+  group_Callback_0_(mthis) => mthis.callMethod("group", []);
 
-  static dirxml_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_dirxml_Callback";
-  dirxml_Callback_2_(mthis, __arg_0, __arg_1) => dirxml_Callback_2(mthis, __arg_0, __arg_1);
+  group_Callback_1_(mthis, __arg_0) => mthis.callMethod("group", [__arg_0]);
 
-  static error_Callback_0(mthis) native "ConsoleBase_error_Callback";
-  error_Callback_0_(mthis) => error_Callback_0(mthis);
+  info_Callback_0_(mthis) => mthis.callMethod("info", []);
 
-  static error_Callback_1(mthis, __arg_0) native "ConsoleBase_error_Callback";
-  error_Callback_1_(mthis, __arg_0) => error_Callback_1(mthis, __arg_0);
+  info_Callback_1_(mthis, __arg_0) => mthis.callMethod("info", [__arg_0]);
 
-  static error_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_error_Callback";
-  error_Callback_2_(mthis, __arg_0, __arg_1) => error_Callback_2(mthis, __arg_0, __arg_1);
+  log_Callback_0_(mthis) => mthis.callMethod("log", []);
 
-  static groupCollapsed_Callback_0(mthis) native "ConsoleBase_groupCollapsed_Callback";
-  groupCollapsed_Callback_0_(mthis) => groupCollapsed_Callback_0(mthis);
+  log_Callback_1_(mthis, __arg_0) => mthis.callMethod("log", [__arg_0]);
 
-  static groupCollapsed_Callback_1(mthis, __arg_0) native "ConsoleBase_groupCollapsed_Callback";
-  groupCollapsed_Callback_1_(mthis, __arg_0) => groupCollapsed_Callback_1(mthis, __arg_0);
+  markTimeline_Callback_0_(mthis) => mthis.callMethod("markTimeline", []);
 
-  static groupCollapsed_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_groupCollapsed_Callback";
-  groupCollapsed_Callback_2_(mthis, __arg_0, __arg_1) => groupCollapsed_Callback_2(mthis, __arg_0, __arg_1);
+  markTimeline_Callback_1_(mthis, __arg_0) => mthis.callMethod("markTimeline", [__arg_0]);
 
-  static groupEnd_Callback_0(mthis) native "ConsoleBase_groupEnd_Callback";
-  groupEnd_Callback_0_(mthis) => groupEnd_Callback_0(mthis);
+  profileEnd_Callback_0_(mthis) => mthis.callMethod("profileEnd", []);
 
-  static groupEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_groupEnd_Callback";
-  groupEnd_Callback_1_(mthis, __arg_0) => groupEnd_Callback_1(mthis, __arg_0);
+  profileEnd_Callback_1_(mthis, __arg_0) => mthis.callMethod("profileEnd", [__arg_0]);
 
-  static groupEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_groupEnd_Callback";
-  groupEnd_Callback_2_(mthis, __arg_0, __arg_1) => groupEnd_Callback_2(mthis, __arg_0, __arg_1);
+  profile_Callback_0_(mthis) => mthis.callMethod("profile", []);
 
-  static group_Callback_0(mthis) native "ConsoleBase_group_Callback";
-  group_Callback_0_(mthis) => group_Callback_0(mthis);
+  profile_Callback_1_(mthis, __arg_0) => mthis.callMethod("profile", [__arg_0]);
 
-  static group_Callback_1(mthis, __arg_0) native "ConsoleBase_group_Callback";
-  group_Callback_1_(mthis, __arg_0) => group_Callback_1(mthis, __arg_0);
+  table_Callback_0_(mthis) => mthis.callMethod("table", []);
 
-  static group_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_group_Callback";
-  group_Callback_2_(mthis, __arg_0, __arg_1) => group_Callback_2(mthis, __arg_0, __arg_1);
+  table_Callback_1_(mthis, __arg_0) => mthis.callMethod("table", [__arg_0]);
 
-  static info_Callback_0(mthis) native "ConsoleBase_info_Callback";
-  info_Callback_0_(mthis) => info_Callback_0(mthis);
+  timeEnd_Callback_0_(mthis) => mthis.callMethod("timeEnd", []);
 
-  static info_Callback_1(mthis, __arg_0) native "ConsoleBase_info_Callback";
-  info_Callback_1_(mthis, __arg_0) => info_Callback_1(mthis, __arg_0);
+  timeEnd_Callback_1_(mthis, __arg_0) => mthis.callMethod("timeEnd", [__arg_0]);
 
-  static info_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_info_Callback";
-  info_Callback_2_(mthis, __arg_0, __arg_1) => info_Callback_2(mthis, __arg_0, __arg_1);
+  timeStamp_Callback_0_(mthis) => mthis.callMethod("timeStamp", []);
 
-  static log_Callback_0(mthis) native "ConsoleBase_log_Callback";
-  log_Callback_0_(mthis) => log_Callback_0(mthis);
+  timeStamp_Callback_1_(mthis, __arg_0) => mthis.callMethod("timeStamp", [__arg_0]);
 
-  static log_Callback_1(mthis, __arg_0) native "ConsoleBase_log_Callback";
-  log_Callback_1_(mthis, __arg_0) => log_Callback_1(mthis, __arg_0);
+  time_Callback_0_(mthis) => mthis.callMethod("time", []);
 
-  static log_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_log_Callback";
-  log_Callback_2_(mthis, __arg_0, __arg_1) => log_Callback_2(mthis, __arg_0, __arg_1);
+  time_Callback_1_(mthis, __arg_0) => mthis.callMethod("time", [__arg_0]);
 
-  static markTimeline_Callback_0(mthis) native "ConsoleBase_markTimeline_Callback";
-  markTimeline_Callback_0_(mthis) => markTimeline_Callback_0(mthis);
+  timelineEnd_Callback_0_(mthis) => mthis.callMethod("timelineEnd", []);
 
-  static markTimeline_Callback_1(mthis, __arg_0) native "ConsoleBase_markTimeline_Callback";
-  markTimeline_Callback_1_(mthis, __arg_0) => markTimeline_Callback_1(mthis, __arg_0);
-
-  static markTimeline_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_markTimeline_Callback";
-  markTimeline_Callback_2_(mthis, __arg_0, __arg_1) => markTimeline_Callback_2(mthis, __arg_0, __arg_1);
-
-  static markTimeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_markTimeline_Callback";
-  markTimeline_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => markTimeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static profileEnd_Callback_0(mthis) native "ConsoleBase_profileEnd_Callback";
-  profileEnd_Callback_0_(mthis) => profileEnd_Callback_0(mthis);
-
-  static profileEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_profileEnd_Callback";
-  profileEnd_Callback_1_(mthis, __arg_0) => profileEnd_Callback_1(mthis, __arg_0);
-
-  static profileEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_profileEnd_Callback";
-  profileEnd_Callback_2_(mthis, __arg_0, __arg_1) => profileEnd_Callback_2(mthis, __arg_0, __arg_1);
-
-  static profileEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_profileEnd_Callback";
-  profileEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => profileEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static profile_Callback_0(mthis) native "ConsoleBase_profile_Callback";
-  profile_Callback_0_(mthis) => profile_Callback_0(mthis);
-
-  static profile_Callback_1(mthis, __arg_0) native "ConsoleBase_profile_Callback";
-  profile_Callback_1_(mthis, __arg_0) => profile_Callback_1(mthis, __arg_0);
-
-  static profile_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_profile_Callback";
-  profile_Callback_2_(mthis, __arg_0, __arg_1) => profile_Callback_2(mthis, __arg_0, __arg_1);
-
-  static profile_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_profile_Callback";
-  profile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => profile_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static table_Callback_0(mthis) native "ConsoleBase_table_Callback";
-  table_Callback_0_(mthis) => table_Callback_0(mthis);
-
-  static table_Callback_1(mthis, __arg_0) native "ConsoleBase_table_Callback";
-  table_Callback_1_(mthis, __arg_0) => table_Callback_1(mthis, __arg_0);
-
-  static table_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_table_Callback";
-  table_Callback_2_(mthis, __arg_0, __arg_1) => table_Callback_2(mthis, __arg_0, __arg_1);
-
-  static timeEnd_Callback_0(mthis) native "ConsoleBase_timeEnd_Callback";
-  timeEnd_Callback_0_(mthis) => timeEnd_Callback_0(mthis);
-
-  static timeEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_timeEnd_Callback";
-  timeEnd_Callback_1_(mthis, __arg_0) => timeEnd_Callback_1(mthis, __arg_0);
-
-  static timeEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timeEnd_Callback";
-  timeEnd_Callback_2_(mthis, __arg_0, __arg_1) => timeEnd_Callback_2(mthis, __arg_0, __arg_1);
-
-  static timeEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timeEnd_Callback";
-  timeEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timeEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static timeStamp_Callback_0(mthis) native "ConsoleBase_timeStamp_Callback";
-  timeStamp_Callback_0_(mthis) => timeStamp_Callback_0(mthis);
-
-  static timeStamp_Callback_1(mthis, __arg_0) native "ConsoleBase_timeStamp_Callback";
-  timeStamp_Callback_1_(mthis, __arg_0) => timeStamp_Callback_1(mthis, __arg_0);
-
-  static timeStamp_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timeStamp_Callback";
-  timeStamp_Callback_2_(mthis, __arg_0, __arg_1) => timeStamp_Callback_2(mthis, __arg_0, __arg_1);
-
-  static timeStamp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timeStamp_Callback";
-  timeStamp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timeStamp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static time_Callback_0(mthis) native "ConsoleBase_time_Callback";
-  time_Callback_0_(mthis) => time_Callback_0(mthis);
-
-  static time_Callback_1(mthis, __arg_0) native "ConsoleBase_time_Callback";
-  time_Callback_1_(mthis, __arg_0) => time_Callback_1(mthis, __arg_0);
-
-  static time_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_time_Callback";
-  time_Callback_2_(mthis, __arg_0, __arg_1) => time_Callback_2(mthis, __arg_0, __arg_1);
-
-  static time_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_time_Callback";
-  time_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => time_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static timelineEnd_Callback_0(mthis) native "ConsoleBase_timelineEnd_Callback";
-  timelineEnd_Callback_0_(mthis) => timelineEnd_Callback_0(mthis);
-
-  static timelineEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_timelineEnd_Callback";
-  timelineEnd_Callback_1_(mthis, __arg_0) => timelineEnd_Callback_1(mthis, __arg_0);
-
-  static timelineEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timelineEnd_Callback";
-  timelineEnd_Callback_2_(mthis, __arg_0, __arg_1) => timelineEnd_Callback_2(mthis, __arg_0, __arg_1);
-
-  static timelineEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timelineEnd_Callback";
-  timelineEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timelineEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static timeline_Callback_0(mthis) native "ConsoleBase_timeline_Callback";
-  timeline_Callback_0_(mthis) => timeline_Callback_0(mthis);
-
-  static timeline_Callback_1(mthis, __arg_0) native "ConsoleBase_timeline_Callback";
-  timeline_Callback_1_(mthis, __arg_0) => timeline_Callback_1(mthis, __arg_0);
-
-  static timeline_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timeline_Callback";
-  timeline_Callback_2_(mthis, __arg_0, __arg_1) => timeline_Callback_2(mthis, __arg_0, __arg_1);
-
-  static timeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timeline_Callback";
-  timeline_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  timelineEnd_Callback_1_(mthis, __arg_0) => mthis.callMethod("timelineEnd", [__arg_0]);
 
-  static trace_Callback_0(mthis) native "ConsoleBase_trace_Callback";
-  trace_Callback_0_(mthis) => trace_Callback_0(mthis);
+  timeline_Callback_0_(mthis) => mthis.callMethod("timeline", []);
 
-  static trace_Callback_1(mthis, __arg_0) native "ConsoleBase_trace_Callback";
-  trace_Callback_1_(mthis, __arg_0) => trace_Callback_1(mthis, __arg_0);
+  timeline_Callback_1_(mthis, __arg_0) => mthis.callMethod("timeline", [__arg_0]);
 
-  static trace_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_trace_Callback";
-  trace_Callback_2_(mthis, __arg_0, __arg_1) => trace_Callback_2(mthis, __arg_0, __arg_1);
+  trace_Callback_0_(mthis) => mthis.callMethod("trace", []);
 
-  static warn_Callback_0(mthis) native "ConsoleBase_warn_Callback";
-  warn_Callback_0_(mthis) => warn_Callback_0(mthis);
+  trace_Callback_1_(mthis, __arg_0) => mthis.callMethod("trace", [__arg_0]);
 
-  static warn_Callback_1(mthis, __arg_0) native "ConsoleBase_warn_Callback";
-  warn_Callback_1_(mthis, __arg_0) => warn_Callback_1(mthis, __arg_0);
+  warn_Callback_0_(mthis) => mthis.callMethod("warn", []);
 
-  static warn_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_warn_Callback";
-  warn_Callback_2_(mthis, __arg_0, __arg_1) => warn_Callback_2(mthis, __arg_0, __arg_1);
+  warn_Callback_1_(mthis, __arg_0) => mthis.callMethod("warn", [__arg_0]);
 
 }
 
 class BlinkConvolverNode extends BlinkAudioNode {
   static final instance = new BlinkConvolverNode();
 
-  static buffer_Getter(mthis) native "ConvolverNode_buffer_Getter";
-  buffer_Getter_(mthis) => buffer_Getter(mthis);
+  buffer_Getter_(mthis) => mthis["buffer"];
 
-  static buffer_Setter(mthis, __arg_0) native "ConvolverNode_buffer_Setter";
-  buffer_Setter_(mthis, __arg_0) => buffer_Setter(mthis, __arg_0);
+  buffer_Setter_(mthis, __arg_0) => mthis["buffer"] = __arg_0;
 
-  static normalize_Getter(mthis) native "ConvolverNode_normalize_Getter";
-  normalize_Getter_(mthis) => normalize_Getter(mthis);
+  normalize_Getter_(mthis) => mthis["normalize"];
 
-  static normalize_Setter(mthis, __arg_0) native "ConvolverNode_normalize_Setter";
-  normalize_Setter_(mthis, __arg_0) => normalize_Setter(mthis, __arg_0);
+  normalize_Setter_(mthis, __arg_0) => mthis["normalize"] = __arg_0;
 
 }
 
 class BlinkCoordinates {
   static final instance = new BlinkCoordinates();
 
-  static accuracy_Getter(mthis) native "Coordinates_accuracy_Getter";
-  accuracy_Getter_(mthis) => accuracy_Getter(mthis);
+  accuracy_Getter_(mthis) => mthis["accuracy"];
 
-  static altitudeAccuracy_Getter(mthis) native "Coordinates_altitudeAccuracy_Getter";
-  altitudeAccuracy_Getter_(mthis) => altitudeAccuracy_Getter(mthis);
+  altitudeAccuracy_Getter_(mthis) => mthis["altitudeAccuracy"];
 
-  static altitude_Getter(mthis) native "Coordinates_altitude_Getter";
-  altitude_Getter_(mthis) => altitude_Getter(mthis);
+  altitude_Getter_(mthis) => mthis["altitude"];
 
-  static heading_Getter(mthis) native "Coordinates_heading_Getter";
-  heading_Getter_(mthis) => heading_Getter(mthis);
+  heading_Getter_(mthis) => mthis["heading"];
 
-  static latitude_Getter(mthis) native "Coordinates_latitude_Getter";
-  latitude_Getter_(mthis) => latitude_Getter(mthis);
+  latitude_Getter_(mthis) => mthis["latitude"];
 
-  static longitude_Getter(mthis) native "Coordinates_longitude_Getter";
-  longitude_Getter_(mthis) => longitude_Getter(mthis);
+  longitude_Getter_(mthis) => mthis["longitude"];
 
-  static speed_Getter(mthis) native "Coordinates_speed_Getter";
-  speed_Getter_(mthis) => speed_Getter(mthis);
+  speed_Getter_(mthis) => mthis["speed"];
 
 }
 
 class BlinkCounter {
   static final instance = new BlinkCounter();
 
-  static identifier_Getter(mthis) native "Counter_identifier_Getter";
-  identifier_Getter_(mthis) => identifier_Getter(mthis);
+  identifier_Getter_(mthis) => mthis["identifier"];
 
-  static listStyle_Getter(mthis) native "Counter_listStyle_Getter";
-  listStyle_Getter_(mthis) => listStyle_Getter(mthis);
+  listStyle_Getter_(mthis) => mthis["listStyle"];
 
-  static separator_Getter(mthis) native "Counter_separator_Getter";
-  separator_Getter_(mthis) => separator_Getter(mthis);
+  separator_Getter_(mthis) => mthis["separator"];
 
 }
 
 class BlinkCredential {
   static final instance = new BlinkCredential();
 
-  static avatarURL_Getter(mthis) native "Credential_avatarURL_Getter";
-  avatarURL_Getter_(mthis) => avatarURL_Getter(mthis);
+  avatarURL_Getter_(mthis) => mthis["avatarURL"];
 
-  static id_Getter(mthis) native "Credential_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static name_Getter(mthis) native "Credential_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
 }
 
 class BlinkCredentialsContainer {
   static final instance = new BlinkCredentialsContainer();
 
-  static notifyFailedSignIn_Callback_0(mthis) native "CredentialsContainer_notifyFailedSignIn_Callback";
-  notifyFailedSignIn_Callback_0_(mthis) => notifyFailedSignIn_Callback_0(mthis);
+  notifyFailedSignIn_Callback_0_(mthis) => mthis.callMethod("notifyFailedSignIn", []);
 
-  static notifyFailedSignIn_Callback_1(mthis, __arg_0) native "CredentialsContainer_notifyFailedSignIn_Callback";
-  notifyFailedSignIn_Callback_1_(mthis, __arg_0) => notifyFailedSignIn_Callback_1(mthis, __arg_0);
+  notifyFailedSignIn_Callback_1_(mthis, __arg_0) => mthis.callMethod("notifyFailedSignIn", [__arg_0]);
 
-  static notifyFailedSignIn_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_notifyFailedSignIn_Callback";
-  notifyFailedSignIn_Callback_2_(mthis, __arg_0, __arg_1) => notifyFailedSignIn_Callback_2(mthis, __arg_0, __arg_1);
+  notifySignedIn_Callback_0_(mthis) => mthis.callMethod("notifySignedIn", []);
 
-  static notifyFailedSignIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CredentialsContainer_notifyFailedSignIn_Callback";
-  notifyFailedSignIn_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => notifyFailedSignIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  notifySignedIn_Callback_1_(mthis, __arg_0) => mthis.callMethod("notifySignedIn", [__arg_0]);
 
-  static notifySignedIn_Callback_0(mthis) native "CredentialsContainer_notifySignedIn_Callback";
-  notifySignedIn_Callback_0_(mthis) => notifySignedIn_Callback_0(mthis);
+  notifySignedOut_Callback_0_(mthis) => mthis.callMethod("notifySignedOut", []);
 
-  static notifySignedIn_Callback_1(mthis, __arg_0) native "CredentialsContainer_notifySignedIn_Callback";
-  notifySignedIn_Callback_1_(mthis, __arg_0) => notifySignedIn_Callback_1(mthis, __arg_0);
+  request_Callback_0_(mthis) => mthis.callMethod("request", []);
 
-  static notifySignedIn_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_notifySignedIn_Callback";
-  notifySignedIn_Callback_2_(mthis, __arg_0, __arg_1) => notifySignedIn_Callback_2(mthis, __arg_0, __arg_1);
-
-  static notifySignedIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CredentialsContainer_notifySignedIn_Callback";
-  notifySignedIn_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => notifySignedIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static notifySignedOut_Callback_0(mthis) native "CredentialsContainer_notifySignedOut_Callback";
-  notifySignedOut_Callback_0_(mthis) => notifySignedOut_Callback_0(mthis);
-
-  static notifySignedOut_Callback_1(mthis, __arg_0) native "CredentialsContainer_notifySignedOut_Callback";
-  notifySignedOut_Callback_1_(mthis, __arg_0) => notifySignedOut_Callback_1(mthis, __arg_0);
-
-  static notifySignedOut_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_notifySignedOut_Callback";
-  notifySignedOut_Callback_2_(mthis, __arg_0, __arg_1) => notifySignedOut_Callback_2(mthis, __arg_0, __arg_1);
-
-  static request_Callback_0(mthis) native "CredentialsContainer_request_Callback";
-  request_Callback_0_(mthis) => request_Callback_0(mthis);
-
-  static request_Callback_1(mthis, __arg_0) native "CredentialsContainer_request_Callback";
-  request_Callback_1_(mthis, __arg_0) => request_Callback_1(mthis, __arg_0);
-
-  static request_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_request_Callback";
-  request_Callback_2_(mthis, __arg_0, __arg_1) => request_Callback_2(mthis, __arg_0, __arg_1);
-
-  static request_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CredentialsContainer_request_Callback";
-  request_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => request_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  request_Callback_1_(mthis, __arg_0) => mthis.callMethod("request", [__arg_0]);
 
 }
 
 class BlinkCrypto {
   static final instance = new BlinkCrypto();
 
-  static getRandomValues_Callback_0(mthis) native "Crypto_getRandomValues_Callback";
-  getRandomValues_Callback_0_(mthis) => getRandomValues_Callback_0(mthis);
+  getRandomValues_Callback_0_(mthis) => mthis.callMethod("getRandomValues", []);
 
-  static getRandomValues_Callback_1(mthis, __arg_0) native "Crypto_getRandomValues_Callback";
-  getRandomValues_Callback_1_(mthis, __arg_0) => getRandomValues_Callback_1(mthis, __arg_0);
+  getRandomValues_Callback_1_(mthis, __arg_0) => mthis.callMethod("getRandomValues", [__arg_0]);
 
-  static getRandomValues_Callback_2(mthis, __arg_0, __arg_1) native "Crypto_getRandomValues_Callback";
-  getRandomValues_Callback_2_(mthis, __arg_0, __arg_1) => getRandomValues_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getRandomValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Crypto_getRandomValues_Callback";
-  getRandomValues_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRandomValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static subtle_Getter(mthis) native "Crypto_subtle_Getter";
-  subtle_Getter_(mthis) => subtle_Getter(mthis);
+  subtle_Getter_(mthis) => mthis["subtle"];
 
 }
 
 class BlinkCryptoKey {
   static final instance = new BlinkCryptoKey();
 
-  static algorithm_Getter(mthis) native "CryptoKey_algorithm_Getter";
-  algorithm_Getter_(mthis) => algorithm_Getter(mthis);
+  algorithm_Getter_(mthis) => mthis["algorithm"];
 
-  static extractable_Getter(mthis) native "CryptoKey_extractable_Getter";
-  extractable_Getter_(mthis) => extractable_Getter(mthis);
+  extractable_Getter_(mthis) => mthis["extractable"];
 
-  static type_Getter(mthis) native "CryptoKey_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static usages_Getter(mthis) native "CryptoKey_usages_Getter";
-  usages_Getter_(mthis) => usages_Getter(mthis);
+  usages_Getter_(mthis) => mthis["usages"];
 
 }
 
 class BlinkCustomEvent extends BlinkEvent {
   static final instance = new BlinkCustomEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "CustomEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["CustomEvent"], [__arg_0, __arg_1]);
 
-  static detail_Getter(mthis) native "CustomEvent_detail_Getter";
-  detail_Getter_(mthis) => detail_Getter(mthis);
+  detail_Getter_(mthis) => mthis["detail"];
 
-  static initCustomEvent_Callback_0(mthis) native "CustomEvent_initCustomEvent_Callback";
-  initCustomEvent_Callback_0_(mthis) => initCustomEvent_Callback_0(mthis);
+  initCustomEvent_Callback_0_(mthis) => mthis.callMethod("initCustomEvent", []);
 
-  static initCustomEvent_Callback_1(mthis, __arg_0) native "CustomEvent_initCustomEvent_Callback";
-  initCustomEvent_Callback_1_(mthis, __arg_0) => initCustomEvent_Callback_1(mthis, __arg_0);
+  initCustomEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initCustomEvent", [__arg_0]);
 
-  static initCustomEvent_Callback_2(mthis, __arg_0, __arg_1) native "CustomEvent_initCustomEvent_Callback";
-  initCustomEvent_Callback_2_(mthis, __arg_0, __arg_1) => initCustomEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initCustomEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initCustomEvent", [__arg_0, __arg_1]);
 
-  static initCustomEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CustomEvent_initCustomEvent_Callback";
-  initCustomEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initCustomEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initCustomEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initCustomEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initCustomEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CustomEvent_initCustomEvent_Callback";
-  initCustomEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initCustomEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static initCustomEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CustomEvent_initCustomEvent_Callback";
-  initCustomEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initCustomEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static initCustomEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CustomEvent_initCustomEvent_Callback";
-  initCustomEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initCustomEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initCustomEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initCustomEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkDOMError {
   static final instance = new BlinkDOMError();
 
-  static constructorCallback_0() native "DOMError_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["DOMError"], []);
 
-  static constructorCallback_1(__arg_0) native "DOMError_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["DOMError"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DOMError_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["DOMError"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMError_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  message_Getter_(mthis) => mthis["message"];
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMError_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
-
-  static message_Getter(mthis) native "DOMError_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
-
-  static name_Getter(mthis) native "DOMError_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
 }
 
 class BlinkDOMException {
   static final instance = new BlinkDOMException();
 
-  static message_Getter(mthis) native "DOMException_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
-  static name_Getter(mthis) native "DOMException_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static toString_Callback_0(mthis) native "DOMException_toString_Callback";
-  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
-
-  static toString_Callback_1(mthis, __arg_0) native "DOMException_toString_Callback";
-  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
-
-  static toString_Callback_2(mthis, __arg_0, __arg_1) native "DOMException_toString_Callback";
-  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
+  toString_Callback_0_(mthis) => mthis.callMethod("toString", []);
 
 }
 
 class BlinkDOMFileSystem {
   static final instance = new BlinkDOMFileSystem();
 
-  static name_Getter(mthis) native "DOMFileSystem_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static root_Getter(mthis) native "DOMFileSystem_root_Getter";
-  root_Getter_(mthis) => root_Getter(mthis);
+  root_Getter_(mthis) => mthis["root"];
 
 }
 
 class BlinkDOMFileSystemSync {
   static final instance = new BlinkDOMFileSystemSync();
 
-  static name_Getter(mthis) native "DOMFileSystemSync_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static root_Getter(mthis) native "DOMFileSystemSync_root_Getter";
-  root_Getter_(mthis) => root_Getter(mthis);
+  root_Getter_(mthis) => mthis["root"];
 
 }
 
 class BlinkDOMImplementation {
   static final instance = new BlinkDOMImplementation();
 
-  static createDocumentType_Callback_1(mthis, __arg_0) native "DOMImplementation_createDocumentType_Callback";
-  createDocumentType_Callback_1_(mthis, __arg_0) => createDocumentType_Callback_1(mthis, __arg_0);
+  createDocumentType_Callback_1_(mthis, __arg_0) => mthis.callMethod("createDocumentType", [__arg_0]);
 
-  static createDocumentType_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_createDocumentType_Callback";
-  createDocumentType_Callback_2_(mthis, __arg_0, __arg_1) => createDocumentType_Callback_2(mthis, __arg_0, __arg_1);
+  createDocumentType_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createDocumentType", [__arg_0, __arg_1]);
 
-  static createDocumentType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_createDocumentType_Callback";
-  createDocumentType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDocumentType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createDocumentType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createDocumentType", [__arg_0, __arg_1, __arg_2]);
 
-  static createDocumentType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMImplementation_createDocumentType_Callback";
-  createDocumentType_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createDocumentType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createDocument_Callback_0_(mthis) => mthis.callMethod("createDocument", []);
 
-  static createDocumentType_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMImplementation_createDocumentType_Callback";
-  createDocumentType_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createDocumentType_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createDocument_Callback_1_(mthis, __arg_0) => mthis.callMethod("createDocument", [__arg_0]);
 
-  static createDocument_Callback_0(mthis) native "DOMImplementation_createDocument_Callback";
-  createDocument_Callback_0_(mthis) => createDocument_Callback_0(mthis);
+  createDocument_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createDocument", [__arg_0, __arg_1]);
 
-  static createDocument_Callback_1(mthis, __arg_0) native "DOMImplementation_createDocument_Callback";
-  createDocument_Callback_1_(mthis, __arg_0) => createDocument_Callback_1(mthis, __arg_0);
+  createDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createDocument", [__arg_0, __arg_1, __arg_2]);
 
-  static createDocument_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_createDocument_Callback";
-  createDocument_Callback_2_(mthis, __arg_0, __arg_1) => createDocument_Callback_2(mthis, __arg_0, __arg_1);
+  createHTMLDocument_Callback_0_(mthis) => mthis.callMethod("createHTMLDocument", []);
 
-  static createDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_createDocument_Callback";
-  createDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createHTMLDocument_Callback_1_(mthis, __arg_0) => mthis.callMethod("createHTMLDocument", [__arg_0]);
 
-  static createDocument_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMImplementation_createDocument_Callback";
-  createDocument_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createDocument_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  hasFeature_Callback_0_(mthis) => mthis.callMethod("hasFeature", []);
 
-  static createDocument_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMImplementation_createDocument_Callback";
-  createDocument_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createDocument_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  hasFeature_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasFeature", [__arg_0]);
 
-  static createHTMLDocument_Callback_0(mthis) native "DOMImplementation_createHTMLDocument_Callback";
-  createHTMLDocument_Callback_0_(mthis) => createHTMLDocument_Callback_0(mthis);
-
-  static createHTMLDocument_Callback_1(mthis, __arg_0) native "DOMImplementation_createHTMLDocument_Callback";
-  createHTMLDocument_Callback_1_(mthis, __arg_0) => createHTMLDocument_Callback_1(mthis, __arg_0);
-
-  static createHTMLDocument_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_createHTMLDocument_Callback";
-  createHTMLDocument_Callback_2_(mthis, __arg_0, __arg_1) => createHTMLDocument_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createHTMLDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_createHTMLDocument_Callback";
-  createHTMLDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createHTMLDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static hasFeature_Callback_0(mthis) native "DOMImplementation_hasFeature_Callback";
-  hasFeature_Callback_0_(mthis) => hasFeature_Callback_0(mthis);
-
-  static hasFeature_Callback_1(mthis, __arg_0) native "DOMImplementation_hasFeature_Callback";
-  hasFeature_Callback_1_(mthis, __arg_0) => hasFeature_Callback_1(mthis, __arg_0);
-
-  static hasFeature_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_hasFeature_Callback";
-  hasFeature_Callback_2_(mthis, __arg_0, __arg_1) => hasFeature_Callback_2(mthis, __arg_0, __arg_1);
-
-  static hasFeature_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_hasFeature_Callback";
-  hasFeature_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasFeature_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static hasFeature_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMImplementation_hasFeature_Callback";
-  hasFeature_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => hasFeature_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  hasFeature_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("hasFeature", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDOMMatrix extends BlinkDOMMatrixReadOnly {
   static final instance = new BlinkDOMMatrix();
 
-  static a_Getter(mthis) native "DOMMatrix_a_Getter";
-  a_Getter_(mthis) => a_Getter(mthis);
+  a_Getter_(mthis) => mthis["a"];
 
-  static a_Setter(mthis, __arg_0) native "DOMMatrix_a_Setter";
-  a_Setter_(mthis, __arg_0) => a_Setter(mthis, __arg_0);
+  a_Setter_(mthis, __arg_0) => mthis["a"] = __arg_0;
 
-  static b_Getter(mthis) native "DOMMatrix_b_Getter";
-  b_Getter_(mthis) => b_Getter(mthis);
+  b_Getter_(mthis) => mthis["b"];
 
-  static b_Setter(mthis, __arg_0) native "DOMMatrix_b_Setter";
-  b_Setter_(mthis, __arg_0) => b_Setter(mthis, __arg_0);
+  b_Setter_(mthis, __arg_0) => mthis["b"] = __arg_0;
 
-  static c_Getter(mthis) native "DOMMatrix_c_Getter";
-  c_Getter_(mthis) => c_Getter(mthis);
+  c_Getter_(mthis) => mthis["c"];
 
-  static c_Setter(mthis, __arg_0) native "DOMMatrix_c_Setter";
-  c_Setter_(mthis, __arg_0) => c_Setter(mthis, __arg_0);
+  c_Setter_(mthis, __arg_0) => mthis["c"] = __arg_0;
 
-  static constructorCallback_0() native "DOMMatrix_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["DOMMatrix"], []);
 
-  static constructorCallback_1(__arg_0) native "DOMMatrix_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["DOMMatrix"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DOMMatrix_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  d_Getter_(mthis) => mthis["d"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMMatrix_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  d_Setter_(mthis, __arg_0) => mthis["d"] = __arg_0;
 
-  static d_Getter(mthis) native "DOMMatrix_d_Getter";
-  d_Getter_(mthis) => d_Getter(mthis);
+  e_Getter_(mthis) => mthis["e"];
 
-  static d_Setter(mthis, __arg_0) native "DOMMatrix_d_Setter";
-  d_Setter_(mthis, __arg_0) => d_Setter(mthis, __arg_0);
+  e_Setter_(mthis, __arg_0) => mthis["e"] = __arg_0;
 
-  static e_Getter(mthis) native "DOMMatrix_e_Getter";
-  e_Getter_(mthis) => e_Getter(mthis);
+  f_Getter_(mthis) => mthis["f"];
 
-  static e_Setter(mthis, __arg_0) native "DOMMatrix_e_Setter";
-  e_Setter_(mthis, __arg_0) => e_Setter(mthis, __arg_0);
+  f_Setter_(mthis, __arg_0) => mthis["f"] = __arg_0;
 
-  static f_Getter(mthis) native "DOMMatrix_f_Getter";
-  f_Getter_(mthis) => f_Getter(mthis);
+  m11_Getter_(mthis) => mthis["m11"];
 
-  static f_Setter(mthis, __arg_0) native "DOMMatrix_f_Setter";
-  f_Setter_(mthis, __arg_0) => f_Setter(mthis, __arg_0);
+  m11_Setter_(mthis, __arg_0) => mthis["m11"] = __arg_0;
 
-  static m11_Getter(mthis) native "DOMMatrix_m11_Getter";
-  m11_Getter_(mthis) => m11_Getter(mthis);
+  m12_Getter_(mthis) => mthis["m12"];
 
-  static m11_Setter(mthis, __arg_0) native "DOMMatrix_m11_Setter";
-  m11_Setter_(mthis, __arg_0) => m11_Setter(mthis, __arg_0);
+  m12_Setter_(mthis, __arg_0) => mthis["m12"] = __arg_0;
 
-  static m12_Getter(mthis) native "DOMMatrix_m12_Getter";
-  m12_Getter_(mthis) => m12_Getter(mthis);
+  m13_Getter_(mthis) => mthis["m13"];
 
-  static m12_Setter(mthis, __arg_0) native "DOMMatrix_m12_Setter";
-  m12_Setter_(mthis, __arg_0) => m12_Setter(mthis, __arg_0);
+  m13_Setter_(mthis, __arg_0) => mthis["m13"] = __arg_0;
 
-  static m13_Getter(mthis) native "DOMMatrix_m13_Getter";
-  m13_Getter_(mthis) => m13_Getter(mthis);
+  m14_Getter_(mthis) => mthis["m14"];
 
-  static m13_Setter(mthis, __arg_0) native "DOMMatrix_m13_Setter";
-  m13_Setter_(mthis, __arg_0) => m13_Setter(mthis, __arg_0);
+  m14_Setter_(mthis, __arg_0) => mthis["m14"] = __arg_0;
 
-  static m14_Getter(mthis) native "DOMMatrix_m14_Getter";
-  m14_Getter_(mthis) => m14_Getter(mthis);
+  m21_Getter_(mthis) => mthis["m21"];
 
-  static m14_Setter(mthis, __arg_0) native "DOMMatrix_m14_Setter";
-  m14_Setter_(mthis, __arg_0) => m14_Setter(mthis, __arg_0);
+  m21_Setter_(mthis, __arg_0) => mthis["m21"] = __arg_0;
 
-  static m21_Getter(mthis) native "DOMMatrix_m21_Getter";
-  m21_Getter_(mthis) => m21_Getter(mthis);
+  m22_Getter_(mthis) => mthis["m22"];
 
-  static m21_Setter(mthis, __arg_0) native "DOMMatrix_m21_Setter";
-  m21_Setter_(mthis, __arg_0) => m21_Setter(mthis, __arg_0);
+  m22_Setter_(mthis, __arg_0) => mthis["m22"] = __arg_0;
 
-  static m22_Getter(mthis) native "DOMMatrix_m22_Getter";
-  m22_Getter_(mthis) => m22_Getter(mthis);
+  m23_Getter_(mthis) => mthis["m23"];
 
-  static m22_Setter(mthis, __arg_0) native "DOMMatrix_m22_Setter";
-  m22_Setter_(mthis, __arg_0) => m22_Setter(mthis, __arg_0);
+  m23_Setter_(mthis, __arg_0) => mthis["m23"] = __arg_0;
 
-  static m23_Getter(mthis) native "DOMMatrix_m23_Getter";
-  m23_Getter_(mthis) => m23_Getter(mthis);
+  m24_Getter_(mthis) => mthis["m24"];
 
-  static m23_Setter(mthis, __arg_0) native "DOMMatrix_m23_Setter";
-  m23_Setter_(mthis, __arg_0) => m23_Setter(mthis, __arg_0);
+  m24_Setter_(mthis, __arg_0) => mthis["m24"] = __arg_0;
 
-  static m24_Getter(mthis) native "DOMMatrix_m24_Getter";
-  m24_Getter_(mthis) => m24_Getter(mthis);
+  m31_Getter_(mthis) => mthis["m31"];
 
-  static m24_Setter(mthis, __arg_0) native "DOMMatrix_m24_Setter";
-  m24_Setter_(mthis, __arg_0) => m24_Setter(mthis, __arg_0);
+  m31_Setter_(mthis, __arg_0) => mthis["m31"] = __arg_0;
 
-  static m31_Getter(mthis) native "DOMMatrix_m31_Getter";
-  m31_Getter_(mthis) => m31_Getter(mthis);
+  m32_Getter_(mthis) => mthis["m32"];
 
-  static m31_Setter(mthis, __arg_0) native "DOMMatrix_m31_Setter";
-  m31_Setter_(mthis, __arg_0) => m31_Setter(mthis, __arg_0);
+  m32_Setter_(mthis, __arg_0) => mthis["m32"] = __arg_0;
 
-  static m32_Getter(mthis) native "DOMMatrix_m32_Getter";
-  m32_Getter_(mthis) => m32_Getter(mthis);
+  m33_Getter_(mthis) => mthis["m33"];
 
-  static m32_Setter(mthis, __arg_0) native "DOMMatrix_m32_Setter";
-  m32_Setter_(mthis, __arg_0) => m32_Setter(mthis, __arg_0);
+  m33_Setter_(mthis, __arg_0) => mthis["m33"] = __arg_0;
 
-  static m33_Getter(mthis) native "DOMMatrix_m33_Getter";
-  m33_Getter_(mthis) => m33_Getter(mthis);
+  m34_Getter_(mthis) => mthis["m34"];
 
-  static m33_Setter(mthis, __arg_0) native "DOMMatrix_m33_Setter";
-  m33_Setter_(mthis, __arg_0) => m33_Setter(mthis, __arg_0);
+  m34_Setter_(mthis, __arg_0) => mthis["m34"] = __arg_0;
 
-  static m34_Getter(mthis) native "DOMMatrix_m34_Getter";
-  m34_Getter_(mthis) => m34_Getter(mthis);
+  m41_Getter_(mthis) => mthis["m41"];
 
-  static m34_Setter(mthis, __arg_0) native "DOMMatrix_m34_Setter";
-  m34_Setter_(mthis, __arg_0) => m34_Setter(mthis, __arg_0);
+  m41_Setter_(mthis, __arg_0) => mthis["m41"] = __arg_0;
 
-  static m41_Getter(mthis) native "DOMMatrix_m41_Getter";
-  m41_Getter_(mthis) => m41_Getter(mthis);
+  m42_Getter_(mthis) => mthis["m42"];
 
-  static m41_Setter(mthis, __arg_0) native "DOMMatrix_m41_Setter";
-  m41_Setter_(mthis, __arg_0) => m41_Setter(mthis, __arg_0);
-
-  static m42_Getter(mthis) native "DOMMatrix_m42_Getter";
-  m42_Getter_(mthis) => m42_Getter(mthis);
-
-  static m42_Setter(mthis, __arg_0) native "DOMMatrix_m42_Setter";
-  m42_Setter_(mthis, __arg_0) => m42_Setter(mthis, __arg_0);
-
-  static m43_Getter(mthis) native "DOMMatrix_m43_Getter";
-  m43_Getter_(mthis) => m43_Getter(mthis);
-
-  static m43_Setter(mthis, __arg_0) native "DOMMatrix_m43_Setter";
-  m43_Setter_(mthis, __arg_0) => m43_Setter(mthis, __arg_0);
-
-  static m44_Getter(mthis) native "DOMMatrix_m44_Getter";
-  m44_Getter_(mthis) => m44_Getter(mthis);
-
-  static m44_Setter(mthis, __arg_0) native "DOMMatrix_m44_Setter";
-  m44_Setter_(mthis, __arg_0) => m44_Setter(mthis, __arg_0);
-
-  static multiplySelf_Callback_0(mthis) native "DOMMatrix_multiplySelf_Callback";
-  multiplySelf_Callback_0_(mthis) => multiplySelf_Callback_0(mthis);
-
-  static multiplySelf_Callback_1(mthis, __arg_0) native "DOMMatrix_multiplySelf_Callback";
-  multiplySelf_Callback_1_(mthis, __arg_0) => multiplySelf_Callback_1(mthis, __arg_0);
-
-  static multiplySelf_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrix_multiplySelf_Callback";
-  multiplySelf_Callback_2_(mthis, __arg_0, __arg_1) => multiplySelf_Callback_2(mthis, __arg_0, __arg_1);
-
-  static multiplySelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrix_multiplySelf_Callback";
-  multiplySelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => multiplySelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static preMultiplySelf_Callback_0(mthis) native "DOMMatrix_preMultiplySelf_Callback";
-  preMultiplySelf_Callback_0_(mthis) => preMultiplySelf_Callback_0(mthis);
-
-  static preMultiplySelf_Callback_1(mthis, __arg_0) native "DOMMatrix_preMultiplySelf_Callback";
-  preMultiplySelf_Callback_1_(mthis, __arg_0) => preMultiplySelf_Callback_1(mthis, __arg_0);
-
-  static preMultiplySelf_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrix_preMultiplySelf_Callback";
-  preMultiplySelf_Callback_2_(mthis, __arg_0, __arg_1) => preMultiplySelf_Callback_2(mthis, __arg_0, __arg_1);
-
-  static preMultiplySelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrix_preMultiplySelf_Callback";
-  preMultiplySelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => preMultiplySelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  m42_Setter_(mthis, __arg_0) => mthis["m42"] = __arg_0;
 
-  static scale3dSelf_Callback_0(mthis) native "DOMMatrix_scale3dSelf_Callback";
-  scale3dSelf_Callback_0_(mthis) => scale3dSelf_Callback_0(mthis);
+  m43_Getter_(mthis) => mthis["m43"];
 
-  static scale3dSelf_Callback_1(mthis, __arg_0) native "DOMMatrix_scale3dSelf_Callback";
-  scale3dSelf_Callback_1_(mthis, __arg_0) => scale3dSelf_Callback_1(mthis, __arg_0);
+  m43_Setter_(mthis, __arg_0) => mthis["m43"] = __arg_0;
 
-  static scale3dSelf_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrix_scale3dSelf_Callback";
-  scale3dSelf_Callback_2_(mthis, __arg_0, __arg_1) => scale3dSelf_Callback_2(mthis, __arg_0, __arg_1);
+  m44_Getter_(mthis) => mthis["m44"];
 
-  static scale3dSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrix_scale3dSelf_Callback";
-  scale3dSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale3dSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  m44_Setter_(mthis, __arg_0) => mthis["m44"] = __arg_0;
 
-  static scale3dSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrix_scale3dSelf_Callback";
-  scale3dSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scale3dSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  multiplySelf_Callback_0_(mthis) => mthis.callMethod("multiplySelf", []);
 
-  static scale3dSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrix_scale3dSelf_Callback";
-  scale3dSelf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scale3dSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  multiplySelf_Callback_1_(mthis, __arg_0) => mthis.callMethod("multiplySelf", [__arg_0]);
 
-  static scale3dSelf_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMMatrix_scale3dSelf_Callback";
-  scale3dSelf_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => scale3dSelf_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  preMultiplySelf_Callback_0_(mthis) => mthis.callMethod("preMultiplySelf", []);
 
-  static scaleNonUniformSelf_Callback_0(mthis) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_0_(mthis) => scaleNonUniformSelf_Callback_0(mthis);
+  preMultiplySelf_Callback_1_(mthis, __arg_0) => mthis.callMethod("preMultiplySelf", [__arg_0]);
 
-  static scaleNonUniformSelf_Callback_1(mthis, __arg_0) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_1_(mthis, __arg_0) => scaleNonUniformSelf_Callback_1(mthis, __arg_0);
+  scale3dSelf_Callback_0_(mthis) => mthis.callMethod("scale3dSelf", []);
 
-  static scaleNonUniformSelf_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_2_(mthis, __arg_0, __arg_1) => scaleNonUniformSelf_Callback_2(mthis, __arg_0, __arg_1);
+  scale3dSelf_Callback_1_(mthis, __arg_0) => mthis.callMethod("scale3dSelf", [__arg_0]);
 
-  static scaleNonUniformSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scaleNonUniformSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scale3dSelf_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scale3dSelf", [__arg_0, __arg_1]);
 
-  static scaleNonUniformSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scaleNonUniformSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scale3dSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scale3dSelf", [__arg_0, __arg_1, __arg_2]);
 
-  static scaleNonUniformSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scaleNonUniformSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  scale3dSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("scale3dSelf", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static scaleNonUniformSelf_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_6_(mthis, __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);
+  scaleNonUniformSelf_Callback_0_(mthis) => mthis.callMethod("scaleNonUniformSelf", []);
 
-  static scaleNonUniformSelf_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => scaleNonUniformSelf_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  scaleNonUniformSelf_Callback_1_(mthis, __arg_0) => mthis.callMethod("scaleNonUniformSelf", [__arg_0]);
 
-  static scaleNonUniformSelf_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "DOMMatrix_scaleNonUniformSelf_Callback";
-  scaleNonUniformSelf_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => scaleNonUniformSelf_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  scaleNonUniformSelf_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scaleNonUniformSelf", [__arg_0, __arg_1]);
 
-  static scaleSelf_Callback_0(mthis) native "DOMMatrix_scaleSelf_Callback";
-  scaleSelf_Callback_0_(mthis) => scaleSelf_Callback_0(mthis);
+  scaleNonUniformSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2]);
 
-  static scaleSelf_Callback_1(mthis, __arg_0) native "DOMMatrix_scaleSelf_Callback";
-  scaleSelf_Callback_1_(mthis, __arg_0) => scaleSelf_Callback_1(mthis, __arg_0);
+  scaleNonUniformSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static scaleSelf_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrix_scaleSelf_Callback";
-  scaleSelf_Callback_2_(mthis, __arg_0, __arg_1) => scaleSelf_Callback_2(mthis, __arg_0, __arg_1);
+  scaleNonUniformSelf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static scaleSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrix_scaleSelf_Callback";
-  scaleSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scaleSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scaleNonUniformSelf_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("scaleNonUniformSelf", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static scaleSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrix_scaleSelf_Callback";
-  scaleSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scaleSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scaleSelf_Callback_0_(mthis) => mthis.callMethod("scaleSelf", []);
 
-  static scaleSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrix_scaleSelf_Callback";
-  scaleSelf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scaleSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  scaleSelf_Callback_1_(mthis, __arg_0) => mthis.callMethod("scaleSelf", [__arg_0]);
 
-  static translateSelf_Callback_0(mthis) native "DOMMatrix_translateSelf_Callback";
-  translateSelf_Callback_0_(mthis) => translateSelf_Callback_0(mthis);
+  scaleSelf_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scaleSelf", [__arg_0, __arg_1]);
 
-  static translateSelf_Callback_1(mthis, __arg_0) native "DOMMatrix_translateSelf_Callback";
-  translateSelf_Callback_1_(mthis, __arg_0) => translateSelf_Callback_1(mthis, __arg_0);
+  scaleSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scaleSelf", [__arg_0, __arg_1, __arg_2]);
 
-  static translateSelf_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrix_translateSelf_Callback";
-  translateSelf_Callback_2_(mthis, __arg_0, __arg_1) => translateSelf_Callback_2(mthis, __arg_0, __arg_1);
+  translateSelf_Callback_0_(mthis) => mthis.callMethod("translateSelf", []);
 
-  static translateSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrix_translateSelf_Callback";
-  translateSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translateSelf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  translateSelf_Callback_1_(mthis, __arg_0) => mthis.callMethod("translateSelf", [__arg_0]);
 
-  static translateSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrix_translateSelf_Callback";
-  translateSelf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translateSelf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  translateSelf_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("translateSelf", [__arg_0, __arg_1]);
 
-  static translateSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrix_translateSelf_Callback";
-  translateSelf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => translateSelf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  translateSelf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("translateSelf", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDOMMatrixReadOnly {
   static final instance = new BlinkDOMMatrixReadOnly();
 
-  static a_Getter(mthis) native "DOMMatrixReadOnly_a_Getter";
-  a_Getter_(mthis) => a_Getter(mthis);
+  a_Getter_(mthis) => mthis["a"];
 
-  static b_Getter(mthis) native "DOMMatrixReadOnly_b_Getter";
-  b_Getter_(mthis) => b_Getter(mthis);
+  b_Getter_(mthis) => mthis["b"];
 
-  static c_Getter(mthis) native "DOMMatrixReadOnly_c_Getter";
-  c_Getter_(mthis) => c_Getter(mthis);
+  c_Getter_(mthis) => mthis["c"];
 
-  static d_Getter(mthis) native "DOMMatrixReadOnly_d_Getter";
-  d_Getter_(mthis) => d_Getter(mthis);
+  d_Getter_(mthis) => mthis["d"];
 
-  static e_Getter(mthis) native "DOMMatrixReadOnly_e_Getter";
-  e_Getter_(mthis) => e_Getter(mthis);
+  e_Getter_(mthis) => mthis["e"];
 
-  static f_Getter(mthis) native "DOMMatrixReadOnly_f_Getter";
-  f_Getter_(mthis) => f_Getter(mthis);
+  f_Getter_(mthis) => mthis["f"];
 
-  static is2D_Getter(mthis) native "DOMMatrixReadOnly_is2D_Getter";
-  is2D_Getter_(mthis) => is2D_Getter(mthis);
+  is2D_Getter_(mthis) => mthis["is2D"];
 
-  static isIdentity_Getter(mthis) native "DOMMatrixReadOnly_isIdentity_Getter";
-  isIdentity_Getter_(mthis) => isIdentity_Getter(mthis);
+  isIdentity_Getter_(mthis) => mthis["isIdentity"];
 
-  static m11_Getter(mthis) native "DOMMatrixReadOnly_m11_Getter";
-  m11_Getter_(mthis) => m11_Getter(mthis);
+  m11_Getter_(mthis) => mthis["m11"];
 
-  static m12_Getter(mthis) native "DOMMatrixReadOnly_m12_Getter";
-  m12_Getter_(mthis) => m12_Getter(mthis);
+  m12_Getter_(mthis) => mthis["m12"];
 
-  static m13_Getter(mthis) native "DOMMatrixReadOnly_m13_Getter";
-  m13_Getter_(mthis) => m13_Getter(mthis);
+  m13_Getter_(mthis) => mthis["m13"];
 
-  static m14_Getter(mthis) native "DOMMatrixReadOnly_m14_Getter";
-  m14_Getter_(mthis) => m14_Getter(mthis);
+  m14_Getter_(mthis) => mthis["m14"];
 
-  static m21_Getter(mthis) native "DOMMatrixReadOnly_m21_Getter";
-  m21_Getter_(mthis) => m21_Getter(mthis);
+  m21_Getter_(mthis) => mthis["m21"];
 
-  static m22_Getter(mthis) native "DOMMatrixReadOnly_m22_Getter";
-  m22_Getter_(mthis) => m22_Getter(mthis);
+  m22_Getter_(mthis) => mthis["m22"];
 
-  static m23_Getter(mthis) native "DOMMatrixReadOnly_m23_Getter";
-  m23_Getter_(mthis) => m23_Getter(mthis);
+  m23_Getter_(mthis) => mthis["m23"];
 
-  static m24_Getter(mthis) native "DOMMatrixReadOnly_m24_Getter";
-  m24_Getter_(mthis) => m24_Getter(mthis);
+  m24_Getter_(mthis) => mthis["m24"];
 
-  static m31_Getter(mthis) native "DOMMatrixReadOnly_m31_Getter";
-  m31_Getter_(mthis) => m31_Getter(mthis);
+  m31_Getter_(mthis) => mthis["m31"];
 
-  static m32_Getter(mthis) native "DOMMatrixReadOnly_m32_Getter";
-  m32_Getter_(mthis) => m32_Getter(mthis);
+  m32_Getter_(mthis) => mthis["m32"];
 
-  static m33_Getter(mthis) native "DOMMatrixReadOnly_m33_Getter";
-  m33_Getter_(mthis) => m33_Getter(mthis);
+  m33_Getter_(mthis) => mthis["m33"];
 
-  static m34_Getter(mthis) native "DOMMatrixReadOnly_m34_Getter";
-  m34_Getter_(mthis) => m34_Getter(mthis);
+  m34_Getter_(mthis) => mthis["m34"];
 
-  static m41_Getter(mthis) native "DOMMatrixReadOnly_m41_Getter";
-  m41_Getter_(mthis) => m41_Getter(mthis);
+  m41_Getter_(mthis) => mthis["m41"];
 
-  static m42_Getter(mthis) native "DOMMatrixReadOnly_m42_Getter";
-  m42_Getter_(mthis) => m42_Getter(mthis);
+  m42_Getter_(mthis) => mthis["m42"];
 
-  static m43_Getter(mthis) native "DOMMatrixReadOnly_m43_Getter";
-  m43_Getter_(mthis) => m43_Getter(mthis);
+  m43_Getter_(mthis) => mthis["m43"];
 
-  static m44_Getter(mthis) native "DOMMatrixReadOnly_m44_Getter";
-  m44_Getter_(mthis) => m44_Getter(mthis);
+  m44_Getter_(mthis) => mthis["m44"];
 
-  static multiply_Callback_0(mthis) native "DOMMatrixReadOnly_multiply_Callback";
-  multiply_Callback_0_(mthis) => multiply_Callback_0(mthis);
+  multiply_Callback_0_(mthis) => mthis.callMethod("multiply", []);
 
-  static multiply_Callback_1(mthis, __arg_0) native "DOMMatrixReadOnly_multiply_Callback";
-  multiply_Callback_1_(mthis, __arg_0) => multiply_Callback_1(mthis, __arg_0);
+  multiply_Callback_1_(mthis, __arg_0) => mthis.callMethod("multiply", [__arg_0]);
 
-  static multiply_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrixReadOnly_multiply_Callback";
-  multiply_Callback_2_(mthis, __arg_0, __arg_1) => multiply_Callback_2(mthis, __arg_0, __arg_1);
+  scale3d_Callback_0_(mthis) => mthis.callMethod("scale3d", []);
 
-  static multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrixReadOnly_multiply_Callback";
-  multiply_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scale3d_Callback_1_(mthis, __arg_0) => mthis.callMethod("scale3d", [__arg_0]);
 
-  static scale3d_Callback_0(mthis) native "DOMMatrixReadOnly_scale3d_Callback";
-  scale3d_Callback_0_(mthis) => scale3d_Callback_0(mthis);
+  scale3d_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scale3d", [__arg_0, __arg_1]);
 
-  static scale3d_Callback_1(mthis, __arg_0) native "DOMMatrixReadOnly_scale3d_Callback";
-  scale3d_Callback_1_(mthis, __arg_0) => scale3d_Callback_1(mthis, __arg_0);
+  scale3d_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scale3d", [__arg_0, __arg_1, __arg_2]);
 
-  static scale3d_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrixReadOnly_scale3d_Callback";
-  scale3d_Callback_2_(mthis, __arg_0, __arg_1) => scale3d_Callback_2(mthis, __arg_0, __arg_1);
+  scale3d_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("scale3d", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static scale3d_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrixReadOnly_scale3d_Callback";
-  scale3d_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale3d_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scaleNonUniform_Callback_0_(mthis) => mthis.callMethod("scaleNonUniform", []);
 
-  static scale3d_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrixReadOnly_scale3d_Callback";
-  scale3d_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scale3d_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scaleNonUniform_Callback_1_(mthis, __arg_0) => mthis.callMethod("scaleNonUniform", [__arg_0]);
 
-  static scale3d_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrixReadOnly_scale3d_Callback";
-  scale3d_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scale3d_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scaleNonUniform", [__arg_0, __arg_1]);
 
-  static scale3d_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMMatrixReadOnly_scale3d_Callback";
-  scale3d_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => scale3d_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  scaleNonUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scaleNonUniform", [__arg_0, __arg_1, __arg_2]);
 
-  static scaleNonUniform_Callback_0(mthis) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_0_(mthis) => scaleNonUniform_Callback_0(mthis);
+  scaleNonUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static scaleNonUniform_Callback_1(mthis, __arg_0) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_1_(mthis, __arg_0) => scaleNonUniform_Callback_1(mthis, __arg_0);
+  scaleNonUniform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static scaleNonUniform_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => scaleNonUniform_Callback_2(mthis, __arg_0, __arg_1);
+  scaleNonUniform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("scaleNonUniform", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static scaleNonUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scaleNonUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scale_Callback_0_(mthis) => mthis.callMethod("scale", []);
 
-  static scaleNonUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scaleNonUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scale_Callback_1_(mthis, __arg_0) => mthis.callMethod("scale", [__arg_0]);
 
-  static scaleNonUniform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scaleNonUniform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scale", [__arg_0, __arg_1]);
 
-  static scaleNonUniform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_6_(mthis, __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);
+  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scale", [__arg_0, __arg_1, __arg_2]);
 
-  static scaleNonUniform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => scaleNonUniform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  toFloat32Array_Callback_0_(mthis) => mthis.callMethod("toFloat32Array", []);
 
-  static scaleNonUniform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "DOMMatrixReadOnly_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => scaleNonUniform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  toFloat64Array_Callback_0_(mthis) => mthis.callMethod("toFloat64Array", []);
 
-  static scale_Callback_0(mthis) native "DOMMatrixReadOnly_scale_Callback";
-  scale_Callback_0_(mthis) => scale_Callback_0(mthis);
+  translate_Callback_0_(mthis) => mthis.callMethod("translate", []);
 
-  static scale_Callback_1(mthis, __arg_0) native "DOMMatrixReadOnly_scale_Callback";
-  scale_Callback_1_(mthis, __arg_0) => scale_Callback_1(mthis, __arg_0);
+  translate_Callback_1_(mthis, __arg_0) => mthis.callMethod("translate", [__arg_0]);
 
-  static scale_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrixReadOnly_scale_Callback";
-  scale_Callback_2_(mthis, __arg_0, __arg_1) => scale_Callback_2(mthis, __arg_0, __arg_1);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("translate", [__arg_0, __arg_1]);
 
-  static scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrixReadOnly_scale_Callback";
-  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrixReadOnly_scale_Callback";
-  scale_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static scale_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrixReadOnly_scale_Callback";
-  scale_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scale_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static toFloat32Array_Callback_0(mthis) native "DOMMatrixReadOnly_toFloat32Array_Callback";
-  toFloat32Array_Callback_0_(mthis) => toFloat32Array_Callback_0(mthis);
-
-  static toFloat32Array_Callback_1(mthis, __arg_0) native "DOMMatrixReadOnly_toFloat32Array_Callback";
-  toFloat32Array_Callback_1_(mthis, __arg_0) => toFloat32Array_Callback_1(mthis, __arg_0);
-
-  static toFloat32Array_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrixReadOnly_toFloat32Array_Callback";
-  toFloat32Array_Callback_2_(mthis, __arg_0, __arg_1) => toFloat32Array_Callback_2(mthis, __arg_0, __arg_1);
-
-  static toFloat64Array_Callback_0(mthis) native "DOMMatrixReadOnly_toFloat64Array_Callback";
-  toFloat64Array_Callback_0_(mthis) => toFloat64Array_Callback_0(mthis);
-
-  static toFloat64Array_Callback_1(mthis, __arg_0) native "DOMMatrixReadOnly_toFloat64Array_Callback";
-  toFloat64Array_Callback_1_(mthis, __arg_0) => toFloat64Array_Callback_1(mthis, __arg_0);
-
-  static toFloat64Array_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrixReadOnly_toFloat64Array_Callback";
-  toFloat64Array_Callback_2_(mthis, __arg_0, __arg_1) => toFloat64Array_Callback_2(mthis, __arg_0, __arg_1);
-
-  static translate_Callback_0(mthis) native "DOMMatrixReadOnly_translate_Callback";
-  translate_Callback_0_(mthis) => translate_Callback_0(mthis);
-
-  static translate_Callback_1(mthis, __arg_0) native "DOMMatrixReadOnly_translate_Callback";
-  translate_Callback_1_(mthis, __arg_0) => translate_Callback_1(mthis, __arg_0);
-
-  static translate_Callback_2(mthis, __arg_0, __arg_1) native "DOMMatrixReadOnly_translate_Callback";
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => translate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMMatrixReadOnly_translate_Callback";
-  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMMatrixReadOnly_translate_Callback";
-  translate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static translate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMMatrixReadOnly_translate_Callback";
-  translate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => translate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("translate", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDOMParser {
   static final instance = new BlinkDOMParser();
 
-  static constructorCallback_0() native "DOMParser_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["DOMParser"], []);
 
-  static constructorCallback_1(__arg_0) native "DOMParser_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  parseFromString_Callback_0_(mthis) => mthis.callMethod("parseFromString", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DOMParser_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  parseFromString_Callback_1_(mthis, __arg_0) => mthis.callMethod("parseFromString", [__arg_0]);
 
-  static parseFromString_Callback_0(mthis) native "DOMParser_parseFromString_Callback";
-  parseFromString_Callback_0_(mthis) => parseFromString_Callback_0(mthis);
-
-  static parseFromString_Callback_1(mthis, __arg_0) native "DOMParser_parseFromString_Callback";
-  parseFromString_Callback_1_(mthis, __arg_0) => parseFromString_Callback_1(mthis, __arg_0);
-
-  static parseFromString_Callback_2(mthis, __arg_0, __arg_1) native "DOMParser_parseFromString_Callback";
-  parseFromString_Callback_2_(mthis, __arg_0, __arg_1) => parseFromString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static parseFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMParser_parseFromString_Callback";
-  parseFromString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => parseFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static parseFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMParser_parseFromString_Callback";
-  parseFromString_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => parseFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  parseFromString_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("parseFromString", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDOMPoint extends BlinkDOMPointReadOnly {
   static final instance = new BlinkDOMPoint();
 
-  static constructorCallback_0() native "DOMPoint_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["DOMPoint"], []);
 
-  static constructorCallback_1(__arg_0) native "DOMPoint_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["DOMPoint"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DOMPoint_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["DOMPoint"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMPoint_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["DOMPoint"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMPoint_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(js.context["DOMPoint"], [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMPoint_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  w_Getter_(mthis) => mthis["w"];
 
-  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMPoint_constructorCallback";
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  w_Setter_(mthis, __arg_0) => mthis["w"] = __arg_0;
 
-  static w_Getter(mthis) native "DOMPoint_w_Getter";
-  w_Getter_(mthis) => w_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static w_Setter(mthis, __arg_0) native "DOMPoint_w_Setter";
-  w_Setter_(mthis, __arg_0) => w_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static x_Getter(mthis) native "DOMPoint_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static x_Setter(mthis, __arg_0) native "DOMPoint_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
-  static y_Getter(mthis) native "DOMPoint_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  z_Getter_(mthis) => mthis["z"];
 
-  static y_Setter(mthis, __arg_0) native "DOMPoint_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
-
-  static z_Getter(mthis) native "DOMPoint_z_Getter";
-  z_Getter_(mthis) => z_Getter(mthis);
-
-  static z_Setter(mthis, __arg_0) native "DOMPoint_z_Setter";
-  z_Setter_(mthis, __arg_0) => z_Setter(mthis, __arg_0);
+  z_Setter_(mthis, __arg_0) => mthis["z"] = __arg_0;
 
 }
 
 class BlinkDOMPointReadOnly {
   static final instance = new BlinkDOMPointReadOnly();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DOMPointReadOnly_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["DOMPointReadOnly"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMPointReadOnly_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["DOMPointReadOnly"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMPointReadOnly_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(js.context["DOMPointReadOnly"], [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMPointReadOnly_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  w_Getter_(mthis) => mthis["w"];
 
-  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMPointReadOnly_constructorCallback";
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  x_Getter_(mthis) => mthis["x"];
 
-  static w_Getter(mthis) native "DOMPointReadOnly_w_Getter";
-  w_Getter_(mthis) => w_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static x_Getter(mthis) native "DOMPointReadOnly_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "DOMPointReadOnly_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
-
-  static z_Getter(mthis) native "DOMPointReadOnly_z_Getter";
-  z_Getter_(mthis) => z_Getter(mthis);
+  z_Getter_(mthis) => mthis["z"];
 
 }
 
 class BlinkDOMRect extends BlinkDOMRectReadOnly {
   static final instance = new BlinkDOMRect();
 
-  static constructorCallback_0() native "DOMRect_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["DOMRect"], []);
 
-  static constructorCallback_1(__arg_0) native "DOMRect_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["DOMRect"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DOMRect_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["DOMRect"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMRect_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["DOMRect"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMRect_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(js.context["DOMRect"], [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMRect_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  height_Getter_(mthis) => mthis["height"];
 
-  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMRect_constructorCallback";
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "DOMRect_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static height_Setter(mthis, __arg_0) native "DOMRect_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
-  static width_Getter(mthis) native "DOMRect_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Setter(mthis, __arg_0) native "DOMRect_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static x_Getter(mthis) native "DOMRect_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static x_Setter(mthis, __arg_0) native "DOMRect_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
-
-  static y_Getter(mthis) native "DOMRect_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
-
-  static y_Setter(mthis, __arg_0) native "DOMRect_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkDOMRectReadOnly {
   static final instance = new BlinkDOMRectReadOnly();
 
-  static bottom_Getter(mthis) native "DOMRectReadOnly_bottom_Getter";
-  bottom_Getter_(mthis) => bottom_Getter(mthis);
+  bottom_Getter_(mthis) => mthis["bottom"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DOMRectReadOnly_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["DOMRectReadOnly"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMRectReadOnly_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["DOMRectReadOnly"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMRectReadOnly_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(js.context["DOMRectReadOnly"], [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMRectReadOnly_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  height_Getter_(mthis) => mthis["height"];
 
-  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMRectReadOnly_constructorCallback";
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  left_Getter_(mthis) => mthis["left"];
 
-  static height_Getter(mthis) native "DOMRectReadOnly_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  right_Getter_(mthis) => mthis["right"];
 
-  static left_Getter(mthis) native "DOMRectReadOnly_left_Getter";
-  left_Getter_(mthis) => left_Getter(mthis);
+  top_Getter_(mthis) => mthis["top"];
 
-  static right_Getter(mthis) native "DOMRectReadOnly_right_Getter";
-  right_Getter_(mthis) => right_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static top_Getter(mthis) native "DOMRectReadOnly_top_Getter";
-  top_Getter_(mthis) => top_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Getter(mthis) native "DOMRectReadOnly_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static x_Getter(mthis) native "DOMRectReadOnly_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "DOMRectReadOnly_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkDOMSettableTokenList extends BlinkDOMTokenList {
   static final instance = new BlinkDOMSettableTokenList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "DOMSettableTokenList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static value_Getter(mthis) native "DOMSettableTokenList_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "DOMSettableTokenList_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkDOMStringList {
   static final instance = new BlinkDOMStringList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "DOMStringList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static contains_Callback_0(mthis) native "DOMStringList_contains_Callback";
-  contains_Callback_0_(mthis) => contains_Callback_0(mthis);
+  contains_Callback_0_(mthis) => mthis.callMethod("contains", []);
 
-  static contains_Callback_1(mthis, __arg_0) native "DOMStringList_contains_Callback";
-  contains_Callback_1_(mthis, __arg_0) => contains_Callback_1(mthis, __arg_0);
+  contains_Callback_1_(mthis, __arg_0) => mthis.callMethod("contains", [__arg_0]);
 
-  static contains_Callback_2(mthis, __arg_0, __arg_1) native "DOMStringList_contains_Callback";
-  contains_Callback_2_(mthis, __arg_0, __arg_1) => contains_Callback_2(mthis, __arg_0, __arg_1);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMStringList_contains_Callback";
-  contains_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_0(mthis) native "DOMStringList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
-
-  static item_Callback_1(mthis, __arg_0) native "DOMStringList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
-
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "DOMStringList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMStringList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "DOMStringList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkDOMStringMap {
   static final instance = new BlinkDOMStringMap();
 
-  static $__delete___Callback_1(mthis, __arg_0) native "DOMStringMap___delete___Callback";
-  $__delete___Callback_1_(mthis, __arg_0) => $__delete___Callback_1(mthis, __arg_0);
+  $__delete___Callback_1_(mthis, __arg_0) => mthis.callMethod("__delete__", [__arg_0]);
 
-  static $__getter___Callback_1(mthis, __arg_0) native "DOMStringMap___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "DOMStringMap___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDOMTokenList {
   static final instance = new BlinkDOMTokenList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "DOMTokenList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static add_Callback_0(mthis) native "DOMTokenList_add_Callback";
-  add_Callback_0_(mthis) => add_Callback_0(mthis);
+  add_Callback_0_(mthis) => mthis.callMethod("add", []);
 
-  static add_Callback_1(mthis, __arg_0) native "DOMTokenList_add_Callback";
-  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+  add_Callback_1_(mthis, __arg_0) => mthis.callMethod("add", [__arg_0]);
 
-  static add_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_add_Callback";
-  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+  contains_Callback_0_(mthis) => mthis.callMethod("contains", []);
 
-  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_add_Callback";
-  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  contains_Callback_1_(mthis, __arg_0) => mthis.callMethod("contains", [__arg_0]);
 
-  static contains_Callback_0(mthis) native "DOMTokenList_contains_Callback";
-  contains_Callback_0_(mthis) => contains_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static contains_Callback_1(mthis, __arg_0) native "DOMTokenList_contains_Callback";
-  contains_Callback_1_(mthis, __arg_0) => contains_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static contains_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_contains_Callback";
-  contains_Callback_2_(mthis, __arg_0, __arg_1) => contains_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_contains_Callback";
-  contains_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  remove_Callback_0_(mthis) => mthis.callMethod("remove", []);
 
-  static item_Callback_0(mthis) native "DOMTokenList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  remove_Callback_1_(mthis, __arg_0) => mthis.callMethod("remove", [__arg_0]);
 
-  static item_Callback_1(mthis, __arg_0) native "DOMTokenList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  toggle_Callback_0_(mthis) => mthis.callMethod("toggle", []);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  toggle_Callback_1_(mthis, __arg_0) => mthis.callMethod("toggle", [__arg_0]);
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "DOMTokenList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static remove_Callback_0(mthis) native "DOMTokenList_remove_Callback";
-  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
-
-  static remove_Callback_1(mthis, __arg_0) native "DOMTokenList_remove_Callback";
-  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
-
-  static remove_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_remove_Callback";
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
-
-  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_remove_Callback";
-  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static toggle_Callback_0(mthis) native "DOMTokenList_toggle_Callback";
-  toggle_Callback_0_(mthis) => toggle_Callback_0(mthis);
-
-  static toggle_Callback_1(mthis, __arg_0) native "DOMTokenList_toggle_Callback";
-  toggle_Callback_1_(mthis, __arg_0) => toggle_Callback_1(mthis, __arg_0);
-
-  static toggle_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_toggle_Callback";
-  toggle_Callback_2_(mthis, __arg_0, __arg_1) => toggle_Callback_2(mthis, __arg_0, __arg_1);
-
-  static toggle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_toggle_Callback";
-  toggle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => toggle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static toggle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMTokenList_toggle_Callback";
-  toggle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => toggle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  toggle_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("toggle", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDataTransfer {
   static final instance = new BlinkDataTransfer();
 
-  static clearData_Callback_0(mthis) native "DataTransfer_clearData_Callback";
-  clearData_Callback_0_(mthis) => clearData_Callback_0(mthis);
+  clearData_Callback_0_(mthis) => mthis.callMethod("clearData", []);
 
-  static clearData_Callback_1(mthis, __arg_0) native "DataTransfer_clearData_Callback";
-  clearData_Callback_1_(mthis, __arg_0) => clearData_Callback_1(mthis, __arg_0);
+  clearData_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearData", [__arg_0]);
 
-  static clearData_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_clearData_Callback";
-  clearData_Callback_2_(mthis, __arg_0, __arg_1) => clearData_Callback_2(mthis, __arg_0, __arg_1);
+  dropEffect_Getter_(mthis) => mthis["dropEffect"];
 
-  static clearData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_clearData_Callback";
-  clearData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  dropEffect_Setter_(mthis, __arg_0) => mthis["dropEffect"] = __arg_0;
 
-  static dropEffect_Getter(mthis) native "DataTransfer_dropEffect_Getter";
-  dropEffect_Getter_(mthis) => dropEffect_Getter(mthis);
+  effectAllowed_Getter_(mthis) => mthis["effectAllowed"];
 
-  static dropEffect_Setter(mthis, __arg_0) native "DataTransfer_dropEffect_Setter";
-  dropEffect_Setter_(mthis, __arg_0) => dropEffect_Setter(mthis, __arg_0);
+  effectAllowed_Setter_(mthis, __arg_0) => mthis["effectAllowed"] = __arg_0;
 
-  static effectAllowed_Getter(mthis) native "DataTransfer_effectAllowed_Getter";
-  effectAllowed_Getter_(mthis) => effectAllowed_Getter(mthis);
+  files_Getter_(mthis) => mthis["files"];
 
-  static effectAllowed_Setter(mthis, __arg_0) native "DataTransfer_effectAllowed_Setter";
-  effectAllowed_Setter_(mthis, __arg_0) => effectAllowed_Setter(mthis, __arg_0);
+  getData_Callback_0_(mthis) => mthis.callMethod("getData", []);
 
-  static files_Getter(mthis) native "DataTransfer_files_Getter";
-  files_Getter_(mthis) => files_Getter(mthis);
+  getData_Callback_1_(mthis, __arg_0) => mthis.callMethod("getData", [__arg_0]);
 
-  static getData_Callback_0(mthis) native "DataTransfer_getData_Callback";
-  getData_Callback_0_(mthis) => getData_Callback_0(mthis);
+  items_Getter_(mthis) => mthis["items"];
 
-  static getData_Callback_1(mthis, __arg_0) native "DataTransfer_getData_Callback";
-  getData_Callback_1_(mthis, __arg_0) => getData_Callback_1(mthis, __arg_0);
+  setData_Callback_0_(mthis) => mthis.callMethod("setData", []);
 
-  static getData_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_getData_Callback";
-  getData_Callback_2_(mthis, __arg_0, __arg_1) => getData_Callback_2(mthis, __arg_0, __arg_1);
+  setData_Callback_1_(mthis, __arg_0) => mthis.callMethod("setData", [__arg_0]);
 
-  static getData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_getData_Callback";
-  getData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setData", [__arg_0, __arg_1]);
 
-  static items_Getter(mthis) native "DataTransfer_items_Getter";
-  items_Getter_(mthis) => items_Getter(mthis);
+  setDragImage_Callback_1_(mthis, __arg_0) => mthis.callMethod("setDragImage", [__arg_0]);
 
-  static setData_Callback_0(mthis) native "DataTransfer_setData_Callback";
-  setData_Callback_0_(mthis) => setData_Callback_0(mthis);
+  setDragImage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setDragImage", [__arg_0, __arg_1]);
 
-  static setData_Callback_1(mthis, __arg_0) native "DataTransfer_setData_Callback";
-  setData_Callback_1_(mthis, __arg_0) => setData_Callback_1(mthis, __arg_0);
+  setDragImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setDragImage", [__arg_0, __arg_1, __arg_2]);
 
-  static setData_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_setData_Callback";
-  setData_Callback_2_(mthis, __arg_0, __arg_1) => setData_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_setData_Callback";
-  setData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DataTransfer_setData_Callback";
-  setData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setDragImage_Callback_1(mthis, __arg_0) native "DataTransfer_setDragImage_Callback";
-  setDragImage_Callback_1_(mthis, __arg_0) => setDragImage_Callback_1(mthis, __arg_0);
-
-  static setDragImage_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_setDragImage_Callback";
-  setDragImage_Callback_2_(mthis, __arg_0, __arg_1) => setDragImage_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setDragImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_setDragImage_Callback";
-  setDragImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setDragImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setDragImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DataTransfer_setDragImage_Callback";
-  setDragImage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setDragImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setDragImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DataTransfer_setDragImage_Callback";
-  setDragImage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setDragImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static types_Getter(mthis) native "DataTransfer_types_Getter";
-  types_Getter_(mthis) => types_Getter(mthis);
+  types_Getter_(mthis) => mthis["types"];
 
 }
 
 class BlinkDataTransferItem {
   static final instance = new BlinkDataTransferItem();
 
-  static getAsFile_Callback_0(mthis) native "DataTransferItem_getAsFile_Callback";
-  getAsFile_Callback_0_(mthis) => getAsFile_Callback_0(mthis);
+  getAsFile_Callback_0_(mthis) => mthis.callMethod("getAsFile", []);
 
-  static getAsFile_Callback_1(mthis, __arg_0) native "DataTransferItem_getAsFile_Callback";
-  getAsFile_Callback_1_(mthis, __arg_0) => getAsFile_Callback_1(mthis, __arg_0);
+  getAsString_Callback_0_(mthis) => mthis.callMethod("getAsString", []);
 
-  static getAsFile_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItem_getAsFile_Callback";
-  getAsFile_Callback_2_(mthis, __arg_0, __arg_1) => getAsFile_Callback_2(mthis, __arg_0, __arg_1);
+  getAsString_Callback_1_(mthis, __arg_0) => mthis.callMethod("getAsString", [__arg_0]);
 
-  static getAsString_Callback_0(mthis) native "DataTransferItem_getAsString_Callback";
-  getAsString_Callback_0_(mthis) => getAsString_Callback_0(mthis);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static getAsString_Callback_1(mthis, __arg_0) native "DataTransferItem_getAsString_Callback";
-  getAsString_Callback_1_(mthis, __arg_0) => getAsString_Callback_1(mthis, __arg_0);
+  type_Getter_(mthis) => mthis["type"];
 
-  static getAsString_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItem_getAsString_Callback";
-  getAsString_Callback_2_(mthis, __arg_0, __arg_1) => getAsString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getAsString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransferItem_getAsString_Callback";
-  getAsString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAsString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static kind_Getter(mthis) native "DataTransferItem_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
-
-  static type_Getter(mthis) native "DataTransferItem_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static webkitGetAsEntry_Callback_0(mthis) native "DataTransferItem_webkitGetAsEntry_Callback";
-  webkitGetAsEntry_Callback_0_(mthis) => webkitGetAsEntry_Callback_0(mthis);
-
-  static webkitGetAsEntry_Callback_1(mthis, __arg_0) native "DataTransferItem_webkitGetAsEntry_Callback";
-  webkitGetAsEntry_Callback_1_(mthis, __arg_0) => webkitGetAsEntry_Callback_1(mthis, __arg_0);
-
-  static webkitGetAsEntry_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItem_webkitGetAsEntry_Callback";
-  webkitGetAsEntry_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetAsEntry_Callback_2(mthis, __arg_0, __arg_1);
+  webkitGetAsEntry_Callback_0_(mthis) => mthis.callMethod("webkitGetAsEntry", []);
 
 }
 
 class BlinkDataTransferItemList {
   static final instance = new BlinkDataTransferItemList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "DataTransferItemList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static add_Callback_0(mthis) native "DataTransferItemList_add_Callback";
-  add_Callback_0_(mthis) => add_Callback_0(mthis);
+  add_Callback_0_(mthis) => mthis.callMethod("add", []);
 
-  static add_Callback_1(mthis, __arg_0) native "DataTransferItemList_add_Callback";
-  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+  add_Callback_1_(mthis, __arg_0) => mthis.callMethod("add", [__arg_0]);
 
-  static add_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItemList_add_Callback";
-  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("add", [__arg_0, __arg_1]);
 
-  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransferItemList_add_Callback";
-  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DataTransferItemList_add_Callback";
-  add_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  length_Getter_(mthis) => mthis["length"];
 
-  static clear_Callback_0(mthis) native "DataTransferItemList_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  remove_Callback_0_(mthis) => mthis.callMethod("remove", []);
 
-  static clear_Callback_1(mthis, __arg_0) native "DataTransferItemList_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
-
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItemList_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
-
-  static length_Getter(mthis) native "DataTransferItemList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static remove_Callback_0(mthis) native "DataTransferItemList_remove_Callback";
-  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
-
-  static remove_Callback_1(mthis, __arg_0) native "DataTransferItemList_remove_Callback";
-  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
-
-  static remove_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItemList_remove_Callback";
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
-
-  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransferItemList_remove_Callback";
-  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  remove_Callback_1_(mthis, __arg_0) => mthis.callMethod("remove", [__arg_0]);
 
 }
 
 class BlinkDatabase {
   static final instance = new BlinkDatabase();
 
-  static changeVersion_Callback_0(mthis) native "Database_changeVersion_Callback";
-  changeVersion_Callback_0_(mthis) => changeVersion_Callback_0(mthis);
+  changeVersion_Callback_0_(mthis) => mthis.callMethod("changeVersion", []);
 
-  static changeVersion_Callback_1(mthis, __arg_0) native "Database_changeVersion_Callback";
-  changeVersion_Callback_1_(mthis, __arg_0) => changeVersion_Callback_1(mthis, __arg_0);
+  changeVersion_Callback_1_(mthis, __arg_0) => mthis.callMethod("changeVersion", [__arg_0]);
 
-  static changeVersion_Callback_2(mthis, __arg_0, __arg_1) native "Database_changeVersion_Callback";
-  changeVersion_Callback_2_(mthis, __arg_0, __arg_1) => changeVersion_Callback_2(mthis, __arg_0, __arg_1);
+  changeVersion_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("changeVersion", [__arg_0, __arg_1]);
 
-  static changeVersion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Database_changeVersion_Callback";
-  changeVersion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => changeVersion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  changeVersion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("changeVersion", [__arg_0, __arg_1, __arg_2]);
 
-  static changeVersion_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Database_changeVersion_Callback";
-  changeVersion_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => changeVersion_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  changeVersion_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("changeVersion", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static changeVersion_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Database_changeVersion_Callback";
-  changeVersion_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => changeVersion_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  changeVersion_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("changeVersion", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static changeVersion_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Database_changeVersion_Callback";
-  changeVersion_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => changeVersion_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  readTransaction_Callback_0_(mthis) => mthis.callMethod("readTransaction", []);
 
-  static changeVersion_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Database_changeVersion_Callback";
-  changeVersion_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => changeVersion_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  readTransaction_Callback_1_(mthis, __arg_0) => mthis.callMethod("readTransaction", [__arg_0]);
 
-  static readTransaction_Callback_0(mthis) native "Database_readTransaction_Callback";
-  readTransaction_Callback_0_(mthis) => readTransaction_Callback_0(mthis);
+  readTransaction_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("readTransaction", [__arg_0, __arg_1]);
 
-  static readTransaction_Callback_1(mthis, __arg_0) native "Database_readTransaction_Callback";
-  readTransaction_Callback_1_(mthis, __arg_0) => readTransaction_Callback_1(mthis, __arg_0);
+  readTransaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("readTransaction", [__arg_0, __arg_1, __arg_2]);
 
-  static readTransaction_Callback_2(mthis, __arg_0, __arg_1) native "Database_readTransaction_Callback";
-  readTransaction_Callback_2_(mthis, __arg_0, __arg_1) => readTransaction_Callback_2(mthis, __arg_0, __arg_1);
+  transaction_Callback_0_(mthis) => mthis.callMethod("transaction", []);
 
-  static readTransaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Database_readTransaction_Callback";
-  readTransaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readTransaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  transaction_Callback_1_(mthis, __arg_0) => mthis.callMethod("transaction", [__arg_0]);
 
-  static readTransaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Database_readTransaction_Callback";
-  readTransaction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readTransaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  transaction_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("transaction", [__arg_0, __arg_1]);
 
-  static readTransaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Database_readTransaction_Callback";
-  readTransaction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => readTransaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("transaction", [__arg_0, __arg_1, __arg_2]);
 
-  static transaction_Callback_0(mthis) native "Database_transaction_Callback";
-  transaction_Callback_0_(mthis) => transaction_Callback_0(mthis);
-
-  static transaction_Callback_1(mthis, __arg_0) native "Database_transaction_Callback";
-  transaction_Callback_1_(mthis, __arg_0) => transaction_Callback_1(mthis, __arg_0);
-
-  static transaction_Callback_2(mthis, __arg_0, __arg_1) native "Database_transaction_Callback";
-  transaction_Callback_2_(mthis, __arg_0, __arg_1) => transaction_Callback_2(mthis, __arg_0, __arg_1);
-
-  static transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Database_transaction_Callback";
-  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Database_transaction_Callback";
-  transaction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static transaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Database_transaction_Callback";
-  transaction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => transaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static version_Getter(mthis) native "Database_version_Getter";
-  version_Getter_(mthis) => version_Getter(mthis);
+  version_Getter_(mthis) => mthis["version"];
 
 }
 
 class BlinkDedicatedWorkerGlobalScope extends BlinkWorkerGlobalScope {
   static final instance = new BlinkDedicatedWorkerGlobalScope();
 
-  static onmessage_Getter(mthis) native "DedicatedWorkerGlobalScope_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static onmessage_Setter(mthis, __arg_0) native "DedicatedWorkerGlobalScope_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static postMessage_Callback_0(mthis) native "DedicatedWorkerGlobalScope_postMessage_Callback";
-  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+  postMessage_Callback_0_(mthis) => mthis.callMethod("postMessage", []);
 
-  static postMessage_Callback_1(mthis, __arg_0) native "DedicatedWorkerGlobalScope_postMessage_Callback";
-  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+  postMessage_Callback_1_(mthis, __arg_0) => mthis.callMethod("postMessage", [__arg_0]);
 
-  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "DedicatedWorkerGlobalScope_postMessage_Callback";
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
-
-  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DedicatedWorkerGlobalScope_postMessage_Callback";
-  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DedicatedWorkerGlobalScope_postMessage_Callback";
-  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("postMessage", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDelayNode extends BlinkAudioNode {
   static final instance = new BlinkDelayNode();
 
-  static delayTime_Getter(mthis) native "DelayNode_delayTime_Getter";
-  delayTime_Getter_(mthis) => delayTime_Getter(mthis);
+  delayTime_Getter_(mthis) => mthis["delayTime"];
 
 }
 
 class BlinkDeprecatedStorageInfo {
   static final instance = new BlinkDeprecatedStorageInfo();
 
-  static queryUsageAndQuota_Callback_0(mthis) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_0_(mthis) => queryUsageAndQuota_Callback_0(mthis);
+  queryUsageAndQuota_Callback_0_(mthis) => mthis.callMethod("queryUsageAndQuota", []);
 
-  static queryUsageAndQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => queryUsageAndQuota_Callback_1(mthis, __arg_0);
+  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryUsageAndQuota", [__arg_0]);
 
-  static queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1);
+  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("queryUsageAndQuota", [__arg_0, __arg_1]);
 
-  static queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  queryUsageAndQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("queryUsageAndQuota", [__arg_0, __arg_1, __arg_2]);
 
-  static queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  requestQuota_Callback_0_(mthis) => mthis.callMethod("requestQuota", []);
 
-  static queryUsageAndQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => queryUsageAndQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  requestQuota_Callback_1_(mthis, __arg_0) => mthis.callMethod("requestQuota", [__arg_0]);
 
-  static requestQuota_Callback_0(mthis) native "DeprecatedStorageInfo_requestQuota_Callback";
-  requestQuota_Callback_0_(mthis) => requestQuota_Callback_0(mthis);
+  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("requestQuota", [__arg_0, __arg_1]);
 
-  static requestQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageInfo_requestQuota_Callback";
-  requestQuota_Callback_1_(mthis, __arg_0) => requestQuota_Callback_1(mthis, __arg_0);
+  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("requestQuota", [__arg_0, __arg_1, __arg_2]);
 
-  static requestQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageInfo_requestQuota_Callback";
-  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => requestQuota_Callback_2(mthis, __arg_0, __arg_1);
-
-  static requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageInfo_requestQuota_Callback";
-  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageInfo_requestQuota_Callback";
-  requestQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeprecatedStorageInfo_requestQuota_Callback";
-  requestQuota_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static requestQuota_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DeprecatedStorageInfo_requestQuota_Callback";
-  requestQuota_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => requestQuota_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  requestQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("requestQuota", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkDeprecatedStorageQuota {
   static final instance = new BlinkDeprecatedStorageQuota();
 
-  static queryUsageAndQuota_Callback_0(mthis) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_0_(mthis) => queryUsageAndQuota_Callback_0(mthis);
+  queryUsageAndQuota_Callback_0_(mthis) => mthis.callMethod("queryUsageAndQuota", []);
 
-  static queryUsageAndQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => queryUsageAndQuota_Callback_1(mthis, __arg_0);
+  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryUsageAndQuota", [__arg_0]);
 
-  static queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1);
+  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("queryUsageAndQuota", [__arg_0, __arg_1]);
 
-  static queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  requestQuota_Callback_0_(mthis) => mthis.callMethod("requestQuota", []);
 
-  static queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
-  queryUsageAndQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  requestQuota_Callback_1_(mthis, __arg_0) => mthis.callMethod("requestQuota", [__arg_0]);
 
-  static requestQuota_Callback_0(mthis) native "DeprecatedStorageQuota_requestQuota_Callback";
-  requestQuota_Callback_0_(mthis) => requestQuota_Callback_0(mthis);
+  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("requestQuota", [__arg_0, __arg_1]);
 
-  static requestQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageQuota_requestQuota_Callback";
-  requestQuota_Callback_1_(mthis, __arg_0) => requestQuota_Callback_1(mthis, __arg_0);
-
-  static requestQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageQuota_requestQuota_Callback";
-  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => requestQuota_Callback_2(mthis, __arg_0, __arg_1);
-
-  static requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageQuota_requestQuota_Callback";
-  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageQuota_requestQuota_Callback";
-  requestQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeprecatedStorageQuota_requestQuota_Callback";
-  requestQuota_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("requestQuota", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkDeviceAcceleration {
   static final instance = new BlinkDeviceAcceleration();
 
-  static x_Getter(mthis) native "DeviceAcceleration_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "DeviceAcceleration_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static z_Getter(mthis) native "DeviceAcceleration_z_Getter";
-  z_Getter_(mthis) => z_Getter(mthis);
+  z_Getter_(mthis) => mthis["z"];
 
 }
 
 class BlinkDeviceLightEvent extends BlinkEvent {
   static final instance = new BlinkDeviceLightEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DeviceLightEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["DeviceLightEvent"], [__arg_0, __arg_1]);
 
-  static value_Getter(mthis) native "DeviceLightEvent_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
 }
 
 class BlinkDeviceMotionEvent extends BlinkEvent {
   static final instance = new BlinkDeviceMotionEvent();
 
-  static accelerationIncludingGravity_Getter(mthis) native "DeviceMotionEvent_accelerationIncludingGravity_Getter";
-  accelerationIncludingGravity_Getter_(mthis) => accelerationIncludingGravity_Getter(mthis);
+  accelerationIncludingGravity_Getter_(mthis) => mthis["accelerationIncludingGravity"];
 
-  static acceleration_Getter(mthis) native "DeviceMotionEvent_acceleration_Getter";
-  acceleration_Getter_(mthis) => acceleration_Getter(mthis);
+  acceleration_Getter_(mthis) => mthis["acceleration"];
 
-  static initDeviceMotionEvent_Callback_0(mthis) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_0_(mthis) => initDeviceMotionEvent_Callback_0(mthis);
+  initDeviceMotionEvent_Callback_0_(mthis) => mthis.callMethod("initDeviceMotionEvent", []);
 
-  static initDeviceMotionEvent_Callback_1(mthis, __arg_0) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_1_(mthis, __arg_0) => initDeviceMotionEvent_Callback_1(mthis, __arg_0);
+  initDeviceMotionEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initDeviceMotionEvent", [__arg_0]);
 
-  static initDeviceMotionEvent_Callback_2(mthis, __arg_0, __arg_1) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_2_(mthis, __arg_0, __arg_1) => initDeviceMotionEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initDeviceMotionEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initDeviceMotionEvent", [__arg_0, __arg_1]);
 
-  static initDeviceMotionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initDeviceMotionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initDeviceMotionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initDeviceMotionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initDeviceMotionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initDeviceMotionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initDeviceMotionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initDeviceMotionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initDeviceMotionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initDeviceMotionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initDeviceMotionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initDeviceMotionEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initDeviceMotionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initDeviceMotionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initDeviceMotionEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initDeviceMotionEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static initDeviceMotionEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initDeviceMotionEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  interval_Getter_(mthis) => mthis["interval"];
 
-  static initDeviceMotionEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
-  initDeviceMotionEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initDeviceMotionEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
-
-  static interval_Getter(mthis) native "DeviceMotionEvent_interval_Getter";
-  interval_Getter_(mthis) => interval_Getter(mthis);
-
-  static rotationRate_Getter(mthis) native "DeviceMotionEvent_rotationRate_Getter";
-  rotationRate_Getter_(mthis) => rotationRate_Getter(mthis);
+  rotationRate_Getter_(mthis) => mthis["rotationRate"];
 
 }
 
 class BlinkDeviceOrientationEvent extends BlinkEvent {
   static final instance = new BlinkDeviceOrientationEvent();
 
-  static absolute_Getter(mthis) native "DeviceOrientationEvent_absolute_Getter";
-  absolute_Getter_(mthis) => absolute_Getter(mthis);
+  absolute_Getter_(mthis) => mthis["absolute"];
 
-  static alpha_Getter(mthis) native "DeviceOrientationEvent_alpha_Getter";
-  alpha_Getter_(mthis) => alpha_Getter(mthis);
+  alpha_Getter_(mthis) => mthis["alpha"];
 
-  static beta_Getter(mthis) native "DeviceOrientationEvent_beta_Getter";
-  beta_Getter_(mthis) => beta_Getter(mthis);
+  beta_Getter_(mthis) => mthis["beta"];
 
-  static gamma_Getter(mthis) native "DeviceOrientationEvent_gamma_Getter";
-  gamma_Getter_(mthis) => gamma_Getter(mthis);
+  gamma_Getter_(mthis) => mthis["gamma"];
 
-  static initDeviceOrientationEvent_Callback_0(mthis) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_0_(mthis) => initDeviceOrientationEvent_Callback_0(mthis);
+  initDeviceOrientationEvent_Callback_0_(mthis) => mthis.callMethod("initDeviceOrientationEvent", []);
 
-  static initDeviceOrientationEvent_Callback_1(mthis, __arg_0) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_1_(mthis, __arg_0) => initDeviceOrientationEvent_Callback_1(mthis, __arg_0);
+  initDeviceOrientationEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initDeviceOrientationEvent", [__arg_0]);
 
-  static initDeviceOrientationEvent_Callback_2(mthis, __arg_0, __arg_1) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_2_(mthis, __arg_0, __arg_1) => initDeviceOrientationEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initDeviceOrientationEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initDeviceOrientationEvent", [__arg_0, __arg_1]);
 
-  static initDeviceOrientationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initDeviceOrientationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initDeviceOrientationEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initDeviceOrientationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initDeviceOrientationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initDeviceOrientationEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initDeviceOrientationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initDeviceOrientationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initDeviceOrientationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initDeviceOrientationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initDeviceOrientationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initDeviceOrientationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initDeviceOrientationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initDeviceOrientationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static initDeviceOrientationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initDeviceOrientationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static initDeviceOrientationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
-  initDeviceOrientationEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initDeviceOrientationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  initDeviceOrientationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initDeviceOrientationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
 }
 
 class BlinkDeviceRotationRate {
   static final instance = new BlinkDeviceRotationRate();
 
-  static alpha_Getter(mthis) native "DeviceRotationRate_alpha_Getter";
-  alpha_Getter_(mthis) => alpha_Getter(mthis);
+  alpha_Getter_(mthis) => mthis["alpha"];
 
-  static beta_Getter(mthis) native "DeviceRotationRate_beta_Getter";
-  beta_Getter_(mthis) => beta_Getter(mthis);
+  beta_Getter_(mthis) => mthis["beta"];
 
-  static gamma_Getter(mthis) native "DeviceRotationRate_gamma_Getter";
-  gamma_Getter_(mthis) => gamma_Getter(mthis);
+  gamma_Getter_(mthis) => mthis["gamma"];
 
 }
 
 class BlinkDirectoryEntry extends BlinkEntry {
   static final instance = new BlinkDirectoryEntry();
 
-  static createReader_Callback_0(mthis) native "DirectoryEntry_createReader_Callback";
-  createReader_Callback_0_(mthis) => createReader_Callback_0(mthis);
+  createReader_Callback_0_(mthis) => mthis.callMethod("createReader", []);
 
-  static createReader_Callback_1(mthis, __arg_0) native "DirectoryEntry_createReader_Callback";
-  createReader_Callback_1_(mthis, __arg_0) => createReader_Callback_1(mthis, __arg_0);
+  getDirectory_Callback_0_(mthis) => mthis.callMethod("getDirectory", []);
 
-  static createReader_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_createReader_Callback";
-  createReader_Callback_2_(mthis, __arg_0, __arg_1) => createReader_Callback_2(mthis, __arg_0, __arg_1);
+  getDirectory_Callback_1_(mthis, __arg_0) => mthis.callMethod("getDirectory", [__arg_0]);
 
-  static getDirectory_Callback_0(mthis) native "DirectoryEntry_getDirectory_Callback";
-  getDirectory_Callback_0_(mthis) => getDirectory_Callback_0(mthis);
+  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getDirectory", [__arg_0, __arg_1]);
 
-  static getDirectory_Callback_1(mthis, __arg_0) native "DirectoryEntry_getDirectory_Callback";
-  getDirectory_Callback_1_(mthis, __arg_0) => getDirectory_Callback_1(mthis, __arg_0);
+  getDirectory_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("getDirectory", [__arg_0, __arg_1, __arg_2]);
 
-  static getDirectory_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_getDirectory_Callback";
-  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => getDirectory_Callback_2(mthis, __arg_0, __arg_1);
+  getDirectory_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("getDirectory", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntry_getDirectory_Callback";
-  getDirectory_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getFile_Callback_0_(mthis) => mthis.callMethod("getFile", []);
 
-  static getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntry_getDirectory_Callback";
-  getDirectory_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getFile_Callback_1_(mthis, __arg_0) => mthis.callMethod("getFile", [__arg_0]);
 
-  static getDirectory_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DirectoryEntry_getDirectory_Callback";
-  getDirectory_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getDirectory_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  getFile_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getFile", [__arg_0, __arg_1]);
 
-  static getDirectory_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DirectoryEntry_getDirectory_Callback";
-  getDirectory_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getDirectory_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  getFile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("getFile", [__arg_0, __arg_1, __arg_2]);
 
-  static getFile_Callback_0(mthis) native "DirectoryEntry_getFile_Callback";
-  getFile_Callback_0_(mthis) => getFile_Callback_0(mthis);
+  getFile_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("getFile", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getFile_Callback_1(mthis, __arg_0) native "DirectoryEntry_getFile_Callback";
-  getFile_Callback_1_(mthis, __arg_0) => getFile_Callback_1(mthis, __arg_0);
+  removeRecursively_Callback_0_(mthis) => mthis.callMethod("removeRecursively", []);
 
-  static getFile_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_getFile_Callback";
-  getFile_Callback_2_(mthis, __arg_0, __arg_1) => getFile_Callback_2(mthis, __arg_0, __arg_1);
+  removeRecursively_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeRecursively", [__arg_0]);
 
-  static getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntry_getFile_Callback";
-  getFile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntry_getFile_Callback";
-  getFile_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getFile_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DirectoryEntry_getFile_Callback";
-  getFile_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getFile_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static getFile_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DirectoryEntry_getFile_Callback";
-  getFile_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getFile_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static removeRecursively_Callback_0(mthis) native "DirectoryEntry_removeRecursively_Callback";
-  removeRecursively_Callback_0_(mthis) => removeRecursively_Callback_0(mthis);
-
-  static removeRecursively_Callback_1(mthis, __arg_0) native "DirectoryEntry_removeRecursively_Callback";
-  removeRecursively_Callback_1_(mthis, __arg_0) => removeRecursively_Callback_1(mthis, __arg_0);
-
-  static removeRecursively_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_removeRecursively_Callback";
-  removeRecursively_Callback_2_(mthis, __arg_0, __arg_1) => removeRecursively_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeRecursively_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntry_removeRecursively_Callback";
-  removeRecursively_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeRecursively_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeRecursively_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntry_removeRecursively_Callback";
-  removeRecursively_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeRecursively_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  removeRecursively_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("removeRecursively", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDirectoryEntrySync extends BlinkEntrySync {
   static final instance = new BlinkDirectoryEntrySync();
 
-  static createReader_Callback_0(mthis) native "DirectoryEntrySync_createReader_Callback";
-  createReader_Callback_0_(mthis) => createReader_Callback_0(mthis);
+  createReader_Callback_0_(mthis) => mthis.callMethod("createReader", []);
 
-  static createReader_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_createReader_Callback";
-  createReader_Callback_1_(mthis, __arg_0) => createReader_Callback_1(mthis, __arg_0);
+  getDirectory_Callback_0_(mthis) => mthis.callMethod("getDirectory", []);
 
-  static createReader_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_createReader_Callback";
-  createReader_Callback_2_(mthis, __arg_0, __arg_1) => createReader_Callback_2(mthis, __arg_0, __arg_1);
+  getDirectory_Callback_1_(mthis, __arg_0) => mthis.callMethod("getDirectory", [__arg_0]);
 
-  static getDirectory_Callback_0(mthis) native "DirectoryEntrySync_getDirectory_Callback";
-  getDirectory_Callback_0_(mthis) => getDirectory_Callback_0(mthis);
+  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getDirectory", [__arg_0, __arg_1]);
 
-  static getDirectory_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_getDirectory_Callback";
-  getDirectory_Callback_1_(mthis, __arg_0) => getDirectory_Callback_1(mthis, __arg_0);
+  getFile_Callback_0_(mthis) => mthis.callMethod("getFile", []);
 
-  static getDirectory_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_getDirectory_Callback";
-  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => getDirectory_Callback_2(mthis, __arg_0, __arg_1);
+  getFile_Callback_1_(mthis, __arg_0) => mthis.callMethod("getFile", [__arg_0]);
 
-  static getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntrySync_getDirectory_Callback";
-  getDirectory_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getFile_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getFile", [__arg_0, __arg_1]);
 
-  static getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntrySync_getDirectory_Callback";
-  getDirectory_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getFile_Callback_0(mthis) native "DirectoryEntrySync_getFile_Callback";
-  getFile_Callback_0_(mthis) => getFile_Callback_0(mthis);
-
-  static getFile_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_getFile_Callback";
-  getFile_Callback_1_(mthis, __arg_0) => getFile_Callback_1(mthis, __arg_0);
-
-  static getFile_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_getFile_Callback";
-  getFile_Callback_2_(mthis, __arg_0, __arg_1) => getFile_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntrySync_getFile_Callback";
-  getFile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntrySync_getFile_Callback";
-  getFile_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static removeRecursively_Callback_0(mthis) native "DirectoryEntrySync_removeRecursively_Callback";
-  removeRecursively_Callback_0_(mthis) => removeRecursively_Callback_0(mthis);
-
-  static removeRecursively_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_removeRecursively_Callback";
-  removeRecursively_Callback_1_(mthis, __arg_0) => removeRecursively_Callback_1(mthis, __arg_0);
-
-  static removeRecursively_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_removeRecursively_Callback";
-  removeRecursively_Callback_2_(mthis, __arg_0, __arg_1) => removeRecursively_Callback_2(mthis, __arg_0, __arg_1);
+  removeRecursively_Callback_0_(mthis) => mthis.callMethod("removeRecursively", []);
 
 }
 
 class BlinkDirectoryReader {
   static final instance = new BlinkDirectoryReader();
 
-  static readEntries_Callback_0(mthis) native "DirectoryReader_readEntries_Callback";
-  readEntries_Callback_0_(mthis) => readEntries_Callback_0(mthis);
+  readEntries_Callback_0_(mthis) => mthis.callMethod("readEntries", []);
 
-  static readEntries_Callback_1(mthis, __arg_0) native "DirectoryReader_readEntries_Callback";
-  readEntries_Callback_1_(mthis, __arg_0) => readEntries_Callback_1(mthis, __arg_0);
+  readEntries_Callback_1_(mthis, __arg_0) => mthis.callMethod("readEntries", [__arg_0]);
 
-  static readEntries_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryReader_readEntries_Callback";
-  readEntries_Callback_2_(mthis, __arg_0, __arg_1) => readEntries_Callback_2(mthis, __arg_0, __arg_1);
-
-  static readEntries_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryReader_readEntries_Callback";
-  readEntries_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readEntries_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static readEntries_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryReader_readEntries_Callback";
-  readEntries_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readEntries_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  readEntries_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("readEntries", [__arg_0, __arg_1]);
 
 }
 
 class BlinkDirectoryReaderSync {
   static final instance = new BlinkDirectoryReaderSync();
 
-  static readEntries_Callback_0(mthis) native "DirectoryReaderSync_readEntries_Callback";
-  readEntries_Callback_0_(mthis) => readEntries_Callback_0(mthis);
-
-  static readEntries_Callback_1(mthis, __arg_0) native "DirectoryReaderSync_readEntries_Callback";
-  readEntries_Callback_1_(mthis, __arg_0) => readEntries_Callback_1(mthis, __arg_0);
-
-  static readEntries_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryReaderSync_readEntries_Callback";
-  readEntries_Callback_2_(mthis, __arg_0, __arg_1) => readEntries_Callback_2(mthis, __arg_0, __arg_1);
+  readEntries_Callback_0_(mthis) => mthis.callMethod("readEntries", []);
 
 }
 
 class BlinkDocument extends BlinkNode {
   static final instance = new BlinkDocument();
 
-  static URL_Getter(mthis) native "Document_URL_Getter";
-  URL_Getter_(mthis) => URL_Getter(mthis);
+  URL_Getter_(mthis) => mthis["URL"];
 
-  static activeElement_Getter(mthis) native "Document_activeElement_Getter";
-  activeElement_Getter_(mthis) => activeElement_Getter(mthis);
+  activeElement_Getter_(mthis) => mthis["activeElement"];
 
-  static adoptNode_Callback_0(mthis) native "Document_adoptNode_Callback";
-  adoptNode_Callback_0_(mthis) => adoptNode_Callback_0(mthis);
+  adoptNode_Callback_0_(mthis) => mthis.callMethod("adoptNode", []);
 
-  static adoptNode_Callback_1(mthis, __arg_0) native "Document_adoptNode_Callback";
-  adoptNode_Callback_1_(mthis, __arg_0) => adoptNode_Callback_1(mthis, __arg_0);
+  adoptNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("adoptNode", [__arg_0]);
 
-  static adoptNode_Callback_2(mthis, __arg_0, __arg_1) native "Document_adoptNode_Callback";
-  adoptNode_Callback_2_(mthis, __arg_0, __arg_1) => adoptNode_Callback_2(mthis, __arg_0, __arg_1);
+  anchors_Getter_(mthis) => mthis["anchors"];
 
-  static adoptNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_adoptNode_Callback";
-  adoptNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => adoptNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  body_Getter_(mthis) => mthis["body"];
 
-  static anchors_Getter(mthis) native "Document_anchors_Getter";
-  anchors_Getter_(mthis) => anchors_Getter(mthis);
+  body_Setter_(mthis, __arg_0) => mthis["body"] = __arg_0;
 
-  static body_Getter(mthis) native "Document_body_Getter";
-  body_Getter_(mthis) => body_Getter(mthis);
+  caretRangeFromPoint_Callback_0_(mthis) => mthis.callMethod("caretRangeFromPoint", []);
 
-  static body_Setter(mthis, __arg_0) native "Document_body_Setter";
-  body_Setter_(mthis, __arg_0) => body_Setter(mthis, __arg_0);
+  caretRangeFromPoint_Callback_1_(mthis, __arg_0) => mthis.callMethod("caretRangeFromPoint", [__arg_0]);
 
-  static caretRangeFromPoint_Callback_0(mthis) native "Document_caretRangeFromPoint_Callback";
-  caretRangeFromPoint_Callback_0_(mthis) => caretRangeFromPoint_Callback_0(mthis);
+  caretRangeFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("caretRangeFromPoint", [__arg_0, __arg_1]);
 
-  static caretRangeFromPoint_Callback_1(mthis, __arg_0) native "Document_caretRangeFromPoint_Callback";
-  caretRangeFromPoint_Callback_1_(mthis, __arg_0) => caretRangeFromPoint_Callback_1(mthis, __arg_0);
+  characterSet_Getter_(mthis) => mthis["characterSet"];
 
-  static caretRangeFromPoint_Callback_2(mthis, __arg_0, __arg_1) native "Document_caretRangeFromPoint_Callback";
-  caretRangeFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => caretRangeFromPoint_Callback_2(mthis, __arg_0, __arg_1);
+  charset_Getter_(mthis) => mthis["charset"];
 
-  static caretRangeFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_caretRangeFromPoint_Callback";
-  caretRangeFromPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => caretRangeFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  charset_Setter_(mthis, __arg_0) => mthis["charset"] = __arg_0;
 
-  static caretRangeFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_caretRangeFromPoint_Callback";
-  caretRangeFromPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => caretRangeFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  childElementCount_Getter_(mthis) => mthis["childElementCount"];
 
-  static characterSet_Getter(mthis) native "Document_characterSet_Getter";
-  characterSet_Getter_(mthis) => characterSet_Getter(mthis);
+  children_Getter_(mthis) => mthis["children"];
 
-  static charset_Getter(mthis) native "Document_charset_Getter";
-  charset_Getter_(mthis) => charset_Getter(mthis);
+  compatMode_Getter_(mthis) => mthis["compatMode"];
 
-  static charset_Setter(mthis, __arg_0) native "Document_charset_Setter";
-  charset_Setter_(mthis, __arg_0) => charset_Setter(mthis, __arg_0);
+  contentType_Getter_(mthis) => mthis["contentType"];
 
-  static childElementCount_Getter(mthis) native "Document_childElementCount_Getter";
-  childElementCount_Getter_(mthis) => childElementCount_Getter(mthis);
+  cookie_Getter_(mthis) => mthis["cookie"];
 
-  static children_Getter(mthis) native "Document_children_Getter";
-  children_Getter_(mthis) => children_Getter(mthis);
+  cookie_Setter_(mthis, __arg_0) => mthis["cookie"] = __arg_0;
 
-  static compatMode_Getter(mthis) native "Document_compatMode_Getter";
-  compatMode_Getter_(mthis) => compatMode_Getter(mthis);
+  createCDATASection_Callback_0_(mthis) => mthis.callMethod("createCDATASection", []);
 
-  static contentType_Getter(mthis) native "Document_contentType_Getter";
-  contentType_Getter_(mthis) => contentType_Getter(mthis);
+  createCDATASection_Callback_1_(mthis, __arg_0) => mthis.callMethod("createCDATASection", [__arg_0]);
 
-  static cookie_Getter(mthis) native "Document_cookie_Getter";
-  cookie_Getter_(mthis) => cookie_Getter(mthis);
+  createDocumentFragment_Callback_0_(mthis) => mthis.callMethod("createDocumentFragment", []);
 
-  static cookie_Setter(mthis, __arg_0) native "Document_cookie_Setter";
-  cookie_Setter_(mthis, __arg_0) => cookie_Setter(mthis, __arg_0);
+  createElementNS_Callback_0_(mthis) => mthis.callMethod("createElementNS", []);
 
-  static createCDATASection_Callback_0(mthis) native "Document_createCDATASection_Callback";
-  createCDATASection_Callback_0_(mthis) => createCDATASection_Callback_0(mthis);
+  createElementNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("createElementNS", [__arg_0]);
 
-  static createCDATASection_Callback_1(mthis, __arg_0) native "Document_createCDATASection_Callback";
-  createCDATASection_Callback_1_(mthis, __arg_0) => createCDATASection_Callback_1(mthis, __arg_0);
+  createElementNS_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createElementNS", [__arg_0, __arg_1]);
 
-  static createCDATASection_Callback_2(mthis, __arg_0, __arg_1) native "Document_createCDATASection_Callback";
-  createCDATASection_Callback_2_(mthis, __arg_0, __arg_1) => createCDATASection_Callback_2(mthis, __arg_0, __arg_1);
+  createElementNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createElementNS", [__arg_0, __arg_1, __arg_2]);
 
-  static createCDATASection_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createCDATASection_Callback";
-  createCDATASection_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createCDATASection_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createElement_Callback_0_(mthis) => mthis.callMethod("createElement", []);
 
-  static createDocumentFragment_Callback_0(mthis) native "Document_createDocumentFragment_Callback";
-  createDocumentFragment_Callback_0_(mthis) => createDocumentFragment_Callback_0(mthis);
+  createElement_Callback_1_(mthis, __arg_0) => mthis.callMethod("createElement", [__arg_0]);
 
-  static createDocumentFragment_Callback_1(mthis, __arg_0) native "Document_createDocumentFragment_Callback";
-  createDocumentFragment_Callback_1_(mthis, __arg_0) => createDocumentFragment_Callback_1(mthis, __arg_0);
+  createElement_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createElement", [__arg_0, __arg_1]);
 
-  static createDocumentFragment_Callback_2(mthis, __arg_0, __arg_1) native "Document_createDocumentFragment_Callback";
-  createDocumentFragment_Callback_2_(mthis, __arg_0, __arg_1) => createDocumentFragment_Callback_2(mthis, __arg_0, __arg_1);
+  createEvent_Callback_0_(mthis) => mthis.callMethod("createEvent", []);
 
-  static createElementNS_Callback_0(mthis) native "Document_createElementNS_Callback";
-  createElementNS_Callback_0_(mthis) => createElementNS_Callback_0(mthis);
+  createEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("createEvent", [__arg_0]);
 
-  static createElementNS_Callback_1(mthis, __arg_0) native "Document_createElementNS_Callback";
-  createElementNS_Callback_1_(mthis, __arg_0) => createElementNS_Callback_1(mthis, __arg_0);
+  createNodeIterator_Callback_0_(mthis) => mthis.callMethod("createNodeIterator", []);
 
-  static createElementNS_Callback_2(mthis, __arg_0, __arg_1) native "Document_createElementNS_Callback";
-  createElementNS_Callback_2_(mthis, __arg_0, __arg_1) => createElementNS_Callback_2(mthis, __arg_0, __arg_1);
+  createNodeIterator_Callback_1_(mthis, __arg_0) => mthis.callMethod("createNodeIterator", [__arg_0]);
 
-  static createElementNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createElementNS_Callback";
-  createElementNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createElementNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createNodeIterator_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createNodeIterator", [__arg_0, __arg_1]);
 
-  static createElementNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createElementNS_Callback";
-  createElementNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createElementNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createNodeIterator_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createNodeIterator", [__arg_0, __arg_1, __arg_2]);
 
-  static createElementNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createElementNS_Callback";
-  createElementNS_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createElementNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createRange_Callback_0_(mthis) => mthis.callMethod("createRange", []);
 
-  static createElement_Callback_0(mthis) native "Document_createElement_Callback";
-  createElement_Callback_0_(mthis) => createElement_Callback_0(mthis);
+  createTextNode_Callback_0_(mthis) => mthis.callMethod("createTextNode", []);
 
-  static createElement_Callback_1(mthis, __arg_0) native "Document_createElement_Callback";
-  createElement_Callback_1_(mthis, __arg_0) => createElement_Callback_1(mthis, __arg_0);
+  createTextNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("createTextNode", [__arg_0]);
 
-  static createElement_Callback_2(mthis, __arg_0, __arg_1) native "Document_createElement_Callback";
-  createElement_Callback_2_(mthis, __arg_0, __arg_1) => createElement_Callback_2(mthis, __arg_0, __arg_1);
+  createTouchList_Callback_0_(mthis) => mthis.callMethod("createTouchList", []);
 
-  static createElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createElement_Callback";
-  createElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createTouchList_Callback_1_(mthis, __arg_0) => mthis.callMethod("createTouchList", [__arg_0]);
 
-  static createElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createElement_Callback";
-  createElement_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createTouch_Callback_0_(mthis) => mthis.callMethod("createTouch", []);
 
-  static createEvent_Callback_0(mthis) native "Document_createEvent_Callback";
-  createEvent_Callback_0_(mthis) => createEvent_Callback_0(mthis);
+  createTouch_Callback_1_(mthis, __arg_0) => mthis.callMethod("createTouch", [__arg_0]);
 
-  static createEvent_Callback_1(mthis, __arg_0) native "Document_createEvent_Callback";
-  createEvent_Callback_1_(mthis, __arg_0) => createEvent_Callback_1(mthis, __arg_0);
+  createTouch_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  static createEvent_Callback_2(mthis, __arg_0, __arg_1) native "Document_createEvent_Callback";
-  createEvent_Callback_2_(mthis, __arg_0, __arg_1) => createEvent_Callback_2(mthis, __arg_0, __arg_1);
+  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) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
 
-  static createEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createEvent_Callback";
-  createEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createTouch_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createTouch", [__arg_0, __arg_1]);
 
-  static createNodeIterator_Callback_0(mthis) native "Document_createNodeIterator_Callback";
-  createNodeIterator_Callback_0_(mthis) => createNodeIterator_Callback_0(mthis);
+  createTouch_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2]);
 
-  static createNodeIterator_Callback_1(mthis, __arg_0) native "Document_createNodeIterator_Callback";
-  createNodeIterator_Callback_1_(mthis, __arg_0) => createNodeIterator_Callback_1(mthis, __arg_0);
+  createTouch_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createNodeIterator_Callback_2(mthis, __arg_0, __arg_1) native "Document_createNodeIterator_Callback";
-  createNodeIterator_Callback_2_(mthis, __arg_0, __arg_1) => createNodeIterator_Callback_2(mthis, __arg_0, __arg_1);
+  createTouch_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createNodeIterator_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createNodeIterator_Callback";
-  createNodeIterator_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createNodeIterator_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createTouch_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static createNodeIterator_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createNodeIterator_Callback";
-  createNodeIterator_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createNodeIterator_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createTouch_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static createNodeIterator_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createNodeIterator_Callback";
-  createNodeIterator_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createNodeIterator_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createTouch_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static createRange_Callback_0(mthis) native "Document_createRange_Callback";
-  createRange_Callback_0_(mthis) => createRange_Callback_0(mthis);
+  createTouch_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => mthis.callMethod("createTouch", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  static createRange_Callback_1(mthis, __arg_0) native "Document_createRange_Callback";
-  createRange_Callback_1_(mthis, __arg_0) => createRange_Callback_1(mthis, __arg_0);
+  createTreeWalker_Callback_0_(mthis) => mthis.callMethod("createTreeWalker", []);
 
-  static createRange_Callback_2(mthis, __arg_0, __arg_1) native "Document_createRange_Callback";
-  createRange_Callback_2_(mthis, __arg_0, __arg_1) => createRange_Callback_2(mthis, __arg_0, __arg_1);
+  createTreeWalker_Callback_1_(mthis, __arg_0) => mthis.callMethod("createTreeWalker", [__arg_0]);
 
-  static createTextNode_Callback_0(mthis) native "Document_createTextNode_Callback";
-  createTextNode_Callback_0_(mthis) => createTextNode_Callback_0(mthis);
+  createTreeWalker_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createTreeWalker", [__arg_0, __arg_1]);
 
-  static createTextNode_Callback_1(mthis, __arg_0) native "Document_createTextNode_Callback";
-  createTextNode_Callback_1_(mthis, __arg_0) => createTextNode_Callback_1(mthis, __arg_0);
+  createTreeWalker_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createTreeWalker", [__arg_0, __arg_1, __arg_2]);
 
-  static createTextNode_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTextNode_Callback";
-  createTextNode_Callback_2_(mthis, __arg_0, __arg_1) => createTextNode_Callback_2(mthis, __arg_0, __arg_1);
+  currentScript_Getter_(mthis) => mthis["currentScript"];
 
-  static createTextNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTextNode_Callback";
-  createTextNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTextNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  defaultCharset_Getter_(mthis) => mthis["defaultCharset"];
 
-  static createTouchList_Callback_0(mthis) native "Document_createTouchList_Callback";
-  createTouchList_Callback_0_(mthis) => createTouchList_Callback_0(mthis);
+  defaultView_Getter_(mthis) => mthis["defaultView"];
 
-  static createTouchList_Callback_1(mthis, __arg_0) native "Document_createTouchList_Callback";
-  createTouchList_Callback_1_(mthis, __arg_0) => createTouchList_Callback_1(mthis, __arg_0);
+  doctype_Getter_(mthis) => mthis["doctype"];
 
-  static createTouchList_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTouchList_Callback";
-  createTouchList_Callback_2_(mthis, __arg_0, __arg_1) => createTouchList_Callback_2(mthis, __arg_0, __arg_1);
+  documentElement_Getter_(mthis) => mthis["documentElement"];
 
-  static createTouchList_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTouchList_Callback";
-  createTouchList_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTouchList_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  documentURI_Getter_(mthis) => mthis["documentURI"];
 
-  static createTouch_Callback_0(mthis) native "Document_createTouch_Callback";
-  createTouch_Callback_0_(mthis) => createTouch_Callback_0(mthis);
+  domain_Getter_(mthis) => mthis["domain"];
 
-  static createTouch_Callback_1(mthis, __arg_0) native "Document_createTouch_Callback";
-  createTouch_Callback_1_(mthis, __arg_0) => createTouch_Callback_1(mthis, __arg_0);
+  domain_Setter_(mthis, __arg_0) => mthis["domain"] = __arg_0;
 
-  static createTouch_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "Document_createTouch_Callback";
-  createTouch_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => createTouch_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  elementFromPoint_Callback_0_(mthis) => mthis.callMethod("elementFromPoint", []);
 
-  static createTouch_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "Document_createTouch_Callback";
-  createTouch_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => createTouch_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+  elementFromPoint_Callback_1_(mthis, __arg_0) => mthis.callMethod("elementFromPoint", [__arg_0]);
 
-  static createTouch_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "Document_createTouch_Callback";
-  createTouch_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => createTouch_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("elementFromPoint", [__arg_0, __arg_1]);
 
-  static createTouch_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) native "Document_createTouch_Callback";
-  createTouch_Callback_13_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) => createTouch_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12);
+  embeds_Getter_(mthis) => mthis["embeds"];
 
-  static createTouch_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTouch_Callback";
-  createTouch_Callback_2_(mthis, __arg_0, __arg_1) => createTouch_Callback_2(mthis, __arg_0, __arg_1);
+  execCommand_Callback_0_(mthis) => mthis.callMethod("execCommand", []);
 
-  static createTouch_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTouch_Callback";
-  createTouch_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTouch_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  execCommand_Callback_1_(mthis, __arg_0) => mthis.callMethod("execCommand", [__arg_0]);
 
-  static createTouch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createTouch_Callback";
-  createTouch_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createTouch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  execCommand_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("execCommand", [__arg_0, __arg_1]);
 
-  static createTouch_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createTouch_Callback";
-  createTouch_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createTouch_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  execCommand_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("execCommand", [__arg_0, __arg_1, __arg_2]);
 
-  static createTouch_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Document_createTouch_Callback";
-  createTouch_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createTouch_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  exitFullscreen_Callback_0_(mthis) => mthis.callMethod("exitFullscreen", []);
 
-  static createTouch_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Document_createTouch_Callback";
-  createTouch_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createTouch_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  exitPointerLock_Callback_0_(mthis) => mthis.callMethod("exitPointerLock", []);
 
-  static createTouch_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Document_createTouch_Callback";
-  createTouch_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createTouch_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  firstElementChild_Getter_(mthis) => mthis["firstElementChild"];
 
-  static createTouch_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "Document_createTouch_Callback";
-  createTouch_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => createTouch_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  fonts_Getter_(mthis) => mthis["fonts"];
 
-  static createTreeWalker_Callback_0(mthis) native "Document_createTreeWalker_Callback";
-  createTreeWalker_Callback_0_(mthis) => createTreeWalker_Callback_0(mthis);
+  forms_Getter_(mthis) => mthis["forms"];
 
-  static createTreeWalker_Callback_1(mthis, __arg_0) native "Document_createTreeWalker_Callback";
-  createTreeWalker_Callback_1_(mthis, __arg_0) => createTreeWalker_Callback_1(mthis, __arg_0);
+  fullscreenElement_Getter_(mthis) => mthis["fullscreenElement"];
 
-  static createTreeWalker_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTreeWalker_Callback";
-  createTreeWalker_Callback_2_(mthis, __arg_0, __arg_1) => createTreeWalker_Callback_2(mthis, __arg_0, __arg_1);
+  fullscreenEnabled_Getter_(mthis) => mthis["fullscreenEnabled"];
 
-  static createTreeWalker_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTreeWalker_Callback";
-  createTreeWalker_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTreeWalker_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getCSSCanvasContext_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getCSSCanvasContext", [__arg_0, __arg_1]);
 
-  static createTreeWalker_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createTreeWalker_Callback";
-  createTreeWalker_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createTreeWalker_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getCSSCanvasContext_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("getCSSCanvasContext", [__arg_0, __arg_1, __arg_2]);
 
-  static createTreeWalker_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createTreeWalker_Callback";
-  createTreeWalker_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createTreeWalker_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  getCSSCanvasContext_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("getCSSCanvasContext", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static currentScript_Getter(mthis) native "Document_currentScript_Getter";
-  currentScript_Getter_(mthis) => currentScript_Getter(mthis);
+  getElementById_Callback_0_(mthis) => mthis.callMethod("getElementById", []);
 
-  static defaultCharset_Getter(mthis) native "Document_defaultCharset_Getter";
-  defaultCharset_Getter_(mthis) => defaultCharset_Getter(mthis);
+  getElementById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementById", [__arg_0]);
 
-  static defaultView_Getter(mthis) native "Document_defaultView_Getter";
-  defaultView_Getter_(mthis) => defaultView_Getter(mthis);
+  getElementsByClassName_Callback_0_(mthis) => mthis.callMethod("getElementsByClassName", []);
 
-  static doctype_Getter(mthis) native "Document_doctype_Getter";
-  doctype_Getter_(mthis) => doctype_Getter(mthis);
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementsByClassName", [__arg_0]);
 
-  static documentElement_Getter(mthis) native "Document_documentElement_Getter";
-  documentElement_Getter_(mthis) => documentElement_Getter(mthis);
+  getElementsByName_Callback_0_(mthis) => mthis.callMethod("getElementsByName", []);
 
-  static documentURI_Getter(mthis) native "Document_documentURI_Getter";
-  documentURI_Getter_(mthis) => documentURI_Getter(mthis);
+  getElementsByName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementsByName", [__arg_0]);
 
-  static domain_Getter(mthis) native "Document_domain_Getter";
-  domain_Getter_(mthis) => domain_Getter(mthis);
+  getElementsByTagName_Callback_0_(mthis) => mthis.callMethod("getElementsByTagName", []);
 
-  static domain_Setter(mthis, __arg_0) native "Document_domain_Setter";
-  domain_Setter_(mthis, __arg_0) => domain_Setter(mthis, __arg_0);
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementsByTagName", [__arg_0]);
 
-  static elementFromPoint_Callback_0(mthis) native "Document_elementFromPoint_Callback";
-  elementFromPoint_Callback_0_(mthis) => elementFromPoint_Callback_0(mthis);
+  head_Getter_(mthis) => mthis["head"];
 
-  static elementFromPoint_Callback_1(mthis, __arg_0) native "Document_elementFromPoint_Callback";
-  elementFromPoint_Callback_1_(mthis, __arg_0) => elementFromPoint_Callback_1(mthis, __arg_0);
+  hidden_Getter_(mthis) => mthis["hidden"];
 
-  static elementFromPoint_Callback_2(mthis, __arg_0, __arg_1) native "Document_elementFromPoint_Callback";
-  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => elementFromPoint_Callback_2(mthis, __arg_0, __arg_1);
+  implementation_Getter_(mthis) => mthis["implementation"];
 
-  static elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_elementFromPoint_Callback";
-  elementFromPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  importNode_Callback_0_(mthis) => mthis.callMethod("importNode", []);
 
-  static elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_elementFromPoint_Callback";
-  elementFromPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  importNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("importNode", [__arg_0]);
 
-  static embeds_Getter(mthis) native "Document_embeds_Getter";
-  embeds_Getter_(mthis) => embeds_Getter(mthis);
+  importNode_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("importNode", [__arg_0, __arg_1]);
 
-  static execCommand_Callback_0(mthis) native "Document_execCommand_Callback";
-  execCommand_Callback_0_(mthis) => execCommand_Callback_0(mthis);
+  inputEncoding_Getter_(mthis) => mthis["inputEncoding"];
 
-  static execCommand_Callback_1(mthis, __arg_0) native "Document_execCommand_Callback";
-  execCommand_Callback_1_(mthis, __arg_0) => execCommand_Callback_1(mthis, __arg_0);
+  lastElementChild_Getter_(mthis) => mthis["lastElementChild"];
 
-  static execCommand_Callback_2(mthis, __arg_0, __arg_1) native "Document_execCommand_Callback";
-  execCommand_Callback_2_(mthis, __arg_0, __arg_1) => execCommand_Callback_2(mthis, __arg_0, __arg_1);
+  lastModified_Getter_(mthis) => mthis["lastModified"];
 
-  static execCommand_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_execCommand_Callback";
-  execCommand_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => execCommand_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  links_Getter_(mthis) => mthis["links"];
 
-  static execCommand_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_execCommand_Callback";
-  execCommand_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => execCommand_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static execCommand_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_execCommand_Callback";
-  execCommand_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => execCommand_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static exitFullscreen_Callback_0(mthis) native "Document_exitFullscreen_Callback";
-  exitFullscreen_Callback_0_(mthis) => exitFullscreen_Callback_0(mthis);
+  onautocomplete_Getter_(mthis) => mthis["onautocomplete"];
 
-  static exitFullscreen_Callback_1(mthis, __arg_0) native "Document_exitFullscreen_Callback";
-  exitFullscreen_Callback_1_(mthis, __arg_0) => exitFullscreen_Callback_1(mthis, __arg_0);
+  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
 
-  static exitFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Document_exitFullscreen_Callback";
-  exitFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => exitFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+  onautocompleteerror_Getter_(mthis) => mthis["onautocompleteerror"];
 
-  static exitPointerLock_Callback_0(mthis) native "Document_exitPointerLock_Callback";
-  exitPointerLock_Callback_0_(mthis) => exitPointerLock_Callback_0(mthis);
+  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
 
-  static exitPointerLock_Callback_1(mthis, __arg_0) native "Document_exitPointerLock_Callback";
-  exitPointerLock_Callback_1_(mthis, __arg_0) => exitPointerLock_Callback_1(mthis, __arg_0);
+  onbeforecopy_Getter_(mthis) => mthis["onbeforecopy"];
 
-  static exitPointerLock_Callback_2(mthis, __arg_0, __arg_1) native "Document_exitPointerLock_Callback";
-  exitPointerLock_Callback_2_(mthis, __arg_0, __arg_1) => exitPointerLock_Callback_2(mthis, __arg_0, __arg_1);
+  onbeforecopy_Setter_(mthis, __arg_0) => mthis["onbeforecopy"] = __arg_0;
 
-  static firstElementChild_Getter(mthis) native "Document_firstElementChild_Getter";
-  firstElementChild_Getter_(mthis) => firstElementChild_Getter(mthis);
+  onbeforecut_Getter_(mthis) => mthis["onbeforecut"];
 
-  static fonts_Getter(mthis) native "Document_fonts_Getter";
-  fonts_Getter_(mthis) => fonts_Getter(mthis);
+  onbeforecut_Setter_(mthis, __arg_0) => mthis["onbeforecut"] = __arg_0;
 
-  static forms_Getter(mthis) native "Document_forms_Getter";
-  forms_Getter_(mthis) => forms_Getter(mthis);
+  onbeforepaste_Getter_(mthis) => mthis["onbeforepaste"];
 
-  static fullscreenElement_Getter(mthis) native "Document_fullscreenElement_Getter";
-  fullscreenElement_Getter_(mthis) => fullscreenElement_Getter(mthis);
+  onbeforepaste_Setter_(mthis, __arg_0) => mthis["onbeforepaste"] = __arg_0;
 
-  static fullscreenEnabled_Getter(mthis) native "Document_fullscreenEnabled_Getter";
-  fullscreenEnabled_Getter_(mthis) => fullscreenEnabled_Getter(mthis);
+  onblur_Getter_(mthis) => mthis["onblur"];
 
-  static getCSSCanvasContext_Callback_2(mthis, __arg_0, __arg_1) native "Document_getCSSCanvasContext_Callback";
-  getCSSCanvasContext_Callback_2_(mthis, __arg_0, __arg_1) => getCSSCanvasContext_Callback_2(mthis, __arg_0, __arg_1);
+  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
 
-  static getCSSCanvasContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getCSSCanvasContext_Callback";
-  getCSSCanvasContext_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCSSCanvasContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  oncancel_Getter_(mthis) => mthis["oncancel"];
 
-  static getCSSCanvasContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_getCSSCanvasContext_Callback";
-  getCSSCanvasContext_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getCSSCanvasContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
 
-  static getCSSCanvasContext_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_getCSSCanvasContext_Callback";
-  getCSSCanvasContext_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getCSSCanvasContext_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  oncanplay_Getter_(mthis) => mthis["oncanplay"];
 
-  static getCSSCanvasContext_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Document_getCSSCanvasContext_Callback";
-  getCSSCanvasContext_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getCSSCanvasContext_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
 
-  static getElementById_Callback_0(mthis) native "Document_getElementById_Callback";
-  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
+  oncanplaythrough_Getter_(mthis) => mthis["oncanplaythrough"];
 
-  static getElementById_Callback_1(mthis, __arg_0) native "Document_getElementById_Callback";
-  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
+  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
 
-  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementById_Callback";
-  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementById_Callback";
-  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static getElementsByClassName_Callback_0(mthis) native "Document_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_0_(mthis) => getElementsByClassName_Callback_0(mthis);
+  onclick_Getter_(mthis) => mthis["onclick"];
 
-  static getElementsByClassName_Callback_1(mthis, __arg_0) native "Document_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_1_(mthis, __arg_0) => getElementsByClassName_Callback_1(mthis, __arg_0);
+  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
 
-  static getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static getElementsByName_Callback_0(mthis) native "Document_getElementsByName_Callback";
-  getElementsByName_Callback_0_(mthis) => getElementsByName_Callback_0(mthis);
+  oncontextmenu_Getter_(mthis) => mthis["oncontextmenu"];
 
-  static getElementsByName_Callback_1(mthis, __arg_0) native "Document_getElementsByName_Callback";
-  getElementsByName_Callback_1_(mthis, __arg_0) => getElementsByName_Callback_1(mthis, __arg_0);
+  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
 
-  static getElementsByName_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementsByName_Callback";
-  getElementsByName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByName_Callback_2(mthis, __arg_0, __arg_1);
+  oncopy_Getter_(mthis) => mthis["oncopy"];
 
-  static getElementsByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementsByName_Callback";
-  getElementsByName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  oncopy_Setter_(mthis, __arg_0) => mthis["oncopy"] = __arg_0;
 
-  static getElementsByTagName_Callback_0(mthis) native "Document_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_0_(mthis) => getElementsByTagName_Callback_0(mthis);
+  oncuechange_Getter_(mthis) => mthis["oncuechange"];
 
-  static getElementsByTagName_Callback_1(mthis, __arg_0) native "Document_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_1_(mthis, __arg_0) => getElementsByTagName_Callback_1(mthis, __arg_0);
+  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
 
-  static getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1);
+  oncut_Getter_(mthis) => mthis["oncut"];
 
-  static getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  oncut_Setter_(mthis, __arg_0) => mthis["oncut"] = __arg_0;
 
-  static head_Getter(mthis) native "Document_head_Getter";
-  head_Getter_(mthis) => head_Getter(mthis);
+  ondblclick_Getter_(mthis) => mthis["ondblclick"];
 
-  static hidden_Getter(mthis) native "Document_hidden_Getter";
-  hidden_Getter_(mthis) => hidden_Getter(mthis);
+  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
 
-  static implementation_Getter(mthis) native "Document_implementation_Getter";
-  implementation_Getter_(mthis) => implementation_Getter(mthis);
+  ondrag_Getter_(mthis) => mthis["ondrag"];
 
-  static importNode_Callback_0(mthis) native "Document_importNode_Callback";
-  importNode_Callback_0_(mthis) => importNode_Callback_0(mthis);
+  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
 
-  static importNode_Callback_1(mthis, __arg_0) native "Document_importNode_Callback";
-  importNode_Callback_1_(mthis, __arg_0) => importNode_Callback_1(mthis, __arg_0);
+  ondragend_Getter_(mthis) => mthis["ondragend"];
 
-  static importNode_Callback_2(mthis, __arg_0, __arg_1) native "Document_importNode_Callback";
-  importNode_Callback_2_(mthis, __arg_0, __arg_1) => importNode_Callback_2(mthis, __arg_0, __arg_1);
+  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
 
-  static importNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_importNode_Callback";
-  importNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ondragenter_Getter_(mthis) => mthis["ondragenter"];
 
-  static importNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_importNode_Callback";
-  importNode_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => importNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
 
-  static inputEncoding_Getter(mthis) native "Document_inputEncoding_Getter";
-  inputEncoding_Getter_(mthis) => inputEncoding_Getter(mthis);
+  ondragleave_Getter_(mthis) => mthis["ondragleave"];
 
-  static lastElementChild_Getter(mthis) native "Document_lastElementChild_Getter";
-  lastElementChild_Getter_(mthis) => lastElementChild_Getter(mthis);
+  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
 
-  static lastModified_Getter(mthis) native "Document_lastModified_Getter";
-  lastModified_Getter_(mthis) => lastModified_Getter(mthis);
+  ondragover_Getter_(mthis) => mthis["ondragover"];
 
-  static links_Getter(mthis) native "Document_links_Getter";
-  links_Getter_(mthis) => links_Getter(mthis);
+  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
 
-  static onabort_Getter(mthis) native "Document_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  ondragstart_Getter_(mthis) => mthis["ondragstart"];
 
-  static onabort_Setter(mthis, __arg_0) native "Document_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
 
-  static onautocomplete_Getter(mthis) native "Document_onautocomplete_Getter";
-  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+  ondrop_Getter_(mthis) => mthis["ondrop"];
 
-  static onautocomplete_Setter(mthis, __arg_0) native "Document_onautocomplete_Setter";
-  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
 
-  static onautocompleteerror_Getter(mthis) native "Document_onautocompleteerror_Getter";
-  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+  ondurationchange_Getter_(mthis) => mthis["ondurationchange"];
 
-  static onautocompleteerror_Setter(mthis, __arg_0) native "Document_onautocompleteerror_Setter";
-  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
 
-  static onbeforecopy_Getter(mthis) native "Document_onbeforecopy_Getter";
-  onbeforecopy_Getter_(mthis) => onbeforecopy_Getter(mthis);
+  onemptied_Getter_(mthis) => mthis["onemptied"];
 
-  static onbeforecopy_Setter(mthis, __arg_0) native "Document_onbeforecopy_Setter";
-  onbeforecopy_Setter_(mthis, __arg_0) => onbeforecopy_Setter(mthis, __arg_0);
+  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
 
-  static onbeforecut_Getter(mthis) native "Document_onbeforecut_Getter";
-  onbeforecut_Getter_(mthis) => onbeforecut_Getter(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static onbeforecut_Setter(mthis, __arg_0) native "Document_onbeforecut_Setter";
-  onbeforecut_Setter_(mthis, __arg_0) => onbeforecut_Setter(mthis, __arg_0);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static onbeforepaste_Getter(mthis) native "Document_onbeforepaste_Getter";
-  onbeforepaste_Getter_(mthis) => onbeforepaste_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onbeforepaste_Setter(mthis, __arg_0) native "Document_onbeforepaste_Setter";
-  onbeforepaste_Setter_(mthis, __arg_0) => onbeforepaste_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onblur_Getter(mthis) native "Document_onblur_Getter";
-  onblur_Getter_(mthis) => onblur_Getter(mthis);
+  onfocus_Getter_(mthis) => mthis["onfocus"];
 
-  static onblur_Setter(mthis, __arg_0) native "Document_onblur_Setter";
-  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
 
-  static oncancel_Getter(mthis) native "Document_oncancel_Getter";
-  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+  onfullscreenchange_Getter_(mthis) => mthis["onfullscreenchange"];
 
-  static oncancel_Setter(mthis, __arg_0) native "Document_oncancel_Setter";
-  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+  onfullscreenchange_Setter_(mthis, __arg_0) => mthis["onfullscreenchange"] = __arg_0;
 
-  static oncanplay_Getter(mthis) native "Document_oncanplay_Getter";
-  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+  onfullscreenerror_Getter_(mthis) => mthis["onfullscreenerror"];
 
-  static oncanplay_Setter(mthis, __arg_0) native "Document_oncanplay_Setter";
-  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+  onfullscreenerror_Setter_(mthis, __arg_0) => mthis["onfullscreenerror"] = __arg_0;
 
-  static oncanplaythrough_Getter(mthis) native "Document_oncanplaythrough_Getter";
-  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+  oninput_Getter_(mthis) => mthis["oninput"];
 
-  static oncanplaythrough_Setter(mthis, __arg_0) native "Document_oncanplaythrough_Setter";
-  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
 
-  static onchange_Getter(mthis) native "Document_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  oninvalid_Getter_(mthis) => mthis["oninvalid"];
 
-  static onchange_Setter(mthis, __arg_0) native "Document_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
 
-  static onclick_Getter(mthis) native "Document_onclick_Getter";
-  onclick_Getter_(mthis) => onclick_Getter(mthis);
+  onkeydown_Getter_(mthis) => mthis["onkeydown"];
 
-  static onclick_Setter(mthis, __arg_0) native "Document_onclick_Setter";
-  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
 
-  static onclose_Getter(mthis) native "Document_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  onkeypress_Getter_(mthis) => mthis["onkeypress"];
 
-  static onclose_Setter(mthis, __arg_0) native "Document_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
 
-  static oncontextmenu_Getter(mthis) native "Document_oncontextmenu_Getter";
-  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+  onkeyup_Getter_(mthis) => mthis["onkeyup"];
 
-  static oncontextmenu_Setter(mthis, __arg_0) native "Document_oncontextmenu_Setter";
-  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
 
-  static oncopy_Getter(mthis) native "Document_oncopy_Getter";
-  oncopy_Getter_(mthis) => oncopy_Getter(mthis);
+  onload_Getter_(mthis) => mthis["onload"];
 
-  static oncopy_Setter(mthis, __arg_0) native "Document_oncopy_Setter";
-  oncopy_Setter_(mthis, __arg_0) => oncopy_Setter(mthis, __arg_0);
+  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
 
-  static oncuechange_Getter(mthis) native "Document_oncuechange_Getter";
-  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+  onloadeddata_Getter_(mthis) => mthis["onloadeddata"];
 
-  static oncuechange_Setter(mthis, __arg_0) native "Document_oncuechange_Setter";
-  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
 
-  static oncut_Getter(mthis) native "Document_oncut_Getter";
-  oncut_Getter_(mthis) => oncut_Getter(mthis);
+  onloadedmetadata_Getter_(mthis) => mthis["onloadedmetadata"];
 
-  static oncut_Setter(mthis, __arg_0) native "Document_oncut_Setter";
-  oncut_Setter_(mthis, __arg_0) => oncut_Setter(mthis, __arg_0);
+  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
 
-  static ondblclick_Getter(mthis) native "Document_ondblclick_Getter";
-  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+  onloadstart_Getter_(mthis) => mthis["onloadstart"];
 
-  static ondblclick_Setter(mthis, __arg_0) native "Document_ondblclick_Setter";
-  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
 
-  static ondrag_Getter(mthis) native "Document_ondrag_Getter";
-  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+  onmousedown_Getter_(mthis) => mthis["onmousedown"];
 
-  static ondrag_Setter(mthis, __arg_0) native "Document_ondrag_Setter";
-  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
 
-  static ondragend_Getter(mthis) native "Document_ondragend_Getter";
-  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+  onmouseenter_Getter_(mthis) => mthis["onmouseenter"];
 
-  static ondragend_Setter(mthis, __arg_0) native "Document_ondragend_Setter";
-  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
 
-  static ondragenter_Getter(mthis) native "Document_ondragenter_Getter";
-  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+  onmouseleave_Getter_(mthis) => mthis["onmouseleave"];
 
-  static ondragenter_Setter(mthis, __arg_0) native "Document_ondragenter_Setter";
-  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
-
-  static ondragleave_Getter(mthis) native "Document_ondragleave_Getter";
-  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
-
-  static ondragleave_Setter(mthis, __arg_0) native "Document_ondragleave_Setter";
-  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
-
-  static ondragover_Getter(mthis) native "Document_ondragover_Getter";
-  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
-
-  static ondragover_Setter(mthis, __arg_0) native "Document_ondragover_Setter";
-  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
-
-  static ondragstart_Getter(mthis) native "Document_ondragstart_Getter";
-  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
-
-  static ondragstart_Setter(mthis, __arg_0) native "Document_ondragstart_Setter";
-  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
-
-  static ondrop_Getter(mthis) native "Document_ondrop_Getter";
-  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
-
-  static ondrop_Setter(mthis, __arg_0) native "Document_ondrop_Setter";
-  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
-
-  static ondurationchange_Getter(mthis) native "Document_ondurationchange_Getter";
-  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
-
-  static ondurationchange_Setter(mthis, __arg_0) native "Document_ondurationchange_Setter";
-  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
-
-  static onemptied_Getter(mthis) native "Document_onemptied_Getter";
-  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
-
-  static onemptied_Setter(mthis, __arg_0) native "Document_onemptied_Setter";
-  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
-
-  static onended_Getter(mthis) native "Document_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
-
-  static onended_Setter(mthis, __arg_0) native "Document_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
-
-  static onerror_Getter(mthis) native "Document_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
-
-  static onerror_Setter(mthis, __arg_0) native "Document_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
-
-  static onfocus_Getter(mthis) native "Document_onfocus_Getter";
-  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
-
-  static onfocus_Setter(mthis, __arg_0) native "Document_onfocus_Setter";
-  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
-
-  static onfullscreenchange_Getter(mthis) native "Document_onfullscreenchange_Getter";
-  onfullscreenchange_Getter_(mthis) => onfullscreenchange_Getter(mthis);
-
-  static onfullscreenchange_Setter(mthis, __arg_0) native "Document_onfullscreenchange_Setter";
-  onfullscreenchange_Setter_(mthis, __arg_0) => onfullscreenchange_Setter(mthis, __arg_0);
-
-  static onfullscreenerror_Getter(mthis) native "Document_onfullscreenerror_Getter";
-  onfullscreenerror_Getter_(mthis) => onfullscreenerror_Getter(mthis);
-
-  static onfullscreenerror_Setter(mthis, __arg_0) native "Document_onfullscreenerror_Setter";
-  onfullscreenerror_Setter_(mthis, __arg_0) => onfullscreenerror_Setter(mthis, __arg_0);
-
-  static oninput_Getter(mthis) native "Document_oninput_Getter";
-  oninput_Getter_(mthis) => oninput_Getter(mthis);
-
-  static oninput_Setter(mthis, __arg_0) native "Document_oninput_Setter";
-  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
-
-  static oninvalid_Getter(mthis) native "Document_oninvalid_Getter";
-  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
-
-  static oninvalid_Setter(mthis, __arg_0) native "Document_oninvalid_Setter";
-  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
-
-  static onkeydown_Getter(mthis) native "Document_onkeydown_Getter";
-  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
-
-  static onkeydown_Setter(mthis, __arg_0) native "Document_onkeydown_Setter";
-  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
-
-  static onkeypress_Getter(mthis) native "Document_onkeypress_Getter";
-  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
-
-  static onkeypress_Setter(mthis, __arg_0) native "Document_onkeypress_Setter";
-  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
-
-  static onkeyup_Getter(mthis) native "Document_onkeyup_Getter";
-  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
-
-  static onkeyup_Setter(mthis, __arg_0) native "Document_onkeyup_Setter";
-  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
-
-  static onload_Getter(mthis) native "Document_onload_Getter";
-  onload_Getter_(mthis) => onload_Getter(mthis);
-
-  static onload_Setter(mthis, __arg_0) native "Document_onload_Setter";
-  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
-
-  static onloadeddata_Getter(mthis) native "Document_onloadeddata_Getter";
-  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
-
-  static onloadeddata_Setter(mthis, __arg_0) native "Document_onloadeddata_Setter";
-  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
-
-  static onloadedmetadata_Getter(mthis) native "Document_onloadedmetadata_Getter";
-  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
-
-  static onloadedmetadata_Setter(mthis, __arg_0) native "Document_onloadedmetadata_Setter";
-  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
-
-  static onloadstart_Getter(mthis) native "Document_onloadstart_Getter";
-  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
-
-  static onloadstart_Setter(mthis, __arg_0) native "Document_onloadstart_Setter";
-  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
-
-  static onmousedown_Getter(mthis) native "Document_onmousedown_Getter";
-  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
-
-  static onmousedown_Setter(mthis, __arg_0) native "Document_onmousedown_Setter";
-  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
-
-  static onmouseenter_Getter(mthis) native "Document_onmouseenter_Getter";
-  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
-
-  static onmouseenter_Setter(mthis, __arg_0) native "Document_onmouseenter_Setter";
-  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
-
-  static onmouseleave_Getter(mthis) native "Document_onmouseleave_Getter";
-  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
-
-  static onmouseleave_Setter(mthis, __arg_0) native "Document_onmouseleave_Setter";
-  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
-
-  static onmousemove_Getter(mthis) native "Document_onmousemove_Getter";
-  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
-
-  static onmousemove_Setter(mthis, __arg_0) native "Document_onmousemove_Setter";
-  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
-
-  static onmouseout_Getter(mthis) native "Document_onmouseout_Getter";
-  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
-
-  static onmouseout_Setter(mthis, __arg_0) native "Document_onmouseout_Setter";
-  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
-
-  static onmouseover_Getter(mthis) native "Document_onmouseover_Getter";
-  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
-
-  static onmouseover_Setter(mthis, __arg_0) native "Document_onmouseover_Setter";
-  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
-
-  static onmouseup_Getter(mthis) native "Document_onmouseup_Getter";
-  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
-
-  static onmouseup_Setter(mthis, __arg_0) native "Document_onmouseup_Setter";
-  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
-
-  static onmousewheel_Getter(mthis) native "Document_onmousewheel_Getter";
-  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
-
-  static onmousewheel_Setter(mthis, __arg_0) native "Document_onmousewheel_Setter";
-  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
-
-  static onpaste_Getter(mthis) native "Document_onpaste_Getter";
-  onpaste_Getter_(mthis) => onpaste_Getter(mthis);
-
-  static onpaste_Setter(mthis, __arg_0) native "Document_onpaste_Setter";
-  onpaste_Setter_(mthis, __arg_0) => onpaste_Setter(mthis, __arg_0);
-
-  static onpause_Getter(mthis) native "Document_onpause_Getter";
-  onpause_Getter_(mthis) => onpause_Getter(mthis);
-
-  static onpause_Setter(mthis, __arg_0) native "Document_onpause_Setter";
-  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
-
-  static onplay_Getter(mthis) native "Document_onplay_Getter";
-  onplay_Getter_(mthis) => onplay_Getter(mthis);
-
-  static onplay_Setter(mthis, __arg_0) native "Document_onplay_Setter";
-  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
-
-  static onplaying_Getter(mthis) native "Document_onplaying_Getter";
-  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
-
-  static onplaying_Setter(mthis, __arg_0) native "Document_onplaying_Setter";
-  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
-
-  static onpointerlockchange_Getter(mthis) native "Document_onpointerlockchange_Getter";
-  onpointerlockchange_Getter_(mthis) => onpointerlockchange_Getter(mthis);
-
-  static onpointerlockchange_Setter(mthis, __arg_0) native "Document_onpointerlockchange_Setter";
-  onpointerlockchange_Setter_(mthis, __arg_0) => onpointerlockchange_Setter(mthis, __arg_0);
-
-  static onpointerlockerror_Getter(mthis) native "Document_onpointerlockerror_Getter";
-  onpointerlockerror_Getter_(mthis) => onpointerlockerror_Getter(mthis);
-
-  static onpointerlockerror_Setter(mthis, __arg_0) native "Document_onpointerlockerror_Setter";
-  onpointerlockerror_Setter_(mthis, __arg_0) => onpointerlockerror_Setter(mthis, __arg_0);
+  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
 
-  static onprogress_Getter(mthis) native "Document_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+  onmousemove_Getter_(mthis) => mthis["onmousemove"];
 
-  static onprogress_Setter(mthis, __arg_0) native "Document_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
 
-  static onratechange_Getter(mthis) native "Document_onratechange_Getter";
-  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
+  onmouseout_Getter_(mthis) => mthis["onmouseout"];
 
-  static onratechange_Setter(mthis, __arg_0) native "Document_onratechange_Setter";
-  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
+  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
 
-  static onreadystatechange_Getter(mthis) native "Document_onreadystatechange_Getter";
-  onreadystatechange_Getter_(mthis) => onreadystatechange_Getter(mthis);
+  onmouseover_Getter_(mthis) => mthis["onmouseover"];
 
-  static onreadystatechange_Setter(mthis, __arg_0) native "Document_onreadystatechange_Setter";
-  onreadystatechange_Setter_(mthis, __arg_0) => onreadystatechange_Setter(mthis, __arg_0);
+  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
 
-  static onreset_Getter(mthis) native "Document_onreset_Getter";
-  onreset_Getter_(mthis) => onreset_Getter(mthis);
+  onmouseup_Getter_(mthis) => mthis["onmouseup"];
 
-  static onreset_Setter(mthis, __arg_0) native "Document_onreset_Setter";
-  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
+  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
 
-  static onresize_Getter(mthis) native "Document_onresize_Getter";
-  onresize_Getter_(mthis) => onresize_Getter(mthis);
+  onmousewheel_Getter_(mthis) => mthis["onmousewheel"];
 
-  static onresize_Setter(mthis, __arg_0) native "Document_onresize_Setter";
-  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
 
-  static onscroll_Getter(mthis) native "Document_onscroll_Getter";
-  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+  onpaste_Getter_(mthis) => mthis["onpaste"];
 
-  static onscroll_Setter(mthis, __arg_0) native "Document_onscroll_Setter";
-  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+  onpaste_Setter_(mthis, __arg_0) => mthis["onpaste"] = __arg_0;
 
-  static onsearch_Getter(mthis) native "Document_onsearch_Getter";
-  onsearch_Getter_(mthis) => onsearch_Getter(mthis);
+  onpause_Getter_(mthis) => mthis["onpause"];
 
-  static onsearch_Setter(mthis, __arg_0) native "Document_onsearch_Setter";
-  onsearch_Setter_(mthis, __arg_0) => onsearch_Setter(mthis, __arg_0);
+  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
 
-  static onsecuritypolicyviolation_Getter(mthis) native "Document_onsecuritypolicyviolation_Getter";
-  onsecuritypolicyviolation_Getter_(mthis) => onsecuritypolicyviolation_Getter(mthis);
+  onplay_Getter_(mthis) => mthis["onplay"];
 
-  static onsecuritypolicyviolation_Setter(mthis, __arg_0) native "Document_onsecuritypolicyviolation_Setter";
-  onsecuritypolicyviolation_Setter_(mthis, __arg_0) => onsecuritypolicyviolation_Setter(mthis, __arg_0);
+  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
 
-  static onseeked_Getter(mthis) native "Document_onseeked_Getter";
-  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
+  onplaying_Getter_(mthis) => mthis["onplaying"];
 
-  static onseeked_Setter(mthis, __arg_0) native "Document_onseeked_Setter";
-  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
+  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
 
-  static onseeking_Getter(mthis) native "Document_onseeking_Getter";
-  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
+  onpointerlockchange_Getter_(mthis) => mthis["onpointerlockchange"];
 
-  static onseeking_Setter(mthis, __arg_0) native "Document_onseeking_Setter";
-  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
+  onpointerlockchange_Setter_(mthis, __arg_0) => mthis["onpointerlockchange"] = __arg_0;
 
-  static onselect_Getter(mthis) native "Document_onselect_Getter";
-  onselect_Getter_(mthis) => onselect_Getter(mthis);
+  onpointerlockerror_Getter_(mthis) => mthis["onpointerlockerror"];
 
-  static onselect_Setter(mthis, __arg_0) native "Document_onselect_Setter";
-  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
+  onpointerlockerror_Setter_(mthis, __arg_0) => mthis["onpointerlockerror"] = __arg_0;
 
-  static onselectionchange_Getter(mthis) native "Document_onselectionchange_Getter";
-  onselectionchange_Getter_(mthis) => onselectionchange_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onselectionchange_Setter(mthis, __arg_0) native "Document_onselectionchange_Setter";
-  onselectionchange_Setter_(mthis, __arg_0) => onselectionchange_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static onselectstart_Getter(mthis) native "Document_onselectstart_Getter";
-  onselectstart_Getter_(mthis) => onselectstart_Getter(mthis);
+  onratechange_Getter_(mthis) => mthis["onratechange"];
 
-  static onselectstart_Setter(mthis, __arg_0) native "Document_onselectstart_Setter";
-  onselectstart_Setter_(mthis, __arg_0) => onselectstart_Setter(mthis, __arg_0);
+  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
 
-  static onshow_Getter(mthis) native "Document_onshow_Getter";
-  onshow_Getter_(mthis) => onshow_Getter(mthis);
+  onreadystatechange_Getter_(mthis) => mthis["onreadystatechange"];
 
-  static onshow_Setter(mthis, __arg_0) native "Document_onshow_Setter";
-  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+  onreadystatechange_Setter_(mthis, __arg_0) => mthis["onreadystatechange"] = __arg_0;
 
-  static onstalled_Getter(mthis) native "Document_onstalled_Getter";
-  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
+  onreset_Getter_(mthis) => mthis["onreset"];
 
-  static onstalled_Setter(mthis, __arg_0) native "Document_onstalled_Setter";
-  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
+  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
 
-  static onsubmit_Getter(mthis) native "Document_onsubmit_Getter";
-  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
+  onresize_Getter_(mthis) => mthis["onresize"];
 
-  static onsubmit_Setter(mthis, __arg_0) native "Document_onsubmit_Setter";
-  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
+  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
 
-  static onsuspend_Getter(mthis) native "Document_onsuspend_Getter";
-  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
+  onscroll_Getter_(mthis) => mthis["onscroll"];
 
-  static onsuspend_Setter(mthis, __arg_0) native "Document_onsuspend_Setter";
-  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
+  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
 
-  static ontimeupdate_Getter(mthis) native "Document_ontimeupdate_Getter";
-  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
+  onsearch_Getter_(mthis) => mthis["onsearch"];
 
-  static ontimeupdate_Setter(mthis, __arg_0) native "Document_ontimeupdate_Setter";
-  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
+  onsearch_Setter_(mthis, __arg_0) => mthis["onsearch"] = __arg_0;
 
-  static ontoggle_Getter(mthis) native "Document_ontoggle_Getter";
-  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
+  onsecuritypolicyviolation_Getter_(mthis) => mthis["onsecuritypolicyviolation"];
 
-  static ontoggle_Setter(mthis, __arg_0) native "Document_ontoggle_Setter";
-  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
+  onsecuritypolicyviolation_Setter_(mthis, __arg_0) => mthis["onsecuritypolicyviolation"] = __arg_0;
 
-  static ontouchcancel_Getter(mthis) native "Document_ontouchcancel_Getter";
-  ontouchcancel_Getter_(mthis) => ontouchcancel_Getter(mthis);
+  onseeked_Getter_(mthis) => mthis["onseeked"];
 
-  static ontouchcancel_Setter(mthis, __arg_0) native "Document_ontouchcancel_Setter";
-  ontouchcancel_Setter_(mthis, __arg_0) => ontouchcancel_Setter(mthis, __arg_0);
+  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
 
-  static ontouchend_Getter(mthis) native "Document_ontouchend_Getter";
-  ontouchend_Getter_(mthis) => ontouchend_Getter(mthis);
+  onseeking_Getter_(mthis) => mthis["onseeking"];
 
-  static ontouchend_Setter(mthis, __arg_0) native "Document_ontouchend_Setter";
-  ontouchend_Setter_(mthis, __arg_0) => ontouchend_Setter(mthis, __arg_0);
+  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
 
-  static ontouchmove_Getter(mthis) native "Document_ontouchmove_Getter";
-  ontouchmove_Getter_(mthis) => ontouchmove_Getter(mthis);
+  onselect_Getter_(mthis) => mthis["onselect"];
 
-  static ontouchmove_Setter(mthis, __arg_0) native "Document_ontouchmove_Setter";
-  ontouchmove_Setter_(mthis, __arg_0) => ontouchmove_Setter(mthis, __arg_0);
+  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
 
-  static ontouchstart_Getter(mthis) native "Document_ontouchstart_Getter";
-  ontouchstart_Getter_(mthis) => ontouchstart_Getter(mthis);
+  onselectionchange_Getter_(mthis) => mthis["onselectionchange"];
 
-  static ontouchstart_Setter(mthis, __arg_0) native "Document_ontouchstart_Setter";
-  ontouchstart_Setter_(mthis, __arg_0) => ontouchstart_Setter(mthis, __arg_0);
+  onselectionchange_Setter_(mthis, __arg_0) => mthis["onselectionchange"] = __arg_0;
 
-  static onvolumechange_Getter(mthis) native "Document_onvolumechange_Getter";
-  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+  onselectstart_Getter_(mthis) => mthis["onselectstart"];
 
-  static onvolumechange_Setter(mthis, __arg_0) native "Document_onvolumechange_Setter";
-  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+  onselectstart_Setter_(mthis, __arg_0) => mthis["onselectstart"] = __arg_0;
 
-  static onwaiting_Getter(mthis) native "Document_onwaiting_Getter";
-  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+  onshow_Getter_(mthis) => mthis["onshow"];
 
-  static onwaiting_Setter(mthis, __arg_0) native "Document_onwaiting_Setter";
-  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
 
-  static onwebkitfullscreenchange_Getter(mthis) native "Document_onwebkitfullscreenchange_Getter";
-  onwebkitfullscreenchange_Getter_(mthis) => onwebkitfullscreenchange_Getter(mthis);
+  onstalled_Getter_(mthis) => mthis["onstalled"];
 
-  static onwebkitfullscreenchange_Setter(mthis, __arg_0) native "Document_onwebkitfullscreenchange_Setter";
-  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => onwebkitfullscreenchange_Setter(mthis, __arg_0);
+  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
 
-  static onwebkitfullscreenerror_Getter(mthis) native "Document_onwebkitfullscreenerror_Getter";
-  onwebkitfullscreenerror_Getter_(mthis) => onwebkitfullscreenerror_Getter(mthis);
+  onsubmit_Getter_(mthis) => mthis["onsubmit"];
 
-  static onwebkitfullscreenerror_Setter(mthis, __arg_0) native "Document_onwebkitfullscreenerror_Setter";
-  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => onwebkitfullscreenerror_Setter(mthis, __arg_0);
+  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
 
-  static onwheel_Getter(mthis) native "Document_onwheel_Getter";
-  onwheel_Getter_(mthis) => onwheel_Getter(mthis);
+  onsuspend_Getter_(mthis) => mthis["onsuspend"];
 
-  static onwheel_Setter(mthis, __arg_0) native "Document_onwheel_Setter";
-  onwheel_Setter_(mthis, __arg_0) => onwheel_Setter(mthis, __arg_0);
+  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
 
-  static plugins_Getter(mthis) native "Document_plugins_Getter";
-  plugins_Getter_(mthis) => plugins_Getter(mthis);
+  ontimeupdate_Getter_(mthis) => mthis["ontimeupdate"];
 
-  static pointerLockElement_Getter(mthis) native "Document_pointerLockElement_Getter";
-  pointerLockElement_Getter_(mthis) => pointerLockElement_Getter(mthis);
+  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
 
-  static preferredStylesheetSet_Getter(mthis) native "Document_preferredStylesheetSet_Getter";
-  preferredStylesheetSet_Getter_(mthis) => preferredStylesheetSet_Getter(mthis);
+  ontoggle_Getter_(mthis) => mthis["ontoggle"];
 
-  static queryCommandEnabled_Callback_0(mthis) native "Document_queryCommandEnabled_Callback";
-  queryCommandEnabled_Callback_0_(mthis) => queryCommandEnabled_Callback_0(mthis);
+  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
 
-  static queryCommandEnabled_Callback_1(mthis, __arg_0) native "Document_queryCommandEnabled_Callback";
-  queryCommandEnabled_Callback_1_(mthis, __arg_0) => queryCommandEnabled_Callback_1(mthis, __arg_0);
+  ontouchcancel_Getter_(mthis) => mthis["ontouchcancel"];
 
-  static queryCommandEnabled_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandEnabled_Callback";
-  queryCommandEnabled_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandEnabled_Callback_2(mthis, __arg_0, __arg_1);
+  ontouchcancel_Setter_(mthis, __arg_0) => mthis["ontouchcancel"] = __arg_0;
 
-  static queryCommandEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandEnabled_Callback";
-  queryCommandEnabled_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ontouchend_Getter_(mthis) => mthis["ontouchend"];
 
-  static queryCommandIndeterm_Callback_0(mthis) native "Document_queryCommandIndeterm_Callback";
-  queryCommandIndeterm_Callback_0_(mthis) => queryCommandIndeterm_Callback_0(mthis);
+  ontouchend_Setter_(mthis, __arg_0) => mthis["ontouchend"] = __arg_0;
 
-  static queryCommandIndeterm_Callback_1(mthis, __arg_0) native "Document_queryCommandIndeterm_Callback";
-  queryCommandIndeterm_Callback_1_(mthis, __arg_0) => queryCommandIndeterm_Callback_1(mthis, __arg_0);
+  ontouchmove_Getter_(mthis) => mthis["ontouchmove"];
 
-  static queryCommandIndeterm_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandIndeterm_Callback";
-  queryCommandIndeterm_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandIndeterm_Callback_2(mthis, __arg_0, __arg_1);
+  ontouchmove_Setter_(mthis, __arg_0) => mthis["ontouchmove"] = __arg_0;
 
-  static queryCommandIndeterm_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandIndeterm_Callback";
-  queryCommandIndeterm_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandIndeterm_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ontouchstart_Getter_(mthis) => mthis["ontouchstart"];
 
-  static queryCommandState_Callback_0(mthis) native "Document_queryCommandState_Callback";
-  queryCommandState_Callback_0_(mthis) => queryCommandState_Callback_0(mthis);
+  ontouchstart_Setter_(mthis, __arg_0) => mthis["ontouchstart"] = __arg_0;
 
-  static queryCommandState_Callback_1(mthis, __arg_0) native "Document_queryCommandState_Callback";
-  queryCommandState_Callback_1_(mthis, __arg_0) => queryCommandState_Callback_1(mthis, __arg_0);
+  onvolumechange_Getter_(mthis) => mthis["onvolumechange"];
 
-  static queryCommandState_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandState_Callback";
-  queryCommandState_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandState_Callback_2(mthis, __arg_0, __arg_1);
+  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
 
-  static queryCommandState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandState_Callback";
-  queryCommandState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onwaiting_Getter_(mthis) => mthis["onwaiting"];
 
-  static queryCommandSupported_Callback_0(mthis) native "Document_queryCommandSupported_Callback";
-  queryCommandSupported_Callback_0_(mthis) => queryCommandSupported_Callback_0(mthis);
+  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
 
-  static queryCommandSupported_Callback_1(mthis, __arg_0) native "Document_queryCommandSupported_Callback";
-  queryCommandSupported_Callback_1_(mthis, __arg_0) => queryCommandSupported_Callback_1(mthis, __arg_0);
+  onwebkitfullscreenchange_Getter_(mthis) => mthis["onwebkitfullscreenchange"];
 
-  static queryCommandSupported_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandSupported_Callback";
-  queryCommandSupported_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandSupported_Callback_2(mthis, __arg_0, __arg_1);
+  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenchange"] = __arg_0;
 
-  static queryCommandSupported_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandSupported_Callback";
-  queryCommandSupported_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandSupported_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onwebkitfullscreenerror_Getter_(mthis) => mthis["onwebkitfullscreenerror"];
 
-  static queryCommandValue_Callback_0(mthis) native "Document_queryCommandValue_Callback";
-  queryCommandValue_Callback_0_(mthis) => queryCommandValue_Callback_0(mthis);
+  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenerror"] = __arg_0;
 
-  static queryCommandValue_Callback_1(mthis, __arg_0) native "Document_queryCommandValue_Callback";
-  queryCommandValue_Callback_1_(mthis, __arg_0) => queryCommandValue_Callback_1(mthis, __arg_0);
+  onwheel_Getter_(mthis) => mthis["onwheel"];
 
-  static queryCommandValue_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandValue_Callback";
-  queryCommandValue_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandValue_Callback_2(mthis, __arg_0, __arg_1);
+  onwheel_Setter_(mthis, __arg_0) => mthis["onwheel"] = __arg_0;
 
-  static queryCommandValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandValue_Callback";
-  queryCommandValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  plugins_Getter_(mthis) => mthis["plugins"];
 
-  static querySelectorAll_Callback_0(mthis) native "Document_querySelectorAll_Callback";
-  querySelectorAll_Callback_0_(mthis) => querySelectorAll_Callback_0(mthis);
+  pointerLockElement_Getter_(mthis) => mthis["pointerLockElement"];
 
-  static querySelectorAll_Callback_1(mthis, __arg_0) native "Document_querySelectorAll_Callback";
-  querySelectorAll_Callback_1_(mthis, __arg_0) => querySelectorAll_Callback_1(mthis, __arg_0);
+  preferredStylesheetSet_Getter_(mthis) => mthis["preferredStylesheetSet"];
 
-  static querySelectorAll_Callback_2(mthis, __arg_0, __arg_1) native "Document_querySelectorAll_Callback";
-  querySelectorAll_Callback_2_(mthis, __arg_0, __arg_1) => querySelectorAll_Callback_2(mthis, __arg_0, __arg_1);
+  queryCommandEnabled_Callback_0_(mthis) => mthis.callMethod("queryCommandEnabled", []);
 
-  static querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_querySelectorAll_Callback";
-  querySelectorAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  queryCommandEnabled_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryCommandEnabled", [__arg_0]);
 
-  static querySelector_Callback_0(mthis) native "Document_querySelector_Callback";
-  querySelector_Callback_0_(mthis) => querySelector_Callback_0(mthis);
+  queryCommandIndeterm_Callback_0_(mthis) => mthis.callMethod("queryCommandIndeterm", []);
 
-  static querySelector_Callback_1(mthis, __arg_0) native "Document_querySelector_Callback";
-  querySelector_Callback_1_(mthis, __arg_0) => querySelector_Callback_1(mthis, __arg_0);
+  queryCommandIndeterm_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryCommandIndeterm", [__arg_0]);
 
-  static querySelector_Callback_2(mthis, __arg_0, __arg_1) native "Document_querySelector_Callback";
-  querySelector_Callback_2_(mthis, __arg_0, __arg_1) => querySelector_Callback_2(mthis, __arg_0, __arg_1);
+  queryCommandState_Callback_0_(mthis) => mthis.callMethod("queryCommandState", []);
 
-  static querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_querySelector_Callback";
-  querySelector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  queryCommandState_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryCommandState", [__arg_0]);
 
-  static readyState_Getter(mthis) native "Document_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
+  queryCommandSupported_Callback_0_(mthis) => mthis.callMethod("queryCommandSupported", []);
 
-  static referrer_Getter(mthis) native "Document_referrer_Getter";
-  referrer_Getter_(mthis) => referrer_Getter(mthis);
+  queryCommandSupported_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryCommandSupported", [__arg_0]);
 
-  static registerElement_Callback_0(mthis) native "Document_registerElement_Callback";
-  registerElement_Callback_0_(mthis) => registerElement_Callback_0(mthis);
+  queryCommandValue_Callback_0_(mthis) => mthis.callMethod("queryCommandValue", []);
 
-  static registerElement_Callback_1(mthis, __arg_0) native "Document_registerElement_Callback";
-  registerElement_Callback_1_(mthis, __arg_0) => registerElement_Callback_1(mthis, __arg_0);
+  queryCommandValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryCommandValue", [__arg_0]);
 
-  static registerElement_Callback_2(mthis, __arg_0, __arg_1) native "Document_registerElement_Callback";
-  registerElement_Callback_2_(mthis, __arg_0, __arg_1) => registerElement_Callback_2(mthis, __arg_0, __arg_1);
+  querySelectorAll_Callback_0_(mthis) => mthis.callMethod("querySelectorAll", []);
 
-  static registerElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_registerElement_Callback";
-  registerElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => registerElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  querySelectorAll_Callback_1_(mthis, __arg_0) => mthis.callMethod("querySelectorAll", [__arg_0]);
 
-  static registerElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_registerElement_Callback";
-  registerElement_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => registerElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  querySelector_Callback_0_(mthis) => mthis.callMethod("querySelector", []);
 
-  static rootElement_Getter(mthis) native "Document_rootElement_Getter";
-  rootElement_Getter_(mthis) => rootElement_Getter(mthis);
+  querySelector_Callback_1_(mthis, __arg_0) => mthis.callMethod("querySelector", [__arg_0]);
 
-  static scripts_Getter(mthis) native "Document_scripts_Getter";
-  scripts_Getter_(mthis) => scripts_Getter(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static selectedStylesheetSet_Getter(mthis) native "Document_selectedStylesheetSet_Getter";
-  selectedStylesheetSet_Getter_(mthis) => selectedStylesheetSet_Getter(mthis);
+  referrer_Getter_(mthis) => mthis["referrer"];
 
-  static selectedStylesheetSet_Setter(mthis, __arg_0) native "Document_selectedStylesheetSet_Setter";
-  selectedStylesheetSet_Setter_(mthis, __arg_0) => selectedStylesheetSet_Setter(mthis, __arg_0);
+  registerElement_Callback_0_(mthis) => mthis.callMethod("registerElement", []);
 
-  static styleSheets_Getter(mthis) native "Document_styleSheets_Getter";
-  styleSheets_Getter_(mthis) => styleSheets_Getter(mthis);
+  registerElement_Callback_1_(mthis, __arg_0) => mthis.callMethod("registerElement", [__arg_0]);
 
-  static timeline_Getter(mthis) native "Document_timeline_Getter";
-  timeline_Getter_(mthis) => timeline_Getter(mthis);
+  registerElement_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("registerElement", [__arg_0, __arg_1]);
 
-  static title_Getter(mthis) native "Document_title_Getter";
-  title_Getter_(mthis) => title_Getter(mthis);
+  rootElement_Getter_(mthis) => mthis["rootElement"];
 
-  static title_Setter(mthis, __arg_0) native "Document_title_Setter";
-  title_Setter_(mthis, __arg_0) => title_Setter(mthis, __arg_0);
+  scripts_Getter_(mthis) => mthis["scripts"];
 
-  static transformDocumentToTreeView_Callback_0(mthis) native "Document_transformDocumentToTreeView_Callback";
-  transformDocumentToTreeView_Callback_0_(mthis) => transformDocumentToTreeView_Callback_0(mthis);
+  selectedStylesheetSet_Getter_(mthis) => mthis["selectedStylesheetSet"];
 
-  static transformDocumentToTreeView_Callback_1(mthis, __arg_0) native "Document_transformDocumentToTreeView_Callback";
-  transformDocumentToTreeView_Callback_1_(mthis, __arg_0) => transformDocumentToTreeView_Callback_1(mthis, __arg_0);
+  selectedStylesheetSet_Setter_(mthis, __arg_0) => mthis["selectedStylesheetSet"] = __arg_0;
 
-  static transformDocumentToTreeView_Callback_2(mthis, __arg_0, __arg_1) native "Document_transformDocumentToTreeView_Callback";
-  transformDocumentToTreeView_Callback_2_(mthis, __arg_0, __arg_1) => transformDocumentToTreeView_Callback_2(mthis, __arg_0, __arg_1);
+  styleSheets_Getter_(mthis) => mthis["styleSheets"];
 
-  static transformDocumentToTreeView_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_transformDocumentToTreeView_Callback";
-  transformDocumentToTreeView_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transformDocumentToTreeView_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  timeline_Getter_(mthis) => mthis["timeline"];
 
-  static visibilityState_Getter(mthis) native "Document_visibilityState_Getter";
-  visibilityState_Getter_(mthis) => visibilityState_Getter(mthis);
+  title_Getter_(mthis) => mthis["title"];
 
-  static webkitCancelFullScreen_Callback_0(mthis) native "Document_webkitCancelFullScreen_Callback";
-  webkitCancelFullScreen_Callback_0_(mthis) => webkitCancelFullScreen_Callback_0(mthis);
+  title_Setter_(mthis, __arg_0) => mthis["title"] = __arg_0;
 
-  static webkitCancelFullScreen_Callback_1(mthis, __arg_0) native "Document_webkitCancelFullScreen_Callback";
-  webkitCancelFullScreen_Callback_1_(mthis, __arg_0) => webkitCancelFullScreen_Callback_1(mthis, __arg_0);
+  transformDocumentToTreeView_Callback_0_(mthis) => mthis.callMethod("transformDocumentToTreeView", []);
 
-  static webkitCancelFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "Document_webkitCancelFullScreen_Callback";
-  webkitCancelFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitCancelFullScreen_Callback_2(mthis, __arg_0, __arg_1);
+  transformDocumentToTreeView_Callback_1_(mthis, __arg_0) => mthis.callMethod("transformDocumentToTreeView", [__arg_0]);
 
-  static webkitExitFullscreen_Callback_0(mthis) native "Document_webkitExitFullscreen_Callback";
-  webkitExitFullscreen_Callback_0_(mthis) => webkitExitFullscreen_Callback_0(mthis);
+  visibilityState_Getter_(mthis) => mthis["visibilityState"];
 
-  static webkitExitFullscreen_Callback_1(mthis, __arg_0) native "Document_webkitExitFullscreen_Callback";
-  webkitExitFullscreen_Callback_1_(mthis, __arg_0) => webkitExitFullscreen_Callback_1(mthis, __arg_0);
+  webkitCancelFullScreen_Callback_0_(mthis) => mthis.callMethod("webkitCancelFullScreen", []);
 
-  static webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Document_webkitExitFullscreen_Callback";
-  webkitExitFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+  webkitExitFullscreen_Callback_0_(mthis) => mthis.callMethod("webkitExitFullscreen", []);
 
-  static webkitFullscreenElement_Getter(mthis) native "Document_webkitFullscreenElement_Getter";
-  webkitFullscreenElement_Getter_(mthis) => webkitFullscreenElement_Getter(mthis);
+  webkitFullscreenElement_Getter_(mthis) => mthis["webkitFullscreenElement"];
 
-  static webkitFullscreenEnabled_Getter(mthis) native "Document_webkitFullscreenEnabled_Getter";
-  webkitFullscreenEnabled_Getter_(mthis) => webkitFullscreenEnabled_Getter(mthis);
+  webkitFullscreenEnabled_Getter_(mthis) => mthis["webkitFullscreenEnabled"];
 
-  static webkitHidden_Getter(mthis) native "Document_webkitHidden_Getter";
-  webkitHidden_Getter_(mthis) => webkitHidden_Getter(mthis);
+  webkitHidden_Getter_(mthis) => mthis["webkitHidden"];
 
-  static webkitIsFullScreen_Getter(mthis) native "Document_webkitIsFullScreen_Getter";
-  webkitIsFullScreen_Getter_(mthis) => webkitIsFullScreen_Getter(mthis);
+  webkitIsFullScreen_Getter_(mthis) => mthis["webkitIsFullScreen"];
 
-  static webkitVisibilityState_Getter(mthis) native "Document_webkitVisibilityState_Getter";
-  webkitVisibilityState_Getter_(mthis) => webkitVisibilityState_Getter(mthis);
+  webkitVisibilityState_Getter_(mthis) => mthis["webkitVisibilityState"];
 
-  static xmlEncoding_Getter(mthis) native "Document_xmlEncoding_Getter";
-  xmlEncoding_Getter_(mthis) => xmlEncoding_Getter(mthis);
+  xmlEncoding_Getter_(mthis) => mthis["xmlEncoding"];
 
 }
 
 class BlinkDocumentFragment extends BlinkNode {
   static final instance = new BlinkDocumentFragment();
 
-  static childElementCount_Getter(mthis) native "DocumentFragment_childElementCount_Getter";
-  childElementCount_Getter_(mthis) => childElementCount_Getter(mthis);
+  childElementCount_Getter_(mthis) => mthis["childElementCount"];
 
-  static constructorCallback_0() native "DocumentFragment_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["DocumentFragment"], []);
 
-  static constructorCallback_1(__arg_0) native "DocumentFragment_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  firstElementChild_Getter_(mthis) => mthis["firstElementChild"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "DocumentFragment_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  getElementById_Callback_0_(mthis) => mthis.callMethod("getElementById", []);
 
-  static firstElementChild_Getter(mthis) native "DocumentFragment_firstElementChild_Getter";
-  firstElementChild_Getter_(mthis) => firstElementChild_Getter(mthis);
+  getElementById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementById", [__arg_0]);
 
-  static getElementById_Callback_0(mthis) native "DocumentFragment_getElementById_Callback";
-  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
+  lastElementChild_Getter_(mthis) => mthis["lastElementChild"];
 
-  static getElementById_Callback_1(mthis, __arg_0) native "DocumentFragment_getElementById_Callback";
-  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
+  querySelectorAll_Callback_0_(mthis) => mthis.callMethod("querySelectorAll", []);
 
-  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "DocumentFragment_getElementById_Callback";
-  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
+  querySelectorAll_Callback_1_(mthis, __arg_0) => mthis.callMethod("querySelectorAll", [__arg_0]);
 
-  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DocumentFragment_getElementById_Callback";
-  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  querySelector_Callback_0_(mthis) => mthis.callMethod("querySelector", []);
 
-  static lastElementChild_Getter(mthis) native "DocumentFragment_lastElementChild_Getter";
-  lastElementChild_Getter_(mthis) => lastElementChild_Getter(mthis);
-
-  static querySelectorAll_Callback_0(mthis) native "DocumentFragment_querySelectorAll_Callback";
-  querySelectorAll_Callback_0_(mthis) => querySelectorAll_Callback_0(mthis);
-
-  static querySelectorAll_Callback_1(mthis, __arg_0) native "DocumentFragment_querySelectorAll_Callback";
-  querySelectorAll_Callback_1_(mthis, __arg_0) => querySelectorAll_Callback_1(mthis, __arg_0);
-
-  static querySelectorAll_Callback_2(mthis, __arg_0, __arg_1) native "DocumentFragment_querySelectorAll_Callback";
-  querySelectorAll_Callback_2_(mthis, __arg_0, __arg_1) => querySelectorAll_Callback_2(mthis, __arg_0, __arg_1);
-
-  static querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DocumentFragment_querySelectorAll_Callback";
-  querySelectorAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static querySelector_Callback_0(mthis) native "DocumentFragment_querySelector_Callback";
-  querySelector_Callback_0_(mthis) => querySelector_Callback_0(mthis);
-
-  static querySelector_Callback_1(mthis, __arg_0) native "DocumentFragment_querySelector_Callback";
-  querySelector_Callback_1_(mthis, __arg_0) => querySelector_Callback_1(mthis, __arg_0);
-
-  static querySelector_Callback_2(mthis, __arg_0, __arg_1) native "DocumentFragment_querySelector_Callback";
-  querySelector_Callback_2_(mthis, __arg_0, __arg_1) => querySelector_Callback_2(mthis, __arg_0, __arg_1);
-
-  static querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DocumentFragment_querySelector_Callback";
-  querySelector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  querySelector_Callback_1_(mthis, __arg_0) => mthis.callMethod("querySelector", [__arg_0]);
 
 }
 
@@ -6979,23 +3921,17 @@
 class BlinkDynamicsCompressorNode extends BlinkAudioNode {
   static final instance = new BlinkDynamicsCompressorNode();
 
-  static attack_Getter(mthis) native "DynamicsCompressorNode_attack_Getter";
-  attack_Getter_(mthis) => attack_Getter(mthis);
+  attack_Getter_(mthis) => mthis["attack"];
 
-  static knee_Getter(mthis) native "DynamicsCompressorNode_knee_Getter";
-  knee_Getter_(mthis) => knee_Getter(mthis);
+  knee_Getter_(mthis) => mthis["knee"];
 
-  static ratio_Getter(mthis) native "DynamicsCompressorNode_ratio_Getter";
-  ratio_Getter_(mthis) => ratio_Getter(mthis);
+  ratio_Getter_(mthis) => mthis["ratio"];
 
-  static reduction_Getter(mthis) native "DynamicsCompressorNode_reduction_Getter";
-  reduction_Getter_(mthis) => reduction_Getter(mthis);
+  reduction_Getter_(mthis) => mthis["reduction"];
 
-  static release_Getter(mthis) native "DynamicsCompressorNode_release_Getter";
-  release_Getter_(mthis) => release_Getter(mthis);
+  release_Getter_(mthis) => mthis["release"];
 
-  static threshold_Getter(mthis) native "DynamicsCompressorNode_threshold_Getter";
-  threshold_Getter_(mthis) => threshold_Getter(mthis);
+  threshold_Getter_(mthis) => mthis["threshold"];
 
 }
 
@@ -7022,2248 +3958,1154 @@
 class BlinkElement extends BlinkNode {
   static final instance = new BlinkElement();
 
-  static animate_Callback_0(mthis) native "Element_animate_Callback";
-  animate_Callback_0_(mthis) => animate_Callback_0(mthis);
+  animate_Callback_0_(mthis) => mthis.callMethod("animate", []);
 
-  static animate_Callback_1(mthis, __arg_0) native "Element_animate_Callback";
-  animate_Callback_1_(mthis, __arg_0) => animate_Callback_1(mthis, __arg_0);
+  animate_Callback_1_(mthis, __arg_0) => mthis.callMethod("animate", [__arg_0]);
 
-  static animate_Callback_2(mthis, __arg_0, __arg_1) native "Element_animate_Callback";
-  animate_Callback_2_(mthis, __arg_0, __arg_1) => animate_Callback_2(mthis, __arg_0, __arg_1);
+  animate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("animate", [__arg_0, __arg_1]);
 
-  static animate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_animate_Callback";
-  animate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => animate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  attributes_Getter_(mthis) => mthis["attributes"];
 
-  static animate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_animate_Callback";
-  animate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => animate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  blur_Callback_0_(mthis) => mthis.callMethod("blur", []);
 
-  static attributes_Getter(mthis) native "Element_attributes_Getter";
-  attributes_Getter_(mthis) => attributes_Getter(mthis);
+  childElementCount_Getter_(mthis) => mthis["childElementCount"];
 
-  static blur_Callback_0(mthis) native "Element_blur_Callback";
-  blur_Callback_0_(mthis) => blur_Callback_0(mthis);
+  children_Getter_(mthis) => mthis["children"];
 
-  static blur_Callback_1(mthis, __arg_0) native "Element_blur_Callback";
-  blur_Callback_1_(mthis, __arg_0) => blur_Callback_1(mthis, __arg_0);
+  classList_Getter_(mthis) => mthis["classList"];
 
-  static blur_Callback_2(mthis, __arg_0, __arg_1) native "Element_blur_Callback";
-  blur_Callback_2_(mthis, __arg_0, __arg_1) => blur_Callback_2(mthis, __arg_0, __arg_1);
+  className_Getter_(mthis) => mthis["className"];
 
-  static childElementCount_Getter(mthis) native "Element_childElementCount_Getter";
-  childElementCount_Getter_(mthis) => childElementCount_Getter(mthis);
+  className_Setter_(mthis, __arg_0) => mthis["className"] = __arg_0;
 
-  static children_Getter(mthis) native "Element_children_Getter";
-  children_Getter_(mthis) => children_Getter(mthis);
+  clientHeight_Getter_(mthis) => mthis["clientHeight"];
 
-  static classList_Getter(mthis) native "Element_classList_Getter";
-  classList_Getter_(mthis) => classList_Getter(mthis);
+  clientLeft_Getter_(mthis) => mthis["clientLeft"];
 
-  static className_Getter(mthis) native "Element_className_Getter";
-  className_Getter_(mthis) => className_Getter(mthis);
+  clientTop_Getter_(mthis) => mthis["clientTop"];
 
-  static className_Setter(mthis, __arg_0) native "Element_className_Setter";
-  className_Setter_(mthis, __arg_0) => className_Setter(mthis, __arg_0);
+  clientWidth_Getter_(mthis) => mthis["clientWidth"];
 
-  static clientHeight_Getter(mthis) native "Element_clientHeight_Getter";
-  clientHeight_Getter_(mthis) => clientHeight_Getter(mthis);
+  createShadowRoot_Callback_0_(mthis) => mthis.callMethod("createShadowRoot", []);
 
-  static clientLeft_Getter(mthis) native "Element_clientLeft_Getter";
-  clientLeft_Getter_(mthis) => clientLeft_Getter(mthis);
+  firstElementChild_Getter_(mthis) => mthis["firstElementChild"];
 
-  static clientTop_Getter(mthis) native "Element_clientTop_Getter";
-  clientTop_Getter_(mthis) => clientTop_Getter(mthis);
+  focus_Callback_0_(mthis) => mthis.callMethod("focus", []);
 
-  static clientWidth_Getter(mthis) native "Element_clientWidth_Getter";
-  clientWidth_Getter_(mthis) => clientWidth_Getter(mthis);
+  getAnimationPlayers_Callback_0_(mthis) => mthis.callMethod("getAnimationPlayers", []);
 
-  static createShadowRoot_Callback_0(mthis) native "Element_createShadowRoot_Callback";
-  createShadowRoot_Callback_0_(mthis) => createShadowRoot_Callback_0(mthis);
+  getAttributeNS_Callback_0_(mthis) => mthis.callMethod("getAttributeNS", []);
 
-  static createShadowRoot_Callback_1(mthis, __arg_0) native "Element_createShadowRoot_Callback";
-  createShadowRoot_Callback_1_(mthis, __arg_0) => createShadowRoot_Callback_1(mthis, __arg_0);
+  getAttributeNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("getAttributeNS", [__arg_0]);
 
-  static createShadowRoot_Callback_2(mthis, __arg_0, __arg_1) native "Element_createShadowRoot_Callback";
-  createShadowRoot_Callback_2_(mthis, __arg_0, __arg_1) => createShadowRoot_Callback_2(mthis, __arg_0, __arg_1);
+  getAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getAttributeNS", [__arg_0, __arg_1]);
 
-  static firstElementChild_Getter(mthis) native "Element_firstElementChild_Getter";
-  firstElementChild_Getter_(mthis) => firstElementChild_Getter(mthis);
+  getAttribute_Callback_0_(mthis) => mthis.callMethod("getAttribute", []);
 
-  static focus_Callback_0(mthis) native "Element_focus_Callback";
-  focus_Callback_0_(mthis) => focus_Callback_0(mthis);
+  getAttribute_Callback_1_(mthis, __arg_0) => mthis.callMethod("getAttribute", [__arg_0]);
 
-  static focus_Callback_1(mthis, __arg_0) native "Element_focus_Callback";
-  focus_Callback_1_(mthis, __arg_0) => focus_Callback_1(mthis, __arg_0);
+  getBoundingClientRect_Callback_0_(mthis) => mthis.callMethod("getBoundingClientRect", []);
 
-  static focus_Callback_2(mthis, __arg_0, __arg_1) native "Element_focus_Callback";
-  focus_Callback_2_(mthis, __arg_0, __arg_1) => focus_Callback_2(mthis, __arg_0, __arg_1);
+  getClientRects_Callback_0_(mthis) => mthis.callMethod("getClientRects", []);
 
-  static getAnimationPlayers_Callback_0(mthis) native "Element_getAnimationPlayers_Callback";
-  getAnimationPlayers_Callback_0_(mthis) => getAnimationPlayers_Callback_0(mthis);
+  getDestinationInsertionPoints_Callback_0_(mthis) => mthis.callMethod("getDestinationInsertionPoints", []);
 
-  static getAnimationPlayers_Callback_1(mthis, __arg_0) native "Element_getAnimationPlayers_Callback";
-  getAnimationPlayers_Callback_1_(mthis, __arg_0) => getAnimationPlayers_Callback_1(mthis, __arg_0);
+  getElementsByClassName_Callback_0_(mthis) => mthis.callMethod("getElementsByClassName", []);
 
-  static getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1) native "Element_getAnimationPlayers_Callback";
-  getAnimationPlayers_Callback_2_(mthis, __arg_0, __arg_1) => getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1);
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementsByClassName", [__arg_0]);
 
-  static getAttributeNS_Callback_0(mthis) native "Element_getAttributeNS_Callback";
-  getAttributeNS_Callback_0_(mthis) => getAttributeNS_Callback_0(mthis);
+  getElementsByTagName_Callback_0_(mthis) => mthis.callMethod("getElementsByTagName", []);
 
-  static getAttributeNS_Callback_1(mthis, __arg_0) native "Element_getAttributeNS_Callback";
-  getAttributeNS_Callback_1_(mthis, __arg_0) => getAttributeNS_Callback_1(mthis, __arg_0);
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementsByTagName", [__arg_0]);
 
-  static getAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_getAttributeNS_Callback";
-  getAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => getAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
+  hasAttributeNS_Callback_0_(mthis) => mthis.callMethod("hasAttributeNS", []);
 
-  static getAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getAttributeNS_Callback";
-  getAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  hasAttributeNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasAttributeNS", [__arg_0]);
 
-  static getAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_getAttributeNS_Callback";
-  getAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  hasAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("hasAttributeNS", [__arg_0, __arg_1]);
 
-  static getAttribute_Callback_0(mthis) native "Element_getAttribute_Callback";
-  getAttribute_Callback_0_(mthis) => getAttribute_Callback_0(mthis);
+  hasAttribute_Callback_0_(mthis) => mthis.callMethod("hasAttribute", []);
 
-  static getAttribute_Callback_1(mthis, __arg_0) native "Element_getAttribute_Callback";
-  getAttribute_Callback_1_(mthis, __arg_0) => getAttribute_Callback_1(mthis, __arg_0);
+  hasAttribute_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasAttribute", [__arg_0]);
 
-  static getAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_getAttribute_Callback";
-  getAttribute_Callback_2_(mthis, __arg_0, __arg_1) => getAttribute_Callback_2(mthis, __arg_0, __arg_1);
+  hasAttributes_Callback_0_(mthis) => mthis.callMethod("hasAttributes", []);
 
-  static getAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getAttribute_Callback";
-  getAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  id_Getter_(mthis) => mthis["id"];
 
-  static getBoundingClientRect_Callback_0(mthis) native "Element_getBoundingClientRect_Callback";
-  getBoundingClientRect_Callback_0_(mthis) => getBoundingClientRect_Callback_0(mthis);
+  id_Setter_(mthis, __arg_0) => mthis["id"] = __arg_0;
 
-  static getBoundingClientRect_Callback_1(mthis, __arg_0) native "Element_getBoundingClientRect_Callback";
-  getBoundingClientRect_Callback_1_(mthis, __arg_0) => getBoundingClientRect_Callback_1(mthis, __arg_0);
+  innerHTML_Getter_(mthis) => mthis["innerHTML"];
 
-  static getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1) native "Element_getBoundingClientRect_Callback";
-  getBoundingClientRect_Callback_2_(mthis, __arg_0, __arg_1) => getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1);
+  innerHTML_Setter_(mthis, __arg_0) => mthis["innerHTML"] = __arg_0;
 
-  static getClientRects_Callback_0(mthis) native "Element_getClientRects_Callback";
-  getClientRects_Callback_0_(mthis) => getClientRects_Callback_0(mthis);
+  insertAdjacentElement_Callback_0_(mthis) => mthis.callMethod("insertAdjacentElement", []);
 
-  static getClientRects_Callback_1(mthis, __arg_0) native "Element_getClientRects_Callback";
-  getClientRects_Callback_1_(mthis, __arg_0) => getClientRects_Callback_1(mthis, __arg_0);
+  insertAdjacentElement_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertAdjacentElement", [__arg_0]);
 
-  static getClientRects_Callback_2(mthis, __arg_0, __arg_1) native "Element_getClientRects_Callback";
-  getClientRects_Callback_2_(mthis, __arg_0, __arg_1) => getClientRects_Callback_2(mthis, __arg_0, __arg_1);
+  insertAdjacentElement_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertAdjacentElement", [__arg_0, __arg_1]);
 
-  static getDestinationInsertionPoints_Callback_0(mthis) native "Element_getDestinationInsertionPoints_Callback";
-  getDestinationInsertionPoints_Callback_0_(mthis) => getDestinationInsertionPoints_Callback_0(mthis);
+  insertAdjacentHTML_Callback_0_(mthis) => mthis.callMethod("insertAdjacentHTML", []);
 
-  static getDestinationInsertionPoints_Callback_1(mthis, __arg_0) native "Element_getDestinationInsertionPoints_Callback";
-  getDestinationInsertionPoints_Callback_1_(mthis, __arg_0) => getDestinationInsertionPoints_Callback_1(mthis, __arg_0);
+  insertAdjacentHTML_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertAdjacentHTML", [__arg_0]);
 
-  static getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1) native "Element_getDestinationInsertionPoints_Callback";
-  getDestinationInsertionPoints_Callback_2_(mthis, __arg_0, __arg_1) => getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1);
+  insertAdjacentHTML_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertAdjacentHTML", [__arg_0, __arg_1]);
 
-  static getElementsByClassName_Callback_0(mthis) native "Element_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_0_(mthis) => getElementsByClassName_Callback_0(mthis);
+  insertAdjacentText_Callback_0_(mthis) => mthis.callMethod("insertAdjacentText", []);
 
-  static getElementsByClassName_Callback_1(mthis, __arg_0) native "Element_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_1_(mthis, __arg_0) => getElementsByClassName_Callback_1(mthis, __arg_0);
+  insertAdjacentText_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertAdjacentText", [__arg_0]);
 
-  static getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1) native "Element_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1);
+  insertAdjacentText_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertAdjacentText", [__arg_0, __arg_1]);
 
-  static getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  lastElementChild_Getter_(mthis) => mthis["lastElementChild"];
 
-  static getElementsByTagName_Callback_0(mthis) native "Element_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_0_(mthis) => getElementsByTagName_Callback_0(mthis);
+  localName_Getter_(mthis) => mthis["localName"];
 
-  static getElementsByTagName_Callback_1(mthis, __arg_0) native "Element_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_1_(mthis, __arg_0) => getElementsByTagName_Callback_1(mthis, __arg_0);
+  matches_Callback_0_(mthis) => mthis.callMethod("matches", []);
 
-  static getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1) native "Element_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1);
+  matches_Callback_1_(mthis, __arg_0) => mthis.callMethod("matches", [__arg_0]);
 
-  static getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namespaceURI_Getter_(mthis) => mthis["namespaceURI"];
 
-  static hasAttributeNS_Callback_0(mthis) native "Element_hasAttributeNS_Callback";
-  hasAttributeNS_Callback_0_(mthis) => hasAttributeNS_Callback_0(mthis);
+  nextElementSibling_Getter_(mthis) => mthis["nextElementSibling"];
 
-  static hasAttributeNS_Callback_1(mthis, __arg_0) native "Element_hasAttributeNS_Callback";
-  hasAttributeNS_Callback_1_(mthis, __arg_0) => hasAttributeNS_Callback_1(mthis, __arg_0);
+  offsetHeight_Getter_(mthis) => mthis["offsetHeight"];
 
-  static hasAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_hasAttributeNS_Callback";
-  hasAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => hasAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
+  offsetLeft_Getter_(mthis) => mthis["offsetLeft"];
 
-  static hasAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_hasAttributeNS_Callback";
-  hasAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  offsetParent_Getter_(mthis) => mthis["offsetParent"];
 
-  static hasAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_hasAttributeNS_Callback";
-  hasAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => hasAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  offsetTop_Getter_(mthis) => mthis["offsetTop"];
 
-  static hasAttribute_Callback_0(mthis) native "Element_hasAttribute_Callback";
-  hasAttribute_Callback_0_(mthis) => hasAttribute_Callback_0(mthis);
+  offsetWidth_Getter_(mthis) => mthis["offsetWidth"];
 
-  static hasAttribute_Callback_1(mthis, __arg_0) native "Element_hasAttribute_Callback";
-  hasAttribute_Callback_1_(mthis, __arg_0) => hasAttribute_Callback_1(mthis, __arg_0);
+  onbeforecopy_Getter_(mthis) => mthis["onbeforecopy"];
 
-  static hasAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_hasAttribute_Callback";
-  hasAttribute_Callback_2_(mthis, __arg_0, __arg_1) => hasAttribute_Callback_2(mthis, __arg_0, __arg_1);
+  onbeforecopy_Setter_(mthis, __arg_0) => mthis["onbeforecopy"] = __arg_0;
 
-  static hasAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_hasAttribute_Callback";
-  hasAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onbeforecut_Getter_(mthis) => mthis["onbeforecut"];
 
-  static hasAttributes_Callback_0(mthis) native "Element_hasAttributes_Callback";
-  hasAttributes_Callback_0_(mthis) => hasAttributes_Callback_0(mthis);
+  onbeforecut_Setter_(mthis, __arg_0) => mthis["onbeforecut"] = __arg_0;
 
-  static hasAttributes_Callback_1(mthis, __arg_0) native "Element_hasAttributes_Callback";
-  hasAttributes_Callback_1_(mthis, __arg_0) => hasAttributes_Callback_1(mthis, __arg_0);
+  onbeforepaste_Getter_(mthis) => mthis["onbeforepaste"];
 
-  static hasAttributes_Callback_2(mthis, __arg_0, __arg_1) native "Element_hasAttributes_Callback";
-  hasAttributes_Callback_2_(mthis, __arg_0, __arg_1) => hasAttributes_Callback_2(mthis, __arg_0, __arg_1);
+  onbeforepaste_Setter_(mthis, __arg_0) => mthis["onbeforepaste"] = __arg_0;
 
-  static id_Getter(mthis) native "Element_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  oncopy_Getter_(mthis) => mthis["oncopy"];
 
-  static id_Setter(mthis, __arg_0) native "Element_id_Setter";
-  id_Setter_(mthis, __arg_0) => id_Setter(mthis, __arg_0);
+  oncopy_Setter_(mthis, __arg_0) => mthis["oncopy"] = __arg_0;
 
-  static innerHTML_Getter(mthis) native "Element_innerHTML_Getter";
-  innerHTML_Getter_(mthis) => innerHTML_Getter(mthis);
+  oncut_Getter_(mthis) => mthis["oncut"];
 
-  static innerHTML_Setter(mthis, __arg_0) native "Element_innerHTML_Setter";
-  innerHTML_Setter_(mthis, __arg_0) => innerHTML_Setter(mthis, __arg_0);
+  oncut_Setter_(mthis, __arg_0) => mthis["oncut"] = __arg_0;
 
-  static insertAdjacentElement_Callback_0(mthis) native "Element_insertAdjacentElement_Callback";
-  insertAdjacentElement_Callback_0_(mthis) => insertAdjacentElement_Callback_0(mthis);
+  onpaste_Getter_(mthis) => mthis["onpaste"];
 
-  static insertAdjacentElement_Callback_1(mthis, __arg_0) native "Element_insertAdjacentElement_Callback";
-  insertAdjacentElement_Callback_1_(mthis, __arg_0) => insertAdjacentElement_Callback_1(mthis, __arg_0);
+  onpaste_Setter_(mthis, __arg_0) => mthis["onpaste"] = __arg_0;
 
-  static insertAdjacentElement_Callback_2(mthis, __arg_0, __arg_1) native "Element_insertAdjacentElement_Callback";
-  insertAdjacentElement_Callback_2_(mthis, __arg_0, __arg_1) => insertAdjacentElement_Callback_2(mthis, __arg_0, __arg_1);
+  onsearch_Getter_(mthis) => mthis["onsearch"];
 
-  static insertAdjacentElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_insertAdjacentElement_Callback";
-  insertAdjacentElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertAdjacentElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onsearch_Setter_(mthis, __arg_0) => mthis["onsearch"] = __arg_0;
 
-  static insertAdjacentElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_insertAdjacentElement_Callback";
-  insertAdjacentElement_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertAdjacentElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onselectstart_Getter_(mthis) => mthis["onselectstart"];
 
-  static insertAdjacentHTML_Callback_0(mthis) native "Element_insertAdjacentHTML_Callback";
-  insertAdjacentHTML_Callback_0_(mthis) => insertAdjacentHTML_Callback_0(mthis);
+  onselectstart_Setter_(mthis, __arg_0) => mthis["onselectstart"] = __arg_0;
 
-  static insertAdjacentHTML_Callback_1(mthis, __arg_0) native "Element_insertAdjacentHTML_Callback";
-  insertAdjacentHTML_Callback_1_(mthis, __arg_0) => insertAdjacentHTML_Callback_1(mthis, __arg_0);
+  ontouchcancel_Getter_(mthis) => mthis["ontouchcancel"];
 
-  static insertAdjacentHTML_Callback_2(mthis, __arg_0, __arg_1) native "Element_insertAdjacentHTML_Callback";
-  insertAdjacentHTML_Callback_2_(mthis, __arg_0, __arg_1) => insertAdjacentHTML_Callback_2(mthis, __arg_0, __arg_1);
+  ontouchcancel_Setter_(mthis, __arg_0) => mthis["ontouchcancel"] = __arg_0;
 
-  static insertAdjacentHTML_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_insertAdjacentHTML_Callback";
-  insertAdjacentHTML_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertAdjacentHTML_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ontouchend_Getter_(mthis) => mthis["ontouchend"];
 
-  static insertAdjacentHTML_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_insertAdjacentHTML_Callback";
-  insertAdjacentHTML_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertAdjacentHTML_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  ontouchend_Setter_(mthis, __arg_0) => mthis["ontouchend"] = __arg_0;
 
-  static insertAdjacentText_Callback_0(mthis) native "Element_insertAdjacentText_Callback";
-  insertAdjacentText_Callback_0_(mthis) => insertAdjacentText_Callback_0(mthis);
+  ontouchmove_Getter_(mthis) => mthis["ontouchmove"];
 
-  static insertAdjacentText_Callback_1(mthis, __arg_0) native "Element_insertAdjacentText_Callback";
-  insertAdjacentText_Callback_1_(mthis, __arg_0) => insertAdjacentText_Callback_1(mthis, __arg_0);
+  ontouchmove_Setter_(mthis, __arg_0) => mthis["ontouchmove"] = __arg_0;
 
-  static insertAdjacentText_Callback_2(mthis, __arg_0, __arg_1) native "Element_insertAdjacentText_Callback";
-  insertAdjacentText_Callback_2_(mthis, __arg_0, __arg_1) => insertAdjacentText_Callback_2(mthis, __arg_0, __arg_1);
+  ontouchstart_Getter_(mthis) => mthis["ontouchstart"];
 
-  static insertAdjacentText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_insertAdjacentText_Callback";
-  insertAdjacentText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertAdjacentText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ontouchstart_Setter_(mthis, __arg_0) => mthis["ontouchstart"] = __arg_0;
 
-  static insertAdjacentText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_insertAdjacentText_Callback";
-  insertAdjacentText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertAdjacentText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onwebkitfullscreenchange_Getter_(mthis) => mthis["onwebkitfullscreenchange"];
 
-  static lastElementChild_Getter(mthis) native "Element_lastElementChild_Getter";
-  lastElementChild_Getter_(mthis) => lastElementChild_Getter(mthis);
+  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenchange"] = __arg_0;
 
-  static localName_Getter(mthis) native "Element_localName_Getter";
-  localName_Getter_(mthis) => localName_Getter(mthis);
+  onwebkitfullscreenerror_Getter_(mthis) => mthis["onwebkitfullscreenerror"];
 
-  static matches_Callback_0(mthis) native "Element_matches_Callback";
-  matches_Callback_0_(mthis) => matches_Callback_0(mthis);
+  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => mthis["onwebkitfullscreenerror"] = __arg_0;
 
-  static matches_Callback_1(mthis, __arg_0) native "Element_matches_Callback";
-  matches_Callback_1_(mthis, __arg_0) => matches_Callback_1(mthis, __arg_0);
+  onwheel_Getter_(mthis) => mthis["onwheel"];
 
-  static matches_Callback_2(mthis, __arg_0, __arg_1) native "Element_matches_Callback";
-  matches_Callback_2_(mthis, __arg_0, __arg_1) => matches_Callback_2(mthis, __arg_0, __arg_1);
+  onwheel_Setter_(mthis, __arg_0) => mthis["onwheel"] = __arg_0;
 
-  static matches_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_matches_Callback";
-  matches_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matches_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  outerHTML_Getter_(mthis) => mthis["outerHTML"];
 
-  static namespaceURI_Getter(mthis) native "Element_namespaceURI_Getter";
-  namespaceURI_Getter_(mthis) => namespaceURI_Getter(mthis);
+  outerHTML_Setter_(mthis, __arg_0) => mthis["outerHTML"] = __arg_0;
 
-  static nextElementSibling_Getter(mthis) native "Element_nextElementSibling_Getter";
-  nextElementSibling_Getter_(mthis) => nextElementSibling_Getter(mthis);
+  prefix_Getter_(mthis) => mthis["prefix"];
 
-  static offsetHeight_Getter(mthis) native "Element_offsetHeight_Getter";
-  offsetHeight_Getter_(mthis) => offsetHeight_Getter(mthis);
+  prefix_Setter_(mthis, __arg_0) => mthis["prefix"] = __arg_0;
 
-  static offsetLeft_Getter(mthis) native "Element_offsetLeft_Getter";
-  offsetLeft_Getter_(mthis) => offsetLeft_Getter(mthis);
+  previousElementSibling_Getter_(mthis) => mthis["previousElementSibling"];
 
-  static offsetParent_Getter(mthis) native "Element_offsetParent_Getter";
-  offsetParent_Getter_(mthis) => offsetParent_Getter(mthis);
+  querySelectorAll_Callback_0_(mthis) => mthis.callMethod("querySelectorAll", []);
 
-  static offsetTop_Getter(mthis) native "Element_offsetTop_Getter";
-  offsetTop_Getter_(mthis) => offsetTop_Getter(mthis);
-
-  static offsetWidth_Getter(mthis) native "Element_offsetWidth_Getter";
-  offsetWidth_Getter_(mthis) => offsetWidth_Getter(mthis);
-
-  static onbeforecopy_Getter(mthis) native "Element_onbeforecopy_Getter";
-  onbeforecopy_Getter_(mthis) => onbeforecopy_Getter(mthis);
-
-  static onbeforecopy_Setter(mthis, __arg_0) native "Element_onbeforecopy_Setter";
-  onbeforecopy_Setter_(mthis, __arg_0) => onbeforecopy_Setter(mthis, __arg_0);
-
-  static onbeforecut_Getter(mthis) native "Element_onbeforecut_Getter";
-  onbeforecut_Getter_(mthis) => onbeforecut_Getter(mthis);
-
-  static onbeforecut_Setter(mthis, __arg_0) native "Element_onbeforecut_Setter";
-  onbeforecut_Setter_(mthis, __arg_0) => onbeforecut_Setter(mthis, __arg_0);
-
-  static onbeforepaste_Getter(mthis) native "Element_onbeforepaste_Getter";
-  onbeforepaste_Getter_(mthis) => onbeforepaste_Getter(mthis);
-
-  static onbeforepaste_Setter(mthis, __arg_0) native "Element_onbeforepaste_Setter";
-  onbeforepaste_Setter_(mthis, __arg_0) => onbeforepaste_Setter(mthis, __arg_0);
-
-  static oncopy_Getter(mthis) native "Element_oncopy_Getter";
-  oncopy_Getter_(mthis) => oncopy_Getter(mthis);
-
-  static oncopy_Setter(mthis, __arg_0) native "Element_oncopy_Setter";
-  oncopy_Setter_(mthis, __arg_0) => oncopy_Setter(mthis, __arg_0);
-
-  static oncut_Getter(mthis) native "Element_oncut_Getter";
-  oncut_Getter_(mthis) => oncut_Getter(mthis);
-
-  static oncut_Setter(mthis, __arg_0) native "Element_oncut_Setter";
-  oncut_Setter_(mthis, __arg_0) => oncut_Setter(mthis, __arg_0);
-
-  static onpaste_Getter(mthis) native "Element_onpaste_Getter";
-  onpaste_Getter_(mthis) => onpaste_Getter(mthis);
-
-  static onpaste_Setter(mthis, __arg_0) native "Element_onpaste_Setter";
-  onpaste_Setter_(mthis, __arg_0) => onpaste_Setter(mthis, __arg_0);
-
-  static onsearch_Getter(mthis) native "Element_onsearch_Getter";
-  onsearch_Getter_(mthis) => onsearch_Getter(mthis);
-
-  static onsearch_Setter(mthis, __arg_0) native "Element_onsearch_Setter";
-  onsearch_Setter_(mthis, __arg_0) => onsearch_Setter(mthis, __arg_0);
-
-  static onselectstart_Getter(mthis) native "Element_onselectstart_Getter";
-  onselectstart_Getter_(mthis) => onselectstart_Getter(mthis);
-
-  static onselectstart_Setter(mthis, __arg_0) native "Element_onselectstart_Setter";
-  onselectstart_Setter_(mthis, __arg_0) => onselectstart_Setter(mthis, __arg_0);
-
-  static ontouchcancel_Getter(mthis) native "Element_ontouchcancel_Getter";
-  ontouchcancel_Getter_(mthis) => ontouchcancel_Getter(mthis);
-
-  static ontouchcancel_Setter(mthis, __arg_0) native "Element_ontouchcancel_Setter";
-  ontouchcancel_Setter_(mthis, __arg_0) => ontouchcancel_Setter(mthis, __arg_0);
-
-  static ontouchend_Getter(mthis) native "Element_ontouchend_Getter";
-  ontouchend_Getter_(mthis) => ontouchend_Getter(mthis);
-
-  static ontouchend_Setter(mthis, __arg_0) native "Element_ontouchend_Setter";
-  ontouchend_Setter_(mthis, __arg_0) => ontouchend_Setter(mthis, __arg_0);
-
-  static ontouchmove_Getter(mthis) native "Element_ontouchmove_Getter";
-  ontouchmove_Getter_(mthis) => ontouchmove_Getter(mthis);
-
-  static ontouchmove_Setter(mthis, __arg_0) native "Element_ontouchmove_Setter";
-  ontouchmove_Setter_(mthis, __arg_0) => ontouchmove_Setter(mthis, __arg_0);
-
-  static ontouchstart_Getter(mthis) native "Element_ontouchstart_Getter";
-  ontouchstart_Getter_(mthis) => ontouchstart_Getter(mthis);
-
-  static ontouchstart_Setter(mthis, __arg_0) native "Element_ontouchstart_Setter";
-  ontouchstart_Setter_(mthis, __arg_0) => ontouchstart_Setter(mthis, __arg_0);
-
-  static onwebkitfullscreenchange_Getter(mthis) native "Element_onwebkitfullscreenchange_Getter";
-  onwebkitfullscreenchange_Getter_(mthis) => onwebkitfullscreenchange_Getter(mthis);
-
-  static onwebkitfullscreenchange_Setter(mthis, __arg_0) native "Element_onwebkitfullscreenchange_Setter";
-  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => onwebkitfullscreenchange_Setter(mthis, __arg_0);
-
-  static onwebkitfullscreenerror_Getter(mthis) native "Element_onwebkitfullscreenerror_Getter";
-  onwebkitfullscreenerror_Getter_(mthis) => onwebkitfullscreenerror_Getter(mthis);
-
-  static onwebkitfullscreenerror_Setter(mthis, __arg_0) native "Element_onwebkitfullscreenerror_Setter";
-  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => onwebkitfullscreenerror_Setter(mthis, __arg_0);
-
-  static onwheel_Getter(mthis) native "Element_onwheel_Getter";
-  onwheel_Getter_(mthis) => onwheel_Getter(mthis);
-
-  static onwheel_Setter(mthis, __arg_0) native "Element_onwheel_Setter";
-  onwheel_Setter_(mthis, __arg_0) => onwheel_Setter(mthis, __arg_0);
-
-  static outerHTML_Getter(mthis) native "Element_outerHTML_Getter";
-  outerHTML_Getter_(mthis) => outerHTML_Getter(mthis);
-
-  static outerHTML_Setter(mthis, __arg_0) native "Element_outerHTML_Setter";
-  outerHTML_Setter_(mthis, __arg_0) => outerHTML_Setter(mthis, __arg_0);
-
-  static prefix_Getter(mthis) native "Element_prefix_Getter";
-  prefix_Getter_(mthis) => prefix_Getter(mthis);
-
-  static prefix_Setter(mthis, __arg_0) native "Element_prefix_Setter";
-  prefix_Setter_(mthis, __arg_0) => prefix_Setter(mthis, __arg_0);
-
-  static previousElementSibling_Getter(mthis) native "Element_previousElementSibling_Getter";
-  previousElementSibling_Getter_(mthis) => previousElementSibling_Getter(mthis);
-
-  static querySelectorAll_Callback_0(mthis) native "Element_querySelectorAll_Callback";
-  querySelectorAll_Callback_0_(mthis) => querySelectorAll_Callback_0(mthis);
-
-  static querySelectorAll_Callback_1(mthis, __arg_0) native "Element_querySelectorAll_Callback";
-  querySelectorAll_Callback_1_(mthis, __arg_0) => querySelectorAll_Callback_1(mthis, __arg_0);
-
-  static querySelectorAll_Callback_2(mthis, __arg_0, __arg_1) native "Element_querySelectorAll_Callback";
-  querySelectorAll_Callback_2_(mthis, __arg_0, __arg_1) => querySelectorAll_Callback_2(mthis, __arg_0, __arg_1);
-
-  static querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_querySelectorAll_Callback";
-  querySelectorAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static querySelector_Callback_0(mthis) native "Element_querySelector_Callback";
-  querySelector_Callback_0_(mthis) => querySelector_Callback_0(mthis);
-
-  static querySelector_Callback_1(mthis, __arg_0) native "Element_querySelector_Callback";
-  querySelector_Callback_1_(mthis, __arg_0) => querySelector_Callback_1(mthis, __arg_0);
-
-  static querySelector_Callback_2(mthis, __arg_0, __arg_1) native "Element_querySelector_Callback";
-  querySelector_Callback_2_(mthis, __arg_0, __arg_1) => querySelector_Callback_2(mthis, __arg_0, __arg_1);
-
-  static querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_querySelector_Callback";
-  querySelector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeAttributeNS_Callback_0(mthis) native "Element_removeAttributeNS_Callback";
-  removeAttributeNS_Callback_0_(mthis) => removeAttributeNS_Callback_0(mthis);
-
-  static removeAttributeNS_Callback_1(mthis, __arg_0) native "Element_removeAttributeNS_Callback";
-  removeAttributeNS_Callback_1_(mthis, __arg_0) => removeAttributeNS_Callback_1(mthis, __arg_0);
-
-  static removeAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_removeAttributeNS_Callback";
-  removeAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => removeAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_removeAttributeNS_Callback";
-  removeAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_removeAttributeNS_Callback";
-  removeAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static removeAttribute_Callback_0(mthis) native "Element_removeAttribute_Callback";
-  removeAttribute_Callback_0_(mthis) => removeAttribute_Callback_0(mthis);
-
-  static removeAttribute_Callback_1(mthis, __arg_0) native "Element_removeAttribute_Callback";
-  removeAttribute_Callback_1_(mthis, __arg_0) => removeAttribute_Callback_1(mthis, __arg_0);
-
-  static removeAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_removeAttribute_Callback";
-  removeAttribute_Callback_2_(mthis, __arg_0, __arg_1) => removeAttribute_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_removeAttribute_Callback";
-  removeAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static remove_Callback_0(mthis) native "Element_remove_Callback";
-  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
-
-  static remove_Callback_1(mthis, __arg_0) native "Element_remove_Callback";
-  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
-
-  static remove_Callback_2(mthis, __arg_0, __arg_1) native "Element_remove_Callback";
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
-
-  static requestFullscreen_Callback_0(mthis) native "Element_requestFullscreen_Callback";
-  requestFullscreen_Callback_0_(mthis) => requestFullscreen_Callback_0(mthis);
-
-  static requestFullscreen_Callback_1(mthis, __arg_0) native "Element_requestFullscreen_Callback";
-  requestFullscreen_Callback_1_(mthis, __arg_0) => requestFullscreen_Callback_1(mthis, __arg_0);
-
-  static requestFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Element_requestFullscreen_Callback";
-  requestFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => requestFullscreen_Callback_2(mthis, __arg_0, __arg_1);
-
-  static requestPointerLock_Callback_0(mthis) native "Element_requestPointerLock_Callback";
-  requestPointerLock_Callback_0_(mthis) => requestPointerLock_Callback_0(mthis);
-
-  static requestPointerLock_Callback_1(mthis, __arg_0) native "Element_requestPointerLock_Callback";
-  requestPointerLock_Callback_1_(mthis, __arg_0) => requestPointerLock_Callback_1(mthis, __arg_0);
-
-  static requestPointerLock_Callback_2(mthis, __arg_0, __arg_1) native "Element_requestPointerLock_Callback";
-  requestPointerLock_Callback_2_(mthis, __arg_0, __arg_1) => requestPointerLock_Callback_2(mthis, __arg_0, __arg_1);
-
-  static scrollHeight_Getter(mthis) native "Element_scrollHeight_Getter";
-  scrollHeight_Getter_(mthis) => scrollHeight_Getter(mthis);
-
-  static scrollIntoViewIfNeeded_Callback_0(mthis) native "Element_scrollIntoViewIfNeeded_Callback";
-  scrollIntoViewIfNeeded_Callback_0_(mthis) => scrollIntoViewIfNeeded_Callback_0(mthis);
+  querySelectorAll_Callback_1_(mthis, __arg_0) => mthis.callMethod("querySelectorAll", [__arg_0]);
 
-  static scrollIntoViewIfNeeded_Callback_1(mthis, __arg_0) native "Element_scrollIntoViewIfNeeded_Callback";
-  scrollIntoViewIfNeeded_Callback_1_(mthis, __arg_0) => scrollIntoViewIfNeeded_Callback_1(mthis, __arg_0);
+  querySelector_Callback_0_(mthis) => mthis.callMethod("querySelector", []);
 
-  static scrollIntoViewIfNeeded_Callback_2(mthis, __arg_0, __arg_1) native "Element_scrollIntoViewIfNeeded_Callback";
-  scrollIntoViewIfNeeded_Callback_2_(mthis, __arg_0, __arg_1) => scrollIntoViewIfNeeded_Callback_2(mthis, __arg_0, __arg_1);
+  querySelector_Callback_1_(mthis, __arg_0) => mthis.callMethod("querySelector", [__arg_0]);
 
-  static scrollIntoViewIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_scrollIntoViewIfNeeded_Callback";
-  scrollIntoViewIfNeeded_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollIntoViewIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeAttributeNS_Callback_0_(mthis) => mthis.callMethod("removeAttributeNS", []);
 
-  static scrollIntoView_Callback_0(mthis) native "Element_scrollIntoView_Callback";
-  scrollIntoView_Callback_0_(mthis) => scrollIntoView_Callback_0(mthis);
+  removeAttributeNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeAttributeNS", [__arg_0]);
 
-  static scrollIntoView_Callback_1(mthis, __arg_0) native "Element_scrollIntoView_Callback";
-  scrollIntoView_Callback_1_(mthis, __arg_0) => scrollIntoView_Callback_1(mthis, __arg_0);
+  removeAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("removeAttributeNS", [__arg_0, __arg_1]);
 
-  static scrollIntoView_Callback_2(mthis, __arg_0, __arg_1) native "Element_scrollIntoView_Callback";
-  scrollIntoView_Callback_2_(mthis, __arg_0, __arg_1) => scrollIntoView_Callback_2(mthis, __arg_0, __arg_1);
+  removeAttribute_Callback_0_(mthis) => mthis.callMethod("removeAttribute", []);
 
-  static scrollIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_scrollIntoView_Callback";
-  scrollIntoView_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeAttribute_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeAttribute", [__arg_0]);
 
-  static scrollLeft_Getter(mthis) native "Element_scrollLeft_Getter";
-  scrollLeft_Getter_(mthis) => scrollLeft_Getter(mthis);
+  remove_Callback_0_(mthis) => mthis.callMethod("remove", []);
 
-  static scrollLeft_Setter(mthis, __arg_0) native "Element_scrollLeft_Setter";
-  scrollLeft_Setter_(mthis, __arg_0) => scrollLeft_Setter(mthis, __arg_0);
+  requestFullscreen_Callback_0_(mthis) => mthis.callMethod("requestFullscreen", []);
 
-  static scrollTop_Getter(mthis) native "Element_scrollTop_Getter";
-  scrollTop_Getter_(mthis) => scrollTop_Getter(mthis);
+  requestPointerLock_Callback_0_(mthis) => mthis.callMethod("requestPointerLock", []);
 
-  static scrollTop_Setter(mthis, __arg_0) native "Element_scrollTop_Setter";
-  scrollTop_Setter_(mthis, __arg_0) => scrollTop_Setter(mthis, __arg_0);
+  scrollHeight_Getter_(mthis) => mthis["scrollHeight"];
 
-  static scrollWidth_Getter(mthis) native "Element_scrollWidth_Getter";
-  scrollWidth_Getter_(mthis) => scrollWidth_Getter(mthis);
+  scrollIntoViewIfNeeded_Callback_0_(mthis) => mthis.callMethod("scrollIntoViewIfNeeded", []);
 
-  static setAttributeNS_Callback_1(mthis, __arg_0) native "Element_setAttributeNS_Callback";
-  setAttributeNS_Callback_1_(mthis, __arg_0) => setAttributeNS_Callback_1(mthis, __arg_0);
+  scrollIntoViewIfNeeded_Callback_1_(mthis, __arg_0) => mthis.callMethod("scrollIntoViewIfNeeded", [__arg_0]);
 
-  static setAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_setAttributeNS_Callback";
-  setAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => setAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
+  scrollIntoView_Callback_0_(mthis) => mthis.callMethod("scrollIntoView", []);
 
-  static setAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_setAttributeNS_Callback";
-  setAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scrollIntoView_Callback_1_(mthis, __arg_0) => mthis.callMethod("scrollIntoView", [__arg_0]);
 
-  static setAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_setAttributeNS_Callback";
-  setAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scrollLeft_Getter_(mthis) => mthis["scrollLeft"];
 
-  static setAttributeNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Element_setAttributeNS_Callback";
-  setAttributeNS_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setAttributeNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  scrollLeft_Setter_(mthis, __arg_0) => mthis["scrollLeft"] = __arg_0;
 
-  static setAttribute_Callback_0(mthis) native "Element_setAttribute_Callback";
-  setAttribute_Callback_0_(mthis) => setAttribute_Callback_0(mthis);
+  scrollTop_Getter_(mthis) => mthis["scrollTop"];
 
-  static setAttribute_Callback_1(mthis, __arg_0) native "Element_setAttribute_Callback";
-  setAttribute_Callback_1_(mthis, __arg_0) => setAttribute_Callback_1(mthis, __arg_0);
+  scrollTop_Setter_(mthis, __arg_0) => mthis["scrollTop"] = __arg_0;
 
-  static setAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_setAttribute_Callback";
-  setAttribute_Callback_2_(mthis, __arg_0, __arg_1) => setAttribute_Callback_2(mthis, __arg_0, __arg_1);
+  scrollWidth_Getter_(mthis) => mthis["scrollWidth"];
 
-  static setAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_setAttribute_Callback";
-  setAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setAttributeNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("setAttributeNS", [__arg_0]);
 
-  static setAttribute_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_setAttribute_Callback";
-  setAttribute_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setAttribute_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setAttributeNS", [__arg_0, __arg_1]);
 
-  static shadowRoot_Getter(mthis) native "Element_shadowRoot_Getter";
-  shadowRoot_Getter_(mthis) => shadowRoot_Getter(mthis);
+  setAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setAttributeNS", [__arg_0, __arg_1, __arg_2]);
 
-  static style_Getter(mthis) native "Element_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  setAttribute_Callback_0_(mthis) => mthis.callMethod("setAttribute", []);
 
-  static tagName_Getter(mthis) native "Element_tagName_Getter";
-  tagName_Getter_(mthis) => tagName_Getter(mthis);
+  setAttribute_Callback_1_(mthis, __arg_0) => mthis.callMethod("setAttribute", [__arg_0]);
 
-  static webkitRequestFullScreen_Callback_0(mthis) native "Element_webkitRequestFullScreen_Callback";
-  webkitRequestFullScreen_Callback_0_(mthis) => webkitRequestFullScreen_Callback_0(mthis);
+  setAttribute_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setAttribute", [__arg_0, __arg_1]);
 
-  static webkitRequestFullScreen_Callback_1(mthis, __arg_0) native "Element_webkitRequestFullScreen_Callback";
-  webkitRequestFullScreen_Callback_1_(mthis, __arg_0) => webkitRequestFullScreen_Callback_1(mthis, __arg_0);
+  shadowRoot_Getter_(mthis) => mthis["shadowRoot"];
 
-  static webkitRequestFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "Element_webkitRequestFullScreen_Callback";
-  webkitRequestFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFullScreen_Callback_2(mthis, __arg_0, __arg_1);
+  style_Getter_(mthis) => mthis["style"];
 
-  static webkitRequestFullScreen_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_webkitRequestFullScreen_Callback";
-  webkitRequestFullScreen_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFullScreen_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  tagName_Getter_(mthis) => mthis["tagName"];
 
-  static webkitRequestFullscreen_Callback_0(mthis) native "Element_webkitRequestFullscreen_Callback";
-  webkitRequestFullscreen_Callback_0_(mthis) => webkitRequestFullscreen_Callback_0(mthis);
+  webkitRequestFullScreen_Callback_0_(mthis) => mthis.callMethod("webkitRequestFullScreen", []);
 
-  static webkitRequestFullscreen_Callback_1(mthis, __arg_0) native "Element_webkitRequestFullscreen_Callback";
-  webkitRequestFullscreen_Callback_1_(mthis, __arg_0) => webkitRequestFullscreen_Callback_1(mthis, __arg_0);
+  webkitRequestFullScreen_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitRequestFullScreen", [__arg_0]);
 
-  static webkitRequestFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Element_webkitRequestFullscreen_Callback";
-  webkitRequestFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+  webkitRequestFullscreen_Callback_0_(mthis) => mthis.callMethod("webkitRequestFullscreen", []);
 
 }
 
 class BlinkEntry {
   static final instance = new BlinkEntry();
 
-  static copyTo_Callback_0(mthis) native "Entry_copyTo_Callback";
-  copyTo_Callback_0_(mthis) => copyTo_Callback_0(mthis);
+  copyTo_Callback_0_(mthis) => mthis.callMethod("copyTo", []);
 
-  static copyTo_Callback_1(mthis, __arg_0) native "Entry_copyTo_Callback";
-  copyTo_Callback_1_(mthis, __arg_0) => copyTo_Callback_1(mthis, __arg_0);
+  copyTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("copyTo", [__arg_0]);
 
-  static copyTo_Callback_2(mthis, __arg_0, __arg_1) native "Entry_copyTo_Callback";
-  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => copyTo_Callback_2(mthis, __arg_0, __arg_1);
+  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("copyTo", [__arg_0, __arg_1]);
 
-  static copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_copyTo_Callback";
-  copyTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  copyTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("copyTo", [__arg_0, __arg_1, __arg_2]);
 
-  static copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_copyTo_Callback";
-  copyTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  copyTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("copyTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static copyTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Entry_copyTo_Callback";
-  copyTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => copyTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  filesystem_Getter_(mthis) => mthis["filesystem"];
 
-  static copyTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Entry_copyTo_Callback";
-  copyTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => copyTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  fullPath_Getter_(mthis) => mthis["fullPath"];
 
-  static filesystem_Getter(mthis) native "Entry_filesystem_Getter";
-  filesystem_Getter_(mthis) => filesystem_Getter(mthis);
+  getMetadata_Callback_0_(mthis) => mthis.callMethod("getMetadata", []);
 
-  static fullPath_Getter(mthis) native "Entry_fullPath_Getter";
-  fullPath_Getter_(mthis) => fullPath_Getter(mthis);
+  getMetadata_Callback_1_(mthis, __arg_0) => mthis.callMethod("getMetadata", [__arg_0]);
 
-  static getMetadata_Callback_0(mthis) native "Entry_getMetadata_Callback";
-  getMetadata_Callback_0_(mthis) => getMetadata_Callback_0(mthis);
+  getMetadata_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getMetadata", [__arg_0, __arg_1]);
 
-  static getMetadata_Callback_1(mthis, __arg_0) native "Entry_getMetadata_Callback";
-  getMetadata_Callback_1_(mthis, __arg_0) => getMetadata_Callback_1(mthis, __arg_0);
+  getParent_Callback_0_(mthis) => mthis.callMethod("getParent", []);
 
-  static getMetadata_Callback_2(mthis, __arg_0, __arg_1) native "Entry_getMetadata_Callback";
-  getMetadata_Callback_2_(mthis, __arg_0, __arg_1) => getMetadata_Callback_2(mthis, __arg_0, __arg_1);
+  getParent_Callback_1_(mthis, __arg_0) => mthis.callMethod("getParent", [__arg_0]);
 
-  static getMetadata_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_getMetadata_Callback";
-  getMetadata_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getMetadata_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getParent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getParent", [__arg_0, __arg_1]);
 
-  static getMetadata_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_getMetadata_Callback";
-  getMetadata_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getMetadata_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  isDirectory_Getter_(mthis) => mthis["isDirectory"];
 
-  static getParent_Callback_0(mthis) native "Entry_getParent_Callback";
-  getParent_Callback_0_(mthis) => getParent_Callback_0(mthis);
+  isFile_Getter_(mthis) => mthis["isFile"];
 
-  static getParent_Callback_1(mthis, __arg_0) native "Entry_getParent_Callback";
-  getParent_Callback_1_(mthis, __arg_0) => getParent_Callback_1(mthis, __arg_0);
+  moveTo_Callback_0_(mthis) => mthis.callMethod("moveTo", []);
 
-  static getParent_Callback_2(mthis, __arg_0, __arg_1) native "Entry_getParent_Callback";
-  getParent_Callback_2_(mthis, __arg_0, __arg_1) => getParent_Callback_2(mthis, __arg_0, __arg_1);
+  moveTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("moveTo", [__arg_0]);
 
-  static getParent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_getParent_Callback";
-  getParent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getParent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("moveTo", [__arg_0, __arg_1]);
 
-  static getParent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_getParent_Callback";
-  getParent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getParent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("moveTo", [__arg_0, __arg_1, __arg_2]);
 
-  static isDirectory_Getter(mthis) native "Entry_isDirectory_Getter";
-  isDirectory_Getter_(mthis) => isDirectory_Getter(mthis);
+  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("moveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static isFile_Getter(mthis) native "Entry_isFile_Getter";
-  isFile_Getter_(mthis) => isFile_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static moveTo_Callback_0(mthis) native "Entry_moveTo_Callback";
-  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
+  remove_Callback_0_(mthis) => mthis.callMethod("remove", []);
 
-  static moveTo_Callback_1(mthis, __arg_0) native "Entry_moveTo_Callback";
-  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
+  remove_Callback_1_(mthis, __arg_0) => mthis.callMethod("remove", [__arg_0]);
 
-  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "Entry_moveTo_Callback";
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("remove", [__arg_0, __arg_1]);
 
-  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_moveTo_Callback";
-  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_moveTo_Callback";
-  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static moveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Entry_moveTo_Callback";
-  moveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => moveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static moveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Entry_moveTo_Callback";
-  moveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => moveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static name_Getter(mthis) native "Entry_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
-
-  static remove_Callback_0(mthis) native "Entry_remove_Callback";
-  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
-
-  static remove_Callback_1(mthis, __arg_0) native "Entry_remove_Callback";
-  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
-
-  static remove_Callback_2(mthis, __arg_0, __arg_1) native "Entry_remove_Callback";
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
-
-  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_remove_Callback";
-  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_remove_Callback";
-  remove_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static toURL_Callback_0(mthis) native "Entry_toURL_Callback";
-  toURL_Callback_0_(mthis) => toURL_Callback_0(mthis);
-
-  static toURL_Callback_1(mthis, __arg_0) native "Entry_toURL_Callback";
-  toURL_Callback_1_(mthis, __arg_0) => toURL_Callback_1(mthis, __arg_0);
-
-  static toURL_Callback_2(mthis, __arg_0, __arg_1) native "Entry_toURL_Callback";
-  toURL_Callback_2_(mthis, __arg_0, __arg_1) => toURL_Callback_2(mthis, __arg_0, __arg_1);
+  toURL_Callback_0_(mthis) => mthis.callMethod("toURL", []);
 
 }
 
 class BlinkEntrySync {
   static final instance = new BlinkEntrySync();
 
-  static copyTo_Callback_0(mthis) native "EntrySync_copyTo_Callback";
-  copyTo_Callback_0_(mthis) => copyTo_Callback_0(mthis);
+  copyTo_Callback_0_(mthis) => mthis.callMethod("copyTo", []);
 
-  static copyTo_Callback_1(mthis, __arg_0) native "EntrySync_copyTo_Callback";
-  copyTo_Callback_1_(mthis, __arg_0) => copyTo_Callback_1(mthis, __arg_0);
+  copyTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("copyTo", [__arg_0]);
 
-  static copyTo_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_copyTo_Callback";
-  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => copyTo_Callback_2(mthis, __arg_0, __arg_1);
+  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("copyTo", [__arg_0, __arg_1]);
 
-  static copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EntrySync_copyTo_Callback";
-  copyTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  filesystem_Getter_(mthis) => mthis["filesystem"];
 
-  static copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EntrySync_copyTo_Callback";
-  copyTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  fullPath_Getter_(mthis) => mthis["fullPath"];
 
-  static filesystem_Getter(mthis) native "EntrySync_filesystem_Getter";
-  filesystem_Getter_(mthis) => filesystem_Getter(mthis);
+  getMetadata_Callback_0_(mthis) => mthis.callMethod("getMetadata", []);
 
-  static fullPath_Getter(mthis) native "EntrySync_fullPath_Getter";
-  fullPath_Getter_(mthis) => fullPath_Getter(mthis);
+  getParent_Callback_0_(mthis) => mthis.callMethod("getParent", []);
 
-  static getMetadata_Callback_0(mthis) native "EntrySync_getMetadata_Callback";
-  getMetadata_Callback_0_(mthis) => getMetadata_Callback_0(mthis);
+  isDirectory_Getter_(mthis) => mthis["isDirectory"];
 
-  static getMetadata_Callback_1(mthis, __arg_0) native "EntrySync_getMetadata_Callback";
-  getMetadata_Callback_1_(mthis, __arg_0) => getMetadata_Callback_1(mthis, __arg_0);
+  isFile_Getter_(mthis) => mthis["isFile"];
 
-  static getMetadata_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_getMetadata_Callback";
-  getMetadata_Callback_2_(mthis, __arg_0, __arg_1) => getMetadata_Callback_2(mthis, __arg_0, __arg_1);
+  moveTo_Callback_0_(mthis) => mthis.callMethod("moveTo", []);
 
-  static getParent_Callback_0(mthis) native "EntrySync_getParent_Callback";
-  getParent_Callback_0_(mthis) => getParent_Callback_0(mthis);
+  moveTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("moveTo", [__arg_0]);
 
-  static getParent_Callback_1(mthis, __arg_0) native "EntrySync_getParent_Callback";
-  getParent_Callback_1_(mthis, __arg_0) => getParent_Callback_1(mthis, __arg_0);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("moveTo", [__arg_0, __arg_1]);
 
-  static getParent_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_getParent_Callback";
-  getParent_Callback_2_(mthis, __arg_0, __arg_1) => getParent_Callback_2(mthis, __arg_0, __arg_1);
+  name_Getter_(mthis) => mthis["name"];
 
-  static isDirectory_Getter(mthis) native "EntrySync_isDirectory_Getter";
-  isDirectory_Getter_(mthis) => isDirectory_Getter(mthis);
+  remove_Callback_0_(mthis) => mthis.callMethod("remove", []);
 
-  static isFile_Getter(mthis) native "EntrySync_isFile_Getter";
-  isFile_Getter_(mthis) => isFile_Getter(mthis);
-
-  static moveTo_Callback_0(mthis) native "EntrySync_moveTo_Callback";
-  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
-
-  static moveTo_Callback_1(mthis, __arg_0) native "EntrySync_moveTo_Callback";
-  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
-
-  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_moveTo_Callback";
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
-
-  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EntrySync_moveTo_Callback";
-  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EntrySync_moveTo_Callback";
-  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static name_Getter(mthis) native "EntrySync_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
-
-  static remove_Callback_0(mthis) native "EntrySync_remove_Callback";
-  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
-
-  static remove_Callback_1(mthis, __arg_0) native "EntrySync_remove_Callback";
-  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
-
-  static remove_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_remove_Callback";
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
-
-  static toURL_Callback_0(mthis) native "EntrySync_toURL_Callback";
-  toURL_Callback_0_(mthis) => toURL_Callback_0(mthis);
-
-  static toURL_Callback_1(mthis, __arg_0) native "EntrySync_toURL_Callback";
-  toURL_Callback_1_(mthis, __arg_0) => toURL_Callback_1(mthis, __arg_0);
-
-  static toURL_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_toURL_Callback";
-  toURL_Callback_2_(mthis, __arg_0, __arg_1) => toURL_Callback_2(mthis, __arg_0, __arg_1);
+  toURL_Callback_0_(mthis) => mthis.callMethod("toURL", []);
 
 }
 
 class BlinkErrorEvent extends BlinkEvent {
   static final instance = new BlinkErrorEvent();
 
-  static colno_Getter(mthis) native "ErrorEvent_colno_Getter";
-  colno_Getter_(mthis) => colno_Getter(mthis);
+  colno_Getter_(mthis) => mthis["colno"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "ErrorEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["ErrorEvent"], [__arg_0, __arg_1]);
 
-  static error_Getter(mthis) native "ErrorEvent_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  error_Getter_(mthis) => mthis["error"];
 
-  static filename_Getter(mthis) native "ErrorEvent_filename_Getter";
-  filename_Getter_(mthis) => filename_Getter(mthis);
+  filename_Getter_(mthis) => mthis["filename"];
 
-  static lineno_Getter(mthis) native "ErrorEvent_lineno_Getter";
-  lineno_Getter_(mthis) => lineno_Getter(mthis);
+  lineno_Getter_(mthis) => mthis["lineno"];
 
-  static message_Getter(mthis) native "ErrorEvent_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
 }
 
 class BlinkEvent {
   static final instance = new BlinkEvent();
 
-  static bubbles_Getter(mthis) native "Event_bubbles_Getter";
-  bubbles_Getter_(mthis) => bubbles_Getter(mthis);
+  bubbles_Getter_(mthis) => mthis["bubbles"];
 
-  static cancelBubble_Getter(mthis) native "Event_cancelBubble_Getter";
-  cancelBubble_Getter_(mthis) => cancelBubble_Getter(mthis);
+  cancelBubble_Getter_(mthis) => mthis["cancelBubble"];
 
-  static cancelBubble_Setter(mthis, __arg_0) native "Event_cancelBubble_Setter";
-  cancelBubble_Setter_(mthis, __arg_0) => cancelBubble_Setter(mthis, __arg_0);
+  cancelBubble_Setter_(mthis, __arg_0) => mthis["cancelBubble"] = __arg_0;
 
-  static cancelable_Getter(mthis) native "Event_cancelable_Getter";
-  cancelable_Getter_(mthis) => cancelable_Getter(mthis);
+  cancelable_Getter_(mthis) => mthis["cancelable"];
 
-  static clipboardData_Getter(mthis) native "Event_clipboardData_Getter";
-  clipboardData_Getter_(mthis) => clipboardData_Getter(mthis);
+  clipboardData_Getter_(mthis) => mthis["clipboardData"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Event_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Event"], [__arg_0, __arg_1]);
 
-  static currentTarget_Getter(mthis) native "Event_currentTarget_Getter";
-  currentTarget_Getter_(mthis) => currentTarget_Getter(mthis);
+  currentTarget_Getter_(mthis) => mthis["currentTarget"];
 
-  static defaultPrevented_Getter(mthis) native "Event_defaultPrevented_Getter";
-  defaultPrevented_Getter_(mthis) => defaultPrevented_Getter(mthis);
+  defaultPrevented_Getter_(mthis) => mthis["defaultPrevented"];
 
-  static eventPhase_Getter(mthis) native "Event_eventPhase_Getter";
-  eventPhase_Getter_(mthis) => eventPhase_Getter(mthis);
+  eventPhase_Getter_(mthis) => mthis["eventPhase"];
 
-  static initEvent_Callback_0(mthis) native "Event_initEvent_Callback";
-  initEvent_Callback_0_(mthis) => initEvent_Callback_0(mthis);
+  initEvent_Callback_0_(mthis) => mthis.callMethod("initEvent", []);
 
-  static initEvent_Callback_1(mthis, __arg_0) native "Event_initEvent_Callback";
-  initEvent_Callback_1_(mthis, __arg_0) => initEvent_Callback_1(mthis, __arg_0);
+  initEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initEvent", [__arg_0]);
 
-  static initEvent_Callback_2(mthis, __arg_0, __arg_1) native "Event_initEvent_Callback";
-  initEvent_Callback_2_(mthis, __arg_0, __arg_1) => initEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initEvent", [__arg_0, __arg_1]);
 
-  static initEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Event_initEvent_Callback";
-  initEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Event_initEvent_Callback";
-  initEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  path_Getter_(mthis) => mthis["path"];
 
-  static initEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Event_initEvent_Callback";
-  initEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  preventDefault_Callback_0_(mthis) => mthis.callMethod("preventDefault", []);
 
-  static path_Getter(mthis) native "Event_path_Getter";
-  path_Getter_(mthis) => path_Getter(mthis);
+  returnValue_Getter_(mthis) => mthis["returnValue"];
 
-  static preventDefault_Callback_0(mthis) native "Event_preventDefault_Callback";
-  preventDefault_Callback_0_(mthis) => preventDefault_Callback_0(mthis);
+  returnValue_Setter_(mthis, __arg_0) => mthis["returnValue"] = __arg_0;
 
-  static preventDefault_Callback_1(mthis, __arg_0) native "Event_preventDefault_Callback";
-  preventDefault_Callback_1_(mthis, __arg_0) => preventDefault_Callback_1(mthis, __arg_0);
+  stopImmediatePropagation_Callback_0_(mthis) => mthis.callMethod("stopImmediatePropagation", []);
 
-  static preventDefault_Callback_2(mthis, __arg_0, __arg_1) native "Event_preventDefault_Callback";
-  preventDefault_Callback_2_(mthis, __arg_0, __arg_1) => preventDefault_Callback_2(mthis, __arg_0, __arg_1);
+  stopPropagation_Callback_0_(mthis) => mthis.callMethod("stopPropagation", []);
 
-  static returnValue_Getter(mthis) native "Event_returnValue_Getter";
-  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
-  static returnValue_Setter(mthis, __arg_0) native "Event_returnValue_Setter";
-  returnValue_Setter_(mthis, __arg_0) => returnValue_Setter(mthis, __arg_0);
+  timeStamp_Getter_(mthis) => mthis["timeStamp"];
 
-  static stopImmediatePropagation_Callback_0(mthis) native "Event_stopImmediatePropagation_Callback";
-  stopImmediatePropagation_Callback_0_(mthis) => stopImmediatePropagation_Callback_0(mthis);
-
-  static stopImmediatePropagation_Callback_1(mthis, __arg_0) native "Event_stopImmediatePropagation_Callback";
-  stopImmediatePropagation_Callback_1_(mthis, __arg_0) => stopImmediatePropagation_Callback_1(mthis, __arg_0);
-
-  static stopImmediatePropagation_Callback_2(mthis, __arg_0, __arg_1) native "Event_stopImmediatePropagation_Callback";
-  stopImmediatePropagation_Callback_2_(mthis, __arg_0, __arg_1) => stopImmediatePropagation_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stopPropagation_Callback_0(mthis) native "Event_stopPropagation_Callback";
-  stopPropagation_Callback_0_(mthis) => stopPropagation_Callback_0(mthis);
-
-  static stopPropagation_Callback_1(mthis, __arg_0) native "Event_stopPropagation_Callback";
-  stopPropagation_Callback_1_(mthis, __arg_0) => stopPropagation_Callback_1(mthis, __arg_0);
-
-  static stopPropagation_Callback_2(mthis, __arg_0, __arg_1) native "Event_stopPropagation_Callback";
-  stopPropagation_Callback_2_(mthis, __arg_0, __arg_1) => stopPropagation_Callback_2(mthis, __arg_0, __arg_1);
-
-  static target_Getter(mthis) native "Event_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
-
-  static timeStamp_Getter(mthis) native "Event_timeStamp_Getter";
-  timeStamp_Getter_(mthis) => timeStamp_Getter(mthis);
-
-  static type_Getter(mthis) native "Event_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkEventSource extends BlinkEventTarget {
   static final instance = new BlinkEventSource();
 
-  static close_Callback_0(mthis) native "EventSource_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "EventSource_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["EventSource"], []);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "EventSource_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["EventSource"], [__arg_0]);
 
-  static constructorCallback_0() native "EventSource_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["EventSource"], [__arg_0, __arg_1]);
 
-  static constructorCallback_1(__arg_0) native "EventSource_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "EventSource_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "EventSource_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "EventSource_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static onerror_Getter(mthis) native "EventSource_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onopen_Getter_(mthis) => mthis["onopen"];
 
-  static onerror_Setter(mthis, __arg_0) native "EventSource_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onopen_Setter_(mthis, __arg_0) => mthis["onopen"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "EventSource_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static onmessage_Setter(mthis, __arg_0) native "EventSource_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  url_Getter_(mthis) => mthis["url"];
 
-  static onopen_Getter(mthis) native "EventSource_onopen_Getter";
-  onopen_Getter_(mthis) => onopen_Getter(mthis);
-
-  static onopen_Setter(mthis, __arg_0) native "EventSource_onopen_Setter";
-  onopen_Setter_(mthis, __arg_0) => onopen_Setter(mthis, __arg_0);
-
-  static readyState_Getter(mthis) native "EventSource_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
-
-  static url_Getter(mthis) native "EventSource_url_Getter";
-  url_Getter_(mthis) => url_Getter(mthis);
-
-  static withCredentials_Getter(mthis) native "EventSource_withCredentials_Getter";
-  withCredentials_Getter_(mthis) => withCredentials_Getter(mthis);
+  withCredentials_Getter_(mthis) => mthis["withCredentials"];
 
 }
 
 class BlinkEventTarget {
   static final instance = new BlinkEventTarget();
 
-  static addEventListener_Callback_0(mthis) native "EventTarget_addEventListener_Callback";
-  addEventListener_Callback_0_(mthis) => addEventListener_Callback_0(mthis);
+  addEventListener_Callback_0_(mthis) => mthis.callMethod("addEventListener", []);
 
-  static addEventListener_Callback_1(mthis, __arg_0) native "EventTarget_addEventListener_Callback";
-  addEventListener_Callback_1_(mthis, __arg_0) => addEventListener_Callback_1(mthis, __arg_0);
+  addEventListener_Callback_1_(mthis, __arg_0) => mthis.callMethod("addEventListener", [__arg_0]);
 
-  static addEventListener_Callback_2(mthis, __arg_0, __arg_1) native "EventTarget_addEventListener_Callback";
-  addEventListener_Callback_2_(mthis, __arg_0, __arg_1) => addEventListener_Callback_2(mthis, __arg_0, __arg_1);
+  addEventListener_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addEventListener", [__arg_0, __arg_1]);
 
-  static addEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EventTarget_addEventListener_Callback";
-  addEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  addEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("addEventListener", [__arg_0, __arg_1, __arg_2]);
 
-  static addEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EventTarget_addEventListener_Callback";
-  addEventListener_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  dispatchEvent_Callback_0_(mthis) => mthis.callMethod("dispatchEvent", []);
 
-  static addEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "EventTarget_addEventListener_Callback";
-  addEventListener_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  dispatchEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("dispatchEvent", [__arg_0]);
 
-  static dispatchEvent_Callback_0(mthis) native "EventTarget_dispatchEvent_Callback";
-  dispatchEvent_Callback_0_(mthis) => dispatchEvent_Callback_0(mthis);
+  removeEventListener_Callback_0_(mthis) => mthis.callMethod("removeEventListener", []);
 
-  static dispatchEvent_Callback_1(mthis, __arg_0) native "EventTarget_dispatchEvent_Callback";
-  dispatchEvent_Callback_1_(mthis, __arg_0) => dispatchEvent_Callback_1(mthis, __arg_0);
+  removeEventListener_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeEventListener", [__arg_0]);
 
-  static dispatchEvent_Callback_2(mthis, __arg_0, __arg_1) native "EventTarget_dispatchEvent_Callback";
-  dispatchEvent_Callback_2_(mthis, __arg_0, __arg_1) => dispatchEvent_Callback_2(mthis, __arg_0, __arg_1);
+  removeEventListener_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("removeEventListener", [__arg_0, __arg_1]);
 
-  static dispatchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EventTarget_dispatchEvent_Callback";
-  dispatchEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => dispatchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeEventListener_Callback_0(mthis) native "EventTarget_removeEventListener_Callback";
-  removeEventListener_Callback_0_(mthis) => removeEventListener_Callback_0(mthis);
-
-  static removeEventListener_Callback_1(mthis, __arg_0) native "EventTarget_removeEventListener_Callback";
-  removeEventListener_Callback_1_(mthis, __arg_0) => removeEventListener_Callback_1(mthis, __arg_0);
-
-  static removeEventListener_Callback_2(mthis, __arg_0, __arg_1) native "EventTarget_removeEventListener_Callback";
-  removeEventListener_Callback_2_(mthis, __arg_0, __arg_1) => removeEventListener_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EventTarget_removeEventListener_Callback";
-  removeEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EventTarget_removeEventListener_Callback";
-  removeEventListener_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static removeEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "EventTarget_removeEventListener_Callback";
-  removeEventListener_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => removeEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  removeEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("removeEventListener", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkExtendableEvent extends BlinkEvent {
   static final instance = new BlinkExtendableEvent();
 
-  static waitUntil_Callback_0(mthis) native "ExtendableEvent_waitUntil_Callback";
-  waitUntil_Callback_0_(mthis) => waitUntil_Callback_0(mthis);
+  waitUntil_Callback_0_(mthis) => mthis.callMethod("waitUntil", []);
 
-  static waitUntil_Callback_1(mthis, __arg_0) native "ExtendableEvent_waitUntil_Callback";
-  waitUntil_Callback_1_(mthis, __arg_0) => waitUntil_Callback_1(mthis, __arg_0);
-
-  static waitUntil_Callback_2(mthis, __arg_0, __arg_1) native "ExtendableEvent_waitUntil_Callback";
-  waitUntil_Callback_2_(mthis, __arg_0, __arg_1) => waitUntil_Callback_2(mthis, __arg_0, __arg_1);
-
-  static waitUntil_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ExtendableEvent_waitUntil_Callback";
-  waitUntil_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => waitUntil_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  waitUntil_Callback_1_(mthis, __arg_0) => mthis.callMethod("waitUntil", [__arg_0]);
 
 }
 
 class BlinkFederatedCredential extends BlinkCredential {
   static final instance = new BlinkFederatedCredential();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "FederatedCredential_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["FederatedCredential"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "FederatedCredential_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["FederatedCredential"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "FederatedCredential_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(js.context["FederatedCredential"], [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "FederatedCredential_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "FederatedCredential_constructorCallback";
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static federation_Getter(mthis) native "FederatedCredential_federation_Getter";
-  federation_Getter_(mthis) => federation_Getter(mthis);
+  federation_Getter_(mthis) => mthis["federation"];
 
 }
 
 class BlinkFetchEvent extends BlinkEvent {
   static final instance = new BlinkFetchEvent();
 
-  static isReload_Getter(mthis) native "FetchEvent_isReload_Getter";
-  isReload_Getter_(mthis) => isReload_Getter(mthis);
+  isReload_Getter_(mthis) => mthis["isReload"];
 
-  static request_Getter(mthis) native "FetchEvent_request_Getter";
-  request_Getter_(mthis) => request_Getter(mthis);
+  request_Getter_(mthis) => mthis["request"];
 
-  static respondWith_Callback_0(mthis) native "FetchEvent_respondWith_Callback";
-  respondWith_Callback_0_(mthis) => respondWith_Callback_0(mthis);
+  respondWith_Callback_0_(mthis) => mthis.callMethod("respondWith", []);
 
-  static respondWith_Callback_1(mthis, __arg_0) native "FetchEvent_respondWith_Callback";
-  respondWith_Callback_1_(mthis, __arg_0) => respondWith_Callback_1(mthis, __arg_0);
-
-  static respondWith_Callback_2(mthis, __arg_0, __arg_1) native "FetchEvent_respondWith_Callback";
-  respondWith_Callback_2_(mthis, __arg_0, __arg_1) => respondWith_Callback_2(mthis, __arg_0, __arg_1);
-
-  static respondWith_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FetchEvent_respondWith_Callback";
-  respondWith_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => respondWith_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  respondWith_Callback_1_(mthis, __arg_0) => mthis.callMethod("respondWith", [__arg_0]);
 
 }
 
 class BlinkFile extends BlinkBlob {
   static final instance = new BlinkFile();
 
-  static constructorCallback_0() native "File_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["File"], []);
 
-  static constructorCallback_1(__arg_0) native "File_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["File"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "File_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["File"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "File_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["File"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "File_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  lastModifiedDate_Getter_(mthis) => mthis["lastModifiedDate"];
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "File_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  lastModified_Getter_(mthis) => mthis["lastModified"];
 
-  static lastModifiedDate_Getter(mthis) native "File_lastModifiedDate_Getter";
-  lastModifiedDate_Getter_(mthis) => lastModifiedDate_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static lastModified_Getter(mthis) native "File_lastModified_Getter";
-  lastModified_Getter_(mthis) => lastModified_Getter(mthis);
-
-  static name_Getter(mthis) native "File_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
-
-  static webkitRelativePath_Getter(mthis) native "File_webkitRelativePath_Getter";
-  webkitRelativePath_Getter_(mthis) => webkitRelativePath_Getter(mthis);
+  webkitRelativePath_Getter_(mthis) => mthis["webkitRelativePath"];
 
 }
 
 class BlinkFileEntry extends BlinkEntry {
   static final instance = new BlinkFileEntry();
 
-  static createWriter_Callback_0(mthis) native "FileEntry_createWriter_Callback";
-  createWriter_Callback_0_(mthis) => createWriter_Callback_0(mthis);
+  createWriter_Callback_0_(mthis) => mthis.callMethod("createWriter", []);
 
-  static createWriter_Callback_1(mthis, __arg_0) native "FileEntry_createWriter_Callback";
-  createWriter_Callback_1_(mthis, __arg_0) => createWriter_Callback_1(mthis, __arg_0);
+  createWriter_Callback_1_(mthis, __arg_0) => mthis.callMethod("createWriter", [__arg_0]);
 
-  static createWriter_Callback_2(mthis, __arg_0, __arg_1) native "FileEntry_createWriter_Callback";
-  createWriter_Callback_2_(mthis, __arg_0, __arg_1) => createWriter_Callback_2(mthis, __arg_0, __arg_1);
+  createWriter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createWriter", [__arg_0, __arg_1]);
 
-  static createWriter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileEntry_createWriter_Callback";
-  createWriter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createWriter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  file_Callback_0_(mthis) => mthis.callMethod("file", []);
 
-  static createWriter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileEntry_createWriter_Callback";
-  createWriter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createWriter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  file_Callback_1_(mthis, __arg_0) => mthis.callMethod("file", [__arg_0]);
 
-  static file_Callback_0(mthis) native "FileEntry_file_Callback";
-  file_Callback_0_(mthis) => file_Callback_0(mthis);
-
-  static file_Callback_1(mthis, __arg_0) native "FileEntry_file_Callback";
-  file_Callback_1_(mthis, __arg_0) => file_Callback_1(mthis, __arg_0);
-
-  static file_Callback_2(mthis, __arg_0, __arg_1) native "FileEntry_file_Callback";
-  file_Callback_2_(mthis, __arg_0, __arg_1) => file_Callback_2(mthis, __arg_0, __arg_1);
-
-  static file_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileEntry_file_Callback";
-  file_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => file_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static file_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileEntry_file_Callback";
-  file_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => file_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  file_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("file", [__arg_0, __arg_1]);
 
 }
 
 class BlinkFileEntrySync extends BlinkEntrySync {
   static final instance = new BlinkFileEntrySync();
 
-  static createWriter_Callback_0(mthis) native "FileEntrySync_createWriter_Callback";
-  createWriter_Callback_0_(mthis) => createWriter_Callback_0(mthis);
+  createWriter_Callback_0_(mthis) => mthis.callMethod("createWriter", []);
 
-  static createWriter_Callback_1(mthis, __arg_0) native "FileEntrySync_createWriter_Callback";
-  createWriter_Callback_1_(mthis, __arg_0) => createWriter_Callback_1(mthis, __arg_0);
-
-  static createWriter_Callback_2(mthis, __arg_0, __arg_1) native "FileEntrySync_createWriter_Callback";
-  createWriter_Callback_2_(mthis, __arg_0, __arg_1) => createWriter_Callback_2(mthis, __arg_0, __arg_1);
-
-  static file_Callback_0(mthis) native "FileEntrySync_file_Callback";
-  file_Callback_0_(mthis) => file_Callback_0(mthis);
-
-  static file_Callback_1(mthis, __arg_0) native "FileEntrySync_file_Callback";
-  file_Callback_1_(mthis, __arg_0) => file_Callback_1(mthis, __arg_0);
-
-  static file_Callback_2(mthis, __arg_0, __arg_1) native "FileEntrySync_file_Callback";
-  file_Callback_2_(mthis, __arg_0, __arg_1) => file_Callback_2(mthis, __arg_0, __arg_1);
+  file_Callback_0_(mthis) => mthis.callMethod("file", []);
 
 }
 
 class BlinkFileError extends BlinkDOMError {
   static final instance = new BlinkFileError();
 
-  static code_Getter(mthis) native "FileError_code_Getter";
-  code_Getter_(mthis) => code_Getter(mthis);
+  code_Getter_(mthis) => mthis["code"];
 
 }
 
 class BlinkFileList {
   static final instance = new BlinkFileList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "FileList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "FileList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "FileList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "FileList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "FileList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkFileReader extends BlinkEventTarget {
   static final instance = new BlinkFileReader();
 
-  static abort_Callback_0(mthis) native "FileReader_abort_Callback";
-  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+  abort_Callback_0_(mthis) => mthis.callMethod("abort", []);
 
-  static abort_Callback_1(mthis, __arg_0) native "FileReader_abort_Callback";
-  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["FileReader"], []);
 
-  static abort_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_abort_Callback";
-  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+  error_Getter_(mthis) => mthis["error"];
 
-  static constructorCallback_0() native "FileReader_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static constructorCallback_1(__arg_0) native "FileReader_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static constructorCallback_2(__arg_0, __arg_1) native "FileReader_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static error_Getter(mthis) native "FileReader_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onabort_Getter(mthis) native "FileReader_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  onload_Getter_(mthis) => mthis["onload"];
 
-  static onabort_Setter(mthis, __arg_0) native "FileReader_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
 
-  static onerror_Getter(mthis) native "FileReader_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onloadend_Getter_(mthis) => mthis["onloadend"];
 
-  static onerror_Setter(mthis, __arg_0) native "FileReader_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onloadend_Setter_(mthis, __arg_0) => mthis["onloadend"] = __arg_0;
 
-  static onload_Getter(mthis) native "FileReader_onload_Getter";
-  onload_Getter_(mthis) => onload_Getter(mthis);
+  onloadstart_Getter_(mthis) => mthis["onloadstart"];
 
-  static onload_Setter(mthis, __arg_0) native "FileReader_onload_Setter";
-  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
 
-  static onloadend_Getter(mthis) native "FileReader_onloadend_Getter";
-  onloadend_Getter_(mthis) => onloadend_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onloadend_Setter(mthis, __arg_0) native "FileReader_onloadend_Setter";
-  onloadend_Setter_(mthis, __arg_0) => onloadend_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static onloadstart_Getter(mthis) native "FileReader_onloadstart_Getter";
-  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+  readAsArrayBuffer_Callback_0_(mthis) => mthis.callMethod("readAsArrayBuffer", []);
 
-  static onloadstart_Setter(mthis, __arg_0) native "FileReader_onloadstart_Setter";
-  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsArrayBuffer", [__arg_0]);
 
-  static onprogress_Getter(mthis) native "FileReader_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+  readAsBinaryString_Callback_0_(mthis) => mthis.callMethod("readAsBinaryString", []);
 
-  static onprogress_Setter(mthis, __arg_0) native "FileReader_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+  readAsBinaryString_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsBinaryString", [__arg_0]);
 
-  static readAsArrayBuffer_Callback_0(mthis) native "FileReader_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_0_(mthis) => readAsArrayBuffer_Callback_0(mthis);
+  readAsDataURL_Callback_0_(mthis) => mthis.callMethod("readAsDataURL", []);
 
-  static readAsArrayBuffer_Callback_1(mthis, __arg_0) native "FileReader_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => readAsArrayBuffer_Callback_1(mthis, __arg_0);
+  readAsDataURL_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsDataURL", [__arg_0]);
 
-  static readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  readAsText_Callback_0_(mthis) => mthis.callMethod("readAsText", []);
 
-  static readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  readAsText_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsText", [__arg_0]);
 
-  static readAsBinaryString_Callback_0(mthis) native "FileReader_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_0_(mthis) => readAsBinaryString_Callback_0(mthis);
+  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("readAsText", [__arg_0, __arg_1]);
 
-  static readAsBinaryString_Callback_1(mthis, __arg_0) native "FileReader_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_1_(mthis, __arg_0) => readAsBinaryString_Callback_1(mthis, __arg_0);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_2_(mthis, __arg_0, __arg_1) => readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static readAsDataURL_Callback_0(mthis) native "FileReader_readAsDataURL_Callback";
-  readAsDataURL_Callback_0_(mthis) => readAsDataURL_Callback_0(mthis);
-
-  static readAsDataURL_Callback_1(mthis, __arg_0) native "FileReader_readAsDataURL_Callback";
-  readAsDataURL_Callback_1_(mthis, __arg_0) => readAsDataURL_Callback_1(mthis, __arg_0);
-
-  static readAsDataURL_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsDataURL_Callback";
-  readAsDataURL_Callback_2_(mthis, __arg_0, __arg_1) => readAsDataURL_Callback_2(mthis, __arg_0, __arg_1);
-
-  static readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsDataURL_Callback";
-  readAsDataURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static readAsText_Callback_0(mthis) native "FileReader_readAsText_Callback";
-  readAsText_Callback_0_(mthis) => readAsText_Callback_0(mthis);
-
-  static readAsText_Callback_1(mthis, __arg_0) native "FileReader_readAsText_Callback";
-  readAsText_Callback_1_(mthis, __arg_0) => readAsText_Callback_1(mthis, __arg_0);
-
-  static readAsText_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsText_Callback";
-  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => readAsText_Callback_2(mthis, __arg_0, __arg_1);
-
-  static readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsText_Callback";
-  readAsText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileReader_readAsText_Callback";
-  readAsText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static readyState_Getter(mthis) native "FileReader_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
-
-  static result_Getter(mthis) native "FileReader_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
 }
 
 class BlinkFileReaderSync {
   static final instance = new BlinkFileReaderSync();
 
-  static constructorCallback_0() native "FileReaderSync_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["FileReaderSync"], []);
 
-  static constructorCallback_1(__arg_0) native "FileReaderSync_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  readAsArrayBuffer_Callback_0_(mthis) => mthis.callMethod("readAsArrayBuffer", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "FileReaderSync_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsArrayBuffer", [__arg_0]);
 
-  static readAsArrayBuffer_Callback_0(mthis) native "FileReaderSync_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_0_(mthis) => readAsArrayBuffer_Callback_0(mthis);
+  readAsBinaryString_Callback_0_(mthis) => mthis.callMethod("readAsBinaryString", []);
 
-  static readAsArrayBuffer_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => readAsArrayBuffer_Callback_1(mthis, __arg_0);
+  readAsBinaryString_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsBinaryString", [__arg_0]);
 
-  static readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  readAsDataURL_Callback_0_(mthis) => mthis.callMethod("readAsDataURL", []);
 
-  static readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsArrayBuffer_Callback";
-  readAsArrayBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  readAsDataURL_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsDataURL", [__arg_0]);
 
-  static readAsBinaryString_Callback_0(mthis) native "FileReaderSync_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_0_(mthis) => readAsBinaryString_Callback_0(mthis);
+  readAsText_Callback_0_(mthis) => mthis.callMethod("readAsText", []);
 
-  static readAsBinaryString_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_1_(mthis, __arg_0) => readAsBinaryString_Callback_1(mthis, __arg_0);
+  readAsText_Callback_1_(mthis, __arg_0) => mthis.callMethod("readAsText", [__arg_0]);
 
-  static readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_2_(mthis, __arg_0, __arg_1) => readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsBinaryString_Callback";
-  readAsBinaryString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static readAsDataURL_Callback_0(mthis) native "FileReaderSync_readAsDataURL_Callback";
-  readAsDataURL_Callback_0_(mthis) => readAsDataURL_Callback_0(mthis);
-
-  static readAsDataURL_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsDataURL_Callback";
-  readAsDataURL_Callback_1_(mthis, __arg_0) => readAsDataURL_Callback_1(mthis, __arg_0);
-
-  static readAsDataURL_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsDataURL_Callback";
-  readAsDataURL_Callback_2_(mthis, __arg_0, __arg_1) => readAsDataURL_Callback_2(mthis, __arg_0, __arg_1);
-
-  static readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsDataURL_Callback";
-  readAsDataURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static readAsText_Callback_0(mthis) native "FileReaderSync_readAsText_Callback";
-  readAsText_Callback_0_(mthis) => readAsText_Callback_0(mthis);
-
-  static readAsText_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsText_Callback";
-  readAsText_Callback_1_(mthis, __arg_0) => readAsText_Callback_1(mthis, __arg_0);
-
-  static readAsText_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsText_Callback";
-  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => readAsText_Callback_2(mthis, __arg_0, __arg_1);
-
-  static readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsText_Callback";
-  readAsText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileReaderSync_readAsText_Callback";
-  readAsText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("readAsText", [__arg_0, __arg_1]);
 
 }
 
 class BlinkFileWriter extends BlinkEventTarget {
   static final instance = new BlinkFileWriter();
 
-  static abort_Callback_0(mthis) native "FileWriter_abort_Callback";
-  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+  abort_Callback_0_(mthis) => mthis.callMethod("abort", []);
 
-  static abort_Callback_1(mthis, __arg_0) native "FileWriter_abort_Callback";
-  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+  error_Getter_(mthis) => mthis["error"];
 
-  static abort_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_abort_Callback";
-  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static error_Getter(mthis) native "FileWriter_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static length_Getter(mthis) native "FileWriter_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static onabort_Getter(mthis) native "FileWriter_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onabort_Setter(mthis, __arg_0) native "FileWriter_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onerror_Getter(mthis) native "FileWriter_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onerror_Setter(mthis, __arg_0) native "FileWriter_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static onprogress_Getter(mthis) native "FileWriter_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+  onwrite_Getter_(mthis) => mthis["onwrite"];
 
-  static onprogress_Setter(mthis, __arg_0) native "FileWriter_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+  onwrite_Setter_(mthis, __arg_0) => mthis["onwrite"] = __arg_0;
 
-  static onwrite_Getter(mthis) native "FileWriter_onwrite_Getter";
-  onwrite_Getter_(mthis) => onwrite_Getter(mthis);
+  onwriteend_Getter_(mthis) => mthis["onwriteend"];
 
-  static onwrite_Setter(mthis, __arg_0) native "FileWriter_onwrite_Setter";
-  onwrite_Setter_(mthis, __arg_0) => onwrite_Setter(mthis, __arg_0);
+  onwriteend_Setter_(mthis, __arg_0) => mthis["onwriteend"] = __arg_0;
 
-  static onwriteend_Getter(mthis) native "FileWriter_onwriteend_Getter";
-  onwriteend_Getter_(mthis) => onwriteend_Getter(mthis);
+  onwritestart_Getter_(mthis) => mthis["onwritestart"];
 
-  static onwriteend_Setter(mthis, __arg_0) native "FileWriter_onwriteend_Setter";
-  onwriteend_Setter_(mthis, __arg_0) => onwriteend_Setter(mthis, __arg_0);
+  onwritestart_Setter_(mthis, __arg_0) => mthis["onwritestart"] = __arg_0;
 
-  static onwritestart_Getter(mthis) native "FileWriter_onwritestart_Getter";
-  onwritestart_Getter_(mthis) => onwritestart_Getter(mthis);
+  position_Getter_(mthis) => mthis["position"];
 
-  static onwritestart_Setter(mthis, __arg_0) native "FileWriter_onwritestart_Setter";
-  onwritestart_Setter_(mthis, __arg_0) => onwritestart_Setter(mthis, __arg_0);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static position_Getter(mthis) native "FileWriter_position_Getter";
-  position_Getter_(mthis) => position_Getter(mthis);
+  seek_Callback_0_(mthis) => mthis.callMethod("seek", []);
 
-  static readyState_Getter(mthis) native "FileWriter_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
+  seek_Callback_1_(mthis, __arg_0) => mthis.callMethod("seek", [__arg_0]);
 
-  static seek_Callback_0(mthis) native "FileWriter_seek_Callback";
-  seek_Callback_0_(mthis) => seek_Callback_0(mthis);
+  truncate_Callback_0_(mthis) => mthis.callMethod("truncate", []);
 
-  static seek_Callback_1(mthis, __arg_0) native "FileWriter_seek_Callback";
-  seek_Callback_1_(mthis, __arg_0) => seek_Callback_1(mthis, __arg_0);
+  truncate_Callback_1_(mthis, __arg_0) => mthis.callMethod("truncate", [__arg_0]);
 
-  static seek_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_seek_Callback";
-  seek_Callback_2_(mthis, __arg_0, __arg_1) => seek_Callback_2(mthis, __arg_0, __arg_1);
+  write_Callback_0_(mthis) => mthis.callMethod("write", []);
 
-  static seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriter_seek_Callback";
-  seek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static truncate_Callback_0(mthis) native "FileWriter_truncate_Callback";
-  truncate_Callback_0_(mthis) => truncate_Callback_0(mthis);
-
-  static truncate_Callback_1(mthis, __arg_0) native "FileWriter_truncate_Callback";
-  truncate_Callback_1_(mthis, __arg_0) => truncate_Callback_1(mthis, __arg_0);
-
-  static truncate_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_truncate_Callback";
-  truncate_Callback_2_(mthis, __arg_0, __arg_1) => truncate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriter_truncate_Callback";
-  truncate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static write_Callback_0(mthis) native "FileWriter_write_Callback";
-  write_Callback_0_(mthis) => write_Callback_0(mthis);
-
-  static write_Callback_1(mthis, __arg_0) native "FileWriter_write_Callback";
-  write_Callback_1_(mthis, __arg_0) => write_Callback_1(mthis, __arg_0);
-
-  static write_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_write_Callback";
-  write_Callback_2_(mthis, __arg_0, __arg_1) => write_Callback_2(mthis, __arg_0, __arg_1);
-
-  static write_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriter_write_Callback";
-  write_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => write_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  write_Callback_1_(mthis, __arg_0) => mthis.callMethod("write", [__arg_0]);
 
 }
 
 class BlinkFileWriterSync {
   static final instance = new BlinkFileWriterSync();
 
-  static length_Getter(mthis) native "FileWriterSync_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
-  static position_Getter(mthis) native "FileWriterSync_position_Getter";
-  position_Getter_(mthis) => position_Getter(mthis);
+  position_Getter_(mthis) => mthis["position"];
 
-  static seek_Callback_0(mthis) native "FileWriterSync_seek_Callback";
-  seek_Callback_0_(mthis) => seek_Callback_0(mthis);
+  seek_Callback_0_(mthis) => mthis.callMethod("seek", []);
 
-  static seek_Callback_1(mthis, __arg_0) native "FileWriterSync_seek_Callback";
-  seek_Callback_1_(mthis, __arg_0) => seek_Callback_1(mthis, __arg_0);
+  seek_Callback_1_(mthis, __arg_0) => mthis.callMethod("seek", [__arg_0]);
 
-  static seek_Callback_2(mthis, __arg_0, __arg_1) native "FileWriterSync_seek_Callback";
-  seek_Callback_2_(mthis, __arg_0, __arg_1) => seek_Callback_2(mthis, __arg_0, __arg_1);
+  truncate_Callback_0_(mthis) => mthis.callMethod("truncate", []);
 
-  static seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriterSync_seek_Callback";
-  seek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  truncate_Callback_1_(mthis, __arg_0) => mthis.callMethod("truncate", [__arg_0]);
 
-  static truncate_Callback_0(mthis) native "FileWriterSync_truncate_Callback";
-  truncate_Callback_0_(mthis) => truncate_Callback_0(mthis);
+  write_Callback_0_(mthis) => mthis.callMethod("write", []);
 
-  static truncate_Callback_1(mthis, __arg_0) native "FileWriterSync_truncate_Callback";
-  truncate_Callback_1_(mthis, __arg_0) => truncate_Callback_1(mthis, __arg_0);
-
-  static truncate_Callback_2(mthis, __arg_0, __arg_1) native "FileWriterSync_truncate_Callback";
-  truncate_Callback_2_(mthis, __arg_0, __arg_1) => truncate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriterSync_truncate_Callback";
-  truncate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static write_Callback_0(mthis) native "FileWriterSync_write_Callback";
-  write_Callback_0_(mthis) => write_Callback_0(mthis);
-
-  static write_Callback_1(mthis, __arg_0) native "FileWriterSync_write_Callback";
-  write_Callback_1_(mthis, __arg_0) => write_Callback_1(mthis, __arg_0);
-
-  static write_Callback_2(mthis, __arg_0, __arg_1) native "FileWriterSync_write_Callback";
-  write_Callback_2_(mthis, __arg_0, __arg_1) => write_Callback_2(mthis, __arg_0, __arg_1);
-
-  static write_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriterSync_write_Callback";
-  write_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => write_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  write_Callback_1_(mthis, __arg_0) => mthis.callMethod("write", [__arg_0]);
 
 }
 
 class BlinkFocusEvent extends BlinkUIEvent {
   static final instance = new BlinkFocusEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "FocusEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["FocusEvent"], [__arg_0, __arg_1]);
 
-  static relatedTarget_Getter(mthis) native "FocusEvent_relatedTarget_Getter";
-  relatedTarget_Getter_(mthis) => relatedTarget_Getter(mthis);
+  relatedTarget_Getter_(mthis) => mthis["relatedTarget"];
 
 }
 
 class BlinkFontFace {
   static final instance = new BlinkFontFace();
 
-  static constructorCallback_0() native "FontFace_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["FontFace"], []);
 
-  static constructorCallback_1(__arg_0) native "FontFace_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["FontFace"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "FontFace_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["FontFace"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "FontFace_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["FontFace"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "FontFace_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  family_Getter_(mthis) => mthis["family"];
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "FontFace_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  family_Setter_(mthis, __arg_0) => mthis["family"] = __arg_0;
 
-  static family_Getter(mthis) native "FontFace_family_Getter";
-  family_Getter_(mthis) => family_Getter(mthis);
+  featureSettings_Getter_(mthis) => mthis["featureSettings"];
 
-  static family_Setter(mthis, __arg_0) native "FontFace_family_Setter";
-  family_Setter_(mthis, __arg_0) => family_Setter(mthis, __arg_0);
+  featureSettings_Setter_(mthis, __arg_0) => mthis["featureSettings"] = __arg_0;
 
-  static featureSettings_Getter(mthis) native "FontFace_featureSettings_Getter";
-  featureSettings_Getter_(mthis) => featureSettings_Getter(mthis);
+  load_Callback_0_(mthis) => mthis.callMethod("load", []);
 
-  static featureSettings_Setter(mthis, __arg_0) native "FontFace_featureSettings_Setter";
-  featureSettings_Setter_(mthis, __arg_0) => featureSettings_Setter(mthis, __arg_0);
+  loaded_Getter_(mthis) => mthis["loaded"];
 
-  static load_Callback_0(mthis) native "FontFace_load_Callback";
-  load_Callback_0_(mthis) => load_Callback_0(mthis);
+  status_Getter_(mthis) => mthis["status"];
 
-  static load_Callback_1(mthis, __arg_0) native "FontFace_load_Callback";
-  load_Callback_1_(mthis, __arg_0) => load_Callback_1(mthis, __arg_0);
+  stretch_Getter_(mthis) => mthis["stretch"];
 
-  static load_Callback_2(mthis, __arg_0, __arg_1) native "FontFace_load_Callback";
-  load_Callback_2_(mthis, __arg_0, __arg_1) => load_Callback_2(mthis, __arg_0, __arg_1);
+  stretch_Setter_(mthis, __arg_0) => mthis["stretch"] = __arg_0;
 
-  static loaded_Getter(mthis) native "FontFace_loaded_Getter";
-  loaded_Getter_(mthis) => loaded_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
-  static status_Getter(mthis) native "FontFace_status_Getter";
-  status_Getter_(mthis) => status_Getter(mthis);
+  style_Setter_(mthis, __arg_0) => mthis["style"] = __arg_0;
 
-  static stretch_Getter(mthis) native "FontFace_stretch_Getter";
-  stretch_Getter_(mthis) => stretch_Getter(mthis);
+  unicodeRange_Getter_(mthis) => mthis["unicodeRange"];
 
-  static stretch_Setter(mthis, __arg_0) native "FontFace_stretch_Setter";
-  stretch_Setter_(mthis, __arg_0) => stretch_Setter(mthis, __arg_0);
+  unicodeRange_Setter_(mthis, __arg_0) => mthis["unicodeRange"] = __arg_0;
 
-  static style_Getter(mthis) native "FontFace_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  variant_Getter_(mthis) => mthis["variant"];
 
-  static style_Setter(mthis, __arg_0) native "FontFace_style_Setter";
-  style_Setter_(mthis, __arg_0) => style_Setter(mthis, __arg_0);
+  variant_Setter_(mthis, __arg_0) => mthis["variant"] = __arg_0;
 
-  static unicodeRange_Getter(mthis) native "FontFace_unicodeRange_Getter";
-  unicodeRange_Getter_(mthis) => unicodeRange_Getter(mthis);
+  weight_Getter_(mthis) => mthis["weight"];
 
-  static unicodeRange_Setter(mthis, __arg_0) native "FontFace_unicodeRange_Setter";
-  unicodeRange_Setter_(mthis, __arg_0) => unicodeRange_Setter(mthis, __arg_0);
-
-  static variant_Getter(mthis) native "FontFace_variant_Getter";
-  variant_Getter_(mthis) => variant_Getter(mthis);
-
-  static variant_Setter(mthis, __arg_0) native "FontFace_variant_Setter";
-  variant_Setter_(mthis, __arg_0) => variant_Setter(mthis, __arg_0);
-
-  static weight_Getter(mthis) native "FontFace_weight_Getter";
-  weight_Getter_(mthis) => weight_Getter(mthis);
-
-  static weight_Setter(mthis, __arg_0) native "FontFace_weight_Setter";
-  weight_Setter_(mthis, __arg_0) => weight_Setter(mthis, __arg_0);
+  weight_Setter_(mthis, __arg_0) => mthis["weight"] = __arg_0;
 
 }
 
 class BlinkFontFaceSet extends BlinkEventTarget {
   static final instance = new BlinkFontFaceSet();
 
-  static add_Callback_0(mthis) native "FontFaceSet_add_Callback";
-  add_Callback_0_(mthis) => add_Callback_0(mthis);
+  add_Callback_0_(mthis) => mthis.callMethod("add", []);
 
-  static add_Callback_1(mthis, __arg_0) native "FontFaceSet_add_Callback";
-  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+  add_Callback_1_(mthis, __arg_0) => mthis.callMethod("add", [__arg_0]);
 
-  static add_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_add_Callback";
-  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+  check_Callback_0_(mthis) => mthis.callMethod("check", []);
 
-  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_add_Callback";
-  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  check_Callback_1_(mthis, __arg_0) => mthis.callMethod("check", [__arg_0]);
 
-  static check_Callback_0(mthis) native "FontFaceSet_check_Callback";
-  check_Callback_0_(mthis) => check_Callback_0(mthis);
+  check_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("check", [__arg_0, __arg_1]);
 
-  static check_Callback_1(mthis, __arg_0) native "FontFaceSet_check_Callback";
-  check_Callback_1_(mthis, __arg_0) => check_Callback_1(mthis, __arg_0);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static check_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_check_Callback";
-  check_Callback_2_(mthis, __arg_0, __arg_1) => check_Callback_2(mthis, __arg_0, __arg_1);
+  delete_Callback_0_(mthis) => mthis.callMethod("delete", []);
 
-  static check_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_check_Callback";
-  check_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => check_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  delete_Callback_1_(mthis, __arg_0) => mthis.callMethod("delete", [__arg_0]);
 
-  static check_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FontFaceSet_check_Callback";
-  check_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => check_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  forEach_Callback_0_(mthis) => mthis.callMethod("forEach", []);
 
-  static clear_Callback_0(mthis) native "FontFaceSet_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  forEach_Callback_1_(mthis, __arg_0) => mthis.callMethod("forEach", [__arg_0]);
 
-  static clear_Callback_1(mthis, __arg_0) native "FontFaceSet_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  forEach_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("forEach", [__arg_0, __arg_1]);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  has_Callback_0_(mthis) => mthis.callMethod("has", []);
 
-  static delete_Callback_0(mthis) native "FontFaceSet_delete_Callback";
-  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+  has_Callback_1_(mthis, __arg_0) => mthis.callMethod("has", [__arg_0]);
 
-  static delete_Callback_1(mthis, __arg_0) native "FontFaceSet_delete_Callback";
-  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+  onloading_Getter_(mthis) => mthis["onloading"];
 
-  static delete_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_delete_Callback";
-  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+  onloading_Setter_(mthis, __arg_0) => mthis["onloading"] = __arg_0;
 
-  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_delete_Callback";
-  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onloadingdone_Getter_(mthis) => mthis["onloadingdone"];
 
-  static forEach_Callback_0(mthis) native "FontFaceSet_forEach_Callback";
-  forEach_Callback_0_(mthis) => forEach_Callback_0(mthis);
+  onloadingdone_Setter_(mthis, __arg_0) => mthis["onloadingdone"] = __arg_0;
 
-  static forEach_Callback_1(mthis, __arg_0) native "FontFaceSet_forEach_Callback";
-  forEach_Callback_1_(mthis, __arg_0) => forEach_Callback_1(mthis, __arg_0);
+  onloadingerror_Getter_(mthis) => mthis["onloadingerror"];
 
-  static forEach_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_forEach_Callback";
-  forEach_Callback_2_(mthis, __arg_0, __arg_1) => forEach_Callback_2(mthis, __arg_0, __arg_1);
+  onloadingerror_Setter_(mthis, __arg_0) => mthis["onloadingerror"] = __arg_0;
 
-  static forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_forEach_Callback";
-  forEach_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  size_Getter_(mthis) => mthis["size"];
 
-  static forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FontFaceSet_forEach_Callback";
-  forEach_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static has_Callback_0(mthis) native "FontFaceSet_has_Callback";
-  has_Callback_0_(mthis) => has_Callback_0(mthis);
-
-  static has_Callback_1(mthis, __arg_0) native "FontFaceSet_has_Callback";
-  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
-
-  static has_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_has_Callback";
-  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
-
-  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_has_Callback";
-  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static onloading_Getter(mthis) native "FontFaceSet_onloading_Getter";
-  onloading_Getter_(mthis) => onloading_Getter(mthis);
-
-  static onloading_Setter(mthis, __arg_0) native "FontFaceSet_onloading_Setter";
-  onloading_Setter_(mthis, __arg_0) => onloading_Setter(mthis, __arg_0);
-
-  static onloadingdone_Getter(mthis) native "FontFaceSet_onloadingdone_Getter";
-  onloadingdone_Getter_(mthis) => onloadingdone_Getter(mthis);
-
-  static onloadingdone_Setter(mthis, __arg_0) native "FontFaceSet_onloadingdone_Setter";
-  onloadingdone_Setter_(mthis, __arg_0) => onloadingdone_Setter(mthis, __arg_0);
-
-  static onloadingerror_Getter(mthis) native "FontFaceSet_onloadingerror_Getter";
-  onloadingerror_Getter_(mthis) => onloadingerror_Getter(mthis);
-
-  static onloadingerror_Setter(mthis, __arg_0) native "FontFaceSet_onloadingerror_Setter";
-  onloadingerror_Setter_(mthis, __arg_0) => onloadingerror_Setter(mthis, __arg_0);
-
-  static size_Getter(mthis) native "FontFaceSet_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
-
-  static status_Getter(mthis) native "FontFaceSet_status_Getter";
-  status_Getter_(mthis) => status_Getter(mthis);
+  status_Getter_(mthis) => mthis["status"];
 
 }
 
 class BlinkFontFaceSetLoadEvent extends BlinkEvent {
   static final instance = new BlinkFontFaceSetLoadEvent();
 
-  static fontfaces_Getter(mthis) native "FontFaceSetLoadEvent_fontfaces_Getter";
-  fontfaces_Getter_(mthis) => fontfaces_Getter(mthis);
+  fontfaces_Getter_(mthis) => mthis["fontfaces"];
 
 }
 
 class BlinkFormData {
   static final instance = new BlinkFormData();
 
-  static append_Callback_0(mthis) native "FormData_append_Callback";
-  append_Callback_0_(mthis) => append_Callback_0(mthis);
+  append_Callback_0_(mthis) => mthis.callMethod("append", []);
 
-  static append_Callback_1(mthis, __arg_0) native "FormData_append_Callback";
-  append_Callback_1_(mthis, __arg_0) => append_Callback_1(mthis, __arg_0);
+  append_Callback_1_(mthis, __arg_0) => mthis.callMethod("append", [__arg_0]);
 
-  static append_Callback_2(mthis, __arg_0, __arg_1) native "FormData_append_Callback";
-  append_Callback_2_(mthis, __arg_0, __arg_1) => append_Callback_2(mthis, __arg_0, __arg_1);
+  append_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("append", [__arg_0, __arg_1]);
 
-  static append_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FormData_append_Callback";
-  append_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => append_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  append_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("append", [__arg_0, __arg_1, __arg_2]);
 
-  static append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FormData_append_Callback";
-  append_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_0_() => new js.JsObject(js.context["FormData"], []);
 
-  static append_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "FormData_append_Callback";
-  append_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => append_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static constructorCallback_0() native "FormData_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
-
-  static constructorCallback_1(__arg_0) native "FormData_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
-
-  static constructorCallback_2(__arg_0, __arg_1) native "FormData_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
-
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "FormData_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["FormData"], [__arg_0]);
 
 }
 
 class BlinkGainNode extends BlinkAudioNode {
   static final instance = new BlinkGainNode();
 
-  static gain_Getter(mthis) native "GainNode_gain_Getter";
-  gain_Getter_(mthis) => gain_Getter(mthis);
+  gain_Getter_(mthis) => mthis["gain"];
 
 }
 
 class BlinkGamepad {
   static final instance = new BlinkGamepad();
 
-  static axes_Getter(mthis) native "Gamepad_axes_Getter";
-  axes_Getter_(mthis) => axes_Getter(mthis);
+  axes_Getter_(mthis) => mthis["axes"];
 
-  static connected_Getter(mthis) native "Gamepad_connected_Getter";
-  connected_Getter_(mthis) => connected_Getter(mthis);
+  connected_Getter_(mthis) => mthis["connected"];
 
-  static id_Getter(mthis) native "Gamepad_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static index_Getter(mthis) native "Gamepad_index_Getter";
-  index_Getter_(mthis) => index_Getter(mthis);
+  index_Getter_(mthis) => mthis["index"];
 
-  static mapping_Getter(mthis) native "Gamepad_mapping_Getter";
-  mapping_Getter_(mthis) => mapping_Getter(mthis);
+  mapping_Getter_(mthis) => mthis["mapping"];
 
-  static timestamp_Getter(mthis) native "Gamepad_timestamp_Getter";
-  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
+  timestamp_Getter_(mthis) => mthis["timestamp"];
 
 }
 
 class BlinkGamepadButton {
   static final instance = new BlinkGamepadButton();
 
-  static pressed_Getter(mthis) native "GamepadButton_pressed_Getter";
-  pressed_Getter_(mthis) => pressed_Getter(mthis);
+  pressed_Getter_(mthis) => mthis["pressed"];
 
-  static value_Getter(mthis) native "GamepadButton_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
 }
 
 class BlinkGamepadEvent extends BlinkEvent {
   static final instance = new BlinkGamepadEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "GamepadEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["GamepadEvent"], [__arg_0, __arg_1]);
 
-  static gamepad_Getter(mthis) native "GamepadEvent_gamepad_Getter";
-  gamepad_Getter_(mthis) => gamepad_Getter(mthis);
+  gamepad_Getter_(mthis) => mthis["gamepad"];
 
 }
 
 class BlinkGamepadList {
   static final instance = new BlinkGamepadList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "GamepadList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "GamepadList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "GamepadList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "GamepadList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "GamepadList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "GamepadList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkGeofencing {
   static final instance = new BlinkGeofencing();
 
-  static getRegisteredRegions_Callback_0(mthis) native "Geofencing_getRegisteredRegions_Callback";
-  getRegisteredRegions_Callback_0_(mthis) => getRegisteredRegions_Callback_0(mthis);
+  getRegisteredRegions_Callback_0_(mthis) => mthis.callMethod("getRegisteredRegions", []);
 
-  static getRegisteredRegions_Callback_1(mthis, __arg_0) native "Geofencing_getRegisteredRegions_Callback";
-  getRegisteredRegions_Callback_1_(mthis, __arg_0) => getRegisteredRegions_Callback_1(mthis, __arg_0);
+  registerRegion_Callback_0_(mthis) => mthis.callMethod("registerRegion", []);
 
-  static getRegisteredRegions_Callback_2(mthis, __arg_0, __arg_1) native "Geofencing_getRegisteredRegions_Callback";
-  getRegisteredRegions_Callback_2_(mthis, __arg_0, __arg_1) => getRegisteredRegions_Callback_2(mthis, __arg_0, __arg_1);
+  registerRegion_Callback_1_(mthis, __arg_0) => mthis.callMethod("registerRegion", [__arg_0]);
 
-  static registerRegion_Callback_0(mthis) native "Geofencing_registerRegion_Callback";
-  registerRegion_Callback_0_(mthis) => registerRegion_Callback_0(mthis);
+  unregisterRegion_Callback_0_(mthis) => mthis.callMethod("unregisterRegion", []);
 
-  static registerRegion_Callback_1(mthis, __arg_0) native "Geofencing_registerRegion_Callback";
-  registerRegion_Callback_1_(mthis, __arg_0) => registerRegion_Callback_1(mthis, __arg_0);
-
-  static registerRegion_Callback_2(mthis, __arg_0, __arg_1) native "Geofencing_registerRegion_Callback";
-  registerRegion_Callback_2_(mthis, __arg_0, __arg_1) => registerRegion_Callback_2(mthis, __arg_0, __arg_1);
-
-  static registerRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geofencing_registerRegion_Callback";
-  registerRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => registerRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static unregisterRegion_Callback_0(mthis) native "Geofencing_unregisterRegion_Callback";
-  unregisterRegion_Callback_0_(mthis) => unregisterRegion_Callback_0(mthis);
-
-  static unregisterRegion_Callback_1(mthis, __arg_0) native "Geofencing_unregisterRegion_Callback";
-  unregisterRegion_Callback_1_(mthis, __arg_0) => unregisterRegion_Callback_1(mthis, __arg_0);
-
-  static unregisterRegion_Callback_2(mthis, __arg_0, __arg_1) native "Geofencing_unregisterRegion_Callback";
-  unregisterRegion_Callback_2_(mthis, __arg_0, __arg_1) => unregisterRegion_Callback_2(mthis, __arg_0, __arg_1);
-
-  static unregisterRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geofencing_unregisterRegion_Callback";
-  unregisterRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unregisterRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  unregisterRegion_Callback_1_(mthis, __arg_0) => mthis.callMethod("unregisterRegion", [__arg_0]);
 
 }
 
 class BlinkGeofencingRegion {
   static final instance = new BlinkGeofencingRegion();
 
-  static id_Getter(mthis) native "GeofencingRegion_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
 }
 
 class BlinkGeolocation {
   static final instance = new BlinkGeolocation();
 
-  static clearWatch_Callback_0(mthis) native "Geolocation_clearWatch_Callback";
-  clearWatch_Callback_0_(mthis) => clearWatch_Callback_0(mthis);
+  clearWatch_Callback_0_(mthis) => mthis.callMethod("clearWatch", []);
 
-  static clearWatch_Callback_1(mthis, __arg_0) native "Geolocation_clearWatch_Callback";
-  clearWatch_Callback_1_(mthis, __arg_0) => clearWatch_Callback_1(mthis, __arg_0);
+  clearWatch_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearWatch", [__arg_0]);
 
-  static clearWatch_Callback_2(mthis, __arg_0, __arg_1) native "Geolocation_clearWatch_Callback";
-  clearWatch_Callback_2_(mthis, __arg_0, __arg_1) => clearWatch_Callback_2(mthis, __arg_0, __arg_1);
+  getCurrentPosition_Callback_0_(mthis) => mthis.callMethod("getCurrentPosition", []);
 
-  static clearWatch_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geolocation_clearWatch_Callback";
-  clearWatch_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearWatch_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getCurrentPosition_Callback_1_(mthis, __arg_0) => mthis.callMethod("getCurrentPosition", [__arg_0]);
 
-  static getCurrentPosition_Callback_0(mthis) native "Geolocation_getCurrentPosition_Callback";
-  getCurrentPosition_Callback_0_(mthis) => getCurrentPosition_Callback_0(mthis);
+  getCurrentPosition_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getCurrentPosition", [__arg_0, __arg_1]);
 
-  static getCurrentPosition_Callback_1(mthis, __arg_0) native "Geolocation_getCurrentPosition_Callback";
-  getCurrentPosition_Callback_1_(mthis, __arg_0) => getCurrentPosition_Callback_1(mthis, __arg_0);
+  getCurrentPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("getCurrentPosition", [__arg_0, __arg_1, __arg_2]);
 
-  static getCurrentPosition_Callback_2(mthis, __arg_0, __arg_1) native "Geolocation_getCurrentPosition_Callback";
-  getCurrentPosition_Callback_2_(mthis, __arg_0, __arg_1) => getCurrentPosition_Callback_2(mthis, __arg_0, __arg_1);
+  watchPosition_Callback_0_(mthis) => mthis.callMethod("watchPosition", []);
 
-  static getCurrentPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geolocation_getCurrentPosition_Callback";
-  getCurrentPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCurrentPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  watchPosition_Callback_1_(mthis, __arg_0) => mthis.callMethod("watchPosition", [__arg_0]);
 
-  static getCurrentPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Geolocation_getCurrentPosition_Callback";
-  getCurrentPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getCurrentPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  watchPosition_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("watchPosition", [__arg_0, __arg_1]);
 
-  static getCurrentPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Geolocation_getCurrentPosition_Callback";
-  getCurrentPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getCurrentPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static watchPosition_Callback_0(mthis) native "Geolocation_watchPosition_Callback";
-  watchPosition_Callback_0_(mthis) => watchPosition_Callback_0(mthis);
-
-  static watchPosition_Callback_1(mthis, __arg_0) native "Geolocation_watchPosition_Callback";
-  watchPosition_Callback_1_(mthis, __arg_0) => watchPosition_Callback_1(mthis, __arg_0);
-
-  static watchPosition_Callback_2(mthis, __arg_0, __arg_1) native "Geolocation_watchPosition_Callback";
-  watchPosition_Callback_2_(mthis, __arg_0, __arg_1) => watchPosition_Callback_2(mthis, __arg_0, __arg_1);
-
-  static watchPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geolocation_watchPosition_Callback";
-  watchPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => watchPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static watchPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Geolocation_watchPosition_Callback";
-  watchPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => watchPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static watchPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Geolocation_watchPosition_Callback";
-  watchPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => watchPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  watchPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("watchPosition", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkGeoposition {
   static final instance = new BlinkGeoposition();
 
-  static coords_Getter(mthis) native "Geoposition_coords_Getter";
-  coords_Getter_(mthis) => coords_Getter(mthis);
+  coords_Getter_(mthis) => mthis["coords"];
 
-  static timestamp_Getter(mthis) native "Geoposition_timestamp_Getter";
-  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
+  timestamp_Getter_(mthis) => mthis["timestamp"];
 
 }
 
 class BlinkHTMLAllCollection {
   static final instance = new BlinkHTMLAllCollection();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLAllCollection___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "HTMLAllCollection_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "HTMLAllCollection_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAllCollection_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLAllCollection_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static length_Getter(mthis) native "HTMLAllCollection_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static namedItem_Callback_0(mthis) native "HTMLAllCollection_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
-
-  static namedItem_Callback_1(mthis, __arg_0) native "HTMLAllCollection_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
-
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAllCollection_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLAllCollection_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
 }
 
 class BlinkHTMLAnchorElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLAnchorElement();
 
-  static download_Getter(mthis) native "HTMLAnchorElement_download_Getter";
-  download_Getter_(mthis) => download_Getter(mthis);
+  download_Getter_(mthis) => mthis["download"];
 
-  static download_Setter(mthis, __arg_0) native "HTMLAnchorElement_download_Setter";
-  download_Setter_(mthis, __arg_0) => download_Setter(mthis, __arg_0);
+  download_Setter_(mthis, __arg_0) => mthis["download"] = __arg_0;
 
-  static hash_Getter(mthis) native "HTMLAnchorElement_hash_Getter";
-  hash_Getter_(mthis) => hash_Getter(mthis);
+  hash_Getter_(mthis) => mthis["hash"];
 
-  static hash_Setter(mthis, __arg_0) native "HTMLAnchorElement_hash_Setter";
-  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
+  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
 
-  static host_Getter(mthis) native "HTMLAnchorElement_host_Getter";
-  host_Getter_(mthis) => host_Getter(mthis);
+  host_Getter_(mthis) => mthis["host"];
 
-  static host_Setter(mthis, __arg_0) native "HTMLAnchorElement_host_Setter";
-  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
+  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
 
-  static hostname_Getter(mthis) native "HTMLAnchorElement_hostname_Getter";
-  hostname_Getter_(mthis) => hostname_Getter(mthis);
+  hostname_Getter_(mthis) => mthis["hostname"];
 
-  static hostname_Setter(mthis, __arg_0) native "HTMLAnchorElement_hostname_Setter";
-  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
+  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
 
-  static href_Getter(mthis) native "HTMLAnchorElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static href_Setter(mthis, __arg_0) native "HTMLAnchorElement_href_Setter";
-  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
+  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
 
-  static hreflang_Getter(mthis) native "HTMLAnchorElement_hreflang_Getter";
-  hreflang_Getter_(mthis) => hreflang_Getter(mthis);
+  hreflang_Getter_(mthis) => mthis["hreflang"];
 
-  static hreflang_Setter(mthis, __arg_0) native "HTMLAnchorElement_hreflang_Setter";
-  hreflang_Setter_(mthis, __arg_0) => hreflang_Setter(mthis, __arg_0);
+  hreflang_Setter_(mthis, __arg_0) => mthis["hreflang"] = __arg_0;
 
-  static integrity_Getter(mthis) native "HTMLAnchorElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLAnchorElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLAnchorElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLAnchorElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static origin_Getter(mthis) native "HTMLAnchorElement_origin_Getter";
-  origin_Getter_(mthis) => origin_Getter(mthis);
+  origin_Getter_(mthis) => mthis["origin"];
 
-  static password_Getter(mthis) native "HTMLAnchorElement_password_Getter";
-  password_Getter_(mthis) => password_Getter(mthis);
+  password_Getter_(mthis) => mthis["password"];
 
-  static password_Setter(mthis, __arg_0) native "HTMLAnchorElement_password_Setter";
-  password_Setter_(mthis, __arg_0) => password_Setter(mthis, __arg_0);
+  password_Setter_(mthis, __arg_0) => mthis["password"] = __arg_0;
 
-  static pathname_Getter(mthis) native "HTMLAnchorElement_pathname_Getter";
-  pathname_Getter_(mthis) => pathname_Getter(mthis);
+  pathname_Getter_(mthis) => mthis["pathname"];
 
-  static pathname_Setter(mthis, __arg_0) native "HTMLAnchorElement_pathname_Setter";
-  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
+  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
 
-  static ping_Getter(mthis) native "HTMLAnchorElement_ping_Getter";
-  ping_Getter_(mthis) => ping_Getter(mthis);
+  ping_Getter_(mthis) => mthis["ping"];
 
-  static ping_Setter(mthis, __arg_0) native "HTMLAnchorElement_ping_Setter";
-  ping_Setter_(mthis, __arg_0) => ping_Setter(mthis, __arg_0);
+  ping_Setter_(mthis, __arg_0) => mthis["ping"] = __arg_0;
 
-  static port_Getter(mthis) native "HTMLAnchorElement_port_Getter";
-  port_Getter_(mthis) => port_Getter(mthis);
+  port_Getter_(mthis) => mthis["port"];
 
-  static port_Setter(mthis, __arg_0) native "HTMLAnchorElement_port_Setter";
-  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
+  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
 
-  static protocol_Getter(mthis) native "HTMLAnchorElement_protocol_Getter";
-  protocol_Getter_(mthis) => protocol_Getter(mthis);
+  protocol_Getter_(mthis) => mthis["protocol"];
 
-  static protocol_Setter(mthis, __arg_0) native "HTMLAnchorElement_protocol_Setter";
-  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
+  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
 
-  static rel_Getter(mthis) native "HTMLAnchorElement_rel_Getter";
-  rel_Getter_(mthis) => rel_Getter(mthis);
+  rel_Getter_(mthis) => mthis["rel"];
 
-  static rel_Setter(mthis, __arg_0) native "HTMLAnchorElement_rel_Setter";
-  rel_Setter_(mthis, __arg_0) => rel_Setter(mthis, __arg_0);
+  rel_Setter_(mthis, __arg_0) => mthis["rel"] = __arg_0;
 
-  static search_Getter(mthis) native "HTMLAnchorElement_search_Getter";
-  search_Getter_(mthis) => search_Getter(mthis);
+  search_Getter_(mthis) => mthis["search"];
 
-  static search_Setter(mthis, __arg_0) native "HTMLAnchorElement_search_Setter";
-  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
+  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
 
-  static target_Getter(mthis) native "HTMLAnchorElement_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
-  static target_Setter(mthis, __arg_0) native "HTMLAnchorElement_target_Setter";
-  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
+  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
 
-  static toString_Callback_0(mthis) native "HTMLAnchorElement_toString_Callback";
-  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
+  toString_Callback_0_(mthis) => mthis.callMethod("toString", []);
 
-  static toString_Callback_1(mthis, __arg_0) native "HTMLAnchorElement_toString_Callback";
-  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
+  type_Getter_(mthis) => mthis["type"];
 
-  static toString_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAnchorElement_toString_Callback";
-  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLAnchorElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  username_Getter_(mthis) => mthis["username"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLAnchorElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
-
-  static username_Getter(mthis) native "HTMLAnchorElement_username_Getter";
-  username_Getter_(mthis) => username_Getter(mthis);
-
-  static username_Setter(mthis, __arg_0) native "HTMLAnchorElement_username_Setter";
-  username_Setter_(mthis, __arg_0) => username_Setter(mthis, __arg_0);
+  username_Setter_(mthis, __arg_0) => mthis["username"] = __arg_0;
 
 }
 
 class BlinkHTMLAppletElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLAppletElement();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLAppletElement___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLAppletElement___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
 }
 
 class BlinkHTMLAreaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLAreaElement();
 
-  static alt_Getter(mthis) native "HTMLAreaElement_alt_Getter";
-  alt_Getter_(mthis) => alt_Getter(mthis);
+  alt_Getter_(mthis) => mthis["alt"];
 
-  static alt_Setter(mthis, __arg_0) native "HTMLAreaElement_alt_Setter";
-  alt_Setter_(mthis, __arg_0) => alt_Setter(mthis, __arg_0);
+  alt_Setter_(mthis, __arg_0) => mthis["alt"] = __arg_0;
 
-  static coords_Getter(mthis) native "HTMLAreaElement_coords_Getter";
-  coords_Getter_(mthis) => coords_Getter(mthis);
+  coords_Getter_(mthis) => mthis["coords"];
 
-  static coords_Setter(mthis, __arg_0) native "HTMLAreaElement_coords_Setter";
-  coords_Setter_(mthis, __arg_0) => coords_Setter(mthis, __arg_0);
+  coords_Setter_(mthis, __arg_0) => mthis["coords"] = __arg_0;
 
-  static hash_Getter(mthis) native "HTMLAreaElement_hash_Getter";
-  hash_Getter_(mthis) => hash_Getter(mthis);
+  hash_Getter_(mthis) => mthis["hash"];
 
-  static hash_Setter(mthis, __arg_0) native "HTMLAreaElement_hash_Setter";
-  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
+  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
 
-  static host_Getter(mthis) native "HTMLAreaElement_host_Getter";
-  host_Getter_(mthis) => host_Getter(mthis);
+  host_Getter_(mthis) => mthis["host"];
 
-  static host_Setter(mthis, __arg_0) native "HTMLAreaElement_host_Setter";
-  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
+  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
 
-  static hostname_Getter(mthis) native "HTMLAreaElement_hostname_Getter";
-  hostname_Getter_(mthis) => hostname_Getter(mthis);
+  hostname_Getter_(mthis) => mthis["hostname"];
 
-  static hostname_Setter(mthis, __arg_0) native "HTMLAreaElement_hostname_Setter";
-  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
+  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
 
-  static href_Getter(mthis) native "HTMLAreaElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static href_Setter(mthis, __arg_0) native "HTMLAreaElement_href_Setter";
-  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
+  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
 
-  static origin_Getter(mthis) native "HTMLAreaElement_origin_Getter";
-  origin_Getter_(mthis) => origin_Getter(mthis);
+  origin_Getter_(mthis) => mthis["origin"];
 
-  static password_Getter(mthis) native "HTMLAreaElement_password_Getter";
-  password_Getter_(mthis) => password_Getter(mthis);
+  password_Getter_(mthis) => mthis["password"];
 
-  static password_Setter(mthis, __arg_0) native "HTMLAreaElement_password_Setter";
-  password_Setter_(mthis, __arg_0) => password_Setter(mthis, __arg_0);
+  password_Setter_(mthis, __arg_0) => mthis["password"] = __arg_0;
 
-  static pathname_Getter(mthis) native "HTMLAreaElement_pathname_Getter";
-  pathname_Getter_(mthis) => pathname_Getter(mthis);
+  pathname_Getter_(mthis) => mthis["pathname"];
 
-  static pathname_Setter(mthis, __arg_0) native "HTMLAreaElement_pathname_Setter";
-  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
+  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
 
-  static ping_Getter(mthis) native "HTMLAreaElement_ping_Getter";
-  ping_Getter_(mthis) => ping_Getter(mthis);
+  ping_Getter_(mthis) => mthis["ping"];
 
-  static ping_Setter(mthis, __arg_0) native "HTMLAreaElement_ping_Setter";
-  ping_Setter_(mthis, __arg_0) => ping_Setter(mthis, __arg_0);
+  ping_Setter_(mthis, __arg_0) => mthis["ping"] = __arg_0;
 
-  static port_Getter(mthis) native "HTMLAreaElement_port_Getter";
-  port_Getter_(mthis) => port_Getter(mthis);
+  port_Getter_(mthis) => mthis["port"];
 
-  static port_Setter(mthis, __arg_0) native "HTMLAreaElement_port_Setter";
-  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
+  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
 
-  static protocol_Getter(mthis) native "HTMLAreaElement_protocol_Getter";
-  protocol_Getter_(mthis) => protocol_Getter(mthis);
+  protocol_Getter_(mthis) => mthis["protocol"];
 
-  static protocol_Setter(mthis, __arg_0) native "HTMLAreaElement_protocol_Setter";
-  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
+  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
 
-  static search_Getter(mthis) native "HTMLAreaElement_search_Getter";
-  search_Getter_(mthis) => search_Getter(mthis);
+  search_Getter_(mthis) => mthis["search"];
 
-  static search_Setter(mthis, __arg_0) native "HTMLAreaElement_search_Setter";
-  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
+  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
 
-  static shape_Getter(mthis) native "HTMLAreaElement_shape_Getter";
-  shape_Getter_(mthis) => shape_Getter(mthis);
+  shape_Getter_(mthis) => mthis["shape"];
 
-  static shape_Setter(mthis, __arg_0) native "HTMLAreaElement_shape_Setter";
-  shape_Setter_(mthis, __arg_0) => shape_Setter(mthis, __arg_0);
+  shape_Setter_(mthis, __arg_0) => mthis["shape"] = __arg_0;
 
-  static target_Getter(mthis) native "HTMLAreaElement_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
-  static target_Setter(mthis, __arg_0) native "HTMLAreaElement_target_Setter";
-  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
+  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
 
-  static toString_Callback_0(mthis) native "HTMLAreaElement_toString_Callback";
-  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
+  toString_Callback_0_(mthis) => mthis.callMethod("toString", []);
 
-  static toString_Callback_1(mthis, __arg_0) native "HTMLAreaElement_toString_Callback";
-  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
+  username_Getter_(mthis) => mthis["username"];
 
-  static toString_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAreaElement_toString_Callback";
-  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static username_Getter(mthis) native "HTMLAreaElement_username_Getter";
-  username_Getter_(mthis) => username_Getter(mthis);
-
-  static username_Setter(mthis, __arg_0) native "HTMLAreaElement_username_Setter";
-  username_Setter_(mthis, __arg_0) => username_Setter(mthis, __arg_0);
+  username_Setter_(mthis, __arg_0) => mthis["username"] = __arg_0;
 
 }
 
 class BlinkHTMLAudioElement extends BlinkHTMLMediaElement {
   static final instance = new BlinkHTMLAudioElement();
 
-  static constructorCallback_0() native "HTMLAudioElement_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["Audio"], []);
 
-  static constructorCallback_1(__arg_0) native "HTMLAudioElement_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
-
-  static constructorCallback_2(__arg_0, __arg_1) native "HTMLAudioElement_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
-
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "HTMLAudioElement_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Audio"], [__arg_0]);
 
 }
 
@@ -9275,333 +5117,204 @@
 class BlinkHTMLBaseElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLBaseElement();
 
-  static href_Getter(mthis) native "HTMLBaseElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static href_Setter(mthis, __arg_0) native "HTMLBaseElement_href_Setter";
-  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
+  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
 
-  static target_Getter(mthis) native "HTMLBaseElement_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
-  static target_Setter(mthis, __arg_0) native "HTMLBaseElement_target_Setter";
-  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
+  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
 
 }
 
 class BlinkHTMLBodyElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLBodyElement();
 
-  static onbeforeunload_Getter(mthis) native "HTMLBodyElement_onbeforeunload_Getter";
-  onbeforeunload_Getter_(mthis) => onbeforeunload_Getter(mthis);
+  onbeforeunload_Getter_(mthis) => mthis["onbeforeunload"];
 
-  static onbeforeunload_Setter(mthis, __arg_0) native "HTMLBodyElement_onbeforeunload_Setter";
-  onbeforeunload_Setter_(mthis, __arg_0) => onbeforeunload_Setter(mthis, __arg_0);
+  onbeforeunload_Setter_(mthis, __arg_0) => mthis["onbeforeunload"] = __arg_0;
 
-  static onblur_Getter(mthis) native "HTMLBodyElement_onblur_Getter";
-  onblur_Getter_(mthis) => onblur_Getter(mthis);
+  onblur_Getter_(mthis) => mthis["onblur"];
 
-  static onblur_Setter(mthis, __arg_0) native "HTMLBodyElement_onblur_Setter";
-  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
 
-  static onerror_Getter(mthis) native "HTMLBodyElement_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onerror_Setter(mthis, __arg_0) native "HTMLBodyElement_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onfocus_Getter(mthis) native "HTMLBodyElement_onfocus_Getter";
-  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+  onfocus_Getter_(mthis) => mthis["onfocus"];
 
-  static onfocus_Setter(mthis, __arg_0) native "HTMLBodyElement_onfocus_Setter";
-  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
 
-  static onhashchange_Getter(mthis) native "HTMLBodyElement_onhashchange_Getter";
-  onhashchange_Getter_(mthis) => onhashchange_Getter(mthis);
+  onhashchange_Getter_(mthis) => mthis["onhashchange"];
 
-  static onhashchange_Setter(mthis, __arg_0) native "HTMLBodyElement_onhashchange_Setter";
-  onhashchange_Setter_(mthis, __arg_0) => onhashchange_Setter(mthis, __arg_0);
+  onhashchange_Setter_(mthis, __arg_0) => mthis["onhashchange"] = __arg_0;
 
-  static onlanguagechange_Getter(mthis) native "HTMLBodyElement_onlanguagechange_Getter";
-  onlanguagechange_Getter_(mthis) => onlanguagechange_Getter(mthis);
+  onlanguagechange_Getter_(mthis) => mthis["onlanguagechange"];
 
-  static onlanguagechange_Setter(mthis, __arg_0) native "HTMLBodyElement_onlanguagechange_Setter";
-  onlanguagechange_Setter_(mthis, __arg_0) => onlanguagechange_Setter(mthis, __arg_0);
+  onlanguagechange_Setter_(mthis, __arg_0) => mthis["onlanguagechange"] = __arg_0;
 
-  static onload_Getter(mthis) native "HTMLBodyElement_onload_Getter";
-  onload_Getter_(mthis) => onload_Getter(mthis);
+  onload_Getter_(mthis) => mthis["onload"];
 
-  static onload_Setter(mthis, __arg_0) native "HTMLBodyElement_onload_Setter";
-  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "HTMLBodyElement_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static onmessage_Setter(mthis, __arg_0) native "HTMLBodyElement_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static onoffline_Getter(mthis) native "HTMLBodyElement_onoffline_Getter";
-  onoffline_Getter_(mthis) => onoffline_Getter(mthis);
+  onoffline_Getter_(mthis) => mthis["onoffline"];
 
-  static onoffline_Setter(mthis, __arg_0) native "HTMLBodyElement_onoffline_Setter";
-  onoffline_Setter_(mthis, __arg_0) => onoffline_Setter(mthis, __arg_0);
+  onoffline_Setter_(mthis, __arg_0) => mthis["onoffline"] = __arg_0;
 
-  static ononline_Getter(mthis) native "HTMLBodyElement_ononline_Getter";
-  ononline_Getter_(mthis) => ononline_Getter(mthis);
+  ononline_Getter_(mthis) => mthis["ononline"];
 
-  static ononline_Setter(mthis, __arg_0) native "HTMLBodyElement_ononline_Setter";
-  ononline_Setter_(mthis, __arg_0) => ononline_Setter(mthis, __arg_0);
+  ononline_Setter_(mthis, __arg_0) => mthis["ononline"] = __arg_0;
 
-  static onorientationchange_Getter(mthis) native "HTMLBodyElement_onorientationchange_Getter";
-  onorientationchange_Getter_(mthis) => onorientationchange_Getter(mthis);
+  onorientationchange_Getter_(mthis) => mthis["onorientationchange"];
 
-  static onorientationchange_Setter(mthis, __arg_0) native "HTMLBodyElement_onorientationchange_Setter";
-  onorientationchange_Setter_(mthis, __arg_0) => onorientationchange_Setter(mthis, __arg_0);
+  onorientationchange_Setter_(mthis, __arg_0) => mthis["onorientationchange"] = __arg_0;
 
-  static onpagehide_Getter(mthis) native "HTMLBodyElement_onpagehide_Getter";
-  onpagehide_Getter_(mthis) => onpagehide_Getter(mthis);
+  onpagehide_Getter_(mthis) => mthis["onpagehide"];
 
-  static onpagehide_Setter(mthis, __arg_0) native "HTMLBodyElement_onpagehide_Setter";
-  onpagehide_Setter_(mthis, __arg_0) => onpagehide_Setter(mthis, __arg_0);
+  onpagehide_Setter_(mthis, __arg_0) => mthis["onpagehide"] = __arg_0;
 
-  static onpageshow_Getter(mthis) native "HTMLBodyElement_onpageshow_Getter";
-  onpageshow_Getter_(mthis) => onpageshow_Getter(mthis);
+  onpageshow_Getter_(mthis) => mthis["onpageshow"];
 
-  static onpageshow_Setter(mthis, __arg_0) native "HTMLBodyElement_onpageshow_Setter";
-  onpageshow_Setter_(mthis, __arg_0) => onpageshow_Setter(mthis, __arg_0);
+  onpageshow_Setter_(mthis, __arg_0) => mthis["onpageshow"] = __arg_0;
 
-  static onpopstate_Getter(mthis) native "HTMLBodyElement_onpopstate_Getter";
-  onpopstate_Getter_(mthis) => onpopstate_Getter(mthis);
+  onpopstate_Getter_(mthis) => mthis["onpopstate"];
 
-  static onpopstate_Setter(mthis, __arg_0) native "HTMLBodyElement_onpopstate_Setter";
-  onpopstate_Setter_(mthis, __arg_0) => onpopstate_Setter(mthis, __arg_0);
+  onpopstate_Setter_(mthis, __arg_0) => mthis["onpopstate"] = __arg_0;
 
-  static onresize_Getter(mthis) native "HTMLBodyElement_onresize_Getter";
-  onresize_Getter_(mthis) => onresize_Getter(mthis);
+  onresize_Getter_(mthis) => mthis["onresize"];
 
-  static onresize_Setter(mthis, __arg_0) native "HTMLBodyElement_onresize_Setter";
-  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
 
-  static onscroll_Getter(mthis) native "HTMLBodyElement_onscroll_Getter";
-  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+  onscroll_Getter_(mthis) => mthis["onscroll"];
 
-  static onscroll_Setter(mthis, __arg_0) native "HTMLBodyElement_onscroll_Setter";
-  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
 
-  static onstorage_Getter(mthis) native "HTMLBodyElement_onstorage_Getter";
-  onstorage_Getter_(mthis) => onstorage_Getter(mthis);
+  onstorage_Getter_(mthis) => mthis["onstorage"];
 
-  static onstorage_Setter(mthis, __arg_0) native "HTMLBodyElement_onstorage_Setter";
-  onstorage_Setter_(mthis, __arg_0) => onstorage_Setter(mthis, __arg_0);
+  onstorage_Setter_(mthis, __arg_0) => mthis["onstorage"] = __arg_0;
 
-  static onunload_Getter(mthis) native "HTMLBodyElement_onunload_Getter";
-  onunload_Getter_(mthis) => onunload_Getter(mthis);
+  onunload_Getter_(mthis) => mthis["onunload"];
 
-  static onunload_Setter(mthis, __arg_0) native "HTMLBodyElement_onunload_Setter";
-  onunload_Setter_(mthis, __arg_0) => onunload_Setter(mthis, __arg_0);
+  onunload_Setter_(mthis, __arg_0) => mthis["onunload"] = __arg_0;
 
 }
 
 class BlinkHTMLButtonElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLButtonElement();
 
-  static autofocus_Getter(mthis) native "HTMLButtonElement_autofocus_Getter";
-  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+  autofocus_Getter_(mthis) => mthis["autofocus"];
 
-  static autofocus_Setter(mthis, __arg_0) native "HTMLButtonElement_autofocus_Setter";
-  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
 
-  static checkValidity_Callback_0(mthis) native "HTMLButtonElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLButtonElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLButtonElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLButtonElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  formAction_Getter_(mthis) => mthis["formAction"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLButtonElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  formAction_Setter_(mthis, __arg_0) => mthis["formAction"] = __arg_0;
 
-  static formAction_Getter(mthis) native "HTMLButtonElement_formAction_Getter";
-  formAction_Getter_(mthis) => formAction_Getter(mthis);
+  formEnctype_Getter_(mthis) => mthis["formEnctype"];
 
-  static formAction_Setter(mthis, __arg_0) native "HTMLButtonElement_formAction_Setter";
-  formAction_Setter_(mthis, __arg_0) => formAction_Setter(mthis, __arg_0);
+  formEnctype_Setter_(mthis, __arg_0) => mthis["formEnctype"] = __arg_0;
 
-  static formEnctype_Getter(mthis) native "HTMLButtonElement_formEnctype_Getter";
-  formEnctype_Getter_(mthis) => formEnctype_Getter(mthis);
+  formMethod_Getter_(mthis) => mthis["formMethod"];
 
-  static formEnctype_Setter(mthis, __arg_0) native "HTMLButtonElement_formEnctype_Setter";
-  formEnctype_Setter_(mthis, __arg_0) => formEnctype_Setter(mthis, __arg_0);
+  formMethod_Setter_(mthis, __arg_0) => mthis["formMethod"] = __arg_0;
 
-  static formMethod_Getter(mthis) native "HTMLButtonElement_formMethod_Getter";
-  formMethod_Getter_(mthis) => formMethod_Getter(mthis);
+  formNoValidate_Getter_(mthis) => mthis["formNoValidate"];
 
-  static formMethod_Setter(mthis, __arg_0) native "HTMLButtonElement_formMethod_Setter";
-  formMethod_Setter_(mthis, __arg_0) => formMethod_Setter(mthis, __arg_0);
+  formNoValidate_Setter_(mthis, __arg_0) => mthis["formNoValidate"] = __arg_0;
 
-  static formNoValidate_Getter(mthis) native "HTMLButtonElement_formNoValidate_Getter";
-  formNoValidate_Getter_(mthis) => formNoValidate_Getter(mthis);
+  formTarget_Getter_(mthis) => mthis["formTarget"];
 
-  static formNoValidate_Setter(mthis, __arg_0) native "HTMLButtonElement_formNoValidate_Setter";
-  formNoValidate_Setter_(mthis, __arg_0) => formNoValidate_Setter(mthis, __arg_0);
+  formTarget_Setter_(mthis, __arg_0) => mthis["formTarget"] = __arg_0;
 
-  static formTarget_Getter(mthis) native "HTMLButtonElement_formTarget_Getter";
-  formTarget_Getter_(mthis) => formTarget_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static formTarget_Setter(mthis, __arg_0) native "HTMLButtonElement_formTarget_Setter";
-  formTarget_Setter_(mthis, __arg_0) => formTarget_Setter(mthis, __arg_0);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static form_Getter(mthis) native "HTMLButtonElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static labels_Getter(mthis) native "HTMLButtonElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLButtonElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static name_Setter(mthis, __arg_0) native "HTMLButtonElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static setCustomValidity_Callback_0(mthis) native "HTMLButtonElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLButtonElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLButtonElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLButtonElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static type_Getter(mthis) native "HTMLButtonElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLButtonElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
-  static validationMessage_Getter(mthis) native "HTMLButtonElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
-
-  static validity_Getter(mthis) native "HTMLButtonElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
-
-  static value_Getter(mthis) native "HTMLButtonElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "HTMLButtonElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
-
-  static willValidate_Getter(mthis) native "HTMLButtonElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
 }
 
 class BlinkHTMLCanvasElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLCanvasElement();
 
-  static getContext_Callback_0(mthis) native "HTMLCanvasElement_getContext_Callback";
-  getContext_Callback_0_(mthis) => getContext_Callback_0(mthis);
+  getContext_Callback_0_(mthis) => mthis.callMethod("getContext", []);
 
-  static getContext_Callback_1(mthis, __arg_0) native "HTMLCanvasElement_getContext_Callback";
-  getContext_Callback_1_(mthis, __arg_0) => getContext_Callback_1(mthis, __arg_0);
+  getContext_Callback_1_(mthis, __arg_0) => mthis.callMethod("getContext", [__arg_0]);
 
-  static getContext_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCanvasElement_getContext_Callback";
-  getContext_Callback_2_(mthis, __arg_0, __arg_1) => getContext_Callback_2(mthis, __arg_0, __arg_1);
+  getContext_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getContext", [__arg_0, __arg_1]);
 
-  static getContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCanvasElement_getContext_Callback";
-  getContext_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  height_Getter_(mthis) => mthis["height"];
 
-  static getContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLCanvasElement_getContext_Callback";
-  getContext_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "HTMLCanvasElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  toDataURL_Callback_0_(mthis) => mthis.callMethod("toDataURL", []);
 
-  static height_Setter(mthis, __arg_0) native "HTMLCanvasElement_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  toDataURL_Callback_1_(mthis, __arg_0) => mthis.callMethod("toDataURL", [__arg_0]);
 
-  static toDataURL_Callback_0(mthis) native "HTMLCanvasElement_toDataURL_Callback";
-  toDataURL_Callback_0_(mthis) => toDataURL_Callback_0(mthis);
+  toDataURL_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("toDataURL", [__arg_0, __arg_1]);
 
-  static toDataURL_Callback_1(mthis, __arg_0) native "HTMLCanvasElement_toDataURL_Callback";
-  toDataURL_Callback_1_(mthis, __arg_0) => toDataURL_Callback_1(mthis, __arg_0);
+  width_Getter_(mthis) => mthis["width"];
 
-  static toDataURL_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCanvasElement_toDataURL_Callback";
-  toDataURL_Callback_2_(mthis, __arg_0, __arg_1) => toDataURL_Callback_2(mthis, __arg_0, __arg_1);
-
-  static toDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCanvasElement_toDataURL_Callback";
-  toDataURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => toDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static toDataURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLCanvasElement_toDataURL_Callback";
-  toDataURL_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => toDataURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static width_Getter(mthis) native "HTMLCanvasElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static width_Setter(mthis, __arg_0) native "HTMLCanvasElement_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
 }
 
 class BlinkHTMLCollection {
   static final instance = new BlinkHTMLCollection();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLCollection___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "HTMLCollection_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "HTMLCollection_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCollection_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCollection_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static length_Getter(mthis) native "HTMLCollection_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static namedItem_Callback_0(mthis) native "HTMLCollection_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
-
-  static namedItem_Callback_1(mthis, __arg_0) native "HTMLCollection_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
-
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCollection_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCollection_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
 }
 
 class BlinkHTMLContentElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLContentElement();
 
-  static getDistributedNodes_Callback_0(mthis) native "HTMLContentElement_getDistributedNodes_Callback";
-  getDistributedNodes_Callback_0_(mthis) => getDistributedNodes_Callback_0(mthis);
+  getDistributedNodes_Callback_0_(mthis) => mthis.callMethod("getDistributedNodes", []);
 
-  static getDistributedNodes_Callback_1(mthis, __arg_0) native "HTMLContentElement_getDistributedNodes_Callback";
-  getDistributedNodes_Callback_1_(mthis, __arg_0) => getDistributedNodes_Callback_1(mthis, __arg_0);
+  select_Getter_(mthis) => mthis["select"];
 
-  static getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1) native "HTMLContentElement_getDistributedNodes_Callback";
-  getDistributedNodes_Callback_2_(mthis, __arg_0, __arg_1) => getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1);
-
-  static select_Getter(mthis) native "HTMLContentElement_select_Getter";
-  select_Getter_(mthis) => select_Getter(mthis);
-
-  static select_Setter(mthis, __arg_0) native "HTMLContentElement_select_Setter";
-  select_Setter_(mthis, __arg_0) => select_Setter(mthis, __arg_0);
+  select_Setter_(mthis, __arg_0) => mthis["select"] = __arg_0;
 
 }
 
@@ -9613,66 +5326,37 @@
 class BlinkHTMLDataListElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDataListElement();
 
-  static options_Getter(mthis) native "HTMLDataListElement_options_Getter";
-  options_Getter_(mthis) => options_Getter(mthis);
+  options_Getter_(mthis) => mthis["options"];
 
 }
 
 class BlinkHTMLDetailsElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDetailsElement();
 
-  static open_Getter(mthis) native "HTMLDetailsElement_open_Getter";
-  open_Getter_(mthis) => open_Getter(mthis);
+  open_Getter_(mthis) => mthis["open"];
 
-  static open_Setter(mthis, __arg_0) native "HTMLDetailsElement_open_Setter";
-  open_Setter_(mthis, __arg_0) => open_Setter(mthis, __arg_0);
+  open_Setter_(mthis, __arg_0) => mthis["open"] = __arg_0;
 
 }
 
 class BlinkHTMLDialogElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLDialogElement();
 
-  static close_Callback_0(mthis) native "HTMLDialogElement_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "HTMLDialogElement_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  close_Callback_1_(mthis, __arg_0) => mthis.callMethod("close", [__arg_0]);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDialogElement_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  open_Getter_(mthis) => mthis["open"];
 
-  static close_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLDialogElement_close_Callback";
-  close_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => close_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  open_Setter_(mthis, __arg_0) => mthis["open"] = __arg_0;
 
-  static open_Getter(mthis) native "HTMLDialogElement_open_Getter";
-  open_Getter_(mthis) => open_Getter(mthis);
+  returnValue_Getter_(mthis) => mthis["returnValue"];
 
-  static open_Setter(mthis, __arg_0) native "HTMLDialogElement_open_Setter";
-  open_Setter_(mthis, __arg_0) => open_Setter(mthis, __arg_0);
+  returnValue_Setter_(mthis, __arg_0) => mthis["returnValue"] = __arg_0;
 
-  static returnValue_Getter(mthis) native "HTMLDialogElement_returnValue_Getter";
-  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
+  showModal_Callback_0_(mthis) => mthis.callMethod("showModal", []);
 
-  static returnValue_Setter(mthis, __arg_0) native "HTMLDialogElement_returnValue_Setter";
-  returnValue_Setter_(mthis, __arg_0) => returnValue_Setter(mthis, __arg_0);
-
-  static showModal_Callback_0(mthis) native "HTMLDialogElement_showModal_Callback";
-  showModal_Callback_0_(mthis) => showModal_Callback_0(mthis);
-
-  static showModal_Callback_1(mthis, __arg_0) native "HTMLDialogElement_showModal_Callback";
-  showModal_Callback_1_(mthis, __arg_0) => showModal_Callback_1(mthis, __arg_0);
-
-  static showModal_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDialogElement_showModal_Callback";
-  showModal_Callback_2_(mthis, __arg_0, __arg_1) => showModal_Callback_2(mthis, __arg_0, __arg_1);
-
-  static show_Callback_0(mthis) native "HTMLDialogElement_show_Callback";
-  show_Callback_0_(mthis) => show_Callback_0(mthis);
-
-  static show_Callback_1(mthis, __arg_0) native "HTMLDialogElement_show_Callback";
-  show_Callback_1_(mthis, __arg_0) => show_Callback_1(mthis, __arg_0);
-
-  static show_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDialogElement_show_Callback";
-  show_Callback_2_(mthis, __arg_0, __arg_1) => show_Callback_2(mthis, __arg_0, __arg_1);
+  show_Callback_0_(mthis) => mthis.callMethod("show", []);
 
 }
 
@@ -9689,695 +5373,426 @@
 class BlinkHTMLDocument extends BlinkDocument {
   static final instance = new BlinkHTMLDocument();
 
-  static alinkColor_Getter(mthis) native "HTMLDocument_alinkColor_Getter";
-  alinkColor_Getter_(mthis) => alinkColor_Getter(mthis);
+  alinkColor_Getter_(mthis) => mthis["alinkColor"];
 
-  static alinkColor_Setter(mthis, __arg_0) native "HTMLDocument_alinkColor_Setter";
-  alinkColor_Setter_(mthis, __arg_0) => alinkColor_Setter(mthis, __arg_0);
+  alinkColor_Setter_(mthis, __arg_0) => mthis["alinkColor"] = __arg_0;
 
-  static bgColor_Getter(mthis) native "HTMLDocument_bgColor_Getter";
-  bgColor_Getter_(mthis) => bgColor_Getter(mthis);
+  bgColor_Getter_(mthis) => mthis["bgColor"];
 
-  static bgColor_Setter(mthis, __arg_0) native "HTMLDocument_bgColor_Setter";
-  bgColor_Setter_(mthis, __arg_0) => bgColor_Setter(mthis, __arg_0);
+  bgColor_Setter_(mthis, __arg_0) => mthis["bgColor"] = __arg_0;
 
-  static captureEvents_Callback_0(mthis) native "HTMLDocument_captureEvents_Callback";
-  captureEvents_Callback_0_(mthis) => captureEvents_Callback_0(mthis);
+  captureEvents_Callback_0_(mthis) => mthis.callMethod("captureEvents", []);
 
-  static captureEvents_Callback_1(mthis, __arg_0) native "HTMLDocument_captureEvents_Callback";
-  captureEvents_Callback_1_(mthis, __arg_0) => captureEvents_Callback_1(mthis, __arg_0);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static captureEvents_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_captureEvents_Callback";
-  captureEvents_Callback_2_(mthis, __arg_0, __arg_1) => captureEvents_Callback_2(mthis, __arg_0, __arg_1);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static clear_Callback_0(mthis) native "HTMLDocument_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  compatMode_Getter_(mthis) => mthis["compatMode"];
 
-  static clear_Callback_1(mthis, __arg_0) native "HTMLDocument_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  fgColor_Getter_(mthis) => mthis["fgColor"];
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  fgColor_Setter_(mthis, __arg_0) => mthis["fgColor"] = __arg_0;
 
-  static close_Callback_0(mthis) native "HTMLDocument_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  linkColor_Getter_(mthis) => mthis["linkColor"];
 
-  static close_Callback_1(mthis, __arg_0) native "HTMLDocument_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  linkColor_Setter_(mthis, __arg_0) => mthis["linkColor"] = __arg_0;
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  open_Callback_0_(mthis) => mthis.callMethod("open", []);
 
-  static compatMode_Getter(mthis) native "HTMLDocument_compatMode_Getter";
-  compatMode_Getter_(mthis) => compatMode_Getter(mthis);
+  releaseEvents_Callback_0_(mthis) => mthis.callMethod("releaseEvents", []);
 
-  static fgColor_Getter(mthis) native "HTMLDocument_fgColor_Getter";
-  fgColor_Getter_(mthis) => fgColor_Getter(mthis);
+  vlinkColor_Getter_(mthis) => mthis["vlinkColor"];
 
-  static fgColor_Setter(mthis, __arg_0) native "HTMLDocument_fgColor_Setter";
-  fgColor_Setter_(mthis, __arg_0) => fgColor_Setter(mthis, __arg_0);
+  vlinkColor_Setter_(mthis, __arg_0) => mthis["vlinkColor"] = __arg_0;
 
-  static linkColor_Getter(mthis) native "HTMLDocument_linkColor_Getter";
-  linkColor_Getter_(mthis) => linkColor_Getter(mthis);
+  write_Callback_0_(mthis) => mthis.callMethod("write", []);
 
-  static linkColor_Setter(mthis, __arg_0) native "HTMLDocument_linkColor_Setter";
-  linkColor_Setter_(mthis, __arg_0) => linkColor_Setter(mthis, __arg_0);
+  write_Callback_1_(mthis, __arg_0) => mthis.callMethod("write", [__arg_0]);
 
-  static open_Callback_0(mthis) native "HTMLDocument_open_Callback";
-  open_Callback_0_(mthis) => open_Callback_0(mthis);
+  writeln_Callback_0_(mthis) => mthis.callMethod("writeln", []);
 
-  static open_Callback_1(mthis, __arg_0) native "HTMLDocument_open_Callback";
-  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
-
-  static open_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_open_Callback";
-  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
-
-  static releaseEvents_Callback_0(mthis) native "HTMLDocument_releaseEvents_Callback";
-  releaseEvents_Callback_0_(mthis) => releaseEvents_Callback_0(mthis);
-
-  static releaseEvents_Callback_1(mthis, __arg_0) native "HTMLDocument_releaseEvents_Callback";
-  releaseEvents_Callback_1_(mthis, __arg_0) => releaseEvents_Callback_1(mthis, __arg_0);
-
-  static releaseEvents_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_releaseEvents_Callback";
-  releaseEvents_Callback_2_(mthis, __arg_0, __arg_1) => releaseEvents_Callback_2(mthis, __arg_0, __arg_1);
-
-  static vlinkColor_Getter(mthis) native "HTMLDocument_vlinkColor_Getter";
-  vlinkColor_Getter_(mthis) => vlinkColor_Getter(mthis);
-
-  static vlinkColor_Setter(mthis, __arg_0) native "HTMLDocument_vlinkColor_Setter";
-  vlinkColor_Setter_(mthis, __arg_0) => vlinkColor_Setter(mthis, __arg_0);
-
-  static write_Callback_0(mthis) native "HTMLDocument_write_Callback";
-  write_Callback_0_(mthis) => write_Callback_0(mthis);
-
-  static write_Callback_1(mthis, __arg_0) native "HTMLDocument_write_Callback";
-  write_Callback_1_(mthis, __arg_0) => write_Callback_1(mthis, __arg_0);
-
-  static write_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_write_Callback";
-  write_Callback_2_(mthis, __arg_0, __arg_1) => write_Callback_2(mthis, __arg_0, __arg_1);
-
-  static write_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLDocument_write_Callback";
-  write_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => write_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static writeln_Callback_0(mthis) native "HTMLDocument_writeln_Callback";
-  writeln_Callback_0_(mthis) => writeln_Callback_0(mthis);
-
-  static writeln_Callback_1(mthis, __arg_0) native "HTMLDocument_writeln_Callback";
-  writeln_Callback_1_(mthis, __arg_0) => writeln_Callback_1(mthis, __arg_0);
-
-  static writeln_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_writeln_Callback";
-  writeln_Callback_2_(mthis, __arg_0, __arg_1) => writeln_Callback_2(mthis, __arg_0, __arg_1);
-
-  static writeln_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLDocument_writeln_Callback";
-  writeln_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => writeln_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  writeln_Callback_1_(mthis, __arg_0) => mthis.callMethod("writeln", [__arg_0]);
 
 }
 
 class BlinkHTMLElement extends BlinkElement {
   static final instance = new BlinkHTMLElement();
 
-  static accessKey_Getter(mthis) native "HTMLElement_accessKey_Getter";
-  accessKey_Getter_(mthis) => accessKey_Getter(mthis);
+  accessKey_Getter_(mthis) => mthis["accessKey"];
 
-  static accessKey_Setter(mthis, __arg_0) native "HTMLElement_accessKey_Setter";
-  accessKey_Setter_(mthis, __arg_0) => accessKey_Setter(mthis, __arg_0);
+  accessKey_Setter_(mthis, __arg_0) => mthis["accessKey"] = __arg_0;
 
-  static click_Callback_0(mthis) native "HTMLElement_click_Callback";
-  click_Callback_0_(mthis) => click_Callback_0(mthis);
+  click_Callback_0_(mthis) => mthis.callMethod("click", []);
 
-  static click_Callback_1(mthis, __arg_0) native "HTMLElement_click_Callback";
-  click_Callback_1_(mthis, __arg_0) => click_Callback_1(mthis, __arg_0);
+  contentEditable_Getter_(mthis) => mthis["contentEditable"];
 
-  static click_Callback_2(mthis, __arg_0, __arg_1) native "HTMLElement_click_Callback";
-  click_Callback_2_(mthis, __arg_0, __arg_1) => click_Callback_2(mthis, __arg_0, __arg_1);
+  contentEditable_Setter_(mthis, __arg_0) => mthis["contentEditable"] = __arg_0;
 
-  static contentEditable_Getter(mthis) native "HTMLElement_contentEditable_Getter";
-  contentEditable_Getter_(mthis) => contentEditable_Getter(mthis);
+  contextMenu_Getter_(mthis) => mthis["contextMenu"];
 
-  static contentEditable_Setter(mthis, __arg_0) native "HTMLElement_contentEditable_Setter";
-  contentEditable_Setter_(mthis, __arg_0) => contentEditable_Setter(mthis, __arg_0);
+  contextMenu_Setter_(mthis, __arg_0) => mthis["contextMenu"] = __arg_0;
 
-  static contextMenu_Getter(mthis) native "HTMLElement_contextMenu_Getter";
-  contextMenu_Getter_(mthis) => contextMenu_Getter(mthis);
+  dir_Getter_(mthis) => mthis["dir"];
 
-  static contextMenu_Setter(mthis, __arg_0) native "HTMLElement_contextMenu_Setter";
-  contextMenu_Setter_(mthis, __arg_0) => contextMenu_Setter(mthis, __arg_0);
+  dir_Setter_(mthis, __arg_0) => mthis["dir"] = __arg_0;
 
-  static dir_Getter(mthis) native "HTMLElement_dir_Getter";
-  dir_Getter_(mthis) => dir_Getter(mthis);
+  draggable_Getter_(mthis) => mthis["draggable"];
 
-  static dir_Setter(mthis, __arg_0) native "HTMLElement_dir_Setter";
-  dir_Setter_(mthis, __arg_0) => dir_Setter(mthis, __arg_0);
+  draggable_Setter_(mthis, __arg_0) => mthis["draggable"] = __arg_0;
 
-  static draggable_Getter(mthis) native "HTMLElement_draggable_Getter";
-  draggable_Getter_(mthis) => draggable_Getter(mthis);
+  hidden_Getter_(mthis) => mthis["hidden"];
 
-  static draggable_Setter(mthis, __arg_0) native "HTMLElement_draggable_Setter";
-  draggable_Setter_(mthis, __arg_0) => draggable_Setter(mthis, __arg_0);
+  hidden_Setter_(mthis, __arg_0) => mthis["hidden"] = __arg_0;
 
-  static hidden_Getter(mthis) native "HTMLElement_hidden_Getter";
-  hidden_Getter_(mthis) => hidden_Getter(mthis);
+  innerText_Getter_(mthis) => mthis["innerText"];
 
-  static hidden_Setter(mthis, __arg_0) native "HTMLElement_hidden_Setter";
-  hidden_Setter_(mthis, __arg_0) => hidden_Setter(mthis, __arg_0);
+  innerText_Setter_(mthis, __arg_0) => mthis["innerText"] = __arg_0;
 
-  static innerText_Getter(mthis) native "HTMLElement_innerText_Getter";
-  innerText_Getter_(mthis) => innerText_Getter(mthis);
+  inputMethodContext_Getter_(mthis) => mthis["inputMethodContext"];
 
-  static innerText_Setter(mthis, __arg_0) native "HTMLElement_innerText_Setter";
-  innerText_Setter_(mthis, __arg_0) => innerText_Setter(mthis, __arg_0);
+  isContentEditable_Getter_(mthis) => mthis["isContentEditable"];
 
-  static inputMethodContext_Getter(mthis) native "HTMLElement_inputMethodContext_Getter";
-  inputMethodContext_Getter_(mthis) => inputMethodContext_Getter(mthis);
+  lang_Getter_(mthis) => mthis["lang"];
 
-  static isContentEditable_Getter(mthis) native "HTMLElement_isContentEditable_Getter";
-  isContentEditable_Getter_(mthis) => isContentEditable_Getter(mthis);
+  lang_Setter_(mthis, __arg_0) => mthis["lang"] = __arg_0;
 
-  static lang_Getter(mthis) native "HTMLElement_lang_Getter";
-  lang_Getter_(mthis) => lang_Getter(mthis);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static lang_Setter(mthis, __arg_0) native "HTMLElement_lang_Setter";
-  lang_Setter_(mthis, __arg_0) => lang_Setter(mthis, __arg_0);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static onabort_Getter(mthis) native "HTMLElement_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  onautocomplete_Getter_(mthis) => mthis["onautocomplete"];
 
-  static onabort_Setter(mthis, __arg_0) native "HTMLElement_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
 
-  static onautocomplete_Getter(mthis) native "HTMLElement_onautocomplete_Getter";
-  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+  onautocompleteerror_Getter_(mthis) => mthis["onautocompleteerror"];
 
-  static onautocomplete_Setter(mthis, __arg_0) native "HTMLElement_onautocomplete_Setter";
-  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
 
-  static onautocompleteerror_Getter(mthis) native "HTMLElement_onautocompleteerror_Getter";
-  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+  onblur_Getter_(mthis) => mthis["onblur"];
 
-  static onautocompleteerror_Setter(mthis, __arg_0) native "HTMLElement_onautocompleteerror_Setter";
-  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
 
-  static onblur_Getter(mthis) native "HTMLElement_onblur_Getter";
-  onblur_Getter_(mthis) => onblur_Getter(mthis);
+  oncancel_Getter_(mthis) => mthis["oncancel"];
 
-  static onblur_Setter(mthis, __arg_0) native "HTMLElement_onblur_Setter";
-  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
 
-  static oncancel_Getter(mthis) native "HTMLElement_oncancel_Getter";
-  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+  oncanplay_Getter_(mthis) => mthis["oncanplay"];
 
-  static oncancel_Setter(mthis, __arg_0) native "HTMLElement_oncancel_Setter";
-  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
 
-  static oncanplay_Getter(mthis) native "HTMLElement_oncanplay_Getter";
-  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+  oncanplaythrough_Getter_(mthis) => mthis["oncanplaythrough"];
 
-  static oncanplay_Setter(mthis, __arg_0) native "HTMLElement_oncanplay_Setter";
-  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
 
-  static oncanplaythrough_Getter(mthis) native "HTMLElement_oncanplaythrough_Getter";
-  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static oncanplaythrough_Setter(mthis, __arg_0) native "HTMLElement_oncanplaythrough_Setter";
-  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static onchange_Getter(mthis) native "HTMLElement_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  onclick_Getter_(mthis) => mthis["onclick"];
 
-  static onchange_Setter(mthis, __arg_0) native "HTMLElement_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
 
-  static onclick_Getter(mthis) native "HTMLElement_onclick_Getter";
-  onclick_Getter_(mthis) => onclick_Getter(mthis);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static onclick_Setter(mthis, __arg_0) native "HTMLElement_onclick_Setter";
-  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static onclose_Getter(mthis) native "HTMLElement_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  oncontextmenu_Getter_(mthis) => mthis["oncontextmenu"];
 
-  static onclose_Setter(mthis, __arg_0) native "HTMLElement_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
 
-  static oncontextmenu_Getter(mthis) native "HTMLElement_oncontextmenu_Getter";
-  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+  oncuechange_Getter_(mthis) => mthis["oncuechange"];
 
-  static oncontextmenu_Setter(mthis, __arg_0) native "HTMLElement_oncontextmenu_Setter";
-  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
 
-  static oncuechange_Getter(mthis) native "HTMLElement_oncuechange_Getter";
-  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+  ondblclick_Getter_(mthis) => mthis["ondblclick"];
 
-  static oncuechange_Setter(mthis, __arg_0) native "HTMLElement_oncuechange_Setter";
-  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
 
-  static ondblclick_Getter(mthis) native "HTMLElement_ondblclick_Getter";
-  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+  ondrag_Getter_(mthis) => mthis["ondrag"];
 
-  static ondblclick_Setter(mthis, __arg_0) native "HTMLElement_ondblclick_Setter";
-  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
 
-  static ondrag_Getter(mthis) native "HTMLElement_ondrag_Getter";
-  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+  ondragend_Getter_(mthis) => mthis["ondragend"];
 
-  static ondrag_Setter(mthis, __arg_0) native "HTMLElement_ondrag_Setter";
-  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
 
-  static ondragend_Getter(mthis) native "HTMLElement_ondragend_Getter";
-  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+  ondragenter_Getter_(mthis) => mthis["ondragenter"];
 
-  static ondragend_Setter(mthis, __arg_0) native "HTMLElement_ondragend_Setter";
-  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
 
-  static ondragenter_Getter(mthis) native "HTMLElement_ondragenter_Getter";
-  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+  ondragleave_Getter_(mthis) => mthis["ondragleave"];
 
-  static ondragenter_Setter(mthis, __arg_0) native "HTMLElement_ondragenter_Setter";
-  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
+  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
 
-  static ondragleave_Getter(mthis) native "HTMLElement_ondragleave_Getter";
-  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
+  ondragover_Getter_(mthis) => mthis["ondragover"];
 
-  static ondragleave_Setter(mthis, __arg_0) native "HTMLElement_ondragleave_Setter";
-  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
+  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
 
-  static ondragover_Getter(mthis) native "HTMLElement_ondragover_Getter";
-  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
+  ondragstart_Getter_(mthis) => mthis["ondragstart"];
 
-  static ondragover_Setter(mthis, __arg_0) native "HTMLElement_ondragover_Setter";
-  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
+  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
 
-  static ondragstart_Getter(mthis) native "HTMLElement_ondragstart_Getter";
-  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
+  ondrop_Getter_(mthis) => mthis["ondrop"];
 
-  static ondragstart_Setter(mthis, __arg_0) native "HTMLElement_ondragstart_Setter";
-  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
+  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
 
-  static ondrop_Getter(mthis) native "HTMLElement_ondrop_Getter";
-  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
+  ondurationchange_Getter_(mthis) => mthis["ondurationchange"];
 
-  static ondrop_Setter(mthis, __arg_0) native "HTMLElement_ondrop_Setter";
-  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
+  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
 
-  static ondurationchange_Getter(mthis) native "HTMLElement_ondurationchange_Getter";
-  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
+  onemptied_Getter_(mthis) => mthis["onemptied"];
 
-  static ondurationchange_Setter(mthis, __arg_0) native "HTMLElement_ondurationchange_Setter";
-  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
+  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
 
-  static onemptied_Getter(mthis) native "HTMLElement_onemptied_Getter";
-  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static onemptied_Setter(mthis, __arg_0) native "HTMLElement_onemptied_Setter";
-  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static onended_Getter(mthis) native "HTMLElement_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onended_Setter(mthis, __arg_0) native "HTMLElement_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onerror_Getter(mthis) native "HTMLElement_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onfocus_Getter_(mthis) => mthis["onfocus"];
 
-  static onerror_Setter(mthis, __arg_0) native "HTMLElement_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
 
-  static onfocus_Getter(mthis) native "HTMLElement_onfocus_Getter";
-  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+  oninput_Getter_(mthis) => mthis["oninput"];
 
-  static onfocus_Setter(mthis, __arg_0) native "HTMLElement_onfocus_Setter";
-  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
 
-  static oninput_Getter(mthis) native "HTMLElement_oninput_Getter";
-  oninput_Getter_(mthis) => oninput_Getter(mthis);
+  oninvalid_Getter_(mthis) => mthis["oninvalid"];
 
-  static oninput_Setter(mthis, __arg_0) native "HTMLElement_oninput_Setter";
-  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
+  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
 
-  static oninvalid_Getter(mthis) native "HTMLElement_oninvalid_Getter";
-  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
+  onkeydown_Getter_(mthis) => mthis["onkeydown"];
 
-  static oninvalid_Setter(mthis, __arg_0) native "HTMLElement_oninvalid_Setter";
-  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
+  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
 
-  static onkeydown_Getter(mthis) native "HTMLElement_onkeydown_Getter";
-  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
+  onkeypress_Getter_(mthis) => mthis["onkeypress"];
 
-  static onkeydown_Setter(mthis, __arg_0) native "HTMLElement_onkeydown_Setter";
-  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
+  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
 
-  static onkeypress_Getter(mthis) native "HTMLElement_onkeypress_Getter";
-  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
-
-  static onkeypress_Setter(mthis, __arg_0) native "HTMLElement_onkeypress_Setter";
-  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
-
-  static onkeyup_Getter(mthis) native "HTMLElement_onkeyup_Getter";
-  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
+  onkeyup_Getter_(mthis) => mthis["onkeyup"];
 
-  static onkeyup_Setter(mthis, __arg_0) native "HTMLElement_onkeyup_Setter";
-  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
+  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
 
-  static onload_Getter(mthis) native "HTMLElement_onload_Getter";
-  onload_Getter_(mthis) => onload_Getter(mthis);
+  onload_Getter_(mthis) => mthis["onload"];
 
-  static onload_Setter(mthis, __arg_0) native "HTMLElement_onload_Setter";
-  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
 
-  static onloadeddata_Getter(mthis) native "HTMLElement_onloadeddata_Getter";
-  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
+  onloadeddata_Getter_(mthis) => mthis["onloadeddata"];
 
-  static onloadeddata_Setter(mthis, __arg_0) native "HTMLElement_onloadeddata_Setter";
-  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
+  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
 
-  static onloadedmetadata_Getter(mthis) native "HTMLElement_onloadedmetadata_Getter";
-  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
+  onloadedmetadata_Getter_(mthis) => mthis["onloadedmetadata"];
 
-  static onloadedmetadata_Setter(mthis, __arg_0) native "HTMLElement_onloadedmetadata_Setter";
-  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
+  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
 
-  static onloadstart_Getter(mthis) native "HTMLElement_onloadstart_Getter";
-  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+  onloadstart_Getter_(mthis) => mthis["onloadstart"];
 
-  static onloadstart_Setter(mthis, __arg_0) native "HTMLElement_onloadstart_Setter";
-  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
 
-  static onmousedown_Getter(mthis) native "HTMLElement_onmousedown_Getter";
-  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
+  onmousedown_Getter_(mthis) => mthis["onmousedown"];
 
-  static onmousedown_Setter(mthis, __arg_0) native "HTMLElement_onmousedown_Setter";
-  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
+  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
 
-  static onmouseenter_Getter(mthis) native "HTMLElement_onmouseenter_Getter";
-  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
+  onmouseenter_Getter_(mthis) => mthis["onmouseenter"];
 
-  static onmouseenter_Setter(mthis, __arg_0) native "HTMLElement_onmouseenter_Setter";
-  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
+  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
 
-  static onmouseleave_Getter(mthis) native "HTMLElement_onmouseleave_Getter";
-  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
+  onmouseleave_Getter_(mthis) => mthis["onmouseleave"];
 
-  static onmouseleave_Setter(mthis, __arg_0) native "HTMLElement_onmouseleave_Setter";
-  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
+  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
 
-  static onmousemove_Getter(mthis) native "HTMLElement_onmousemove_Getter";
-  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
+  onmousemove_Getter_(mthis) => mthis["onmousemove"];
 
-  static onmousemove_Setter(mthis, __arg_0) native "HTMLElement_onmousemove_Setter";
-  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
+  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
 
-  static onmouseout_Getter(mthis) native "HTMLElement_onmouseout_Getter";
-  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
+  onmouseout_Getter_(mthis) => mthis["onmouseout"];
 
-  static onmouseout_Setter(mthis, __arg_0) native "HTMLElement_onmouseout_Setter";
-  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
+  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
 
-  static onmouseover_Getter(mthis) native "HTMLElement_onmouseover_Getter";
-  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
+  onmouseover_Getter_(mthis) => mthis["onmouseover"];
 
-  static onmouseover_Setter(mthis, __arg_0) native "HTMLElement_onmouseover_Setter";
-  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
+  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
 
-  static onmouseup_Getter(mthis) native "HTMLElement_onmouseup_Getter";
-  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
+  onmouseup_Getter_(mthis) => mthis["onmouseup"];
 
-  static onmouseup_Setter(mthis, __arg_0) native "HTMLElement_onmouseup_Setter";
-  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
+  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
 
-  static onmousewheel_Getter(mthis) native "HTMLElement_onmousewheel_Getter";
-  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
+  onmousewheel_Getter_(mthis) => mthis["onmousewheel"];
 
-  static onmousewheel_Setter(mthis, __arg_0) native "HTMLElement_onmousewheel_Setter";
-  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
+  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
 
-  static onpause_Getter(mthis) native "HTMLElement_onpause_Getter";
-  onpause_Getter_(mthis) => onpause_Getter(mthis);
+  onpause_Getter_(mthis) => mthis["onpause"];
 
-  static onpause_Setter(mthis, __arg_0) native "HTMLElement_onpause_Setter";
-  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
 
-  static onplay_Getter(mthis) native "HTMLElement_onplay_Getter";
-  onplay_Getter_(mthis) => onplay_Getter(mthis);
+  onplay_Getter_(mthis) => mthis["onplay"];
 
-  static onplay_Setter(mthis, __arg_0) native "HTMLElement_onplay_Setter";
-  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
+  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
 
-  static onplaying_Getter(mthis) native "HTMLElement_onplaying_Getter";
-  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
+  onplaying_Getter_(mthis) => mthis["onplaying"];
 
-  static onplaying_Setter(mthis, __arg_0) native "HTMLElement_onplaying_Setter";
-  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
+  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
 
-  static onprogress_Getter(mthis) native "HTMLElement_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onprogress_Setter(mthis, __arg_0) native "HTMLElement_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static onratechange_Getter(mthis) native "HTMLElement_onratechange_Getter";
-  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
+  onratechange_Getter_(mthis) => mthis["onratechange"];
 
-  static onratechange_Setter(mthis, __arg_0) native "HTMLElement_onratechange_Setter";
-  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
+  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
 
-  static onreset_Getter(mthis) native "HTMLElement_onreset_Getter";
-  onreset_Getter_(mthis) => onreset_Getter(mthis);
+  onreset_Getter_(mthis) => mthis["onreset"];
 
-  static onreset_Setter(mthis, __arg_0) native "HTMLElement_onreset_Setter";
-  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
+  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
 
-  static onresize_Getter(mthis) native "HTMLElement_onresize_Getter";
-  onresize_Getter_(mthis) => onresize_Getter(mthis);
+  onresize_Getter_(mthis) => mthis["onresize"];
 
-  static onresize_Setter(mthis, __arg_0) native "HTMLElement_onresize_Setter";
-  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
 
-  static onscroll_Getter(mthis) native "HTMLElement_onscroll_Getter";
-  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+  onscroll_Getter_(mthis) => mthis["onscroll"];
 
-  static onscroll_Setter(mthis, __arg_0) native "HTMLElement_onscroll_Setter";
-  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
 
-  static onseeked_Getter(mthis) native "HTMLElement_onseeked_Getter";
-  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
+  onseeked_Getter_(mthis) => mthis["onseeked"];
 
-  static onseeked_Setter(mthis, __arg_0) native "HTMLElement_onseeked_Setter";
-  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
+  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
 
-  static onseeking_Getter(mthis) native "HTMLElement_onseeking_Getter";
-  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
+  onseeking_Getter_(mthis) => mthis["onseeking"];
 
-  static onseeking_Setter(mthis, __arg_0) native "HTMLElement_onseeking_Setter";
-  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
+  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
 
-  static onselect_Getter(mthis) native "HTMLElement_onselect_Getter";
-  onselect_Getter_(mthis) => onselect_Getter(mthis);
+  onselect_Getter_(mthis) => mthis["onselect"];
 
-  static onselect_Setter(mthis, __arg_0) native "HTMLElement_onselect_Setter";
-  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
+  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
 
-  static onshow_Getter(mthis) native "HTMLElement_onshow_Getter";
-  onshow_Getter_(mthis) => onshow_Getter(mthis);
+  onshow_Getter_(mthis) => mthis["onshow"];
 
-  static onshow_Setter(mthis, __arg_0) native "HTMLElement_onshow_Setter";
-  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
 
-  static onstalled_Getter(mthis) native "HTMLElement_onstalled_Getter";
-  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
+  onstalled_Getter_(mthis) => mthis["onstalled"];
 
-  static onstalled_Setter(mthis, __arg_0) native "HTMLElement_onstalled_Setter";
-  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
+  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
 
-  static onsubmit_Getter(mthis) native "HTMLElement_onsubmit_Getter";
-  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
+  onsubmit_Getter_(mthis) => mthis["onsubmit"];
 
-  static onsubmit_Setter(mthis, __arg_0) native "HTMLElement_onsubmit_Setter";
-  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
+  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
 
-  static onsuspend_Getter(mthis) native "HTMLElement_onsuspend_Getter";
-  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
+  onsuspend_Getter_(mthis) => mthis["onsuspend"];
 
-  static onsuspend_Setter(mthis, __arg_0) native "HTMLElement_onsuspend_Setter";
-  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
+  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
 
-  static ontimeupdate_Getter(mthis) native "HTMLElement_ontimeupdate_Getter";
-  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
+  ontimeupdate_Getter_(mthis) => mthis["ontimeupdate"];
 
-  static ontimeupdate_Setter(mthis, __arg_0) native "HTMLElement_ontimeupdate_Setter";
-  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
+  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
 
-  static ontoggle_Getter(mthis) native "HTMLElement_ontoggle_Getter";
-  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
+  ontoggle_Getter_(mthis) => mthis["ontoggle"];
 
-  static ontoggle_Setter(mthis, __arg_0) native "HTMLElement_ontoggle_Setter";
-  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
+  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
 
-  static onvolumechange_Getter(mthis) native "HTMLElement_onvolumechange_Getter";
-  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+  onvolumechange_Getter_(mthis) => mthis["onvolumechange"];
 
-  static onvolumechange_Setter(mthis, __arg_0) native "HTMLElement_onvolumechange_Setter";
-  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
 
-  static onwaiting_Getter(mthis) native "HTMLElement_onwaiting_Getter";
-  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+  onwaiting_Getter_(mthis) => mthis["onwaiting"];
 
-  static onwaiting_Setter(mthis, __arg_0) native "HTMLElement_onwaiting_Setter";
-  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
 
-  static outerText_Getter(mthis) native "HTMLElement_outerText_Getter";
-  outerText_Getter_(mthis) => outerText_Getter(mthis);
+  outerText_Getter_(mthis) => mthis["outerText"];
 
-  static outerText_Setter(mthis, __arg_0) native "HTMLElement_outerText_Setter";
-  outerText_Setter_(mthis, __arg_0) => outerText_Setter(mthis, __arg_0);
+  outerText_Setter_(mthis, __arg_0) => mthis["outerText"] = __arg_0;
 
-  static spellcheck_Getter(mthis) native "HTMLElement_spellcheck_Getter";
-  spellcheck_Getter_(mthis) => spellcheck_Getter(mthis);
+  spellcheck_Getter_(mthis) => mthis["spellcheck"];
 
-  static spellcheck_Setter(mthis, __arg_0) native "HTMLElement_spellcheck_Setter";
-  spellcheck_Setter_(mthis, __arg_0) => spellcheck_Setter(mthis, __arg_0);
+  spellcheck_Setter_(mthis, __arg_0) => mthis["spellcheck"] = __arg_0;
 
-  static tabIndex_Getter(mthis) native "HTMLElement_tabIndex_Getter";
-  tabIndex_Getter_(mthis) => tabIndex_Getter(mthis);
+  tabIndex_Getter_(mthis) => mthis["tabIndex"];
 
-  static tabIndex_Setter(mthis, __arg_0) native "HTMLElement_tabIndex_Setter";
-  tabIndex_Setter_(mthis, __arg_0) => tabIndex_Setter(mthis, __arg_0);
+  tabIndex_Setter_(mthis, __arg_0) => mthis["tabIndex"] = __arg_0;
 
-  static title_Getter(mthis) native "HTMLElement_title_Getter";
-  title_Getter_(mthis) => title_Getter(mthis);
+  title_Getter_(mthis) => mthis["title"];
 
-  static title_Setter(mthis, __arg_0) native "HTMLElement_title_Setter";
-  title_Setter_(mthis, __arg_0) => title_Setter(mthis, __arg_0);
+  title_Setter_(mthis, __arg_0) => mthis["title"] = __arg_0;
 
-  static translate_Getter(mthis) native "HTMLElement_translate_Getter";
-  translate_Getter_(mthis) => translate_Getter(mthis);
+  translate_Getter_(mthis) => mthis["translate"];
 
-  static translate_Setter(mthis, __arg_0) native "HTMLElement_translate_Setter";
-  translate_Setter_(mthis, __arg_0) => translate_Setter(mthis, __arg_0);
+  translate_Setter_(mthis, __arg_0) => mthis["translate"] = __arg_0;
 
-  static webkitdropzone_Getter(mthis) native "HTMLElement_webkitdropzone_Getter";
-  webkitdropzone_Getter_(mthis) => webkitdropzone_Getter(mthis);
+  webkitdropzone_Getter_(mthis) => mthis["webkitdropzone"];
 
-  static webkitdropzone_Setter(mthis, __arg_0) native "HTMLElement_webkitdropzone_Setter";
-  webkitdropzone_Setter_(mthis, __arg_0) => webkitdropzone_Setter(mthis, __arg_0);
+  webkitdropzone_Setter_(mthis, __arg_0) => mthis["webkitdropzone"] = __arg_0;
 
 }
 
 class BlinkHTMLEmbedElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLEmbedElement();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLEmbedElement___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLEmbedElement___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static align_Getter(mthis) native "HTMLEmbedElement_align_Getter";
-  align_Getter_(mthis) => align_Getter(mthis);
+  align_Getter_(mthis) => mthis["align"];
 
-  static align_Setter(mthis, __arg_0) native "HTMLEmbedElement_align_Setter";
-  align_Setter_(mthis, __arg_0) => align_Setter(mthis, __arg_0);
+  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
 
-  static getSVGDocument_Callback_0(mthis) native "HTMLEmbedElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_0_(mthis) => getSVGDocument_Callback_0(mthis);
+  getSVGDocument_Callback_0_(mthis) => mthis.callMethod("getSVGDocument", []);
 
-  static getSVGDocument_Callback_1(mthis, __arg_0) native "HTMLEmbedElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_1_(mthis, __arg_0) => getSVGDocument_Callback_1(mthis, __arg_0);
+  height_Getter_(mthis) => mthis["height"];
 
-  static getSVGDocument_Callback_2(mthis, __arg_0, __arg_1) native "HTMLEmbedElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_2_(mthis, __arg_0, __arg_1) => getSVGDocument_Callback_2(mthis, __arg_0, __arg_1);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "HTMLEmbedElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static height_Setter(mthis, __arg_0) native "HTMLEmbedElement_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static integrity_Getter(mthis) native "HTMLEmbedElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLEmbedElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLEmbedElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  src_Getter_(mthis) => mthis["src"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLEmbedElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static src_Getter(mthis) native "HTMLEmbedElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static src_Setter(mthis, __arg_0) native "HTMLEmbedElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLEmbedElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLEmbedElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
-
-  static width_Getter(mthis) native "HTMLEmbedElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static width_Setter(mthis, __arg_0) native "HTMLEmbedElement_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
 }
 
 class BlinkHTMLFieldSetElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFieldSetElement();
 
-  static checkValidity_Callback_0(mthis) native "HTMLFieldSetElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLFieldSetElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFieldSetElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLFieldSetElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  elements_Getter_(mthis) => mthis["elements"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLFieldSetElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  form_Getter_(mthis) => mthis["form"];
 
-  static elements_Getter(mthis) native "HTMLFieldSetElement_elements_Getter";
-  elements_Getter_(mthis) => elements_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static form_Getter(mthis) native "HTMLFieldSetElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLFieldSetElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static name_Setter(mthis, __arg_0) native "HTMLFieldSetElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static setCustomValidity_Callback_0(mthis) native "HTMLFieldSetElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLFieldSetElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFieldSetElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLFieldSetElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static type_Getter(mthis) native "HTMLFieldSetElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static validationMessage_Getter(mthis) native "HTMLFieldSetElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
-
-  static validity_Getter(mthis) native "HTMLFieldSetElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
-
-  static willValidate_Getter(mthis) native "HTMLFieldSetElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
 }
 
@@ -10389,124 +5804,66 @@
 class BlinkHTMLFormControlsCollection extends BlinkHTMLCollection {
   static final instance = new BlinkHTMLFormControlsCollection();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLFormControlsCollection___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static namedItem_Callback_0(mthis) native "HTMLFormControlsCollection_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static namedItem_Callback_1(mthis, __arg_0) native "HTMLFormControlsCollection_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
-
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormControlsCollection_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLFormControlsCollection_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
 }
 
 class BlinkHTMLFormElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFormElement();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLFormElement___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static acceptCharset_Getter(mthis) native "HTMLFormElement_acceptCharset_Getter";
-  acceptCharset_Getter_(mthis) => acceptCharset_Getter(mthis);
+  acceptCharset_Getter_(mthis) => mthis["acceptCharset"];
 
-  static acceptCharset_Setter(mthis, __arg_0) native "HTMLFormElement_acceptCharset_Setter";
-  acceptCharset_Setter_(mthis, __arg_0) => acceptCharset_Setter(mthis, __arg_0);
+  acceptCharset_Setter_(mthis, __arg_0) => mthis["acceptCharset"] = __arg_0;
 
-  static action_Getter(mthis) native "HTMLFormElement_action_Getter";
-  action_Getter_(mthis) => action_Getter(mthis);
+  action_Getter_(mthis) => mthis["action"];
 
-  static action_Setter(mthis, __arg_0) native "HTMLFormElement_action_Setter";
-  action_Setter_(mthis, __arg_0) => action_Setter(mthis, __arg_0);
+  action_Setter_(mthis, __arg_0) => mthis["action"] = __arg_0;
 
-  static autocomplete_Getter(mthis) native "HTMLFormElement_autocomplete_Getter";
-  autocomplete_Getter_(mthis) => autocomplete_Getter(mthis);
+  autocomplete_Getter_(mthis) => mthis["autocomplete"];
 
-  static autocomplete_Setter(mthis, __arg_0) native "HTMLFormElement_autocomplete_Setter";
-  autocomplete_Setter_(mthis, __arg_0) => autocomplete_Setter(mthis, __arg_0);
+  autocomplete_Setter_(mthis, __arg_0) => mthis["autocomplete"] = __arg_0;
 
-  static checkValidity_Callback_0(mthis) native "HTMLFormElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLFormElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  elements_Getter_(mthis) => mthis["elements"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  encoding_Getter_(mthis) => mthis["encoding"];
 
-  static elements_Getter(mthis) native "HTMLFormElement_elements_Getter";
-  elements_Getter_(mthis) => elements_Getter(mthis);
+  encoding_Setter_(mthis, __arg_0) => mthis["encoding"] = __arg_0;
 
-  static encoding_Getter(mthis) native "HTMLFormElement_encoding_Getter";
-  encoding_Getter_(mthis) => encoding_Getter(mthis);
+  enctype_Getter_(mthis) => mthis["enctype"];
 
-  static encoding_Setter(mthis, __arg_0) native "HTMLFormElement_encoding_Setter";
-  encoding_Setter_(mthis, __arg_0) => encoding_Setter(mthis, __arg_0);
+  enctype_Setter_(mthis, __arg_0) => mthis["enctype"] = __arg_0;
 
-  static enctype_Getter(mthis) native "HTMLFormElement_enctype_Getter";
-  enctype_Getter_(mthis) => enctype_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
-  static enctype_Setter(mthis, __arg_0) native "HTMLFormElement_enctype_Setter";
-  enctype_Setter_(mthis, __arg_0) => enctype_Setter(mthis, __arg_0);
+  method_Getter_(mthis) => mthis["method"];
 
-  static length_Getter(mthis) native "HTMLFormElement_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  method_Setter_(mthis, __arg_0) => mthis["method"] = __arg_0;
 
-  static method_Getter(mthis) native "HTMLFormElement_method_Getter";
-  method_Getter_(mthis) => method_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static method_Setter(mthis, __arg_0) native "HTMLFormElement_method_Setter";
-  method_Setter_(mthis, __arg_0) => method_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLFormElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  noValidate_Getter_(mthis) => mthis["noValidate"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLFormElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  noValidate_Setter_(mthis, __arg_0) => mthis["noValidate"] = __arg_0;
 
-  static noValidate_Getter(mthis) native "HTMLFormElement_noValidate_Getter";
-  noValidate_Getter_(mthis) => noValidate_Getter(mthis);
+  requestAutocomplete_Callback_0_(mthis) => mthis.callMethod("requestAutocomplete", []);
 
-  static noValidate_Setter(mthis, __arg_0) native "HTMLFormElement_noValidate_Setter";
-  noValidate_Setter_(mthis, __arg_0) => noValidate_Setter(mthis, __arg_0);
+  reset_Callback_0_(mthis) => mthis.callMethod("reset", []);
 
-  static requestAutocomplete_Callback_0(mthis) native "HTMLFormElement_requestAutocomplete_Callback";
-  requestAutocomplete_Callback_0_(mthis) => requestAutocomplete_Callback_0(mthis);
+  submit_Callback_0_(mthis) => mthis.callMethod("submit", []);
 
-  static requestAutocomplete_Callback_1(mthis, __arg_0) native "HTMLFormElement_requestAutocomplete_Callback";
-  requestAutocomplete_Callback_1_(mthis, __arg_0) => requestAutocomplete_Callback_1(mthis, __arg_0);
+  target_Getter_(mthis) => mthis["target"];
 
-  static requestAutocomplete_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_requestAutocomplete_Callback";
-  requestAutocomplete_Callback_2_(mthis, __arg_0, __arg_1) => requestAutocomplete_Callback_2(mthis, __arg_0, __arg_1);
-
-  static reset_Callback_0(mthis) native "HTMLFormElement_reset_Callback";
-  reset_Callback_0_(mthis) => reset_Callback_0(mthis);
-
-  static reset_Callback_1(mthis, __arg_0) native "HTMLFormElement_reset_Callback";
-  reset_Callback_1_(mthis, __arg_0) => reset_Callback_1(mthis, __arg_0);
-
-  static reset_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_reset_Callback";
-  reset_Callback_2_(mthis, __arg_0, __arg_1) => reset_Callback_2(mthis, __arg_0, __arg_1);
-
-  static submit_Callback_0(mthis) native "HTMLFormElement_submit_Callback";
-  submit_Callback_0_(mthis) => submit_Callback_0(mthis);
-
-  static submit_Callback_1(mthis, __arg_0) native "HTMLFormElement_submit_Callback";
-  submit_Callback_1_(mthis, __arg_0) => submit_Callback_1(mthis, __arg_0);
-
-  static submit_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_submit_Callback";
-  submit_Callback_2_(mthis, __arg_0, __arg_1) => submit_Callback_2(mthis, __arg_0, __arg_1);
-
-  static target_Getter(mthis) native "HTMLFormElement_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
-
-  static target_Setter(mthis, __arg_0) native "HTMLFormElement_target_Setter";
-  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
+  target_Setter_(mthis, __arg_0) => mthis["target"] = __arg_0;
 
 }
 
@@ -10518,19 +5875,16 @@
 class BlinkHTMLFrameSetElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLFrameSetElement();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLFrameSetElement___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
 }
 
 class BlinkHTMLHRElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLHRElement();
 
-  static color_Getter(mthis) native "HTMLHRElement_color_Getter";
-  color_Getter_(mthis) => color_Getter(mthis);
+  color_Getter_(mthis) => mthis["color"];
 
-  static color_Setter(mthis, __arg_0) native "HTMLHRElement_color_Setter";
-  color_Setter_(mthis, __arg_0) => color_Setter(mthis, __arg_0);
+  color_Setter_(mthis, __arg_0) => mthis["color"] = __arg_0;
 
 }
 
@@ -10552,744 +5906,467 @@
 class BlinkHTMLIFrameElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLIFrameElement();
 
-  static allowFullscreen_Getter(mthis) native "HTMLIFrameElement_allowFullscreen_Getter";
-  allowFullscreen_Getter_(mthis) => allowFullscreen_Getter(mthis);
+  allowFullscreen_Getter_(mthis) => mthis["allowFullscreen"];
 
-  static allowFullscreen_Setter(mthis, __arg_0) native "HTMLIFrameElement_allowFullscreen_Setter";
-  allowFullscreen_Setter_(mthis, __arg_0) => allowFullscreen_Setter(mthis, __arg_0);
+  allowFullscreen_Setter_(mthis, __arg_0) => mthis["allowFullscreen"] = __arg_0;
 
-  static contentDocument_Getter(mthis) native "HTMLIFrameElement_contentDocument_Getter";
-  contentDocument_Getter_(mthis) => contentDocument_Getter(mthis);
+  contentDocument_Getter_(mthis) => mthis["contentDocument"];
 
-  static contentWindow_Getter(mthis) native "HTMLIFrameElement_contentWindow_Getter";
-  contentWindow_Getter_(mthis) => contentWindow_Getter(mthis);
+  contentWindow_Getter_(mthis) => mthis["contentWindow"];
 
-  static getSVGDocument_Callback_0(mthis) native "HTMLIFrameElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_0_(mthis) => getSVGDocument_Callback_0(mthis);
+  getSVGDocument_Callback_0_(mthis) => mthis.callMethod("getSVGDocument", []);
 
-  static getSVGDocument_Callback_1(mthis, __arg_0) native "HTMLIFrameElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_1_(mthis, __arg_0) => getSVGDocument_Callback_1(mthis, __arg_0);
+  height_Getter_(mthis) => mthis["height"];
 
-  static getSVGDocument_Callback_2(mthis, __arg_0, __arg_1) native "HTMLIFrameElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_2_(mthis, __arg_0, __arg_1) => getSVGDocument_Callback_2(mthis, __arg_0, __arg_1);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "HTMLIFrameElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static height_Setter(mthis, __arg_0) native "HTMLIFrameElement_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static integrity_Getter(mthis) native "HTMLIFrameElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLIFrameElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLIFrameElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  sandbox_Getter_(mthis) => mthis["sandbox"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLIFrameElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  sandbox_Setter_(mthis, __arg_0) => mthis["sandbox"] = __arg_0;
 
-  static sandbox_Getter(mthis) native "HTMLIFrameElement_sandbox_Getter";
-  sandbox_Getter_(mthis) => sandbox_Getter(mthis);
+  src_Getter_(mthis) => mthis["src"];
 
-  static sandbox_Setter(mthis, __arg_0) native "HTMLIFrameElement_sandbox_Setter";
-  sandbox_Setter_(mthis, __arg_0) => sandbox_Setter(mthis, __arg_0);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static src_Getter(mthis) native "HTMLIFrameElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  srcdoc_Getter_(mthis) => mthis["srcdoc"];
 
-  static src_Setter(mthis, __arg_0) native "HTMLIFrameElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  srcdoc_Setter_(mthis, __arg_0) => mthis["srcdoc"] = __arg_0;
 
-  static srcdoc_Getter(mthis) native "HTMLIFrameElement_srcdoc_Getter";
-  srcdoc_Getter_(mthis) => srcdoc_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static srcdoc_Setter(mthis, __arg_0) native "HTMLIFrameElement_srcdoc_Setter";
-  srcdoc_Setter_(mthis, __arg_0) => srcdoc_Setter(mthis, __arg_0);
-
-  static width_Getter(mthis) native "HTMLIFrameElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static width_Setter(mthis, __arg_0) native "HTMLIFrameElement_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
 }
 
 class BlinkHTMLImageElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLImageElement();
 
-  static alt_Getter(mthis) native "HTMLImageElement_alt_Getter";
-  alt_Getter_(mthis) => alt_Getter(mthis);
+  alt_Getter_(mthis) => mthis["alt"];
 
-  static alt_Setter(mthis, __arg_0) native "HTMLImageElement_alt_Setter";
-  alt_Setter_(mthis, __arg_0) => alt_Setter(mthis, __arg_0);
+  alt_Setter_(mthis, __arg_0) => mthis["alt"] = __arg_0;
 
-  static border_Getter(mthis) native "HTMLImageElement_border_Getter";
-  border_Getter_(mthis) => border_Getter(mthis);
+  border_Getter_(mthis) => mthis["border"];
 
-  static border_Setter(mthis, __arg_0) native "HTMLImageElement_border_Setter";
-  border_Setter_(mthis, __arg_0) => border_Setter(mthis, __arg_0);
+  border_Setter_(mthis, __arg_0) => mthis["border"] = __arg_0;
 
-  static complete_Getter(mthis) native "HTMLImageElement_complete_Getter";
-  complete_Getter_(mthis) => complete_Getter(mthis);
+  complete_Getter_(mthis) => mthis["complete"];
 
-  static constructorCallback_0() native "HTMLImageElement_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["Image"], []);
 
-  static constructorCallback_1(__arg_0) native "HTMLImageElement_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Image"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "HTMLImageElement_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Image"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "HTMLImageElement_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  crossOrigin_Getter_(mthis) => mthis["crossOrigin"];
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "HTMLImageElement_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
 
-  static crossOrigin_Getter(mthis) native "HTMLImageElement_crossOrigin_Getter";
-  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
+  currentSrc_Getter_(mthis) => mthis["currentSrc"];
 
-  static crossOrigin_Setter(mthis, __arg_0) native "HTMLImageElement_crossOrigin_Setter";
-  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
+  height_Getter_(mthis) => mthis["height"];
 
-  static currentSrc_Getter(mthis) native "HTMLImageElement_currentSrc_Getter";
-  currentSrc_Getter_(mthis) => currentSrc_Getter(mthis);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "HTMLImageElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static height_Setter(mthis, __arg_0) native "HTMLImageElement_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static integrity_Getter(mthis) native "HTMLImageElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  isMap_Getter_(mthis) => mthis["isMap"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLImageElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  isMap_Setter_(mthis, __arg_0) => mthis["isMap"] = __arg_0;
 
-  static isMap_Getter(mthis) native "HTMLImageElement_isMap_Getter";
-  isMap_Getter_(mthis) => isMap_Getter(mthis);
+  lowsrc_Getter_(mthis) => mthis["lowsrc"];
 
-  static isMap_Setter(mthis, __arg_0) native "HTMLImageElement_isMap_Setter";
-  isMap_Setter_(mthis, __arg_0) => isMap_Setter(mthis, __arg_0);
+  lowsrc_Setter_(mthis, __arg_0) => mthis["lowsrc"] = __arg_0;
 
-  static lowsrc_Getter(mthis) native "HTMLImageElement_lowsrc_Getter";
-  lowsrc_Getter_(mthis) => lowsrc_Getter(mthis);
+  naturalHeight_Getter_(mthis) => mthis["naturalHeight"];
 
-  static lowsrc_Setter(mthis, __arg_0) native "HTMLImageElement_lowsrc_Setter";
-  lowsrc_Setter_(mthis, __arg_0) => lowsrc_Setter(mthis, __arg_0);
+  naturalWidth_Getter_(mthis) => mthis["naturalWidth"];
 
-  static naturalHeight_Getter(mthis) native "HTMLImageElement_naturalHeight_Getter";
-  naturalHeight_Getter_(mthis) => naturalHeight_Getter(mthis);
+  sizes_Getter_(mthis) => mthis["sizes"];
 
-  static naturalWidth_Getter(mthis) native "HTMLImageElement_naturalWidth_Getter";
-  naturalWidth_Getter_(mthis) => naturalWidth_Getter(mthis);
+  sizes_Setter_(mthis, __arg_0) => mthis["sizes"] = __arg_0;
 
-  static sizes_Getter(mthis) native "HTMLImageElement_sizes_Getter";
-  sizes_Getter_(mthis) => sizes_Getter(mthis);
+  src_Getter_(mthis) => mthis["src"];
 
-  static sizes_Setter(mthis, __arg_0) native "HTMLImageElement_sizes_Setter";
-  sizes_Setter_(mthis, __arg_0) => sizes_Setter(mthis, __arg_0);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static src_Getter(mthis) native "HTMLImageElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  srcset_Getter_(mthis) => mthis["srcset"];
 
-  static src_Setter(mthis, __arg_0) native "HTMLImageElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  srcset_Setter_(mthis, __arg_0) => mthis["srcset"] = __arg_0;
 
-  static srcset_Getter(mthis) native "HTMLImageElement_srcset_Getter";
-  srcset_Getter_(mthis) => srcset_Getter(mthis);
+  useMap_Getter_(mthis) => mthis["useMap"];
 
-  static srcset_Setter(mthis, __arg_0) native "HTMLImageElement_srcset_Setter";
-  srcset_Setter_(mthis, __arg_0) => srcset_Setter(mthis, __arg_0);
+  useMap_Setter_(mthis, __arg_0) => mthis["useMap"] = __arg_0;
 
-  static useMap_Getter(mthis) native "HTMLImageElement_useMap_Getter";
-  useMap_Getter_(mthis) => useMap_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static useMap_Setter(mthis, __arg_0) native "HTMLImageElement_useMap_Setter";
-  useMap_Setter_(mthis, __arg_0) => useMap_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
-  static width_Getter(mthis) native "HTMLImageElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Setter(mthis, __arg_0) native "HTMLImageElement_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
-
-  static x_Getter(mthis) native "HTMLImageElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "HTMLImageElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkHTMLInputElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLInputElement();
 
-  static accept_Getter(mthis) native "HTMLInputElement_accept_Getter";
-  accept_Getter_(mthis) => accept_Getter(mthis);
+  accept_Getter_(mthis) => mthis["accept"];
 
-  static accept_Setter(mthis, __arg_0) native "HTMLInputElement_accept_Setter";
-  accept_Setter_(mthis, __arg_0) => accept_Setter(mthis, __arg_0);
+  accept_Setter_(mthis, __arg_0) => mthis["accept"] = __arg_0;
 
-  static alt_Getter(mthis) native "HTMLInputElement_alt_Getter";
-  alt_Getter_(mthis) => alt_Getter(mthis);
+  alt_Getter_(mthis) => mthis["alt"];
 
-  static alt_Setter(mthis, __arg_0) native "HTMLInputElement_alt_Setter";
-  alt_Setter_(mthis, __arg_0) => alt_Setter(mthis, __arg_0);
+  alt_Setter_(mthis, __arg_0) => mthis["alt"] = __arg_0;
 
-  static autocomplete_Getter(mthis) native "HTMLInputElement_autocomplete_Getter";
-  autocomplete_Getter_(mthis) => autocomplete_Getter(mthis);
+  autocomplete_Getter_(mthis) => mthis["autocomplete"];
 
-  static autocomplete_Setter(mthis, __arg_0) native "HTMLInputElement_autocomplete_Setter";
-  autocomplete_Setter_(mthis, __arg_0) => autocomplete_Setter(mthis, __arg_0);
+  autocomplete_Setter_(mthis, __arg_0) => mthis["autocomplete"] = __arg_0;
 
-  static autofocus_Getter(mthis) native "HTMLInputElement_autofocus_Getter";
-  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+  autofocus_Getter_(mthis) => mthis["autofocus"];
 
-  static autofocus_Setter(mthis, __arg_0) native "HTMLInputElement_autofocus_Setter";
-  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
 
-  static capture_Getter(mthis) native "HTMLInputElement_capture_Getter";
-  capture_Getter_(mthis) => capture_Getter(mthis);
+  capture_Getter_(mthis) => mthis["capture"];
 
-  static capture_Setter(mthis, __arg_0) native "HTMLInputElement_capture_Setter";
-  capture_Setter_(mthis, __arg_0) => capture_Setter(mthis, __arg_0);
+  capture_Setter_(mthis, __arg_0) => mthis["capture"] = __arg_0;
 
-  static checkValidity_Callback_0(mthis) native "HTMLInputElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLInputElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  checked_Getter_(mthis) => mthis["checked"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  checked_Setter_(mthis, __arg_0) => mthis["checked"] = __arg_0;
 
-  static checked_Getter(mthis) native "HTMLInputElement_checked_Getter";
-  checked_Getter_(mthis) => checked_Getter(mthis);
+  defaultChecked_Getter_(mthis) => mthis["defaultChecked"];
 
-  static checked_Setter(mthis, __arg_0) native "HTMLInputElement_checked_Setter";
-  checked_Setter_(mthis, __arg_0) => checked_Setter(mthis, __arg_0);
+  defaultChecked_Setter_(mthis, __arg_0) => mthis["defaultChecked"] = __arg_0;
 
-  static defaultChecked_Getter(mthis) native "HTMLInputElement_defaultChecked_Getter";
-  defaultChecked_Getter_(mthis) => defaultChecked_Getter(mthis);
+  defaultValue_Getter_(mthis) => mthis["defaultValue"];
 
-  static defaultChecked_Setter(mthis, __arg_0) native "HTMLInputElement_defaultChecked_Setter";
-  defaultChecked_Setter_(mthis, __arg_0) => defaultChecked_Setter(mthis, __arg_0);
+  defaultValue_Setter_(mthis, __arg_0) => mthis["defaultValue"] = __arg_0;
 
-  static defaultValue_Getter(mthis) native "HTMLInputElement_defaultValue_Getter";
-  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
+  dirName_Getter_(mthis) => mthis["dirName"];
 
-  static defaultValue_Setter(mthis, __arg_0) native "HTMLInputElement_defaultValue_Setter";
-  defaultValue_Setter_(mthis, __arg_0) => defaultValue_Setter(mthis, __arg_0);
+  dirName_Setter_(mthis, __arg_0) => mthis["dirName"] = __arg_0;
 
-  static dirName_Getter(mthis) native "HTMLInputElement_dirName_Getter";
-  dirName_Getter_(mthis) => dirName_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static dirName_Setter(mthis, __arg_0) native "HTMLInputElement_dirName_Setter";
-  dirName_Setter_(mthis, __arg_0) => dirName_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLInputElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  files_Getter_(mthis) => mthis["files"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLInputElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  files_Setter_(mthis, __arg_0) => mthis["files"] = __arg_0;
 
-  static files_Getter(mthis) native "HTMLInputElement_files_Getter";
-  files_Getter_(mthis) => files_Getter(mthis);
+  formAction_Getter_(mthis) => mthis["formAction"];
 
-  static files_Setter(mthis, __arg_0) native "HTMLInputElement_files_Setter";
-  files_Setter_(mthis, __arg_0) => files_Setter(mthis, __arg_0);
+  formAction_Setter_(mthis, __arg_0) => mthis["formAction"] = __arg_0;
 
-  static formAction_Getter(mthis) native "HTMLInputElement_formAction_Getter";
-  formAction_Getter_(mthis) => formAction_Getter(mthis);
+  formEnctype_Getter_(mthis) => mthis["formEnctype"];
 
-  static formAction_Setter(mthis, __arg_0) native "HTMLInputElement_formAction_Setter";
-  formAction_Setter_(mthis, __arg_0) => formAction_Setter(mthis, __arg_0);
+  formEnctype_Setter_(mthis, __arg_0) => mthis["formEnctype"] = __arg_0;
 
-  static formEnctype_Getter(mthis) native "HTMLInputElement_formEnctype_Getter";
-  formEnctype_Getter_(mthis) => formEnctype_Getter(mthis);
+  formMethod_Getter_(mthis) => mthis["formMethod"];
 
-  static formEnctype_Setter(mthis, __arg_0) native "HTMLInputElement_formEnctype_Setter";
-  formEnctype_Setter_(mthis, __arg_0) => formEnctype_Setter(mthis, __arg_0);
+  formMethod_Setter_(mthis, __arg_0) => mthis["formMethod"] = __arg_0;
 
-  static formMethod_Getter(mthis) native "HTMLInputElement_formMethod_Getter";
-  formMethod_Getter_(mthis) => formMethod_Getter(mthis);
+  formNoValidate_Getter_(mthis) => mthis["formNoValidate"];
 
-  static formMethod_Setter(mthis, __arg_0) native "HTMLInputElement_formMethod_Setter";
-  formMethod_Setter_(mthis, __arg_0) => formMethod_Setter(mthis, __arg_0);
+  formNoValidate_Setter_(mthis, __arg_0) => mthis["formNoValidate"] = __arg_0;
 
-  static formNoValidate_Getter(mthis) native "HTMLInputElement_formNoValidate_Getter";
-  formNoValidate_Getter_(mthis) => formNoValidate_Getter(mthis);
+  formTarget_Getter_(mthis) => mthis["formTarget"];
 
-  static formNoValidate_Setter(mthis, __arg_0) native "HTMLInputElement_formNoValidate_Setter";
-  formNoValidate_Setter_(mthis, __arg_0) => formNoValidate_Setter(mthis, __arg_0);
+  formTarget_Setter_(mthis, __arg_0) => mthis["formTarget"] = __arg_0;
 
-  static formTarget_Getter(mthis) native "HTMLInputElement_formTarget_Getter";
-  formTarget_Getter_(mthis) => formTarget_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static formTarget_Setter(mthis, __arg_0) native "HTMLInputElement_formTarget_Setter";
-  formTarget_Setter_(mthis, __arg_0) => formTarget_Setter(mthis, __arg_0);
+  height_Getter_(mthis) => mthis["height"];
 
-  static form_Getter(mthis) native "HTMLInputElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "HTMLInputElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  incremental_Getter_(mthis) => mthis["incremental"];
 
-  static height_Setter(mthis, __arg_0) native "HTMLInputElement_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  incremental_Setter_(mthis, __arg_0) => mthis["incremental"] = __arg_0;
 
-  static incremental_Getter(mthis) native "HTMLInputElement_incremental_Getter";
-  incremental_Getter_(mthis) => incremental_Getter(mthis);
+  indeterminate_Getter_(mthis) => mthis["indeterminate"];
 
-  static incremental_Setter(mthis, __arg_0) native "HTMLInputElement_incremental_Setter";
-  incremental_Setter_(mthis, __arg_0) => incremental_Setter(mthis, __arg_0);
+  indeterminate_Setter_(mthis, __arg_0) => mthis["indeterminate"] = __arg_0;
 
-  static indeterminate_Getter(mthis) native "HTMLInputElement_indeterminate_Getter";
-  indeterminate_Getter_(mthis) => indeterminate_Getter(mthis);
+  inputMode_Getter_(mthis) => mthis["inputMode"];
 
-  static indeterminate_Setter(mthis, __arg_0) native "HTMLInputElement_indeterminate_Setter";
-  indeterminate_Setter_(mthis, __arg_0) => indeterminate_Setter(mthis, __arg_0);
+  inputMode_Setter_(mthis, __arg_0) => mthis["inputMode"] = __arg_0;
 
-  static inputMode_Getter(mthis) native "HTMLInputElement_inputMode_Getter";
-  inputMode_Getter_(mthis) => inputMode_Getter(mthis);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static inputMode_Setter(mthis, __arg_0) native "HTMLInputElement_inputMode_Setter";
-  inputMode_Setter_(mthis, __arg_0) => inputMode_Setter(mthis, __arg_0);
+  list_Getter_(mthis) => mthis["list"];
 
-  static labels_Getter(mthis) native "HTMLInputElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  maxLength_Getter_(mthis) => mthis["maxLength"];
 
-  static list_Getter(mthis) native "HTMLInputElement_list_Getter";
-  list_Getter_(mthis) => list_Getter(mthis);
+  maxLength_Setter_(mthis, __arg_0) => mthis["maxLength"] = __arg_0;
 
-  static maxLength_Getter(mthis) native "HTMLInputElement_maxLength_Getter";
-  maxLength_Getter_(mthis) => maxLength_Getter(mthis);
+  max_Getter_(mthis) => mthis["max"];
 
-  static maxLength_Setter(mthis, __arg_0) native "HTMLInputElement_maxLength_Setter";
-  maxLength_Setter_(mthis, __arg_0) => maxLength_Setter(mthis, __arg_0);
+  max_Setter_(mthis, __arg_0) => mthis["max"] = __arg_0;
 
-  static max_Getter(mthis) native "HTMLInputElement_max_Getter";
-  max_Getter_(mthis) => max_Getter(mthis);
+  min_Getter_(mthis) => mthis["min"];
 
-  static max_Setter(mthis, __arg_0) native "HTMLInputElement_max_Setter";
-  max_Setter_(mthis, __arg_0) => max_Setter(mthis, __arg_0);
+  min_Setter_(mthis, __arg_0) => mthis["min"] = __arg_0;
 
-  static min_Getter(mthis) native "HTMLInputElement_min_Getter";
-  min_Getter_(mthis) => min_Getter(mthis);
+  multiple_Getter_(mthis) => mthis["multiple"];
 
-  static min_Setter(mthis, __arg_0) native "HTMLInputElement_min_Setter";
-  min_Setter_(mthis, __arg_0) => min_Setter(mthis, __arg_0);
+  multiple_Setter_(mthis, __arg_0) => mthis["multiple"] = __arg_0;
 
-  static multiple_Getter(mthis) native "HTMLInputElement_multiple_Getter";
-  multiple_Getter_(mthis) => multiple_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static multiple_Setter(mthis, __arg_0) native "HTMLInputElement_multiple_Setter";
-  multiple_Setter_(mthis, __arg_0) => multiple_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLInputElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  pattern_Getter_(mthis) => mthis["pattern"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLInputElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  pattern_Setter_(mthis, __arg_0) => mthis["pattern"] = __arg_0;
 
-  static pattern_Getter(mthis) native "HTMLInputElement_pattern_Getter";
-  pattern_Getter_(mthis) => pattern_Getter(mthis);
+  placeholder_Getter_(mthis) => mthis["placeholder"];
 
-  static pattern_Setter(mthis, __arg_0) native "HTMLInputElement_pattern_Setter";
-  pattern_Setter_(mthis, __arg_0) => pattern_Setter(mthis, __arg_0);
+  placeholder_Setter_(mthis, __arg_0) => mthis["placeholder"] = __arg_0;
 
-  static placeholder_Getter(mthis) native "HTMLInputElement_placeholder_Getter";
-  placeholder_Getter_(mthis) => placeholder_Getter(mthis);
+  readOnly_Getter_(mthis) => mthis["readOnly"];
 
-  static placeholder_Setter(mthis, __arg_0) native "HTMLInputElement_placeholder_Setter";
-  placeholder_Setter_(mthis, __arg_0) => placeholder_Setter(mthis, __arg_0);
+  readOnly_Setter_(mthis, __arg_0) => mthis["readOnly"] = __arg_0;
 
-  static readOnly_Getter(mthis) native "HTMLInputElement_readOnly_Getter";
-  readOnly_Getter_(mthis) => readOnly_Getter(mthis);
-
-  static readOnly_Setter(mthis, __arg_0) native "HTMLInputElement_readOnly_Setter";
-  readOnly_Setter_(mthis, __arg_0) => readOnly_Setter(mthis, __arg_0);
-
-  static required_Getter(mthis) native "HTMLInputElement_required_Getter";
-  required_Getter_(mthis) => required_Getter(mthis);
-
-  static required_Setter(mthis, __arg_0) native "HTMLInputElement_required_Setter";
-  required_Setter_(mthis, __arg_0) => required_Setter(mthis, __arg_0);
-
-  static select_Callback_0(mthis) native "HTMLInputElement_select_Callback";
-  select_Callback_0_(mthis) => select_Callback_0(mthis);
-
-  static select_Callback_1(mthis, __arg_0) native "HTMLInputElement_select_Callback";
-  select_Callback_1_(mthis, __arg_0) => select_Callback_1(mthis, __arg_0);
-
-  static select_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_select_Callback";
-  select_Callback_2_(mthis, __arg_0, __arg_1) => select_Callback_2(mthis, __arg_0, __arg_1);
-
-  static selectionDirection_Getter(mthis) native "HTMLInputElement_selectionDirection_Getter";
-  selectionDirection_Getter_(mthis) => selectionDirection_Getter(mthis);
-
-  static selectionDirection_Setter(mthis, __arg_0) native "HTMLInputElement_selectionDirection_Setter";
-  selectionDirection_Setter_(mthis, __arg_0) => selectionDirection_Setter(mthis, __arg_0);
-
-  static selectionEnd_Getter(mthis) native "HTMLInputElement_selectionEnd_Getter";
-  selectionEnd_Getter_(mthis) => selectionEnd_Getter(mthis);
-
-  static selectionEnd_Setter(mthis, __arg_0) native "HTMLInputElement_selectionEnd_Setter";
-  selectionEnd_Setter_(mthis, __arg_0) => selectionEnd_Setter(mthis, __arg_0);
-
-  static selectionStart_Getter(mthis) native "HTMLInputElement_selectionStart_Getter";
-  selectionStart_Getter_(mthis) => selectionStart_Getter(mthis);
-
-  static selectionStart_Setter(mthis, __arg_0) native "HTMLInputElement_selectionStart_Setter";
-  selectionStart_Setter_(mthis, __arg_0) => selectionStart_Setter(mthis, __arg_0);
-
-  static setCustomValidity_Callback_0(mthis) native "HTMLInputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
-
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLInputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+  required_Getter_(mthis) => mthis["required"];
 
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+  required_Setter_(mthis, __arg_0) => mthis["required"] = __arg_0;
 
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  select_Callback_0_(mthis) => mthis.callMethod("select", []);
 
-  static setRangeText_Callback_0(mthis) native "HTMLInputElement_setRangeText_Callback";
-  setRangeText_Callback_0_(mthis) => setRangeText_Callback_0(mthis);
+  selectionDirection_Getter_(mthis) => mthis["selectionDirection"];
 
-  static setRangeText_Callback_1(mthis, __arg_0) native "HTMLInputElement_setRangeText_Callback";
-  setRangeText_Callback_1_(mthis, __arg_0) => setRangeText_Callback_1(mthis, __arg_0);
+  selectionDirection_Setter_(mthis, __arg_0) => mthis["selectionDirection"] = __arg_0;
 
-  static setRangeText_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_setRangeText_Callback";
-  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => setRangeText_Callback_2(mthis, __arg_0, __arg_1);
+  selectionEnd_Getter_(mthis) => mthis["selectionEnd"];
 
-  static setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_setRangeText_Callback";
-  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  selectionEnd_Setter_(mthis, __arg_0) => mthis["selectionEnd"] = __arg_0;
 
-  static setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLInputElement_setRangeText_Callback";
-  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  selectionStart_Getter_(mthis) => mthis["selectionStart"];
 
-  static setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLInputElement_setRangeText_Callback";
-  setRangeText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  selectionStart_Setter_(mthis, __arg_0) => mthis["selectionStart"] = __arg_0;
 
-  static setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLInputElement_setRangeText_Callback";
-  setRangeText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static setSelectionRange_Callback_0(mthis) native "HTMLInputElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_0_(mthis) => setSelectionRange_Callback_0(mthis);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static setSelectionRange_Callback_1(mthis, __arg_0) native "HTMLInputElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_1_(mthis, __arg_0) => setSelectionRange_Callback_1(mthis, __arg_0);
+  setRangeText_Callback_0_(mthis) => mthis.callMethod("setRangeText", []);
 
-  static setSelectionRange_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => setSelectionRange_Callback_2(mthis, __arg_0, __arg_1);
+  setRangeText_Callback_1_(mthis, __arg_0) => mthis.callMethod("setRangeText", [__arg_0]);
 
-  static setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setRangeText", [__arg_0, __arg_1]);
 
-  static setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLInputElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setRangeText", [__arg_0, __arg_1, __arg_2]);
 
-  static setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLInputElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("setRangeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static size_Getter(mthis) native "HTMLInputElement_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
+  setSelectionRange_Callback_0_(mthis) => mthis.callMethod("setSelectionRange", []);
 
-  static size_Setter(mthis, __arg_0) native "HTMLInputElement_size_Setter";
-  size_Setter_(mthis, __arg_0) => size_Setter(mthis, __arg_0);
+  setSelectionRange_Callback_1_(mthis, __arg_0) => mthis.callMethod("setSelectionRange", [__arg_0]);
 
-  static src_Getter(mthis) native "HTMLInputElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setSelectionRange", [__arg_0, __arg_1]);
 
-  static src_Setter(mthis, __arg_0) native "HTMLInputElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setSelectionRange", [__arg_0, __arg_1, __arg_2]);
 
-  static stepDown_Callback_0(mthis) native "HTMLInputElement_stepDown_Callback";
-  stepDown_Callback_0_(mthis) => stepDown_Callback_0(mthis);
+  size_Getter_(mthis) => mthis["size"];
 
-  static stepDown_Callback_1(mthis, __arg_0) native "HTMLInputElement_stepDown_Callback";
-  stepDown_Callback_1_(mthis, __arg_0) => stepDown_Callback_1(mthis, __arg_0);
+  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
 
-  static stepDown_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_stepDown_Callback";
-  stepDown_Callback_2_(mthis, __arg_0, __arg_1) => stepDown_Callback_2(mthis, __arg_0, __arg_1);
+  src_Getter_(mthis) => mthis["src"];
 
-  static stepDown_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_stepDown_Callback";
-  stepDown_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stepDown_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static stepUp_Callback_0(mthis) native "HTMLInputElement_stepUp_Callback";
-  stepUp_Callback_0_(mthis) => stepUp_Callback_0(mthis);
+  stepDown_Callback_0_(mthis) => mthis.callMethod("stepDown", []);
 
-  static stepUp_Callback_1(mthis, __arg_0) native "HTMLInputElement_stepUp_Callback";
-  stepUp_Callback_1_(mthis, __arg_0) => stepUp_Callback_1(mthis, __arg_0);
+  stepDown_Callback_1_(mthis, __arg_0) => mthis.callMethod("stepDown", [__arg_0]);
 
-  static stepUp_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_stepUp_Callback";
-  stepUp_Callback_2_(mthis, __arg_0, __arg_1) => stepUp_Callback_2(mthis, __arg_0, __arg_1);
+  stepUp_Callback_0_(mthis) => mthis.callMethod("stepUp", []);
 
-  static stepUp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_stepUp_Callback";
-  stepUp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stepUp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stepUp_Callback_1_(mthis, __arg_0) => mthis.callMethod("stepUp", [__arg_0]);
 
-  static step_Getter(mthis) native "HTMLInputElement_step_Getter";
-  step_Getter_(mthis) => step_Getter(mthis);
+  step_Getter_(mthis) => mthis["step"];
 
-  static step_Setter(mthis, __arg_0) native "HTMLInputElement_step_Setter";
-  step_Setter_(mthis, __arg_0) => step_Setter(mthis, __arg_0);
+  step_Setter_(mthis, __arg_0) => mthis["step"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLInputElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLInputElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
-  static useMap_Getter(mthis) native "HTMLInputElement_useMap_Getter";
-  useMap_Getter_(mthis) => useMap_Getter(mthis);
+  useMap_Getter_(mthis) => mthis["useMap"];
 
-  static useMap_Setter(mthis, __arg_0) native "HTMLInputElement_useMap_Setter";
-  useMap_Setter_(mthis, __arg_0) => useMap_Setter(mthis, __arg_0);
+  useMap_Setter_(mthis, __arg_0) => mthis["useMap"] = __arg_0;
 
-  static validationMessage_Getter(mthis) native "HTMLInputElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static validity_Getter(mthis) native "HTMLInputElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static valueAsDate_Getter(mthis) native "HTMLInputElement_valueAsDate_Getter";
-  valueAsDate_Getter_(mthis) => valueAsDate_Getter(mthis);
+  valueAsDate_Getter_(mthis) => mthis["valueAsDate"];
 
-  static valueAsDate_Setter(mthis, __arg_0) native "HTMLInputElement_valueAsDate_Setter";
-  valueAsDate_Setter_(mthis, __arg_0) => valueAsDate_Setter(mthis, __arg_0);
+  valueAsDate_Setter_(mthis, __arg_0) => mthis["valueAsDate"] = __arg_0;
 
-  static valueAsNumber_Getter(mthis) native "HTMLInputElement_valueAsNumber_Getter";
-  valueAsNumber_Getter_(mthis) => valueAsNumber_Getter(mthis);
+  valueAsNumber_Getter_(mthis) => mthis["valueAsNumber"];
 
-  static valueAsNumber_Setter(mthis, __arg_0) native "HTMLInputElement_valueAsNumber_Setter";
-  valueAsNumber_Setter_(mthis, __arg_0) => valueAsNumber_Setter(mthis, __arg_0);
+  valueAsNumber_Setter_(mthis, __arg_0) => mthis["valueAsNumber"] = __arg_0;
 
-  static value_Getter(mthis) native "HTMLInputElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "HTMLInputElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
-  static webkitEntries_Getter(mthis) native "HTMLInputElement_webkitEntries_Getter";
-  webkitEntries_Getter_(mthis) => webkitEntries_Getter(mthis);
+  webkitEntries_Getter_(mthis) => mthis["webkitEntries"];
 
-  static webkitdirectory_Getter(mthis) native "HTMLInputElement_webkitdirectory_Getter";
-  webkitdirectory_Getter_(mthis) => webkitdirectory_Getter(mthis);
+  webkitdirectory_Getter_(mthis) => mthis["webkitdirectory"];
 
-  static webkitdirectory_Setter(mthis, __arg_0) native "HTMLInputElement_webkitdirectory_Setter";
-  webkitdirectory_Setter_(mthis, __arg_0) => webkitdirectory_Setter(mthis, __arg_0);
+  webkitdirectory_Setter_(mthis, __arg_0) => mthis["webkitdirectory"] = __arg_0;
 
-  static width_Getter(mthis) native "HTMLInputElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static width_Setter(mthis, __arg_0) native "HTMLInputElement_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
-  static willValidate_Getter(mthis) native "HTMLInputElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
 }
 
 class BlinkHTMLKeygenElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLKeygenElement();
 
-  static autofocus_Getter(mthis) native "HTMLKeygenElement_autofocus_Getter";
-  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+  autofocus_Getter_(mthis) => mthis["autofocus"];
 
-  static autofocus_Setter(mthis, __arg_0) native "HTMLKeygenElement_autofocus_Setter";
-  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
 
-  static challenge_Getter(mthis) native "HTMLKeygenElement_challenge_Getter";
-  challenge_Getter_(mthis) => challenge_Getter(mthis);
+  challenge_Getter_(mthis) => mthis["challenge"];
 
-  static challenge_Setter(mthis, __arg_0) native "HTMLKeygenElement_challenge_Setter";
-  challenge_Setter_(mthis, __arg_0) => challenge_Setter(mthis, __arg_0);
+  challenge_Setter_(mthis, __arg_0) => mthis["challenge"] = __arg_0;
 
-  static checkValidity_Callback_0(mthis) native "HTMLKeygenElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLKeygenElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLKeygenElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLKeygenElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLKeygenElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  keytype_Getter_(mthis) => mthis["keytype"];
 
-  static form_Getter(mthis) native "HTMLKeygenElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  keytype_Setter_(mthis, __arg_0) => mthis["keytype"] = __arg_0;
 
-  static keytype_Getter(mthis) native "HTMLKeygenElement_keytype_Getter";
-  keytype_Getter_(mthis) => keytype_Getter(mthis);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static keytype_Setter(mthis, __arg_0) native "HTMLKeygenElement_keytype_Setter";
-  keytype_Setter_(mthis, __arg_0) => keytype_Setter(mthis, __arg_0);
+  name_Getter_(mthis) => mthis["name"];
 
-  static labels_Getter(mthis) native "HTMLKeygenElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLKeygenElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static name_Setter(mthis, __arg_0) native "HTMLKeygenElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static setCustomValidity_Callback_0(mthis) native "HTMLKeygenElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLKeygenElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLKeygenElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLKeygenElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static type_Getter(mthis) native "HTMLKeygenElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static validationMessage_Getter(mthis) native "HTMLKeygenElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
-
-  static validity_Getter(mthis) native "HTMLKeygenElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
-
-  static willValidate_Getter(mthis) native "HTMLKeygenElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
 }
 
 class BlinkHTMLLIElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLIElement();
 
-  static type_Getter(mthis) native "HTMLLIElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLLIElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
-  static value_Getter(mthis) native "HTMLLIElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "HTMLLIElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkHTMLLabelElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLabelElement();
 
-  static control_Getter(mthis) native "HTMLLabelElement_control_Getter";
-  control_Getter_(mthis) => control_Getter(mthis);
+  control_Getter_(mthis) => mthis["control"];
 
-  static form_Getter(mthis) native "HTMLLabelElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static htmlFor_Getter(mthis) native "HTMLLabelElement_htmlFor_Getter";
-  htmlFor_Getter_(mthis) => htmlFor_Getter(mthis);
+  htmlFor_Getter_(mthis) => mthis["htmlFor"];
 
-  static htmlFor_Setter(mthis, __arg_0) native "HTMLLabelElement_htmlFor_Setter";
-  htmlFor_Setter_(mthis, __arg_0) => htmlFor_Setter(mthis, __arg_0);
+  htmlFor_Setter_(mthis, __arg_0) => mthis["htmlFor"] = __arg_0;
 
 }
 
 class BlinkHTMLLegendElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLegendElement();
 
-  static form_Getter(mthis) native "HTMLLegendElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
 }
 
 class BlinkHTMLLinkElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLLinkElement();
 
-  static crossOrigin_Getter(mthis) native "HTMLLinkElement_crossOrigin_Getter";
-  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
+  crossOrigin_Getter_(mthis) => mthis["crossOrigin"];
 
-  static crossOrigin_Setter(mthis, __arg_0) native "HTMLLinkElement_crossOrigin_Setter";
-  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
+  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLLinkElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLLinkElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static href_Getter(mthis) native "HTMLLinkElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static href_Setter(mthis, __arg_0) native "HTMLLinkElement_href_Setter";
-  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
+  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
 
-  static hreflang_Getter(mthis) native "HTMLLinkElement_hreflang_Getter";
-  hreflang_Getter_(mthis) => hreflang_Getter(mthis);
+  hreflang_Getter_(mthis) => mthis["hreflang"];
 
-  static hreflang_Setter(mthis, __arg_0) native "HTMLLinkElement_hreflang_Setter";
-  hreflang_Setter_(mthis, __arg_0) => hreflang_Setter(mthis, __arg_0);
+  hreflang_Setter_(mthis, __arg_0) => mthis["hreflang"] = __arg_0;
 
-  static import_Getter(mthis) native "HTMLLinkElement_import_Getter";
-  import_Getter_(mthis) => import_Getter(mthis);
+  import_Getter_(mthis) => mthis["import"];
 
-  static integrity_Getter(mthis) native "HTMLLinkElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLLinkElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static media_Getter(mthis) native "HTMLLinkElement_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
-  static media_Setter(mthis, __arg_0) native "HTMLLinkElement_media_Setter";
-  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
+  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
 
-  static rel_Getter(mthis) native "HTMLLinkElement_rel_Getter";
-  rel_Getter_(mthis) => rel_Getter(mthis);
+  rel_Getter_(mthis) => mthis["rel"];
 
-  static rel_Setter(mthis, __arg_0) native "HTMLLinkElement_rel_Setter";
-  rel_Setter_(mthis, __arg_0) => rel_Setter(mthis, __arg_0);
+  rel_Setter_(mthis, __arg_0) => mthis["rel"] = __arg_0;
 
-  static sheet_Getter(mthis) native "HTMLLinkElement_sheet_Getter";
-  sheet_Getter_(mthis) => sheet_Getter(mthis);
+  sheet_Getter_(mthis) => mthis["sheet"];
 
-  static sizes_Getter(mthis) native "HTMLLinkElement_sizes_Getter";
-  sizes_Getter_(mthis) => sizes_Getter(mthis);
+  sizes_Getter_(mthis) => mthis["sizes"];
 
-  static sizes_Setter(mthis, __arg_0) native "HTMLLinkElement_sizes_Setter";
-  sizes_Setter_(mthis, __arg_0) => sizes_Setter(mthis, __arg_0);
+  sizes_Setter_(mthis, __arg_0) => mthis["sizes"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLLinkElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLLinkElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkHTMLMapElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMapElement();
 
-  static areas_Getter(mthis) native "HTMLMapElement_areas_Getter";
-  areas_Getter_(mthis) => areas_Getter(mthis);
+  areas_Getter_(mthis) => mthis["areas"];
 
-  static name_Getter(mthis) native "HTMLMapElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLMapElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
 }
 
@@ -11301,720 +6378,440 @@
 class BlinkHTMLMediaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMediaElement();
 
-  static addTextTrack_Callback_0(mthis) native "HTMLMediaElement_addTextTrack_Callback";
-  addTextTrack_Callback_0_(mthis) => addTextTrack_Callback_0(mthis);
+  addTextTrack_Callback_0_(mthis) => mthis.callMethod("addTextTrack", []);
 
-  static addTextTrack_Callback_1(mthis, __arg_0) native "HTMLMediaElement_addTextTrack_Callback";
-  addTextTrack_Callback_1_(mthis, __arg_0) => addTextTrack_Callback_1(mthis, __arg_0);
+  addTextTrack_Callback_1_(mthis, __arg_0) => mthis.callMethod("addTextTrack", [__arg_0]);
 
-  static addTextTrack_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_addTextTrack_Callback";
-  addTextTrack_Callback_2_(mthis, __arg_0, __arg_1) => addTextTrack_Callback_2(mthis, __arg_0, __arg_1);
+  addTextTrack_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addTextTrack", [__arg_0, __arg_1]);
 
-  static addTextTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_addTextTrack_Callback";
-  addTextTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addTextTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  addTextTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("addTextTrack", [__arg_0, __arg_1, __arg_2]);
 
-  static addTextTrack_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_addTextTrack_Callback";
-  addTextTrack_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addTextTrack_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  audioTracks_Getter_(mthis) => mthis["audioTracks"];
 
-  static addTextTrack_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLMediaElement_addTextTrack_Callback";
-  addTextTrack_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addTextTrack_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  autoplay_Getter_(mthis) => mthis["autoplay"];
 
-  static audioTracks_Getter(mthis) native "HTMLMediaElement_audioTracks_Getter";
-  audioTracks_Getter_(mthis) => audioTracks_Getter(mthis);
+  autoplay_Setter_(mthis, __arg_0) => mthis["autoplay"] = __arg_0;
 
-  static autoplay_Getter(mthis) native "HTMLMediaElement_autoplay_Getter";
-  autoplay_Getter_(mthis) => autoplay_Getter(mthis);
+  buffered_Getter_(mthis) => mthis["buffered"];
 
-  static autoplay_Setter(mthis, __arg_0) native "HTMLMediaElement_autoplay_Setter";
-  autoplay_Setter_(mthis, __arg_0) => autoplay_Setter(mthis, __arg_0);
+  canPlayType_Callback_0_(mthis) => mthis.callMethod("canPlayType", []);
 
-  static buffered_Getter(mthis) native "HTMLMediaElement_buffered_Getter";
-  buffered_Getter_(mthis) => buffered_Getter(mthis);
+  canPlayType_Callback_1_(mthis, __arg_0) => mthis.callMethod("canPlayType", [__arg_0]);
 
-  static canPlayType_Callback_0(mthis) native "HTMLMediaElement_canPlayType_Callback";
-  canPlayType_Callback_0_(mthis) => canPlayType_Callback_0(mthis);
+  canPlayType_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("canPlayType", [__arg_0, __arg_1]);
 
-  static canPlayType_Callback_1(mthis, __arg_0) native "HTMLMediaElement_canPlayType_Callback";
-  canPlayType_Callback_1_(mthis, __arg_0) => canPlayType_Callback_1(mthis, __arg_0);
+  controller_Getter_(mthis) => mthis["controller"];
 
-  static canPlayType_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_canPlayType_Callback";
-  canPlayType_Callback_2_(mthis, __arg_0, __arg_1) => canPlayType_Callback_2(mthis, __arg_0, __arg_1);
+  controller_Setter_(mthis, __arg_0) => mthis["controller"] = __arg_0;
 
-  static canPlayType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_canPlayType_Callback";
-  canPlayType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => canPlayType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  controls_Getter_(mthis) => mthis["controls"];
 
-  static canPlayType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_canPlayType_Callback";
-  canPlayType_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => canPlayType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  controls_Setter_(mthis, __arg_0) => mthis["controls"] = __arg_0;
 
-  static controller_Getter(mthis) native "HTMLMediaElement_controller_Getter";
-  controller_Getter_(mthis) => controller_Getter(mthis);
+  crossOrigin_Getter_(mthis) => mthis["crossOrigin"];
 
-  static controller_Setter(mthis, __arg_0) native "HTMLMediaElement_controller_Setter";
-  controller_Setter_(mthis, __arg_0) => controller_Setter(mthis, __arg_0);
+  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
 
-  static controls_Getter(mthis) native "HTMLMediaElement_controls_Getter";
-  controls_Getter_(mthis) => controls_Getter(mthis);
+  currentSrc_Getter_(mthis) => mthis["currentSrc"];
 
-  static controls_Setter(mthis, __arg_0) native "HTMLMediaElement_controls_Setter";
-  controls_Setter_(mthis, __arg_0) => controls_Setter(mthis, __arg_0);
+  currentTime_Getter_(mthis) => mthis["currentTime"];
 
-  static crossOrigin_Getter(mthis) native "HTMLMediaElement_crossOrigin_Getter";
-  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
+  currentTime_Setter_(mthis, __arg_0) => mthis["currentTime"] = __arg_0;
 
-  static crossOrigin_Setter(mthis, __arg_0) native "HTMLMediaElement_crossOrigin_Setter";
-  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
+  defaultMuted_Getter_(mthis) => mthis["defaultMuted"];
 
-  static currentSrc_Getter(mthis) native "HTMLMediaElement_currentSrc_Getter";
-  currentSrc_Getter_(mthis) => currentSrc_Getter(mthis);
+  defaultMuted_Setter_(mthis, __arg_0) => mthis["defaultMuted"] = __arg_0;
 
-  static currentTime_Getter(mthis) native "HTMLMediaElement_currentTime_Getter";
-  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
+  defaultPlaybackRate_Getter_(mthis) => mthis["defaultPlaybackRate"];
 
-  static currentTime_Setter(mthis, __arg_0) native "HTMLMediaElement_currentTime_Setter";
-  currentTime_Setter_(mthis, __arg_0) => currentTime_Setter(mthis, __arg_0);
+  defaultPlaybackRate_Setter_(mthis, __arg_0) => mthis["defaultPlaybackRate"] = __arg_0;
 
-  static defaultMuted_Getter(mthis) native "HTMLMediaElement_defaultMuted_Getter";
-  defaultMuted_Getter_(mthis) => defaultMuted_Getter(mthis);
+  duration_Getter_(mthis) => mthis["duration"];
 
-  static defaultMuted_Setter(mthis, __arg_0) native "HTMLMediaElement_defaultMuted_Setter";
-  defaultMuted_Setter_(mthis, __arg_0) => defaultMuted_Setter(mthis, __arg_0);
+  ended_Getter_(mthis) => mthis["ended"];
 
-  static defaultPlaybackRate_Getter(mthis) native "HTMLMediaElement_defaultPlaybackRate_Getter";
-  defaultPlaybackRate_Getter_(mthis) => defaultPlaybackRate_Getter(mthis);
+  error_Getter_(mthis) => mthis["error"];
 
-  static defaultPlaybackRate_Setter(mthis, __arg_0) native "HTMLMediaElement_defaultPlaybackRate_Setter";
-  defaultPlaybackRate_Setter_(mthis, __arg_0) => defaultPlaybackRate_Setter(mthis, __arg_0);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static duration_Getter(mthis) native "HTMLMediaElement_duration_Getter";
-  duration_Getter_(mthis) => duration_Getter(mthis);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static ended_Getter(mthis) native "HTMLMediaElement_ended_Getter";
-  ended_Getter_(mthis) => ended_Getter(mthis);
+  load_Callback_0_(mthis) => mthis.callMethod("load", []);
 
-  static error_Getter(mthis) native "HTMLMediaElement_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  loop_Getter_(mthis) => mthis["loop"];
 
-  static integrity_Getter(mthis) native "HTMLMediaElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  loop_Setter_(mthis, __arg_0) => mthis["loop"] = __arg_0;
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLMediaElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  mediaGroup_Getter_(mthis) => mthis["mediaGroup"];
 
-  static load_Callback_0(mthis) native "HTMLMediaElement_load_Callback";
-  load_Callback_0_(mthis) => load_Callback_0(mthis);
+  mediaGroup_Setter_(mthis, __arg_0) => mthis["mediaGroup"] = __arg_0;
 
-  static load_Callback_1(mthis, __arg_0) native "HTMLMediaElement_load_Callback";
-  load_Callback_1_(mthis, __arg_0) => load_Callback_1(mthis, __arg_0);
+  mediaKeys_Getter_(mthis) => mthis["mediaKeys"];
 
-  static load_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_load_Callback";
-  load_Callback_2_(mthis, __arg_0, __arg_1) => load_Callback_2(mthis, __arg_0, __arg_1);
+  muted_Getter_(mthis) => mthis["muted"];
 
-  static loop_Getter(mthis) native "HTMLMediaElement_loop_Getter";
-  loop_Getter_(mthis) => loop_Getter(mthis);
+  muted_Setter_(mthis, __arg_0) => mthis["muted"] = __arg_0;
 
-  static loop_Setter(mthis, __arg_0) native "HTMLMediaElement_loop_Setter";
-  loop_Setter_(mthis, __arg_0) => loop_Setter(mthis, __arg_0);
+  networkState_Getter_(mthis) => mthis["networkState"];
 
-  static mediaGroup_Getter(mthis) native "HTMLMediaElement_mediaGroup_Getter";
-  mediaGroup_Getter_(mthis) => mediaGroup_Getter(mthis);
+  onneedkey_Getter_(mthis) => mthis["onneedkey"];
 
-  static mediaGroup_Setter(mthis, __arg_0) native "HTMLMediaElement_mediaGroup_Setter";
-  mediaGroup_Setter_(mthis, __arg_0) => mediaGroup_Setter(mthis, __arg_0);
+  onneedkey_Setter_(mthis, __arg_0) => mthis["onneedkey"] = __arg_0;
 
-  static mediaKeys_Getter(mthis) native "HTMLMediaElement_mediaKeys_Getter";
-  mediaKeys_Getter_(mthis) => mediaKeys_Getter(mthis);
+  onwebkitkeyadded_Getter_(mthis) => mthis["onwebkitkeyadded"];
 
-  static muted_Getter(mthis) native "HTMLMediaElement_muted_Getter";
-  muted_Getter_(mthis) => muted_Getter(mthis);
+  onwebkitkeyadded_Setter_(mthis, __arg_0) => mthis["onwebkitkeyadded"] = __arg_0;
 
-  static muted_Setter(mthis, __arg_0) native "HTMLMediaElement_muted_Setter";
-  muted_Setter_(mthis, __arg_0) => muted_Setter(mthis, __arg_0);
+  onwebkitkeyerror_Getter_(mthis) => mthis["onwebkitkeyerror"];
 
-  static networkState_Getter(mthis) native "HTMLMediaElement_networkState_Getter";
-  networkState_Getter_(mthis) => networkState_Getter(mthis);
+  onwebkitkeyerror_Setter_(mthis, __arg_0) => mthis["onwebkitkeyerror"] = __arg_0;
 
-  static onneedkey_Getter(mthis) native "HTMLMediaElement_onneedkey_Getter";
-  onneedkey_Getter_(mthis) => onneedkey_Getter(mthis);
+  onwebkitkeymessage_Getter_(mthis) => mthis["onwebkitkeymessage"];
 
-  static onneedkey_Setter(mthis, __arg_0) native "HTMLMediaElement_onneedkey_Setter";
-  onneedkey_Setter_(mthis, __arg_0) => onneedkey_Setter(mthis, __arg_0);
+  onwebkitkeymessage_Setter_(mthis, __arg_0) => mthis["onwebkitkeymessage"] = __arg_0;
 
-  static onwebkitkeyadded_Getter(mthis) native "HTMLMediaElement_onwebkitkeyadded_Getter";
-  onwebkitkeyadded_Getter_(mthis) => onwebkitkeyadded_Getter(mthis);
+  onwebkitneedkey_Getter_(mthis) => mthis["onwebkitneedkey"];
 
-  static onwebkitkeyadded_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitkeyadded_Setter";
-  onwebkitkeyadded_Setter_(mthis, __arg_0) => onwebkitkeyadded_Setter(mthis, __arg_0);
+  onwebkitneedkey_Setter_(mthis, __arg_0) => mthis["onwebkitneedkey"] = __arg_0;
 
-  static onwebkitkeyerror_Getter(mthis) native "HTMLMediaElement_onwebkitkeyerror_Getter";
-  onwebkitkeyerror_Getter_(mthis) => onwebkitkeyerror_Getter(mthis);
-
-  static onwebkitkeyerror_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitkeyerror_Setter";
-  onwebkitkeyerror_Setter_(mthis, __arg_0) => onwebkitkeyerror_Setter(mthis, __arg_0);
-
-  static onwebkitkeymessage_Getter(mthis) native "HTMLMediaElement_onwebkitkeymessage_Getter";
-  onwebkitkeymessage_Getter_(mthis) => onwebkitkeymessage_Getter(mthis);
-
-  static onwebkitkeymessage_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitkeymessage_Setter";
-  onwebkitkeymessage_Setter_(mthis, __arg_0) => onwebkitkeymessage_Setter(mthis, __arg_0);
-
-  static onwebkitneedkey_Getter(mthis) native "HTMLMediaElement_onwebkitneedkey_Getter";
-  onwebkitneedkey_Getter_(mthis) => onwebkitneedkey_Getter(mthis);
-
-  static onwebkitneedkey_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitneedkey_Setter";
-  onwebkitneedkey_Setter_(mthis, __arg_0) => onwebkitneedkey_Setter(mthis, __arg_0);
-
-  static pause_Callback_0(mthis) native "HTMLMediaElement_pause_Callback";
-  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
-
-  static pause_Callback_1(mthis, __arg_0) native "HTMLMediaElement_pause_Callback";
-  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
-
-  static pause_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_pause_Callback";
-  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
-
-  static paused_Getter(mthis) native "HTMLMediaElement_paused_Getter";
-  paused_Getter_(mthis) => paused_Getter(mthis);
-
-  static play_Callback_0(mthis) native "HTMLMediaElement_play_Callback";
-  play_Callback_0_(mthis) => play_Callback_0(mthis);
-
-  static play_Callback_1(mthis, __arg_0) native "HTMLMediaElement_play_Callback";
-  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
-
-  static play_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_play_Callback";
-  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
-
-  static playbackRate_Getter(mthis) native "HTMLMediaElement_playbackRate_Getter";
-  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
-
-  static playbackRate_Setter(mthis, __arg_0) native "HTMLMediaElement_playbackRate_Setter";
-  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
-
-  static played_Getter(mthis) native "HTMLMediaElement_played_Getter";
-  played_Getter_(mthis) => played_Getter(mthis);
-
-  static preload_Getter(mthis) native "HTMLMediaElement_preload_Getter";
-  preload_Getter_(mthis) => preload_Getter(mthis);
-
-  static preload_Setter(mthis, __arg_0) native "HTMLMediaElement_preload_Setter";
-  preload_Setter_(mthis, __arg_0) => preload_Setter(mthis, __arg_0);
-
-  static readyState_Getter(mthis) native "HTMLMediaElement_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
+  pause_Callback_0_(mthis) => mthis.callMethod("pause", []);
 
-  static seekable_Getter(mthis) native "HTMLMediaElement_seekable_Getter";
-  seekable_Getter_(mthis) => seekable_Getter(mthis);
+  paused_Getter_(mthis) => mthis["paused"];
 
-  static seeking_Getter(mthis) native "HTMLMediaElement_seeking_Getter";
-  seeking_Getter_(mthis) => seeking_Getter(mthis);
+  play_Callback_0_(mthis) => mthis.callMethod("play", []);
 
-  static setMediaKeys_Callback_0(mthis) native "HTMLMediaElement_setMediaKeys_Callback";
-  setMediaKeys_Callback_0_(mthis) => setMediaKeys_Callback_0(mthis);
+  playbackRate_Getter_(mthis) => mthis["playbackRate"];
 
-  static setMediaKeys_Callback_1(mthis, __arg_0) native "HTMLMediaElement_setMediaKeys_Callback";
-  setMediaKeys_Callback_1_(mthis, __arg_0) => setMediaKeys_Callback_1(mthis, __arg_0);
+  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
 
-  static setMediaKeys_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_setMediaKeys_Callback";
-  setMediaKeys_Callback_2_(mthis, __arg_0, __arg_1) => setMediaKeys_Callback_2(mthis, __arg_0, __arg_1);
+  played_Getter_(mthis) => mthis["played"];
 
-  static setMediaKeys_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_setMediaKeys_Callback";
-  setMediaKeys_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setMediaKeys_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  preload_Getter_(mthis) => mthis["preload"];
 
-  static src_Getter(mthis) native "HTMLMediaElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  preload_Setter_(mthis, __arg_0) => mthis["preload"] = __arg_0;
 
-  static src_Setter(mthis, __arg_0) native "HTMLMediaElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static textTracks_Getter(mthis) native "HTMLMediaElement_textTracks_Getter";
-  textTracks_Getter_(mthis) => textTracks_Getter(mthis);
+  seekable_Getter_(mthis) => mthis["seekable"];
 
-  static videoTracks_Getter(mthis) native "HTMLMediaElement_videoTracks_Getter";
-  videoTracks_Getter_(mthis) => videoTracks_Getter(mthis);
+  seeking_Getter_(mthis) => mthis["seeking"];
 
-  static volume_Getter(mthis) native "HTMLMediaElement_volume_Getter";
-  volume_Getter_(mthis) => volume_Getter(mthis);
+  setMediaKeys_Callback_0_(mthis) => mthis.callMethod("setMediaKeys", []);
 
-  static volume_Setter(mthis, __arg_0) native "HTMLMediaElement_volume_Setter";
-  volume_Setter_(mthis, __arg_0) => volume_Setter(mthis, __arg_0);
+  setMediaKeys_Callback_1_(mthis, __arg_0) => mthis.callMethod("setMediaKeys", [__arg_0]);
 
-  static webkitAddKey_Callback_0(mthis) native "HTMLMediaElement_webkitAddKey_Callback";
-  webkitAddKey_Callback_0_(mthis) => webkitAddKey_Callback_0(mthis);
+  src_Getter_(mthis) => mthis["src"];
 
-  static webkitAddKey_Callback_1(mthis, __arg_0) native "HTMLMediaElement_webkitAddKey_Callback";
-  webkitAddKey_Callback_1_(mthis, __arg_0) => webkitAddKey_Callback_1(mthis, __arg_0);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static webkitAddKey_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_webkitAddKey_Callback";
-  webkitAddKey_Callback_2_(mthis, __arg_0, __arg_1) => webkitAddKey_Callback_2(mthis, __arg_0, __arg_1);
+  textTracks_Getter_(mthis) => mthis["textTracks"];
 
-  static webkitAddKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_webkitAddKey_Callback";
-  webkitAddKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitAddKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  videoTracks_Getter_(mthis) => mthis["videoTracks"];
 
-  static webkitAddKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_webkitAddKey_Callback";
-  webkitAddKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitAddKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  volume_Getter_(mthis) => mthis["volume"];
 
-  static webkitAddKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLMediaElement_webkitAddKey_Callback";
-  webkitAddKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitAddKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  volume_Setter_(mthis, __arg_0) => mthis["volume"] = __arg_0;
 
-  static webkitAddKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLMediaElement_webkitAddKey_Callback";
-  webkitAddKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => webkitAddKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  webkitAddKey_Callback_0_(mthis) => mthis.callMethod("webkitAddKey", []);
 
-  static webkitAudioDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitAudioDecodedByteCount_Getter";
-  webkitAudioDecodedByteCount_Getter_(mthis) => webkitAudioDecodedByteCount_Getter(mthis);
+  webkitAddKey_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitAddKey", [__arg_0]);
 
-  static webkitCancelKeyRequest_Callback_0(mthis) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
-  webkitCancelKeyRequest_Callback_0_(mthis) => webkitCancelKeyRequest_Callback_0(mthis);
+  webkitAddKey_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitAddKey", [__arg_0, __arg_1]);
 
-  static webkitCancelKeyRequest_Callback_1(mthis, __arg_0) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
-  webkitCancelKeyRequest_Callback_1_(mthis, __arg_0) => webkitCancelKeyRequest_Callback_1(mthis, __arg_0);
+  webkitAddKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("webkitAddKey", [__arg_0, __arg_1, __arg_2]);
 
-  static webkitCancelKeyRequest_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
-  webkitCancelKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => webkitCancelKeyRequest_Callback_2(mthis, __arg_0, __arg_1);
+  webkitAddKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("webkitAddKey", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static webkitCancelKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
-  webkitCancelKeyRequest_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitCancelKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitAudioDecodedByteCount_Getter_(mthis) => mthis["webkitAudioDecodedByteCount"];
 
-  static webkitCancelKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
-  webkitCancelKeyRequest_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitCancelKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  webkitCancelKeyRequest_Callback_0_(mthis) => mthis.callMethod("webkitCancelKeyRequest", []);
 
-  static webkitGenerateKeyRequest_Callback_0(mthis) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
-  webkitGenerateKeyRequest_Callback_0_(mthis) => webkitGenerateKeyRequest_Callback_0(mthis);
+  webkitCancelKeyRequest_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitCancelKeyRequest", [__arg_0]);
 
-  static webkitGenerateKeyRequest_Callback_1(mthis, __arg_0) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
-  webkitGenerateKeyRequest_Callback_1_(mthis, __arg_0) => webkitGenerateKeyRequest_Callback_1(mthis, __arg_0);
+  webkitCancelKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitCancelKeyRequest", [__arg_0, __arg_1]);
 
-  static webkitGenerateKeyRequest_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
-  webkitGenerateKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => webkitGenerateKeyRequest_Callback_2(mthis, __arg_0, __arg_1);
+  webkitGenerateKeyRequest_Callback_0_(mthis) => mthis.callMethod("webkitGenerateKeyRequest", []);
 
-  static webkitGenerateKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
-  webkitGenerateKeyRequest_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitGenerateKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitGenerateKeyRequest_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitGenerateKeyRequest", [__arg_0]);
 
-  static webkitGenerateKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
-  webkitGenerateKeyRequest_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitGenerateKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  webkitGenerateKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitGenerateKeyRequest", [__arg_0, __arg_1]);
 
-  static webkitVideoDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitVideoDecodedByteCount_Getter";
-  webkitVideoDecodedByteCount_Getter_(mthis) => webkitVideoDecodedByteCount_Getter(mthis);
+  webkitVideoDecodedByteCount_Getter_(mthis) => mthis["webkitVideoDecodedByteCount"];
 
 }
 
 class BlinkHTMLMenuElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMenuElement();
 
-  static label_Getter(mthis) native "HTMLMenuElement_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static label_Setter(mthis, __arg_0) native "HTMLMenuElement_label_Setter";
-  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
+  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLMenuElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLMenuElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkHTMLMenuItemElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMenuItemElement();
 
-  static checked_Getter(mthis) native "HTMLMenuItemElement_checked_Getter";
-  checked_Getter_(mthis) => checked_Getter(mthis);
+  checked_Getter_(mthis) => mthis["checked"];
 
-  static checked_Setter(mthis, __arg_0) native "HTMLMenuItemElement_checked_Setter";
-  checked_Setter_(mthis, __arg_0) => checked_Setter(mthis, __arg_0);
+  checked_Setter_(mthis, __arg_0) => mthis["checked"] = __arg_0;
 
-  static default_Getter(mthis) native "HTMLMenuItemElement_default_Getter";
-  default_Getter_(mthis) => default_Getter(mthis);
+  default_Getter_(mthis) => mthis["default"];
 
-  static default_Setter(mthis, __arg_0) native "HTMLMenuItemElement_default_Setter";
-  default_Setter_(mthis, __arg_0) => default_Setter(mthis, __arg_0);
+  default_Setter_(mthis, __arg_0) => mthis["default"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLMenuItemElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLMenuItemElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static label_Getter(mthis) native "HTMLMenuItemElement_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static label_Setter(mthis, __arg_0) native "HTMLMenuItemElement_label_Setter";
-  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
+  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLMenuItemElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLMenuItemElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkHTMLMetaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMetaElement();
 
-  static content_Getter(mthis) native "HTMLMetaElement_content_Getter";
-  content_Getter_(mthis) => content_Getter(mthis);
+  content_Getter_(mthis) => mthis["content"];
 
-  static content_Setter(mthis, __arg_0) native "HTMLMetaElement_content_Setter";
-  content_Setter_(mthis, __arg_0) => content_Setter(mthis, __arg_0);
+  content_Setter_(mthis, __arg_0) => mthis["content"] = __arg_0;
 
-  static httpEquiv_Getter(mthis) native "HTMLMetaElement_httpEquiv_Getter";
-  httpEquiv_Getter_(mthis) => httpEquiv_Getter(mthis);
+  httpEquiv_Getter_(mthis) => mthis["httpEquiv"];
 
-  static httpEquiv_Setter(mthis, __arg_0) native "HTMLMetaElement_httpEquiv_Setter";
-  httpEquiv_Setter_(mthis, __arg_0) => httpEquiv_Setter(mthis, __arg_0);
+  httpEquiv_Setter_(mthis, __arg_0) => mthis["httpEquiv"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLMetaElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLMetaElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
 }
 
 class BlinkHTMLMeterElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLMeterElement();
 
-  static high_Getter(mthis) native "HTMLMeterElement_high_Getter";
-  high_Getter_(mthis) => high_Getter(mthis);
+  high_Getter_(mthis) => mthis["high"];
 
-  static high_Setter(mthis, __arg_0) native "HTMLMeterElement_high_Setter";
-  high_Setter_(mthis, __arg_0) => high_Setter(mthis, __arg_0);
+  high_Setter_(mthis, __arg_0) => mthis["high"] = __arg_0;
 
-  static labels_Getter(mthis) native "HTMLMeterElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static low_Getter(mthis) native "HTMLMeterElement_low_Getter";
-  low_Getter_(mthis) => low_Getter(mthis);
+  low_Getter_(mthis) => mthis["low"];
 
-  static low_Setter(mthis, __arg_0) native "HTMLMeterElement_low_Setter";
-  low_Setter_(mthis, __arg_0) => low_Setter(mthis, __arg_0);
+  low_Setter_(mthis, __arg_0) => mthis["low"] = __arg_0;
 
-  static max_Getter(mthis) native "HTMLMeterElement_max_Getter";
-  max_Getter_(mthis) => max_Getter(mthis);
+  max_Getter_(mthis) => mthis["max"];
 
-  static max_Setter(mthis, __arg_0) native "HTMLMeterElement_max_Setter";
-  max_Setter_(mthis, __arg_0) => max_Setter(mthis, __arg_0);
+  max_Setter_(mthis, __arg_0) => mthis["max"] = __arg_0;
 
-  static min_Getter(mthis) native "HTMLMeterElement_min_Getter";
-  min_Getter_(mthis) => min_Getter(mthis);
+  min_Getter_(mthis) => mthis["min"];
 
-  static min_Setter(mthis, __arg_0) native "HTMLMeterElement_min_Setter";
-  min_Setter_(mthis, __arg_0) => min_Setter(mthis, __arg_0);
+  min_Setter_(mthis, __arg_0) => mthis["min"] = __arg_0;
 
-  static optimum_Getter(mthis) native "HTMLMeterElement_optimum_Getter";
-  optimum_Getter_(mthis) => optimum_Getter(mthis);
+  optimum_Getter_(mthis) => mthis["optimum"];
 
-  static optimum_Setter(mthis, __arg_0) native "HTMLMeterElement_optimum_Setter";
-  optimum_Setter_(mthis, __arg_0) => optimum_Setter(mthis, __arg_0);
+  optimum_Setter_(mthis, __arg_0) => mthis["optimum"] = __arg_0;
 
-  static value_Getter(mthis) native "HTMLMeterElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "HTMLMeterElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkHTMLModElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLModElement();
 
-  static cite_Getter(mthis) native "HTMLModElement_cite_Getter";
-  cite_Getter_(mthis) => cite_Getter(mthis);
+  cite_Getter_(mthis) => mthis["cite"];
 
-  static cite_Setter(mthis, __arg_0) native "HTMLModElement_cite_Setter";
-  cite_Setter_(mthis, __arg_0) => cite_Setter(mthis, __arg_0);
+  cite_Setter_(mthis, __arg_0) => mthis["cite"] = __arg_0;
 
-  static dateTime_Getter(mthis) native "HTMLModElement_dateTime_Getter";
-  dateTime_Getter_(mthis) => dateTime_Getter(mthis);
+  dateTime_Getter_(mthis) => mthis["dateTime"];
 
-  static dateTime_Setter(mthis, __arg_0) native "HTMLModElement_dateTime_Setter";
-  dateTime_Setter_(mthis, __arg_0) => dateTime_Setter(mthis, __arg_0);
+  dateTime_Setter_(mthis, __arg_0) => mthis["dateTime"] = __arg_0;
 
 }
 
 class BlinkHTMLOListElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOListElement();
 
-  static reversed_Getter(mthis) native "HTMLOListElement_reversed_Getter";
-  reversed_Getter_(mthis) => reversed_Getter(mthis);
+  reversed_Getter_(mthis) => mthis["reversed"];
 
-  static reversed_Setter(mthis, __arg_0) native "HTMLOListElement_reversed_Setter";
-  reversed_Setter_(mthis, __arg_0) => reversed_Setter(mthis, __arg_0);
+  reversed_Setter_(mthis, __arg_0) => mthis["reversed"] = __arg_0;
 
-  static start_Getter(mthis) native "HTMLOListElement_start_Getter";
-  start_Getter_(mthis) => start_Getter(mthis);
+  start_Getter_(mthis) => mthis["start"];
 
-  static start_Setter(mthis, __arg_0) native "HTMLOListElement_start_Setter";
-  start_Setter_(mthis, __arg_0) => start_Setter(mthis, __arg_0);
+  start_Setter_(mthis, __arg_0) => mthis["start"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLOListElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLOListElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkHTMLObjectElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLObjectElement();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLObjectElement___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static checkValidity_Callback_0(mthis) native "HTMLObjectElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLObjectElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  code_Getter_(mthis) => mthis["code"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  code_Setter_(mthis, __arg_0) => mthis["code"] = __arg_0;
 
-  static code_Getter(mthis) native "HTMLObjectElement_code_Getter";
-  code_Getter_(mthis) => code_Getter(mthis);
+  contentDocument_Getter_(mthis) => mthis["contentDocument"];
 
-  static code_Setter(mthis, __arg_0) native "HTMLObjectElement_code_Setter";
-  code_Setter_(mthis, __arg_0) => code_Setter(mthis, __arg_0);
+  data_Getter_(mthis) => mthis["data"];
 
-  static contentDocument_Getter(mthis) native "HTMLObjectElement_contentDocument_Getter";
-  contentDocument_Getter_(mthis) => contentDocument_Getter(mthis);
+  data_Setter_(mthis, __arg_0) => mthis["data"] = __arg_0;
 
-  static data_Getter(mthis) native "HTMLObjectElement_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static data_Setter(mthis, __arg_0) native "HTMLObjectElement_data_Setter";
-  data_Setter_(mthis, __arg_0) => data_Setter(mthis, __arg_0);
+  getSVGDocument_Callback_0_(mthis) => mthis.callMethod("getSVGDocument", []);
 
-  static form_Getter(mthis) native "HTMLObjectElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static getSVGDocument_Callback_0(mthis) native "HTMLObjectElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_0_(mthis) => getSVGDocument_Callback_0(mthis);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static getSVGDocument_Callback_1(mthis, __arg_0) native "HTMLObjectElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_1_(mthis, __arg_0) => getSVGDocument_Callback_1(mthis, __arg_0);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static getSVGDocument_Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement_getSVGDocument_Callback";
-  getSVGDocument_Callback_2_(mthis, __arg_0, __arg_1) => getSVGDocument_Callback_2(mthis, __arg_0, __arg_1);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static height_Getter(mthis) native "HTMLObjectElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static height_Setter(mthis, __arg_0) native "HTMLObjectElement_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static integrity_Getter(mthis) native "HTMLObjectElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLObjectElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static name_Getter(mthis) native "HTMLObjectElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLObjectElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
-  static setCustomValidity_Callback_0(mthis) native "HTMLObjectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+  useMap_Getter_(mthis) => mthis["useMap"];
 
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLObjectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+  useMap_Setter_(mthis, __arg_0) => mthis["useMap"] = __arg_0;
 
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLObjectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static type_Getter(mthis) native "HTMLObjectElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLObjectElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
-  static useMap_Getter(mthis) native "HTMLObjectElement_useMap_Getter";
-  useMap_Getter_(mthis) => useMap_Getter(mthis);
-
-  static useMap_Setter(mthis, __arg_0) native "HTMLObjectElement_useMap_Setter";
-  useMap_Setter_(mthis, __arg_0) => useMap_Setter(mthis, __arg_0);
-
-  static validationMessage_Getter(mthis) native "HTMLObjectElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
-
-  static validity_Getter(mthis) native "HTMLObjectElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
-
-  static width_Getter(mthis) native "HTMLObjectElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static width_Setter(mthis, __arg_0) native "HTMLObjectElement_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
-
-  static willValidate_Getter(mthis) native "HTMLObjectElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
 }
 
 class BlinkHTMLOptGroupElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOptGroupElement();
 
-  static disabled_Getter(mthis) native "HTMLOptGroupElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLOptGroupElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static label_Getter(mthis) native "HTMLOptGroupElement_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static label_Setter(mthis, __arg_0) native "HTMLOptGroupElement_label_Setter";
-  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
+  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
 
 }
 
 class BlinkHTMLOptionElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOptionElement();
 
-  static constructorCallback_0() native "HTMLOptionElement_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["Option"], []);
 
-  static constructorCallback_1(__arg_0) native "HTMLOptionElement_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Option"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "HTMLOptionElement_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Option"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "HTMLOptionElement_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["Option"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "HTMLOptionElement_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(js.context["Option"], [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLOptionElement_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  defaultSelected_Getter_(mthis) => mthis["defaultSelected"];
 
-  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLOptionElement_constructorCallback";
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  defaultSelected_Setter_(mthis, __arg_0) => mthis["defaultSelected"] = __arg_0;
 
-  static defaultSelected_Getter(mthis) native "HTMLOptionElement_defaultSelected_Getter";
-  defaultSelected_Getter_(mthis) => defaultSelected_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static defaultSelected_Setter(mthis, __arg_0) native "HTMLOptionElement_defaultSelected_Setter";
-  defaultSelected_Setter_(mthis, __arg_0) => defaultSelected_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLOptionElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLOptionElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  index_Getter_(mthis) => mthis["index"];
 
-  static form_Getter(mthis) native "HTMLOptionElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static index_Getter(mthis) native "HTMLOptionElement_index_Getter";
-  index_Getter_(mthis) => index_Getter(mthis);
+  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
 
-  static label_Getter(mthis) native "HTMLOptionElement_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  selected_Getter_(mthis) => mthis["selected"];
 
-  static label_Setter(mthis, __arg_0) native "HTMLOptionElement_label_Setter";
-  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
+  selected_Setter_(mthis, __arg_0) => mthis["selected"] = __arg_0;
 
-  static selected_Getter(mthis) native "HTMLOptionElement_selected_Getter";
-  selected_Getter_(mthis) => selected_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static selected_Setter(mthis, __arg_0) native "HTMLOptionElement_selected_Setter";
-  selected_Setter_(mthis, __arg_0) => selected_Setter(mthis, __arg_0);
-
-  static value_Getter(mthis) native "HTMLOptionElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "HTMLOptionElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkHTMLOptionsCollection extends BlinkHTMLCollection {
   static final instance = new BlinkHTMLOptionsCollection();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLOptionsCollection___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLOptionsCollection___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
 }
 
 class BlinkHTMLOutputElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLOutputElement();
 
-  static checkValidity_Callback_0(mthis) native "HTMLOutputElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLOutputElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  defaultValue_Getter_(mthis) => mthis["defaultValue"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLOutputElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  defaultValue_Setter_(mthis, __arg_0) => mthis["defaultValue"] = __arg_0;
 
-  static defaultValue_Getter(mthis) native "HTMLOutputElement_defaultValue_Getter";
-  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static defaultValue_Setter(mthis, __arg_0) native "HTMLOutputElement_defaultValue_Setter";
-  defaultValue_Setter_(mthis, __arg_0) => defaultValue_Setter(mthis, __arg_0);
+  htmlFor_Getter_(mthis) => mthis["htmlFor"];
 
-  static form_Getter(mthis) native "HTMLOutputElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  htmlFor_Setter_(mthis, __arg_0) => mthis["htmlFor"] = __arg_0;
 
-  static htmlFor_Getter(mthis) native "HTMLOutputElement_htmlFor_Getter";
-  htmlFor_Getter_(mthis) => htmlFor_Getter(mthis);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static htmlFor_Setter(mthis, __arg_0) native "HTMLOutputElement_htmlFor_Setter";
-  htmlFor_Setter_(mthis, __arg_0) => htmlFor_Setter(mthis, __arg_0);
+  name_Getter_(mthis) => mthis["name"];
 
-  static labels_Getter(mthis) native "HTMLOutputElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLOutputElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static name_Setter(mthis, __arg_0) native "HTMLOutputElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static setCustomValidity_Callback_0(mthis) native "HTMLOutputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLOutputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLOutputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLOutputElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  value_Getter_(mthis) => mthis["value"];
 
-  static type_Getter(mthis) native "HTMLOutputElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
-  static validationMessage_Getter(mthis) native "HTMLOutputElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
-
-  static validity_Getter(mthis) native "HTMLOutputElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
-
-  static value_Getter(mthis) native "HTMLOutputElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "HTMLOutputElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
-
-  static willValidate_Getter(mthis) native "HTMLOutputElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
 }
 
@@ -12026,17 +6823,13 @@
 class BlinkHTMLParamElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLParamElement();
 
-  static name_Getter(mthis) native "HTMLParamElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLParamElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static value_Getter(mthis) native "HTMLParamElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "HTMLParamElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
@@ -12053,297 +6846,184 @@
 class BlinkHTMLProgressElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLProgressElement();
 
-  static labels_Getter(mthis) native "HTMLProgressElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static max_Getter(mthis) native "HTMLProgressElement_max_Getter";
-  max_Getter_(mthis) => max_Getter(mthis);
+  max_Getter_(mthis) => mthis["max"];
 
-  static max_Setter(mthis, __arg_0) native "HTMLProgressElement_max_Setter";
-  max_Setter_(mthis, __arg_0) => max_Setter(mthis, __arg_0);
+  max_Setter_(mthis, __arg_0) => mthis["max"] = __arg_0;
 
-  static position_Getter(mthis) native "HTMLProgressElement_position_Getter";
-  position_Getter_(mthis) => position_Getter(mthis);
+  position_Getter_(mthis) => mthis["position"];
 
-  static value_Getter(mthis) native "HTMLProgressElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "HTMLProgressElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkHTMLQuoteElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLQuoteElement();
 
-  static cite_Getter(mthis) native "HTMLQuoteElement_cite_Getter";
-  cite_Getter_(mthis) => cite_Getter(mthis);
+  cite_Getter_(mthis) => mthis["cite"];
 
-  static cite_Setter(mthis, __arg_0) native "HTMLQuoteElement_cite_Setter";
-  cite_Setter_(mthis, __arg_0) => cite_Setter(mthis, __arg_0);
+  cite_Setter_(mthis, __arg_0) => mthis["cite"] = __arg_0;
 
 }
 
 class BlinkHTMLScriptElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLScriptElement();
 
-  static async_Getter(mthis) native "HTMLScriptElement_async_Getter";
-  async_Getter_(mthis) => async_Getter(mthis);
+  async_Getter_(mthis) => mthis["async"];
 
-  static async_Setter(mthis, __arg_0) native "HTMLScriptElement_async_Setter";
-  async_Setter_(mthis, __arg_0) => async_Setter(mthis, __arg_0);
+  async_Setter_(mthis, __arg_0) => mthis["async"] = __arg_0;
 
-  static charset_Getter(mthis) native "HTMLScriptElement_charset_Getter";
-  charset_Getter_(mthis) => charset_Getter(mthis);
+  charset_Getter_(mthis) => mthis["charset"];
 
-  static charset_Setter(mthis, __arg_0) native "HTMLScriptElement_charset_Setter";
-  charset_Setter_(mthis, __arg_0) => charset_Setter(mthis, __arg_0);
+  charset_Setter_(mthis, __arg_0) => mthis["charset"] = __arg_0;
 
-  static crossOrigin_Getter(mthis) native "HTMLScriptElement_crossOrigin_Getter";
-  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
+  crossOrigin_Getter_(mthis) => mthis["crossOrigin"];
 
-  static crossOrigin_Setter(mthis, __arg_0) native "HTMLScriptElement_crossOrigin_Setter";
-  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
+  crossOrigin_Setter_(mthis, __arg_0) => mthis["crossOrigin"] = __arg_0;
 
-  static defer_Getter(mthis) native "HTMLScriptElement_defer_Getter";
-  defer_Getter_(mthis) => defer_Getter(mthis);
+  defer_Getter_(mthis) => mthis["defer"];
 
-  static defer_Setter(mthis, __arg_0) native "HTMLScriptElement_defer_Setter";
-  defer_Setter_(mthis, __arg_0) => defer_Setter(mthis, __arg_0);
+  defer_Setter_(mthis, __arg_0) => mthis["defer"] = __arg_0;
 
-  static event_Getter(mthis) native "HTMLScriptElement_event_Getter";
-  event_Getter_(mthis) => event_Getter(mthis);
+  event_Getter_(mthis) => mthis["event"];
 
-  static event_Setter(mthis, __arg_0) native "HTMLScriptElement_event_Setter";
-  event_Setter_(mthis, __arg_0) => event_Setter(mthis, __arg_0);
+  event_Setter_(mthis, __arg_0) => mthis["event"] = __arg_0;
 
-  static htmlFor_Getter(mthis) native "HTMLScriptElement_htmlFor_Getter";
-  htmlFor_Getter_(mthis) => htmlFor_Getter(mthis);
+  htmlFor_Getter_(mthis) => mthis["htmlFor"];
 
-  static htmlFor_Setter(mthis, __arg_0) native "HTMLScriptElement_htmlFor_Setter";
-  htmlFor_Setter_(mthis, __arg_0) => htmlFor_Setter(mthis, __arg_0);
+  htmlFor_Setter_(mthis, __arg_0) => mthis["htmlFor"] = __arg_0;
 
-  static integrity_Getter(mthis) native "HTMLScriptElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLScriptElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static nonce_Getter(mthis) native "HTMLScriptElement_nonce_Getter";
-  nonce_Getter_(mthis) => nonce_Getter(mthis);
+  nonce_Getter_(mthis) => mthis["nonce"];
 
-  static nonce_Setter(mthis, __arg_0) native "HTMLScriptElement_nonce_Setter";
-  nonce_Setter_(mthis, __arg_0) => nonce_Setter(mthis, __arg_0);
+  nonce_Setter_(mthis, __arg_0) => mthis["nonce"] = __arg_0;
 
-  static src_Getter(mthis) native "HTMLScriptElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  src_Getter_(mthis) => mthis["src"];
 
-  static src_Setter(mthis, __arg_0) native "HTMLScriptElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLScriptElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLScriptElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkHTMLSelectElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLSelectElement();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "HTMLSelectElement___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static add_Callback_0(mthis) native "HTMLSelectElement_add_Callback";
-  add_Callback_0_(mthis) => add_Callback_0(mthis);
+  add_Callback_0_(mthis) => mthis.callMethod("add", []);
 
-  static add_Callback_1(mthis, __arg_0) native "HTMLSelectElement_add_Callback";
-  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+  add_Callback_1_(mthis, __arg_0) => mthis.callMethod("add", [__arg_0]);
 
-  static add_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_add_Callback";
-  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("add", [__arg_0, __arg_1]);
 
-  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_add_Callback";
-  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  autofocus_Getter_(mthis) => mthis["autofocus"];
 
-  static add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLSelectElement_add_Callback";
-  add_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
 
-  static autofocus_Getter(mthis) native "HTMLSelectElement_autofocus_Getter";
-  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static autofocus_Setter(mthis, __arg_0) native "HTMLSelectElement_autofocus_Setter";
-  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static checkValidity_Callback_0(mthis) native "HTMLSelectElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLSelectElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  form_Getter_(mthis) => mthis["form"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static disabled_Getter(mthis) native "HTMLSelectElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLSelectElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static form_Getter(mthis) native "HTMLSelectElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
-  static item_Callback_0(mthis) native "HTMLSelectElement_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  length_Setter_(mthis, __arg_0) => mthis["length"] = __arg_0;
 
-  static item_Callback_1(mthis, __arg_0) native "HTMLSelectElement_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  multiple_Getter_(mthis) => mthis["multiple"];
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  multiple_Setter_(mthis, __arg_0) => mthis["multiple"] = __arg_0;
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  name_Getter_(mthis) => mthis["name"];
 
-  static labels_Getter(mthis) native "HTMLSelectElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static length_Getter(mthis) native "HTMLSelectElement_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static length_Setter(mthis, __arg_0) native "HTMLSelectElement_length_Setter";
-  length_Setter_(mthis, __arg_0) => length_Setter(mthis, __arg_0);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
-  static multiple_Getter(mthis) native "HTMLSelectElement_multiple_Getter";
-  multiple_Getter_(mthis) => multiple_Getter(mthis);
+  required_Getter_(mthis) => mthis["required"];
 
-  static multiple_Setter(mthis, __arg_0) native "HTMLSelectElement_multiple_Setter";
-  multiple_Setter_(mthis, __arg_0) => multiple_Setter(mthis, __arg_0);
+  required_Setter_(mthis, __arg_0) => mthis["required"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLSelectElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  selectedIndex_Getter_(mthis) => mthis["selectedIndex"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLSelectElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  selectedIndex_Setter_(mthis, __arg_0) => mthis["selectedIndex"] = __arg_0;
 
-  static namedItem_Callback_0(mthis) native "HTMLSelectElement_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static namedItem_Callback_1(mthis, __arg_0) native "HTMLSelectElement_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+  size_Getter_(mthis) => mthis["size"];
 
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
 
-  static required_Getter(mthis) native "HTMLSelectElement_required_Getter";
-  required_Getter_(mthis) => required_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static required_Setter(mthis, __arg_0) native "HTMLSelectElement_required_Setter";
-  required_Setter_(mthis, __arg_0) => required_Setter(mthis, __arg_0);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static selectedIndex_Getter(mthis) native "HTMLSelectElement_selectedIndex_Getter";
-  selectedIndex_Getter_(mthis) => selectedIndex_Getter(mthis);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static selectedIndex_Setter(mthis, __arg_0) native "HTMLSelectElement_selectedIndex_Setter";
-  selectedIndex_Setter_(mthis, __arg_0) => selectedIndex_Setter(mthis, __arg_0);
+  value_Getter_(mthis) => mthis["value"];
 
-  static setCustomValidity_Callback_0(mthis) native "HTMLSelectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLSelectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
-
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static size_Getter(mthis) native "HTMLSelectElement_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
-
-  static size_Setter(mthis, __arg_0) native "HTMLSelectElement_size_Setter";
-  size_Setter_(mthis, __arg_0) => size_Setter(mthis, __arg_0);
-
-  static type_Getter(mthis) native "HTMLSelectElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static validationMessage_Getter(mthis) native "HTMLSelectElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
-
-  static validity_Getter(mthis) native "HTMLSelectElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
-
-  static value_Getter(mthis) native "HTMLSelectElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "HTMLSelectElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
-
-  static willValidate_Getter(mthis) native "HTMLSelectElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
 }
 
 class BlinkHTMLShadowElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLShadowElement();
 
-  static getDistributedNodes_Callback_0(mthis) native "HTMLShadowElement_getDistributedNodes_Callback";
-  getDistributedNodes_Callback_0_(mthis) => getDistributedNodes_Callback_0(mthis);
-
-  static getDistributedNodes_Callback_1(mthis, __arg_0) native "HTMLShadowElement_getDistributedNodes_Callback";
-  getDistributedNodes_Callback_1_(mthis, __arg_0) => getDistributedNodes_Callback_1(mthis, __arg_0);
-
-  static getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1) native "HTMLShadowElement_getDistributedNodes_Callback";
-  getDistributedNodes_Callback_2_(mthis, __arg_0, __arg_1) => getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1);
+  getDistributedNodes_Callback_0_(mthis) => mthis.callMethod("getDistributedNodes", []);
 
 }
 
 class BlinkHTMLSourceElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLSourceElement();
 
-  static integrity_Getter(mthis) native "HTMLSourceElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLSourceElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static media_Getter(mthis) native "HTMLSourceElement_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
-  static media_Setter(mthis, __arg_0) native "HTMLSourceElement_media_Setter";
-  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
+  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
 
-  static sizes_Getter(mthis) native "HTMLSourceElement_sizes_Getter";
-  sizes_Getter_(mthis) => sizes_Getter(mthis);
+  sizes_Getter_(mthis) => mthis["sizes"];
 
-  static sizes_Setter(mthis, __arg_0) native "HTMLSourceElement_sizes_Setter";
-  sizes_Setter_(mthis, __arg_0) => sizes_Setter(mthis, __arg_0);
+  sizes_Setter_(mthis, __arg_0) => mthis["sizes"] = __arg_0;
 
-  static src_Getter(mthis) native "HTMLSourceElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  src_Getter_(mthis) => mthis["src"];
 
-  static src_Setter(mthis, __arg_0) native "HTMLSourceElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static srcset_Getter(mthis) native "HTMLSourceElement_srcset_Getter";
-  srcset_Getter_(mthis) => srcset_Getter(mthis);
+  srcset_Getter_(mthis) => mthis["srcset"];
 
-  static srcset_Setter(mthis, __arg_0) native "HTMLSourceElement_srcset_Setter";
-  srcset_Setter_(mthis, __arg_0) => srcset_Setter(mthis, __arg_0);
+  srcset_Setter_(mthis, __arg_0) => mthis["srcset"] = __arg_0;
 
-  static type_Getter(mthis) native "HTMLSourceElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLSourceElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
@@ -12355,26 +7035,19 @@
 class BlinkHTMLStyleElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLStyleElement();
 
-  static disabled_Getter(mthis) native "HTMLStyleElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLStyleElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static media_Getter(mthis) native "HTMLStyleElement_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
-  static media_Setter(mthis, __arg_0) native "HTMLStyleElement_media_Setter";
-  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
+  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
 
-  static sheet_Getter(mthis) native "HTMLStyleElement_sheet_Getter";
-  sheet_Getter_(mthis) => sheet_Getter(mthis);
+  sheet_Getter_(mthis) => mthis["sheet"];
 
-  static type_Getter(mthis) native "HTMLStyleElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "HTMLStyleElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
@@ -12386,434 +7059,229 @@
 class BlinkHTMLTableCellElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableCellElement();
 
-  static cellIndex_Getter(mthis) native "HTMLTableCellElement_cellIndex_Getter";
-  cellIndex_Getter_(mthis) => cellIndex_Getter(mthis);
+  cellIndex_Getter_(mthis) => mthis["cellIndex"];
 
-  static colSpan_Getter(mthis) native "HTMLTableCellElement_colSpan_Getter";
-  colSpan_Getter_(mthis) => colSpan_Getter(mthis);
+  colSpan_Getter_(mthis) => mthis["colSpan"];
 
-  static colSpan_Setter(mthis, __arg_0) native "HTMLTableCellElement_colSpan_Setter";
-  colSpan_Setter_(mthis, __arg_0) => colSpan_Setter(mthis, __arg_0);
+  colSpan_Setter_(mthis, __arg_0) => mthis["colSpan"] = __arg_0;
 
-  static headers_Getter(mthis) native "HTMLTableCellElement_headers_Getter";
-  headers_Getter_(mthis) => headers_Getter(mthis);
+  headers_Getter_(mthis) => mthis["headers"];
 
-  static headers_Setter(mthis, __arg_0) native "HTMLTableCellElement_headers_Setter";
-  headers_Setter_(mthis, __arg_0) => headers_Setter(mthis, __arg_0);
+  headers_Setter_(mthis, __arg_0) => mthis["headers"] = __arg_0;
 
-  static rowSpan_Getter(mthis) native "HTMLTableCellElement_rowSpan_Getter";
-  rowSpan_Getter_(mthis) => rowSpan_Getter(mthis);
+  rowSpan_Getter_(mthis) => mthis["rowSpan"];
 
-  static rowSpan_Setter(mthis, __arg_0) native "HTMLTableCellElement_rowSpan_Setter";
-  rowSpan_Setter_(mthis, __arg_0) => rowSpan_Setter(mthis, __arg_0);
+  rowSpan_Setter_(mthis, __arg_0) => mthis["rowSpan"] = __arg_0;
 
 }
 
 class BlinkHTMLTableColElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableColElement();
 
-  static span_Getter(mthis) native "HTMLTableColElement_span_Getter";
-  span_Getter_(mthis) => span_Getter(mthis);
+  span_Getter_(mthis) => mthis["span"];
 
-  static span_Setter(mthis, __arg_0) native "HTMLTableColElement_span_Setter";
-  span_Setter_(mthis, __arg_0) => span_Setter(mthis, __arg_0);
+  span_Setter_(mthis, __arg_0) => mthis["span"] = __arg_0;
 
 }
 
 class BlinkHTMLTableElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableElement();
 
-  static border_Getter(mthis) native "HTMLTableElement_border_Getter";
-  border_Getter_(mthis) => border_Getter(mthis);
+  border_Getter_(mthis) => mthis["border"];
 
-  static border_Setter(mthis, __arg_0) native "HTMLTableElement_border_Setter";
-  border_Setter_(mthis, __arg_0) => border_Setter(mthis, __arg_0);
+  border_Setter_(mthis, __arg_0) => mthis["border"] = __arg_0;
 
-  static caption_Getter(mthis) native "HTMLTableElement_caption_Getter";
-  caption_Getter_(mthis) => caption_Getter(mthis);
+  caption_Getter_(mthis) => mthis["caption"];
 
-  static caption_Setter(mthis, __arg_0) native "HTMLTableElement_caption_Setter";
-  caption_Setter_(mthis, __arg_0) => caption_Setter(mthis, __arg_0);
+  caption_Setter_(mthis, __arg_0) => mthis["caption"] = __arg_0;
 
-  static createCaption_Callback_0(mthis) native "HTMLTableElement_createCaption_Callback";
-  createCaption_Callback_0_(mthis) => createCaption_Callback_0(mthis);
+  createCaption_Callback_0_(mthis) => mthis.callMethod("createCaption", []);
 
-  static createCaption_Callback_1(mthis, __arg_0) native "HTMLTableElement_createCaption_Callback";
-  createCaption_Callback_1_(mthis, __arg_0) => createCaption_Callback_1(mthis, __arg_0);
+  createTBody_Callback_0_(mthis) => mthis.callMethod("createTBody", []);
 
-  static createCaption_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createCaption_Callback";
-  createCaption_Callback_2_(mthis, __arg_0, __arg_1) => createCaption_Callback_2(mthis, __arg_0, __arg_1);
+  createTFoot_Callback_0_(mthis) => mthis.callMethod("createTFoot", []);
 
-  static createTBody_Callback_0(mthis) native "HTMLTableElement_createTBody_Callback";
-  createTBody_Callback_0_(mthis) => createTBody_Callback_0(mthis);
+  createTHead_Callback_0_(mthis) => mthis.callMethod("createTHead", []);
 
-  static createTBody_Callback_1(mthis, __arg_0) native "HTMLTableElement_createTBody_Callback";
-  createTBody_Callback_1_(mthis, __arg_0) => createTBody_Callback_1(mthis, __arg_0);
+  deleteCaption_Callback_0_(mthis) => mthis.callMethod("deleteCaption", []);
 
-  static createTBody_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createTBody_Callback";
-  createTBody_Callback_2_(mthis, __arg_0, __arg_1) => createTBody_Callback_2(mthis, __arg_0, __arg_1);
+  deleteRow_Callback_0_(mthis) => mthis.callMethod("deleteRow", []);
 
-  static createTFoot_Callback_0(mthis) native "HTMLTableElement_createTFoot_Callback";
-  createTFoot_Callback_0_(mthis) => createTFoot_Callback_0(mthis);
+  deleteRow_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteRow", [__arg_0]);
 
-  static createTFoot_Callback_1(mthis, __arg_0) native "HTMLTableElement_createTFoot_Callback";
-  createTFoot_Callback_1_(mthis, __arg_0) => createTFoot_Callback_1(mthis, __arg_0);
+  deleteTFoot_Callback_0_(mthis) => mthis.callMethod("deleteTFoot", []);
 
-  static createTFoot_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createTFoot_Callback";
-  createTFoot_Callback_2_(mthis, __arg_0, __arg_1) => createTFoot_Callback_2(mthis, __arg_0, __arg_1);
+  deleteTHead_Callback_0_(mthis) => mthis.callMethod("deleteTHead", []);
 
-  static createTHead_Callback_0(mthis) native "HTMLTableElement_createTHead_Callback";
-  createTHead_Callback_0_(mthis) => createTHead_Callback_0(mthis);
+  insertRow_Callback_0_(mthis) => mthis.callMethod("insertRow", []);
 
-  static createTHead_Callback_1(mthis, __arg_0) native "HTMLTableElement_createTHead_Callback";
-  createTHead_Callback_1_(mthis, __arg_0) => createTHead_Callback_1(mthis, __arg_0);
+  insertRow_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertRow", [__arg_0]);
 
-  static createTHead_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createTHead_Callback";
-  createTHead_Callback_2_(mthis, __arg_0, __arg_1) => createTHead_Callback_2(mthis, __arg_0, __arg_1);
+  rows_Getter_(mthis) => mthis["rows"];
 
-  static deleteCaption_Callback_0(mthis) native "HTMLTableElement_deleteCaption_Callback";
-  deleteCaption_Callback_0_(mthis) => deleteCaption_Callback_0(mthis);
+  tBodies_Getter_(mthis) => mthis["tBodies"];
 
-  static deleteCaption_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteCaption_Callback";
-  deleteCaption_Callback_1_(mthis, __arg_0) => deleteCaption_Callback_1(mthis, __arg_0);
+  tFoot_Getter_(mthis) => mthis["tFoot"];
 
-  static deleteCaption_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteCaption_Callback";
-  deleteCaption_Callback_2_(mthis, __arg_0, __arg_1) => deleteCaption_Callback_2(mthis, __arg_0, __arg_1);
+  tFoot_Setter_(mthis, __arg_0) => mthis["tFoot"] = __arg_0;
 
-  static deleteRow_Callback_0(mthis) native "HTMLTableElement_deleteRow_Callback";
-  deleteRow_Callback_0_(mthis) => deleteRow_Callback_0(mthis);
+  tHead_Getter_(mthis) => mthis["tHead"];
 
-  static deleteRow_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteRow_Callback";
-  deleteRow_Callback_1_(mthis, __arg_0) => deleteRow_Callback_1(mthis, __arg_0);
-
-  static deleteRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteRow_Callback";
-  deleteRow_Callback_2_(mthis, __arg_0, __arg_1) => deleteRow_Callback_2(mthis, __arg_0, __arg_1);
-
-  static deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableElement_deleteRow_Callback";
-  deleteRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static deleteTFoot_Callback_0(mthis) native "HTMLTableElement_deleteTFoot_Callback";
-  deleteTFoot_Callback_0_(mthis) => deleteTFoot_Callback_0(mthis);
-
-  static deleteTFoot_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteTFoot_Callback";
-  deleteTFoot_Callback_1_(mthis, __arg_0) => deleteTFoot_Callback_1(mthis, __arg_0);
-
-  static deleteTFoot_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteTFoot_Callback";
-  deleteTFoot_Callback_2_(mthis, __arg_0, __arg_1) => deleteTFoot_Callback_2(mthis, __arg_0, __arg_1);
-
-  static deleteTHead_Callback_0(mthis) native "HTMLTableElement_deleteTHead_Callback";
-  deleteTHead_Callback_0_(mthis) => deleteTHead_Callback_0(mthis);
-
-  static deleteTHead_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteTHead_Callback";
-  deleteTHead_Callback_1_(mthis, __arg_0) => deleteTHead_Callback_1(mthis, __arg_0);
-
-  static deleteTHead_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteTHead_Callback";
-  deleteTHead_Callback_2_(mthis, __arg_0, __arg_1) => deleteTHead_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertRow_Callback_0(mthis) native "HTMLTableElement_insertRow_Callback";
-  insertRow_Callback_0_(mthis) => insertRow_Callback_0(mthis);
-
-  static insertRow_Callback_1(mthis, __arg_0) native "HTMLTableElement_insertRow_Callback";
-  insertRow_Callback_1_(mthis, __arg_0) => insertRow_Callback_1(mthis, __arg_0);
-
-  static insertRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_insertRow_Callback";
-  insertRow_Callback_2_(mthis, __arg_0, __arg_1) => insertRow_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableElement_insertRow_Callback";
-  insertRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rows_Getter(mthis) native "HTMLTableElement_rows_Getter";
-  rows_Getter_(mthis) => rows_Getter(mthis);
-
-  static tBodies_Getter(mthis) native "HTMLTableElement_tBodies_Getter";
-  tBodies_Getter_(mthis) => tBodies_Getter(mthis);
-
-  static tFoot_Getter(mthis) native "HTMLTableElement_tFoot_Getter";
-  tFoot_Getter_(mthis) => tFoot_Getter(mthis);
-
-  static tFoot_Setter(mthis, __arg_0) native "HTMLTableElement_tFoot_Setter";
-  tFoot_Setter_(mthis, __arg_0) => tFoot_Setter(mthis, __arg_0);
-
-  static tHead_Getter(mthis) native "HTMLTableElement_tHead_Getter";
-  tHead_Getter_(mthis) => tHead_Getter(mthis);
-
-  static tHead_Setter(mthis, __arg_0) native "HTMLTableElement_tHead_Setter";
-  tHead_Setter_(mthis, __arg_0) => tHead_Setter(mthis, __arg_0);
+  tHead_Setter_(mthis, __arg_0) => mthis["tHead"] = __arg_0;
 
 }
 
 class BlinkHTMLTableRowElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableRowElement();
 
-  static cells_Getter(mthis) native "HTMLTableRowElement_cells_Getter";
-  cells_Getter_(mthis) => cells_Getter(mthis);
+  cells_Getter_(mthis) => mthis["cells"];
 
-  static deleteCell_Callback_0(mthis) native "HTMLTableRowElement_deleteCell_Callback";
-  deleteCell_Callback_0_(mthis) => deleteCell_Callback_0(mthis);
+  deleteCell_Callback_0_(mthis) => mthis.callMethod("deleteCell", []);
 
-  static deleteCell_Callback_1(mthis, __arg_0) native "HTMLTableRowElement_deleteCell_Callback";
-  deleteCell_Callback_1_(mthis, __arg_0) => deleteCell_Callback_1(mthis, __arg_0);
+  deleteCell_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteCell", [__arg_0]);
 
-  static deleteCell_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableRowElement_deleteCell_Callback";
-  deleteCell_Callback_2_(mthis, __arg_0, __arg_1) => deleteCell_Callback_2(mthis, __arg_0, __arg_1);
+  insertCell_Callback_0_(mthis) => mthis.callMethod("insertCell", []);
 
-  static deleteCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableRowElement_deleteCell_Callback";
-  deleteCell_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  insertCell_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertCell", [__arg_0]);
 
-  static insertCell_Callback_0(mthis) native "HTMLTableRowElement_insertCell_Callback";
-  insertCell_Callback_0_(mthis) => insertCell_Callback_0(mthis);
+  rowIndex_Getter_(mthis) => mthis["rowIndex"];
 
-  static insertCell_Callback_1(mthis, __arg_0) native "HTMLTableRowElement_insertCell_Callback";
-  insertCell_Callback_1_(mthis, __arg_0) => insertCell_Callback_1(mthis, __arg_0);
-
-  static insertCell_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableRowElement_insertCell_Callback";
-  insertCell_Callback_2_(mthis, __arg_0, __arg_1) => insertCell_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableRowElement_insertCell_Callback";
-  insertCell_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rowIndex_Getter(mthis) native "HTMLTableRowElement_rowIndex_Getter";
-  rowIndex_Getter_(mthis) => rowIndex_Getter(mthis);
-
-  static sectionRowIndex_Getter(mthis) native "HTMLTableRowElement_sectionRowIndex_Getter";
-  sectionRowIndex_Getter_(mthis) => sectionRowIndex_Getter(mthis);
+  sectionRowIndex_Getter_(mthis) => mthis["sectionRowIndex"];
 
 }
 
 class BlinkHTMLTableSectionElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTableSectionElement();
 
-  static deleteRow_Callback_0(mthis) native "HTMLTableSectionElement_deleteRow_Callback";
-  deleteRow_Callback_0_(mthis) => deleteRow_Callback_0(mthis);
+  deleteRow_Callback_0_(mthis) => mthis.callMethod("deleteRow", []);
 
-  static deleteRow_Callback_1(mthis, __arg_0) native "HTMLTableSectionElement_deleteRow_Callback";
-  deleteRow_Callback_1_(mthis, __arg_0) => deleteRow_Callback_1(mthis, __arg_0);
+  deleteRow_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteRow", [__arg_0]);
 
-  static deleteRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableSectionElement_deleteRow_Callback";
-  deleteRow_Callback_2_(mthis, __arg_0, __arg_1) => deleteRow_Callback_2(mthis, __arg_0, __arg_1);
+  insertRow_Callback_0_(mthis) => mthis.callMethod("insertRow", []);
 
-  static deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableSectionElement_deleteRow_Callback";
-  deleteRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  insertRow_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertRow", [__arg_0]);
 
-  static insertRow_Callback_0(mthis) native "HTMLTableSectionElement_insertRow_Callback";
-  insertRow_Callback_0_(mthis) => insertRow_Callback_0(mthis);
-
-  static insertRow_Callback_1(mthis, __arg_0) native "HTMLTableSectionElement_insertRow_Callback";
-  insertRow_Callback_1_(mthis, __arg_0) => insertRow_Callback_1(mthis, __arg_0);
-
-  static insertRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableSectionElement_insertRow_Callback";
-  insertRow_Callback_2_(mthis, __arg_0, __arg_1) => insertRow_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableSectionElement_insertRow_Callback";
-  insertRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rows_Getter(mthis) native "HTMLTableSectionElement_rows_Getter";
-  rows_Getter_(mthis) => rows_Getter(mthis);
+  rows_Getter_(mthis) => mthis["rows"];
 
 }
 
 class BlinkHTMLTemplateElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTemplateElement();
 
-  static content_Getter(mthis) native "HTMLTemplateElement_content_Getter";
-  content_Getter_(mthis) => content_Getter(mthis);
+  content_Getter_(mthis) => mthis["content"];
 
 }
 
 class BlinkHTMLTextAreaElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTextAreaElement();
 
-  static autofocus_Getter(mthis) native "HTMLTextAreaElement_autofocus_Getter";
-  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+  autofocus_Getter_(mthis) => mthis["autofocus"];
 
-  static autofocus_Setter(mthis, __arg_0) native "HTMLTextAreaElement_autofocus_Setter";
-  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+  autofocus_Setter_(mthis, __arg_0) => mthis["autofocus"] = __arg_0;
 
-  static checkValidity_Callback_0(mthis) native "HTMLTextAreaElement_checkValidity_Callback";
-  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+  checkValidity_Callback_0_(mthis) => mthis.callMethod("checkValidity", []);
 
-  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_checkValidity_Callback";
-  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+  cols_Getter_(mthis) => mthis["cols"];
 
-  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_checkValidity_Callback";
-  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+  cols_Setter_(mthis, __arg_0) => mthis["cols"] = __arg_0;
 
-  static cols_Getter(mthis) native "HTMLTextAreaElement_cols_Getter";
-  cols_Getter_(mthis) => cols_Getter(mthis);
+  defaultValue_Getter_(mthis) => mthis["defaultValue"];
 
-  static cols_Setter(mthis, __arg_0) native "HTMLTextAreaElement_cols_Setter";
-  cols_Setter_(mthis, __arg_0) => cols_Setter(mthis, __arg_0);
+  defaultValue_Setter_(mthis, __arg_0) => mthis["defaultValue"] = __arg_0;
 
-  static defaultValue_Getter(mthis) native "HTMLTextAreaElement_defaultValue_Getter";
-  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
+  dirName_Getter_(mthis) => mthis["dirName"];
 
-  static defaultValue_Setter(mthis, __arg_0) native "HTMLTextAreaElement_defaultValue_Setter";
-  defaultValue_Setter_(mthis, __arg_0) => defaultValue_Setter(mthis, __arg_0);
+  dirName_Setter_(mthis, __arg_0) => mthis["dirName"] = __arg_0;
 
-  static dirName_Getter(mthis) native "HTMLTextAreaElement_dirName_Getter";
-  dirName_Getter_(mthis) => dirName_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static dirName_Setter(mthis, __arg_0) native "HTMLTextAreaElement_dirName_Setter";
-  dirName_Setter_(mthis, __arg_0) => dirName_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static disabled_Getter(mthis) native "HTMLTextAreaElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  form_Getter_(mthis) => mthis["form"];
 
-  static disabled_Setter(mthis, __arg_0) native "HTMLTextAreaElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  inputMode_Getter_(mthis) => mthis["inputMode"];
 
-  static form_Getter(mthis) native "HTMLTextAreaElement_form_Getter";
-  form_Getter_(mthis) => form_Getter(mthis);
+  inputMode_Setter_(mthis, __arg_0) => mthis["inputMode"] = __arg_0;
 
-  static inputMode_Getter(mthis) native "HTMLTextAreaElement_inputMode_Getter";
-  inputMode_Getter_(mthis) => inputMode_Getter(mthis);
+  labels_Getter_(mthis) => mthis["labels"];
 
-  static inputMode_Setter(mthis, __arg_0) native "HTMLTextAreaElement_inputMode_Setter";
-  inputMode_Setter_(mthis, __arg_0) => inputMode_Setter(mthis, __arg_0);
+  maxLength_Getter_(mthis) => mthis["maxLength"];
 
-  static labels_Getter(mthis) native "HTMLTextAreaElement_labels_Getter";
-  labels_Getter_(mthis) => labels_Getter(mthis);
+  maxLength_Setter_(mthis, __arg_0) => mthis["maxLength"] = __arg_0;
 
-  static maxLength_Getter(mthis) native "HTMLTextAreaElement_maxLength_Getter";
-  maxLength_Getter_(mthis) => maxLength_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static maxLength_Setter(mthis, __arg_0) native "HTMLTextAreaElement_maxLength_Setter";
-  maxLength_Setter_(mthis, __arg_0) => maxLength_Setter(mthis, __arg_0);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static name_Getter(mthis) native "HTMLTextAreaElement_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  placeholder_Getter_(mthis) => mthis["placeholder"];
 
-  static name_Setter(mthis, __arg_0) native "HTMLTextAreaElement_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  placeholder_Setter_(mthis, __arg_0) => mthis["placeholder"] = __arg_0;
 
-  static placeholder_Getter(mthis) native "HTMLTextAreaElement_placeholder_Getter";
-  placeholder_Getter_(mthis) => placeholder_Getter(mthis);
+  readOnly_Getter_(mthis) => mthis["readOnly"];
 
-  static placeholder_Setter(mthis, __arg_0) native "HTMLTextAreaElement_placeholder_Setter";
-  placeholder_Setter_(mthis, __arg_0) => placeholder_Setter(mthis, __arg_0);
+  readOnly_Setter_(mthis, __arg_0) => mthis["readOnly"] = __arg_0;
 
-  static readOnly_Getter(mthis) native "HTMLTextAreaElement_readOnly_Getter";
-  readOnly_Getter_(mthis) => readOnly_Getter(mthis);
+  required_Getter_(mthis) => mthis["required"];
 
-  static readOnly_Setter(mthis, __arg_0) native "HTMLTextAreaElement_readOnly_Setter";
-  readOnly_Setter_(mthis, __arg_0) => readOnly_Setter(mthis, __arg_0);
+  required_Setter_(mthis, __arg_0) => mthis["required"] = __arg_0;
 
-  static required_Getter(mthis) native "HTMLTextAreaElement_required_Getter";
-  required_Getter_(mthis) => required_Getter(mthis);
+  rows_Getter_(mthis) => mthis["rows"];
 
-  static required_Setter(mthis, __arg_0) native "HTMLTextAreaElement_required_Setter";
-  required_Setter_(mthis, __arg_0) => required_Setter(mthis, __arg_0);
+  rows_Setter_(mthis, __arg_0) => mthis["rows"] = __arg_0;
 
-  static rows_Getter(mthis) native "HTMLTextAreaElement_rows_Getter";
-  rows_Getter_(mthis) => rows_Getter(mthis);
+  select_Callback_0_(mthis) => mthis.callMethod("select", []);
 
-  static rows_Setter(mthis, __arg_0) native "HTMLTextAreaElement_rows_Setter";
-  rows_Setter_(mthis, __arg_0) => rows_Setter(mthis, __arg_0);
+  selectionDirection_Getter_(mthis) => mthis["selectionDirection"];
 
-  static select_Callback_0(mthis) native "HTMLTextAreaElement_select_Callback";
-  select_Callback_0_(mthis) => select_Callback_0(mthis);
+  selectionDirection_Setter_(mthis, __arg_0) => mthis["selectionDirection"] = __arg_0;
 
-  static select_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_select_Callback";
-  select_Callback_1_(mthis, __arg_0) => select_Callback_1(mthis, __arg_0);
+  selectionEnd_Getter_(mthis) => mthis["selectionEnd"];
 
-  static select_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_select_Callback";
-  select_Callback_2_(mthis, __arg_0, __arg_1) => select_Callback_2(mthis, __arg_0, __arg_1);
+  selectionEnd_Setter_(mthis, __arg_0) => mthis["selectionEnd"] = __arg_0;
 
-  static selectionDirection_Getter(mthis) native "HTMLTextAreaElement_selectionDirection_Getter";
-  selectionDirection_Getter_(mthis) => selectionDirection_Getter(mthis);
+  selectionStart_Getter_(mthis) => mthis["selectionStart"];
 
-  static selectionDirection_Setter(mthis, __arg_0) native "HTMLTextAreaElement_selectionDirection_Setter";
-  selectionDirection_Setter_(mthis, __arg_0) => selectionDirection_Setter(mthis, __arg_0);
+  selectionStart_Setter_(mthis, __arg_0) => mthis["selectionStart"] = __arg_0;
 
-  static selectionEnd_Getter(mthis) native "HTMLTextAreaElement_selectionEnd_Getter";
-  selectionEnd_Getter_(mthis) => selectionEnd_Getter(mthis);
+  setCustomValidity_Callback_0_(mthis) => mthis.callMethod("setCustomValidity", []);
 
-  static selectionEnd_Setter(mthis, __arg_0) native "HTMLTextAreaElement_selectionEnd_Setter";
-  selectionEnd_Setter_(mthis, __arg_0) => selectionEnd_Setter(mthis, __arg_0);
+  setCustomValidity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCustomValidity", [__arg_0]);
 
-  static selectionStart_Getter(mthis) native "HTMLTextAreaElement_selectionStart_Getter";
-  selectionStart_Getter_(mthis) => selectionStart_Getter(mthis);
+  setRangeText_Callback_0_(mthis) => mthis.callMethod("setRangeText", []);
 
-  static selectionStart_Setter(mthis, __arg_0) native "HTMLTextAreaElement_selectionStart_Setter";
-  selectionStart_Setter_(mthis, __arg_0) => selectionStart_Setter(mthis, __arg_0);
+  setRangeText_Callback_1_(mthis, __arg_0) => mthis.callMethod("setRangeText", [__arg_0]);
 
-  static setCustomValidity_Callback_0(mthis) native "HTMLTextAreaElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setRangeText", [__arg_0, __arg_1]);
 
-  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setRangeText", [__arg_0, __arg_1, __arg_2]);
 
-  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("setRangeText", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTextAreaElement_setCustomValidity_Callback";
-  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setSelectionRange_Callback_0_(mthis) => mthis.callMethod("setSelectionRange", []);
 
-  static setRangeText_Callback_0(mthis) native "HTMLTextAreaElement_setRangeText_Callback";
-  setRangeText_Callback_0_(mthis) => setRangeText_Callback_0(mthis);
+  setSelectionRange_Callback_1_(mthis, __arg_0) => mthis.callMethod("setSelectionRange", [__arg_0]);
 
-  static setRangeText_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_setRangeText_Callback";
-  setRangeText_Callback_1_(mthis, __arg_0) => setRangeText_Callback_1(mthis, __arg_0);
+  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setSelectionRange", [__arg_0, __arg_1]);
 
-  static setRangeText_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_setRangeText_Callback";
-  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => setRangeText_Callback_2(mthis, __arg_0, __arg_1);
+  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setSelectionRange", [__arg_0, __arg_1, __arg_2]);
 
-  static setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTextAreaElement_setRangeText_Callback";
-  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  textLength_Getter_(mthis) => mthis["textLength"];
 
-  static setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLTextAreaElement_setRangeText_Callback";
-  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  type_Getter_(mthis) => mthis["type"];
 
-  static setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLTextAreaElement_setRangeText_Callback";
-  setRangeText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  validationMessage_Getter_(mthis) => mthis["validationMessage"];
 
-  static setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLTextAreaElement_setRangeText_Callback";
-  setRangeText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  validity_Getter_(mthis) => mthis["validity"];
 
-  static setSelectionRange_Callback_0(mthis) native "HTMLTextAreaElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_0_(mthis) => setSelectionRange_Callback_0(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static setSelectionRange_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_1_(mthis, __arg_0) => setSelectionRange_Callback_1(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
-  static setSelectionRange_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => setSelectionRange_Callback_2(mthis, __arg_0, __arg_1);
+  willValidate_Getter_(mthis) => mthis["willValidate"];
 
-  static setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTextAreaElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  wrap_Getter_(mthis) => mthis["wrap"];
 
-  static setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLTextAreaElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLTextAreaElement_setSelectionRange_Callback";
-  setSelectionRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static textLength_Getter(mthis) native "HTMLTextAreaElement_textLength_Getter";
-  textLength_Getter_(mthis) => textLength_Getter(mthis);
-
-  static type_Getter(mthis) native "HTMLTextAreaElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static validationMessage_Getter(mthis) native "HTMLTextAreaElement_validationMessage_Getter";
-  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
-
-  static validity_Getter(mthis) native "HTMLTextAreaElement_validity_Getter";
-  validity_Getter_(mthis) => validity_Getter(mthis);
-
-  static value_Getter(mthis) native "HTMLTextAreaElement_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "HTMLTextAreaElement_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
-
-  static willValidate_Getter(mthis) native "HTMLTextAreaElement_willValidate_Getter";
-  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
-
-  static wrap_Getter(mthis) native "HTMLTextAreaElement_wrap_Getter";
-  wrap_Getter_(mthis) => wrap_Getter(mthis);
-
-  static wrap_Setter(mthis, __arg_0) native "HTMLTextAreaElement_wrap_Setter";
-  wrap_Setter_(mthis, __arg_0) => wrap_Setter(mthis, __arg_0);
+  wrap_Setter_(mthis, __arg_0) => mthis["wrap"] = __arg_0;
 
 }
 
@@ -12825,47 +7293,33 @@
 class BlinkHTMLTrackElement extends BlinkHTMLElement {
   static final instance = new BlinkHTMLTrackElement();
 
-  static default_Getter(mthis) native "HTMLTrackElement_default_Getter";
-  default_Getter_(mthis) => default_Getter(mthis);
+  default_Getter_(mthis) => mthis["default"];
 
-  static default_Setter(mthis, __arg_0) native "HTMLTrackElement_default_Setter";
-  default_Setter_(mthis, __arg_0) => default_Setter(mthis, __arg_0);
+  default_Setter_(mthis, __arg_0) => mthis["default"] = __arg_0;
 
-  static integrity_Getter(mthis) native "HTMLTrackElement_integrity_Getter";
-  integrity_Getter_(mthis) => integrity_Getter(mthis);
+  integrity_Getter_(mthis) => mthis["integrity"];
 
-  static integrity_Setter(mthis, __arg_0) native "HTMLTrackElement_integrity_Setter";
-  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+  integrity_Setter_(mthis, __arg_0) => mthis["integrity"] = __arg_0;
 
-  static kind_Getter(mthis) native "HTMLTrackElement_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static kind_Setter(mthis, __arg_0) native "HTMLTrackElement_kind_Setter";
-  kind_Setter_(mthis, __arg_0) => kind_Setter(mthis, __arg_0);
+  kind_Setter_(mthis, __arg_0) => mthis["kind"] = __arg_0;
 
-  static label_Getter(mthis) native "HTMLTrackElement_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static label_Setter(mthis, __arg_0) native "HTMLTrackElement_label_Setter";
-  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
+  label_Setter_(mthis, __arg_0) => mthis["label"] = __arg_0;
 
-  static readyState_Getter(mthis) native "HTMLTrackElement_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static src_Getter(mthis) native "HTMLTrackElement_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  src_Getter_(mthis) => mthis["src"];
 
-  static src_Setter(mthis, __arg_0) native "HTMLTrackElement_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static srclang_Getter(mthis) native "HTMLTrackElement_srclang_Getter";
-  srclang_Getter_(mthis) => srclang_Getter(mthis);
+  srclang_Getter_(mthis) => mthis["srclang"];
 
-  static srclang_Setter(mthis, __arg_0) native "HTMLTrackElement_srclang_Setter";
-  srclang_Setter_(mthis, __arg_0) => srclang_Setter(mthis, __arg_0);
+  srclang_Setter_(mthis, __arg_0) => mthis["srclang"] = __arg_0;
 
-  static track_Getter(mthis) native "HTMLTrackElement_track_Getter";
-  track_Getter_(mthis) => track_Getter(mthis);
+  track_Getter_(mthis) => mthis["track"];
 
 }
 
@@ -12882,3802 +7336,1889 @@
 class BlinkHTMLVideoElement extends BlinkHTMLMediaElement {
   static final instance = new BlinkHTMLVideoElement();
 
-  static getVideoPlaybackQuality_Callback_0(mthis) native "HTMLVideoElement_getVideoPlaybackQuality_Callback";
-  getVideoPlaybackQuality_Callback_0_(mthis) => getVideoPlaybackQuality_Callback_0(mthis);
+  getVideoPlaybackQuality_Callback_0_(mthis) => mthis.callMethod("getVideoPlaybackQuality", []);
 
-  static getVideoPlaybackQuality_Callback_1(mthis, __arg_0) native "HTMLVideoElement_getVideoPlaybackQuality_Callback";
-  getVideoPlaybackQuality_Callback_1_(mthis, __arg_0) => getVideoPlaybackQuality_Callback_1(mthis, __arg_0);
+  height_Getter_(mthis) => mthis["height"];
 
-  static getVideoPlaybackQuality_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_getVideoPlaybackQuality_Callback";
-  getVideoPlaybackQuality_Callback_2_(mthis, __arg_0, __arg_1) => getVideoPlaybackQuality_Callback_2(mthis, __arg_0, __arg_1);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "HTMLVideoElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  poster_Getter_(mthis) => mthis["poster"];
 
-  static height_Setter(mthis, __arg_0) native "HTMLVideoElement_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  poster_Setter_(mthis, __arg_0) => mthis["poster"] = __arg_0;
 
-  static poster_Getter(mthis) native "HTMLVideoElement_poster_Getter";
-  poster_Getter_(mthis) => poster_Getter(mthis);
+  videoHeight_Getter_(mthis) => mthis["videoHeight"];
 
-  static poster_Setter(mthis, __arg_0) native "HTMLVideoElement_poster_Setter";
-  poster_Setter_(mthis, __arg_0) => poster_Setter(mthis, __arg_0);
+  videoWidth_Getter_(mthis) => mthis["videoWidth"];
 
-  static videoHeight_Getter(mthis) native "HTMLVideoElement_videoHeight_Getter";
-  videoHeight_Getter_(mthis) => videoHeight_Getter(mthis);
+  webkitDecodedFrameCount_Getter_(mthis) => mthis["webkitDecodedFrameCount"];
 
-  static videoWidth_Getter(mthis) native "HTMLVideoElement_videoWidth_Getter";
-  videoWidth_Getter_(mthis) => videoWidth_Getter(mthis);
+  webkitDisplayingFullscreen_Getter_(mthis) => mthis["webkitDisplayingFullscreen"];
 
-  static webkitDecodedFrameCount_Getter(mthis) native "HTMLVideoElement_webkitDecodedFrameCount_Getter";
-  webkitDecodedFrameCount_Getter_(mthis) => webkitDecodedFrameCount_Getter(mthis);
+  webkitDroppedFrameCount_Getter_(mthis) => mthis["webkitDroppedFrameCount"];
 
-  static webkitDisplayingFullscreen_Getter(mthis) native "HTMLVideoElement_webkitDisplayingFullscreen_Getter";
-  webkitDisplayingFullscreen_Getter_(mthis) => webkitDisplayingFullscreen_Getter(mthis);
+  webkitEnterFullScreen_Callback_0_(mthis) => mthis.callMethod("webkitEnterFullScreen", []);
 
-  static webkitDroppedFrameCount_Getter(mthis) native "HTMLVideoElement_webkitDroppedFrameCount_Getter";
-  webkitDroppedFrameCount_Getter_(mthis) => webkitDroppedFrameCount_Getter(mthis);
+  webkitEnterFullscreen_Callback_0_(mthis) => mthis.callMethod("webkitEnterFullscreen", []);
 
-  static webkitEnterFullScreen_Callback_0(mthis) native "HTMLVideoElement_webkitEnterFullScreen_Callback";
-  webkitEnterFullScreen_Callback_0_(mthis) => webkitEnterFullScreen_Callback_0(mthis);
+  webkitExitFullScreen_Callback_0_(mthis) => mthis.callMethod("webkitExitFullScreen", []);
 
-  static webkitEnterFullScreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitEnterFullScreen_Callback";
-  webkitEnterFullScreen_Callback_1_(mthis, __arg_0) => webkitEnterFullScreen_Callback_1(mthis, __arg_0);
+  webkitExitFullscreen_Callback_0_(mthis) => mthis.callMethod("webkitExitFullscreen", []);
 
-  static webkitEnterFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitEnterFullScreen_Callback";
-  webkitEnterFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitEnterFullScreen_Callback_2(mthis, __arg_0, __arg_1);
+  webkitSupportsFullscreen_Getter_(mthis) => mthis["webkitSupportsFullscreen"];
 
-  static webkitEnterFullscreen_Callback_0(mthis) native "HTMLVideoElement_webkitEnterFullscreen_Callback";
-  webkitEnterFullscreen_Callback_0_(mthis) => webkitEnterFullscreen_Callback_0(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static webkitEnterFullscreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitEnterFullscreen_Callback";
-  webkitEnterFullscreen_Callback_1_(mthis, __arg_0) => webkitEnterFullscreen_Callback_1(mthis, __arg_0);
-
-  static webkitEnterFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitEnterFullscreen_Callback";
-  webkitEnterFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitEnterFullscreen_Callback_2(mthis, __arg_0, __arg_1);
-
-  static webkitExitFullScreen_Callback_0(mthis) native "HTMLVideoElement_webkitExitFullScreen_Callback";
-  webkitExitFullScreen_Callback_0_(mthis) => webkitExitFullScreen_Callback_0(mthis);
-
-  static webkitExitFullScreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitExitFullScreen_Callback";
-  webkitExitFullScreen_Callback_1_(mthis, __arg_0) => webkitExitFullScreen_Callback_1(mthis, __arg_0);
-
-  static webkitExitFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitExitFullScreen_Callback";
-  webkitExitFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitExitFullScreen_Callback_2(mthis, __arg_0, __arg_1);
-
-  static webkitExitFullscreen_Callback_0(mthis) native "HTMLVideoElement_webkitExitFullscreen_Callback";
-  webkitExitFullscreen_Callback_0_(mthis) => webkitExitFullscreen_Callback_0(mthis);
-
-  static webkitExitFullscreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitExitFullscreen_Callback";
-  webkitExitFullscreen_Callback_1_(mthis, __arg_0) => webkitExitFullscreen_Callback_1(mthis, __arg_0);
-
-  static webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitExitFullscreen_Callback";
-  webkitExitFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1);
-
-  static webkitSupportsFullscreen_Getter(mthis) native "HTMLVideoElement_webkitSupportsFullscreen_Getter";
-  webkitSupportsFullscreen_Getter_(mthis) => webkitSupportsFullscreen_Getter(mthis);
-
-  static width_Getter(mthis) native "HTMLVideoElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static width_Setter(mthis, __arg_0) native "HTMLVideoElement_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
 }
 
 class BlinkHashChangeEvent extends BlinkEvent {
   static final instance = new BlinkHashChangeEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "HashChangeEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["HashChangeEvent"], [__arg_0, __arg_1]);
 
-  static initHashChangeEvent_Callback_0(mthis) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_0_(mthis) => initHashChangeEvent_Callback_0(mthis);
+  initHashChangeEvent_Callback_0_(mthis) => mthis.callMethod("initHashChangeEvent", []);
 
-  static initHashChangeEvent_Callback_1(mthis, __arg_0) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_1_(mthis, __arg_0) => initHashChangeEvent_Callback_1(mthis, __arg_0);
+  initHashChangeEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initHashChangeEvent", [__arg_0]);
 
-  static initHashChangeEvent_Callback_2(mthis, __arg_0, __arg_1) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_2_(mthis, __arg_0, __arg_1) => initHashChangeEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initHashChangeEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initHashChangeEvent", [__arg_0, __arg_1]);
 
-  static initHashChangeEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initHashChangeEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initHashChangeEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initHashChangeEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initHashChangeEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initHashChangeEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initHashChangeEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initHashChangeEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initHashChangeEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initHashChangeEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initHashChangeEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initHashChangeEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initHashChangeEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initHashChangeEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  newURL_Getter_(mthis) => mthis["newURL"];
 
-  static initHashChangeEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "HashChangeEvent_initHashChangeEvent_Callback";
-  initHashChangeEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initHashChangeEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static newURL_Getter(mthis) native "HashChangeEvent_newURL_Getter";
-  newURL_Getter_(mthis) => newURL_Getter(mthis);
-
-  static oldURL_Getter(mthis) native "HashChangeEvent_oldURL_Getter";
-  oldURL_Getter_(mthis) => oldURL_Getter(mthis);
+  oldURL_Getter_(mthis) => mthis["oldURL"];
 
 }
 
 class BlinkHeaders {
   static final instance = new BlinkHeaders();
 
-  static append_Callback_0(mthis) native "Headers_append_Callback";
-  append_Callback_0_(mthis) => append_Callback_0(mthis);
+  append_Callback_0_(mthis) => mthis.callMethod("append", []);
 
-  static append_Callback_1(mthis, __arg_0) native "Headers_append_Callback";
-  append_Callback_1_(mthis, __arg_0) => append_Callback_1(mthis, __arg_0);
+  append_Callback_1_(mthis, __arg_0) => mthis.callMethod("append", [__arg_0]);
 
-  static append_Callback_2(mthis, __arg_0, __arg_1) native "Headers_append_Callback";
-  append_Callback_2_(mthis, __arg_0, __arg_1) => append_Callback_2(mthis, __arg_0, __arg_1);
+  append_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("append", [__arg_0, __arg_1]);
 
-  static append_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_append_Callback";
-  append_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => append_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  constructorCallback_0_() => new js.JsObject(js.context["Headers"], []);
 
-  static append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Headers_append_Callback";
-  append_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Headers"], [__arg_0]);
 
-  static constructorCallback_0() native "Headers_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  delete_Callback_0_(mthis) => mthis.callMethod("delete", []);
 
-  static constructorCallback_1(__arg_0) native "Headers_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  delete_Callback_1_(mthis, __arg_0) => mthis.callMethod("delete", [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Headers_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  forEach_Callback_0_(mthis) => mthis.callMethod("forEach", []);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Headers_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  forEach_Callback_1_(mthis, __arg_0) => mthis.callMethod("forEach", [__arg_0]);
 
-  static delete_Callback_0(mthis) native "Headers_delete_Callback";
-  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+  forEach_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("forEach", [__arg_0, __arg_1]);
 
-  static delete_Callback_1(mthis, __arg_0) native "Headers_delete_Callback";
-  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+  getAll_Callback_0_(mthis) => mthis.callMethod("getAll", []);
 
-  static delete_Callback_2(mthis, __arg_0, __arg_1) native "Headers_delete_Callback";
-  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+  getAll_Callback_1_(mthis, __arg_0) => mthis.callMethod("getAll", [__arg_0]);
 
-  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_delete_Callback";
-  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  get_Callback_0_(mthis) => mthis.callMethod("get", []);
 
-  static forEach_Callback_0(mthis) native "Headers_forEach_Callback";
-  forEach_Callback_0_(mthis) => forEach_Callback_0(mthis);
+  get_Callback_1_(mthis, __arg_0) => mthis.callMethod("get", [__arg_0]);
 
-  static forEach_Callback_1(mthis, __arg_0) native "Headers_forEach_Callback";
-  forEach_Callback_1_(mthis, __arg_0) => forEach_Callback_1(mthis, __arg_0);
+  has_Callback_0_(mthis) => mthis.callMethod("has", []);
 
-  static forEach_Callback_2(mthis, __arg_0, __arg_1) native "Headers_forEach_Callback";
-  forEach_Callback_2_(mthis, __arg_0, __arg_1) => forEach_Callback_2(mthis, __arg_0, __arg_1);
+  has_Callback_1_(mthis, __arg_0) => mthis.callMethod("has", [__arg_0]);
 
-  static forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_forEach_Callback";
-  forEach_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  set_Callback_0_(mthis) => mthis.callMethod("set", []);
 
-  static forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Headers_forEach_Callback";
-  forEach_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  set_Callback_1_(mthis, __arg_0) => mthis.callMethod("set", [__arg_0]);
 
-  static getAll_Callback_0(mthis) native "Headers_getAll_Callback";
-  getAll_Callback_0_(mthis) => getAll_Callback_0(mthis);
+  set_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("set", [__arg_0, __arg_1]);
 
-  static getAll_Callback_1(mthis, __arg_0) native "Headers_getAll_Callback";
-  getAll_Callback_1_(mthis, __arg_0) => getAll_Callback_1(mthis, __arg_0);
-
-  static getAll_Callback_2(mthis, __arg_0, __arg_1) native "Headers_getAll_Callback";
-  getAll_Callback_2_(mthis, __arg_0, __arg_1) => getAll_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_getAll_Callback";
-  getAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static get_Callback_0(mthis) native "Headers_get_Callback";
-  get_Callback_0_(mthis) => get_Callback_0(mthis);
-
-  static get_Callback_1(mthis, __arg_0) native "Headers_get_Callback";
-  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
-
-  static get_Callback_2(mthis, __arg_0, __arg_1) native "Headers_get_Callback";
-  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
-
-  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_get_Callback";
-  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static has_Callback_0(mthis) native "Headers_has_Callback";
-  has_Callback_0_(mthis) => has_Callback_0(mthis);
-
-  static has_Callback_1(mthis, __arg_0) native "Headers_has_Callback";
-  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
-
-  static has_Callback_2(mthis, __arg_0, __arg_1) native "Headers_has_Callback";
-  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
-
-  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_has_Callback";
-  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static set_Callback_0(mthis) native "Headers_set_Callback";
-  set_Callback_0_(mthis) => set_Callback_0(mthis);
-
-  static set_Callback_1(mthis, __arg_0) native "Headers_set_Callback";
-  set_Callback_1_(mthis, __arg_0) => set_Callback_1(mthis, __arg_0);
-
-  static set_Callback_2(mthis, __arg_0, __arg_1) native "Headers_set_Callback";
-  set_Callback_2_(mthis, __arg_0, __arg_1) => set_Callback_2(mthis, __arg_0, __arg_1);
-
-  static set_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_set_Callback";
-  set_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => set_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static set_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Headers_set_Callback";
-  set_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => set_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static size_Getter(mthis) native "Headers_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
+  size_Getter_(mthis) => mthis["size"];
 
 }
 
 class BlinkHistory {
   static final instance = new BlinkHistory();
 
-  static back_Callback_0(mthis) native "History_back_Callback";
-  back_Callback_0_(mthis) => back_Callback_0(mthis);
+  back_Callback_0_(mthis) => mthis.callMethod("back", []);
 
-  static back_Callback_1(mthis, __arg_0) native "History_back_Callback";
-  back_Callback_1_(mthis, __arg_0) => back_Callback_1(mthis, __arg_0);
+  forward_Callback_0_(mthis) => mthis.callMethod("forward", []);
 
-  static back_Callback_2(mthis, __arg_0, __arg_1) native "History_back_Callback";
-  back_Callback_2_(mthis, __arg_0, __arg_1) => back_Callback_2(mthis, __arg_0, __arg_1);
+  go_Callback_0_(mthis) => mthis.callMethod("go", []);
 
-  static forward_Callback_0(mthis) native "History_forward_Callback";
-  forward_Callback_0_(mthis) => forward_Callback_0(mthis);
+  go_Callback_1_(mthis, __arg_0) => mthis.callMethod("go", [__arg_0]);
 
-  static forward_Callback_1(mthis, __arg_0) native "History_forward_Callback";
-  forward_Callback_1_(mthis, __arg_0) => forward_Callback_1(mthis, __arg_0);
+  length_Getter_(mthis) => mthis["length"];
 
-  static forward_Callback_2(mthis, __arg_0, __arg_1) native "History_forward_Callback";
-  forward_Callback_2_(mthis, __arg_0, __arg_1) => forward_Callback_2(mthis, __arg_0, __arg_1);
+  pushState_Callback_0_(mthis) => mthis.callMethod("pushState", []);
 
-  static go_Callback_0(mthis) native "History_go_Callback";
-  go_Callback_0_(mthis) => go_Callback_0(mthis);
+  pushState_Callback_1_(mthis, __arg_0) => mthis.callMethod("pushState", [__arg_0]);
 
-  static go_Callback_1(mthis, __arg_0) native "History_go_Callback";
-  go_Callback_1_(mthis, __arg_0) => go_Callback_1(mthis, __arg_0);
+  pushState_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("pushState", [__arg_0, __arg_1]);
 
-  static go_Callback_2(mthis, __arg_0, __arg_1) native "History_go_Callback";
-  go_Callback_2_(mthis, __arg_0, __arg_1) => go_Callback_2(mthis, __arg_0, __arg_1);
+  pushState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("pushState", [__arg_0, __arg_1, __arg_2]);
 
-  static go_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "History_go_Callback";
-  go_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => go_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceState_Callback_0_(mthis) => mthis.callMethod("replaceState", []);
 
-  static length_Getter(mthis) native "History_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  replaceState_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceState", [__arg_0]);
 
-  static pushState_Callback_0(mthis) native "History_pushState_Callback";
-  pushState_Callback_0_(mthis) => pushState_Callback_0(mthis);
+  replaceState_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceState", [__arg_0, __arg_1]);
 
-  static pushState_Callback_1(mthis, __arg_0) native "History_pushState_Callback";
-  pushState_Callback_1_(mthis, __arg_0) => pushState_Callback_1(mthis, __arg_0);
+  replaceState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("replaceState", [__arg_0, __arg_1, __arg_2]);
 
-  static pushState_Callback_2(mthis, __arg_0, __arg_1) native "History_pushState_Callback";
-  pushState_Callback_2_(mthis, __arg_0, __arg_1) => pushState_Callback_2(mthis, __arg_0, __arg_1);
-
-  static pushState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "History_pushState_Callback";
-  pushState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => pushState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static pushState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "History_pushState_Callback";
-  pushState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => pushState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static pushState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "History_pushState_Callback";
-  pushState_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => pushState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static replaceState_Callback_0(mthis) native "History_replaceState_Callback";
-  replaceState_Callback_0_(mthis) => replaceState_Callback_0(mthis);
-
-  static replaceState_Callback_1(mthis, __arg_0) native "History_replaceState_Callback";
-  replaceState_Callback_1_(mthis, __arg_0) => replaceState_Callback_1(mthis, __arg_0);
-
-  static replaceState_Callback_2(mthis, __arg_0, __arg_1) native "History_replaceState_Callback";
-  replaceState_Callback_2_(mthis, __arg_0, __arg_1) => replaceState_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "History_replaceState_Callback";
-  replaceState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "History_replaceState_Callback";
-  replaceState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static replaceState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "History_replaceState_Callback";
-  replaceState_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => replaceState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static state_Getter(mthis) native "History_state_Getter";
-  state_Getter_(mthis) => state_Getter(mthis);
+  state_Getter_(mthis) => mthis["state"];
 
 }
 
 class BlinkIDBCursor {
   static final instance = new BlinkIDBCursor();
 
-  static advance_Callback_0(mthis) native "IDBCursor_advance_Callback";
-  advance_Callback_0_(mthis) => advance_Callback_0(mthis);
+  advance_Callback_0_(mthis) => mthis.callMethod("advance", []);
 
-  static advance_Callback_1(mthis, __arg_0) native "IDBCursor_advance_Callback";
-  advance_Callback_1_(mthis, __arg_0) => advance_Callback_1(mthis, __arg_0);
+  advance_Callback_1_(mthis, __arg_0) => mthis.callMethod("advance", [__arg_0]);
 
-  static advance_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_advance_Callback";
-  advance_Callback_2_(mthis, __arg_0, __arg_1) => advance_Callback_2(mthis, __arg_0, __arg_1);
+  continuePrimaryKey_Callback_0_(mthis) => mthis.callMethod("continuePrimaryKey", []);
 
-  static advance_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_advance_Callback";
-  advance_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => advance_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  continuePrimaryKey_Callback_1_(mthis, __arg_0) => mthis.callMethod("continuePrimaryKey", [__arg_0]);
 
-  static continuePrimaryKey_Callback_0(mthis) native "IDBCursor_continuePrimaryKey_Callback";
-  continuePrimaryKey_Callback_0_(mthis) => continuePrimaryKey_Callback_0(mthis);
+  continuePrimaryKey_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("continuePrimaryKey", [__arg_0, __arg_1]);
 
-  static continuePrimaryKey_Callback_1(mthis, __arg_0) native "IDBCursor_continuePrimaryKey_Callback";
-  continuePrimaryKey_Callback_1_(mthis, __arg_0) => continuePrimaryKey_Callback_1(mthis, __arg_0);
+  continue_Callback_0_(mthis) => mthis.callMethod("continue", []);
 
-  static continuePrimaryKey_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_continuePrimaryKey_Callback";
-  continuePrimaryKey_Callback_2_(mthis, __arg_0, __arg_1) => continuePrimaryKey_Callback_2(mthis, __arg_0, __arg_1);
+  continue_Callback_1_(mthis, __arg_0) => mthis.callMethod("continue", [__arg_0]);
 
-  static continuePrimaryKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_continuePrimaryKey_Callback";
-  continuePrimaryKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => continuePrimaryKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  delete_Callback_0_(mthis) => mthis.callMethod("delete", []);
 
-  static continuePrimaryKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBCursor_continuePrimaryKey_Callback";
-  continuePrimaryKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => continuePrimaryKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  direction_Getter_(mthis) => mthis["direction"];
 
-  static continue_Callback_0(mthis) native "IDBCursor_continue_Callback";
-  continue_Callback_0_(mthis) => continue_Callback_0(mthis);
+  key_Getter_(mthis) => mthis["key"];
 
-  static continue_Callback_1(mthis, __arg_0) native "IDBCursor_continue_Callback";
-  continue_Callback_1_(mthis, __arg_0) => continue_Callback_1(mthis, __arg_0);
+  primaryKey_Getter_(mthis) => mthis["primaryKey"];
 
-  static continue_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_continue_Callback";
-  continue_Callback_2_(mthis, __arg_0, __arg_1) => continue_Callback_2(mthis, __arg_0, __arg_1);
+  source_Getter_(mthis) => mthis["source"];
 
-  static continue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_continue_Callback";
-  continue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => continue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  update_Callback_0_(mthis) => mthis.callMethod("update", []);
 
-  static delete_Callback_0(mthis) native "IDBCursor_delete_Callback";
-  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
-
-  static delete_Callback_1(mthis, __arg_0) native "IDBCursor_delete_Callback";
-  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
-
-  static delete_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_delete_Callback";
-  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
-
-  static direction_Getter(mthis) native "IDBCursor_direction_Getter";
-  direction_Getter_(mthis) => direction_Getter(mthis);
-
-  static key_Getter(mthis) native "IDBCursor_key_Getter";
-  key_Getter_(mthis) => key_Getter(mthis);
-
-  static primaryKey_Getter(mthis) native "IDBCursor_primaryKey_Getter";
-  primaryKey_Getter_(mthis) => primaryKey_Getter(mthis);
-
-  static source_Getter(mthis) native "IDBCursor_source_Getter";
-  source_Getter_(mthis) => source_Getter(mthis);
-
-  static update_Callback_0(mthis) native "IDBCursor_update_Callback";
-  update_Callback_0_(mthis) => update_Callback_0(mthis);
-
-  static update_Callback_1(mthis, __arg_0) native "IDBCursor_update_Callback";
-  update_Callback_1_(mthis, __arg_0) => update_Callback_1(mthis, __arg_0);
-
-  static update_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_update_Callback";
-  update_Callback_2_(mthis, __arg_0, __arg_1) => update_Callback_2(mthis, __arg_0, __arg_1);
-
-  static update_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_update_Callback";
-  update_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => update_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  update_Callback_1_(mthis, __arg_0) => mthis.callMethod("update", [__arg_0]);
 
 }
 
 class BlinkIDBCursorWithValue extends BlinkIDBCursor {
   static final instance = new BlinkIDBCursorWithValue();
 
-  static value_Getter(mthis) native "IDBCursorWithValue_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
 }
 
 class BlinkIDBDatabase extends BlinkEventTarget {
   static final instance = new BlinkIDBDatabase();
 
-  static close_Callback_0(mthis) native "IDBDatabase_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "IDBDatabase_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  createObjectStore_Callback_0_(mthis) => mthis.callMethod("createObjectStore", []);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  createObjectStore_Callback_1_(mthis, __arg_0) => mthis.callMethod("createObjectStore", [__arg_0]);
 
-  static createObjectStore_Callback_0(mthis) native "IDBDatabase_createObjectStore_Callback";
-  createObjectStore_Callback_0_(mthis) => createObjectStore_Callback_0(mthis);
+  createObjectStore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createObjectStore", [__arg_0, __arg_1]);
 
-  static createObjectStore_Callback_1(mthis, __arg_0) native "IDBDatabase_createObjectStore_Callback";
-  createObjectStore_Callback_1_(mthis, __arg_0) => createObjectStore_Callback_1(mthis, __arg_0);
+  deleteObjectStore_Callback_0_(mthis) => mthis.callMethod("deleteObjectStore", []);
 
-  static createObjectStore_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_createObjectStore_Callback";
-  createObjectStore_Callback_2_(mthis, __arg_0, __arg_1) => createObjectStore_Callback_2(mthis, __arg_0, __arg_1);
+  deleteObjectStore_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteObjectStore", [__arg_0]);
 
-  static createObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBDatabase_createObjectStore_Callback";
-  createObjectStore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  name_Getter_(mthis) => mthis["name"];
 
-  static createObjectStore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBDatabase_createObjectStore_Callback";
-  createObjectStore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createObjectStore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  objectStoreNames_Getter_(mthis) => mthis["objectStoreNames"];
 
-  static deleteObjectStore_Callback_0(mthis) native "IDBDatabase_deleteObjectStore_Callback";
-  deleteObjectStore_Callback_0_(mthis) => deleteObjectStore_Callback_0(mthis);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static deleteObjectStore_Callback_1(mthis, __arg_0) native "IDBDatabase_deleteObjectStore_Callback";
-  deleteObjectStore_Callback_1_(mthis, __arg_0) => deleteObjectStore_Callback_1(mthis, __arg_0);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static deleteObjectStore_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_deleteObjectStore_Callback";
-  deleteObjectStore_Callback_2_(mthis, __arg_0, __arg_1) => deleteObjectStore_Callback_2(mthis, __arg_0, __arg_1);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static deleteObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBDatabase_deleteObjectStore_Callback";
-  deleteObjectStore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static name_Getter(mthis) native "IDBDatabase_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static objectStoreNames_Getter(mthis) native "IDBDatabase_objectStoreNames_Getter";
-  objectStoreNames_Getter_(mthis) => objectStoreNames_Getter(mthis);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onabort_Getter(mthis) native "IDBDatabase_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  onversionchange_Getter_(mthis) => mthis["onversionchange"];
 
-  static onabort_Setter(mthis, __arg_0) native "IDBDatabase_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  onversionchange_Setter_(mthis, __arg_0) => mthis["onversionchange"] = __arg_0;
 
-  static onclose_Getter(mthis) native "IDBDatabase_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  transaction_Callback_0_(mthis) => mthis.callMethod("transaction", []);
 
-  static onclose_Setter(mthis, __arg_0) native "IDBDatabase_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  transaction_Callback_1_(mthis, __arg_0) => mthis.callMethod("transaction", [__arg_0]);
 
-  static onerror_Getter(mthis) native "IDBDatabase_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  transaction_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("transaction", [__arg_0, __arg_1]);
 
-  static onerror_Setter(mthis, __arg_0) native "IDBDatabase_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
-
-  static onversionchange_Getter(mthis) native "IDBDatabase_onversionchange_Getter";
-  onversionchange_Getter_(mthis) => onversionchange_Getter(mthis);
-
-  static onversionchange_Setter(mthis, __arg_0) native "IDBDatabase_onversionchange_Setter";
-  onversionchange_Setter_(mthis, __arg_0) => onversionchange_Setter(mthis, __arg_0);
-
-  static transaction_Callback_0(mthis) native "IDBDatabase_transaction_Callback";
-  transaction_Callback_0_(mthis) => transaction_Callback_0(mthis);
-
-  static transaction_Callback_1(mthis, __arg_0) native "IDBDatabase_transaction_Callback";
-  transaction_Callback_1_(mthis, __arg_0) => transaction_Callback_1(mthis, __arg_0);
-
-  static transaction_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_transaction_Callback";
-  transaction_Callback_2_(mthis, __arg_0, __arg_1) => transaction_Callback_2(mthis, __arg_0, __arg_1);
-
-  static transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBDatabase_transaction_Callback";
-  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBDatabase_transaction_Callback";
-  transaction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static version_Getter(mthis) native "IDBDatabase_version_Getter";
-  version_Getter_(mthis) => version_Getter(mthis);
+  version_Getter_(mthis) => mthis["version"];
 
 }
 
 class BlinkIDBFactory {
   static final instance = new BlinkIDBFactory();
 
-  static cmp_Callback_0(mthis) native "IDBFactory_cmp_Callback";
-  cmp_Callback_0_(mthis) => cmp_Callback_0(mthis);
+  cmp_Callback_0_(mthis) => mthis.callMethod("cmp", []);
 
-  static cmp_Callback_1(mthis, __arg_0) native "IDBFactory_cmp_Callback";
-  cmp_Callback_1_(mthis, __arg_0) => cmp_Callback_1(mthis, __arg_0);
+  cmp_Callback_1_(mthis, __arg_0) => mthis.callMethod("cmp", [__arg_0]);
 
-  static cmp_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_cmp_Callback";
-  cmp_Callback_2_(mthis, __arg_0, __arg_1) => cmp_Callback_2(mthis, __arg_0, __arg_1);
+  cmp_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("cmp", [__arg_0, __arg_1]);
 
-  static cmp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBFactory_cmp_Callback";
-  cmp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cmp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  deleteDatabase_Callback_0_(mthis) => mthis.callMethod("deleteDatabase", []);
 
-  static cmp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBFactory_cmp_Callback";
-  cmp_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => cmp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  deleteDatabase_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteDatabase", [__arg_0]);
 
-  static deleteDatabase_Callback_0(mthis) native "IDBFactory_deleteDatabase_Callback";
-  deleteDatabase_Callback_0_(mthis) => deleteDatabase_Callback_0(mthis);
+  open_Callback_0_(mthis) => mthis.callMethod("open", []);
 
-  static deleteDatabase_Callback_1(mthis, __arg_0) native "IDBFactory_deleteDatabase_Callback";
-  deleteDatabase_Callback_1_(mthis, __arg_0) => deleteDatabase_Callback_1(mthis, __arg_0);
+  open_Callback_1_(mthis, __arg_0) => mthis.callMethod("open", [__arg_0]);
 
-  static deleteDatabase_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_deleteDatabase_Callback";
-  deleteDatabase_Callback_2_(mthis, __arg_0, __arg_1) => deleteDatabase_Callback_2(mthis, __arg_0, __arg_1);
+  open_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("open", [__arg_0, __arg_1]);
 
-  static deleteDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBFactory_deleteDatabase_Callback";
-  deleteDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static open_Callback_0(mthis) native "IDBFactory_open_Callback";
-  open_Callback_0_(mthis) => open_Callback_0(mthis);
-
-  static open_Callback_1(mthis, __arg_0) native "IDBFactory_open_Callback";
-  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
-
-  static open_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_open_Callback";
-  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
-
-  static open_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBFactory_open_Callback";
-  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => open_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBFactory_open_Callback";
-  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static webkitGetDatabaseNames_Callback_0(mthis) native "IDBFactory_webkitGetDatabaseNames_Callback";
-  webkitGetDatabaseNames_Callback_0_(mthis) => webkitGetDatabaseNames_Callback_0(mthis);
-
-  static webkitGetDatabaseNames_Callback_1(mthis, __arg_0) native "IDBFactory_webkitGetDatabaseNames_Callback";
-  webkitGetDatabaseNames_Callback_1_(mthis, __arg_0) => webkitGetDatabaseNames_Callback_1(mthis, __arg_0);
-
-  static webkitGetDatabaseNames_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_webkitGetDatabaseNames_Callback";
-  webkitGetDatabaseNames_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetDatabaseNames_Callback_2(mthis, __arg_0, __arg_1);
+  webkitGetDatabaseNames_Callback_0_(mthis) => mthis.callMethod("webkitGetDatabaseNames", []);
 
 }
 
 class BlinkIDBIndex {
   static final instance = new BlinkIDBIndex();
 
-  static count_Callback_0(mthis) native "IDBIndex_count_Callback";
-  count_Callback_0_(mthis) => count_Callback_0(mthis);
+  count_Callback_0_(mthis) => mthis.callMethod("count", []);
 
-  static count_Callback_1(mthis, __arg_0) native "IDBIndex_count_Callback";
-  count_Callback_1_(mthis, __arg_0) => count_Callback_1(mthis, __arg_0);
+  count_Callback_1_(mthis, __arg_0) => mthis.callMethod("count", [__arg_0]);
 
-  static count_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_count_Callback";
-  count_Callback_2_(mthis, __arg_0, __arg_1) => count_Callback_2(mthis, __arg_0, __arg_1);
+  getKey_Callback_0_(mthis) => mthis.callMethod("getKey", []);
 
-  static count_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_count_Callback";
-  count_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => count_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getKey_Callback_1_(mthis, __arg_0) => mthis.callMethod("getKey", [__arg_0]);
 
-  static getKey_Callback_0(mthis) native "IDBIndex_getKey_Callback";
-  getKey_Callback_0_(mthis) => getKey_Callback_0(mthis);
+  get_Callback_0_(mthis) => mthis.callMethod("get", []);
 
-  static getKey_Callback_1(mthis, __arg_0) native "IDBIndex_getKey_Callback";
-  getKey_Callback_1_(mthis, __arg_0) => getKey_Callback_1(mthis, __arg_0);
+  get_Callback_1_(mthis, __arg_0) => mthis.callMethod("get", [__arg_0]);
 
-  static getKey_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_getKey_Callback";
-  getKey_Callback_2_(mthis, __arg_0, __arg_1) => getKey_Callback_2(mthis, __arg_0, __arg_1);
+  keyPath_Getter_(mthis) => mthis["keyPath"];
 
-  static getKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_getKey_Callback";
-  getKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  multiEntry_Getter_(mthis) => mthis["multiEntry"];
 
-  static get_Callback_0(mthis) native "IDBIndex_get_Callback";
-  get_Callback_0_(mthis) => get_Callback_0(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static get_Callback_1(mthis, __arg_0) native "IDBIndex_get_Callback";
-  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+  objectStore_Getter_(mthis) => mthis["objectStore"];
 
-  static get_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_get_Callback";
-  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+  openCursor_Callback_0_(mthis) => mthis.callMethod("openCursor", []);
 
-  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_get_Callback";
-  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  openCursor_Callback_1_(mthis, __arg_0) => mthis.callMethod("openCursor", [__arg_0]);
 
-  static keyPath_Getter(mthis) native "IDBIndex_keyPath_Getter";
-  keyPath_Getter_(mthis) => keyPath_Getter(mthis);
+  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("openCursor", [__arg_0, __arg_1]);
 
-  static multiEntry_Getter(mthis) native "IDBIndex_multiEntry_Getter";
-  multiEntry_Getter_(mthis) => multiEntry_Getter(mthis);
+  openKeyCursor_Callback_0_(mthis) => mthis.callMethod("openKeyCursor", []);
 
-  static name_Getter(mthis) native "IDBIndex_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  openKeyCursor_Callback_1_(mthis, __arg_0) => mthis.callMethod("openKeyCursor", [__arg_0]);
 
-  static objectStore_Getter(mthis) native "IDBIndex_objectStore_Getter";
-  objectStore_Getter_(mthis) => objectStore_Getter(mthis);
+  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("openKeyCursor", [__arg_0, __arg_1]);
 
-  static openCursor_Callback_0(mthis) native "IDBIndex_openCursor_Callback";
-  openCursor_Callback_0_(mthis) => openCursor_Callback_0(mthis);
-
-  static openCursor_Callback_1(mthis, __arg_0) native "IDBIndex_openCursor_Callback";
-  openCursor_Callback_1_(mthis, __arg_0) => openCursor_Callback_1(mthis, __arg_0);
-
-  static openCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_openCursor_Callback";
-  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => openCursor_Callback_2(mthis, __arg_0, __arg_1);
-
-  static openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_openCursor_Callback";
-  openCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBIndex_openCursor_Callback";
-  openCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static openKeyCursor_Callback_0(mthis) native "IDBIndex_openKeyCursor_Callback";
-  openKeyCursor_Callback_0_(mthis) => openKeyCursor_Callback_0(mthis);
-
-  static openKeyCursor_Callback_1(mthis, __arg_0) native "IDBIndex_openKeyCursor_Callback";
-  openKeyCursor_Callback_1_(mthis, __arg_0) => openKeyCursor_Callback_1(mthis, __arg_0);
-
-  static openKeyCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_openKeyCursor_Callback";
-  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => openKeyCursor_Callback_2(mthis, __arg_0, __arg_1);
-
-  static openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_openKeyCursor_Callback";
-  openKeyCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBIndex_openKeyCursor_Callback";
-  openKeyCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static unique_Getter(mthis) native "IDBIndex_unique_Getter";
-  unique_Getter_(mthis) => unique_Getter(mthis);
+  unique_Getter_(mthis) => mthis["unique"];
 
 }
 
 class BlinkIDBKeyRange {
   static final instance = new BlinkIDBKeyRange();
 
-  static bound_Callback_0() native "IDBKeyRange_bound_Callback";
-  bound_Callback_0_() => bound_Callback_0();
+  bound_Callback_0_() => js.context["IDBKeyRange"].callMethod("bound", []);
 
-  static bound_Callback_1(__arg_0) native "IDBKeyRange_bound_Callback";
-  bound_Callback_1_(__arg_0) => bound_Callback_1(__arg_0);
+  bound_Callback_1_(__arg_0) => js.context["IDBKeyRange"].callMethod("bound", [__arg_0]);
 
-  static bound_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_bound_Callback";
-  bound_Callback_2_(__arg_0, __arg_1) => bound_Callback_2(__arg_0, __arg_1);
+  bound_Callback_2_(__arg_0, __arg_1) => js.context["IDBKeyRange"].callMethod("bound", [__arg_0, __arg_1]);
 
-  static bound_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_bound_Callback";
-  bound_Callback_3_(__arg_0, __arg_1, __arg_2) => bound_Callback_3(__arg_0, __arg_1, __arg_2);
+  bound_Callback_3_(__arg_0, __arg_1, __arg_2) => js.context["IDBKeyRange"].callMethod("bound", [__arg_0, __arg_1, __arg_2]);
 
-  static bound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "IDBKeyRange_bound_Callback";
-  bound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => bound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  bound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => js.context["IDBKeyRange"].callMethod("bound", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static bound_Callback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "IDBKeyRange_bound_Callback";
-  bound_Callback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bound_Callback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  lowerBound_Callback_0_() => js.context["IDBKeyRange"].callMethod("lowerBound", []);
 
-  static bound_Callback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "IDBKeyRange_bound_Callback";
-  bound_Callback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => bound_Callback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  lowerBound_Callback_1_(__arg_0) => js.context["IDBKeyRange"].callMethod("lowerBound", [__arg_0]);
 
-  static lowerBound_Callback_0() native "IDBKeyRange_lowerBound_Callback";
-  lowerBound_Callback_0_() => lowerBound_Callback_0();
+  lowerBound_Callback_2_(__arg_0, __arg_1) => js.context["IDBKeyRange"].callMethod("lowerBound", [__arg_0, __arg_1]);
 
-  static lowerBound_Callback_1(__arg_0) native "IDBKeyRange_lowerBound_Callback";
-  lowerBound_Callback_1_(__arg_0) => lowerBound_Callback_1(__arg_0);
+  lowerOpen_Getter_(mthis) => mthis["lowerOpen"];
 
-  static lowerBound_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_lowerBound_Callback";
-  lowerBound_Callback_2_(__arg_0, __arg_1) => lowerBound_Callback_2(__arg_0, __arg_1);
+  lower_Getter_(mthis) => mthis["lower"];
 
-  static lowerBound_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_lowerBound_Callback";
-  lowerBound_Callback_3_(__arg_0, __arg_1, __arg_2) => lowerBound_Callback_3(__arg_0, __arg_1, __arg_2);
+  only_Callback_0_() => js.context["IDBKeyRange"].callMethod("only", []);
 
-  static lowerBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "IDBKeyRange_lowerBound_Callback";
-  lowerBound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => lowerBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  only_Callback_1_(__arg_0) => js.context["IDBKeyRange"].callMethod("only", [__arg_0]);
 
-  static lowerOpen_Getter(mthis) native "IDBKeyRange_lowerOpen_Getter";
-  lowerOpen_Getter_(mthis) => lowerOpen_Getter(mthis);
+  upperBound_Callback_0_() => js.context["IDBKeyRange"].callMethod("upperBound", []);
 
-  static lower_Getter(mthis) native "IDBKeyRange_lower_Getter";
-  lower_Getter_(mthis) => lower_Getter(mthis);
+  upperBound_Callback_1_(__arg_0) => js.context["IDBKeyRange"].callMethod("upperBound", [__arg_0]);
 
-  static only_Callback_0() native "IDBKeyRange_only_Callback";
-  only_Callback_0_() => only_Callback_0();
+  upperBound_Callback_2_(__arg_0, __arg_1) => js.context["IDBKeyRange"].callMethod("upperBound", [__arg_0, __arg_1]);
 
-  static only_Callback_1(__arg_0) native "IDBKeyRange_only_Callback";
-  only_Callback_1_(__arg_0) => only_Callback_1(__arg_0);
+  upperOpen_Getter_(mthis) => mthis["upperOpen"];
 
-  static only_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_only_Callback";
-  only_Callback_2_(__arg_0, __arg_1) => only_Callback_2(__arg_0, __arg_1);
-
-  static only_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_only_Callback";
-  only_Callback_3_(__arg_0, __arg_1, __arg_2) => only_Callback_3(__arg_0, __arg_1, __arg_2);
-
-  static upperBound_Callback_0() native "IDBKeyRange_upperBound_Callback";
-  upperBound_Callback_0_() => upperBound_Callback_0();
-
-  static upperBound_Callback_1(__arg_0) native "IDBKeyRange_upperBound_Callback";
-  upperBound_Callback_1_(__arg_0) => upperBound_Callback_1(__arg_0);
-
-  static upperBound_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_upperBound_Callback";
-  upperBound_Callback_2_(__arg_0, __arg_1) => upperBound_Callback_2(__arg_0, __arg_1);
-
-  static upperBound_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_upperBound_Callback";
-  upperBound_Callback_3_(__arg_0, __arg_1, __arg_2) => upperBound_Callback_3(__arg_0, __arg_1, __arg_2);
-
-  static upperBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "IDBKeyRange_upperBound_Callback";
-  upperBound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => upperBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
-
-  static upperOpen_Getter(mthis) native "IDBKeyRange_upperOpen_Getter";
-  upperOpen_Getter_(mthis) => upperOpen_Getter(mthis);
-
-  static upper_Getter(mthis) native "IDBKeyRange_upper_Getter";
-  upper_Getter_(mthis) => upper_Getter(mthis);
+  upper_Getter_(mthis) => mthis["upper"];
 
 }
 
 class BlinkIDBObjectStore {
   static final instance = new BlinkIDBObjectStore();
 
-  static add_Callback_0(mthis) native "IDBObjectStore_add_Callback";
-  add_Callback_0_(mthis) => add_Callback_0(mthis);
+  add_Callback_0_(mthis) => mthis.callMethod("add", []);
 
-  static add_Callback_1(mthis, __arg_0) native "IDBObjectStore_add_Callback";
-  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+  add_Callback_1_(mthis, __arg_0) => mthis.callMethod("add", [__arg_0]);
 
-  static add_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_add_Callback";
-  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+  add_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("add", [__arg_0, __arg_1]);
 
-  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_add_Callback";
-  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  autoIncrement_Getter_(mthis) => mthis["autoIncrement"];
 
-  static add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_add_Callback";
-  add_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static autoIncrement_Getter(mthis) native "IDBObjectStore_autoIncrement_Getter";
-  autoIncrement_Getter_(mthis) => autoIncrement_Getter(mthis);
+  count_Callback_0_(mthis) => mthis.callMethod("count", []);
 
-  static clear_Callback_0(mthis) native "IDBObjectStore_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  count_Callback_1_(mthis, __arg_0) => mthis.callMethod("count", [__arg_0]);
 
-  static clear_Callback_1(mthis, __arg_0) native "IDBObjectStore_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  createIndex_Callback_0_(mthis) => mthis.callMethod("createIndex", []);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  createIndex_Callback_1_(mthis, __arg_0) => mthis.callMethod("createIndex", [__arg_0]);
 
-  static count_Callback_0(mthis) native "IDBObjectStore_count_Callback";
-  count_Callback_0_(mthis) => count_Callback_0(mthis);
+  createIndex_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createIndex", [__arg_0, __arg_1]);
 
-  static count_Callback_1(mthis, __arg_0) native "IDBObjectStore_count_Callback";
-  count_Callback_1_(mthis, __arg_0) => count_Callback_1(mthis, __arg_0);
+  createIndex_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createIndex", [__arg_0, __arg_1, __arg_2]);
 
-  static count_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_count_Callback";
-  count_Callback_2_(mthis, __arg_0, __arg_1) => count_Callback_2(mthis, __arg_0, __arg_1);
+  deleteIndex_Callback_0_(mthis) => mthis.callMethod("deleteIndex", []);
 
-  static count_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_count_Callback";
-  count_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => count_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  deleteIndex_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteIndex", [__arg_0]);
 
-  static createIndex_Callback_0(mthis) native "IDBObjectStore_createIndex_Callback";
-  createIndex_Callback_0_(mthis) => createIndex_Callback_0(mthis);
+  delete_Callback_0_(mthis) => mthis.callMethod("delete", []);
 
-  static createIndex_Callback_1(mthis, __arg_0) native "IDBObjectStore_createIndex_Callback";
-  createIndex_Callback_1_(mthis, __arg_0) => createIndex_Callback_1(mthis, __arg_0);
+  delete_Callback_1_(mthis, __arg_0) => mthis.callMethod("delete", [__arg_0]);
 
-  static createIndex_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_createIndex_Callback";
-  createIndex_Callback_2_(mthis, __arg_0, __arg_1) => createIndex_Callback_2(mthis, __arg_0, __arg_1);
+  get_Callback_0_(mthis) => mthis.callMethod("get", []);
 
-  static createIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_createIndex_Callback";
-  createIndex_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  get_Callback_1_(mthis, __arg_0) => mthis.callMethod("get", [__arg_0]);
 
-  static createIndex_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_createIndex_Callback";
-  createIndex_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createIndex_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  indexNames_Getter_(mthis) => mthis["indexNames"];
 
-  static createIndex_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "IDBObjectStore_createIndex_Callback";
-  createIndex_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createIndex_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  index_Callback_0_(mthis) => mthis.callMethod("index", []);
 
-  static deleteIndex_Callback_0(mthis) native "IDBObjectStore_deleteIndex_Callback";
-  deleteIndex_Callback_0_(mthis) => deleteIndex_Callback_0(mthis);
+  index_Callback_1_(mthis, __arg_0) => mthis.callMethod("index", [__arg_0]);
 
-  static deleteIndex_Callback_1(mthis, __arg_0) native "IDBObjectStore_deleteIndex_Callback";
-  deleteIndex_Callback_1_(mthis, __arg_0) => deleteIndex_Callback_1(mthis, __arg_0);
+  keyPath_Getter_(mthis) => mthis["keyPath"];
 
-  static deleteIndex_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_deleteIndex_Callback";
-  deleteIndex_Callback_2_(mthis, __arg_0, __arg_1) => deleteIndex_Callback_2(mthis, __arg_0, __arg_1);
+  name_Getter_(mthis) => mthis["name"];
 
-  static deleteIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_deleteIndex_Callback";
-  deleteIndex_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  openCursor_Callback_0_(mthis) => mthis.callMethod("openCursor", []);
 
-  static delete_Callback_0(mthis) native "IDBObjectStore_delete_Callback";
-  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+  openCursor_Callback_1_(mthis, __arg_0) => mthis.callMethod("openCursor", [__arg_0]);
 
-  static delete_Callback_1(mthis, __arg_0) native "IDBObjectStore_delete_Callback";
-  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("openCursor", [__arg_0, __arg_1]);
 
-  static delete_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_delete_Callback";
-  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+  openKeyCursor_Callback_0_(mthis) => mthis.callMethod("openKeyCursor", []);
 
-  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_delete_Callback";
-  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  openKeyCursor_Callback_1_(mthis, __arg_0) => mthis.callMethod("openKeyCursor", [__arg_0]);
 
-  static get_Callback_0(mthis) native "IDBObjectStore_get_Callback";
-  get_Callback_0_(mthis) => get_Callback_0(mthis);
+  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("openKeyCursor", [__arg_0, __arg_1]);
 
-  static get_Callback_1(mthis, __arg_0) native "IDBObjectStore_get_Callback";
-  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+  put_Callback_0_(mthis) => mthis.callMethod("put", []);
 
-  static get_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_get_Callback";
-  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+  put_Callback_1_(mthis, __arg_0) => mthis.callMethod("put", [__arg_0]);
 
-  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_get_Callback";
-  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  put_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("put", [__arg_0, __arg_1]);
 
-  static indexNames_Getter(mthis) native "IDBObjectStore_indexNames_Getter";
-  indexNames_Getter_(mthis) => indexNames_Getter(mthis);
-
-  static index_Callback_0(mthis) native "IDBObjectStore_index_Callback";
-  index_Callback_0_(mthis) => index_Callback_0(mthis);
-
-  static index_Callback_1(mthis, __arg_0) native "IDBObjectStore_index_Callback";
-  index_Callback_1_(mthis, __arg_0) => index_Callback_1(mthis, __arg_0);
-
-  static index_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_index_Callback";
-  index_Callback_2_(mthis, __arg_0, __arg_1) => index_Callback_2(mthis, __arg_0, __arg_1);
-
-  static index_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_index_Callback";
-  index_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => index_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static keyPath_Getter(mthis) native "IDBObjectStore_keyPath_Getter";
-  keyPath_Getter_(mthis) => keyPath_Getter(mthis);
-
-  static name_Getter(mthis) native "IDBObjectStore_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
-
-  static openCursor_Callback_0(mthis) native "IDBObjectStore_openCursor_Callback";
-  openCursor_Callback_0_(mthis) => openCursor_Callback_0(mthis);
-
-  static openCursor_Callback_1(mthis, __arg_0) native "IDBObjectStore_openCursor_Callback";
-  openCursor_Callback_1_(mthis, __arg_0) => openCursor_Callback_1(mthis, __arg_0);
-
-  static openCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_openCursor_Callback";
-  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => openCursor_Callback_2(mthis, __arg_0, __arg_1);
-
-  static openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_openCursor_Callback";
-  openCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_openCursor_Callback";
-  openCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static openKeyCursor_Callback_0(mthis) native "IDBObjectStore_openKeyCursor_Callback";
-  openKeyCursor_Callback_0_(mthis) => openKeyCursor_Callback_0(mthis);
-
-  static openKeyCursor_Callback_1(mthis, __arg_0) native "IDBObjectStore_openKeyCursor_Callback";
-  openKeyCursor_Callback_1_(mthis, __arg_0) => openKeyCursor_Callback_1(mthis, __arg_0);
-
-  static openKeyCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_openKeyCursor_Callback";
-  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => openKeyCursor_Callback_2(mthis, __arg_0, __arg_1);
-
-  static openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_openKeyCursor_Callback";
-  openKeyCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_openKeyCursor_Callback";
-  openKeyCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static put_Callback_0(mthis) native "IDBObjectStore_put_Callback";
-  put_Callback_0_(mthis) => put_Callback_0(mthis);
-
-  static put_Callback_1(mthis, __arg_0) native "IDBObjectStore_put_Callback";
-  put_Callback_1_(mthis, __arg_0) => put_Callback_1(mthis, __arg_0);
-
-  static put_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_put_Callback";
-  put_Callback_2_(mthis, __arg_0, __arg_1) => put_Callback_2(mthis, __arg_0, __arg_1);
-
-  static put_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_put_Callback";
-  put_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => put_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_put_Callback";
-  put_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static transaction_Getter(mthis) native "IDBObjectStore_transaction_Getter";
-  transaction_Getter_(mthis) => transaction_Getter(mthis);
+  transaction_Getter_(mthis) => mthis["transaction"];
 
 }
 
 class BlinkIDBOpenDBRequest extends BlinkIDBRequest {
   static final instance = new BlinkIDBOpenDBRequest();
 
-  static onblocked_Getter(mthis) native "IDBOpenDBRequest_onblocked_Getter";
-  onblocked_Getter_(mthis) => onblocked_Getter(mthis);
+  onblocked_Getter_(mthis) => mthis["onblocked"];
 
-  static onblocked_Setter(mthis, __arg_0) native "IDBOpenDBRequest_onblocked_Setter";
-  onblocked_Setter_(mthis, __arg_0) => onblocked_Setter(mthis, __arg_0);
+  onblocked_Setter_(mthis, __arg_0) => mthis["onblocked"] = __arg_0;
 
-  static onupgradeneeded_Getter(mthis) native "IDBOpenDBRequest_onupgradeneeded_Getter";
-  onupgradeneeded_Getter_(mthis) => onupgradeneeded_Getter(mthis);
+  onupgradeneeded_Getter_(mthis) => mthis["onupgradeneeded"];
 
-  static onupgradeneeded_Setter(mthis, __arg_0) native "IDBOpenDBRequest_onupgradeneeded_Setter";
-  onupgradeneeded_Setter_(mthis, __arg_0) => onupgradeneeded_Setter(mthis, __arg_0);
+  onupgradeneeded_Setter_(mthis, __arg_0) => mthis["onupgradeneeded"] = __arg_0;
 
 }
 
 class BlinkIDBRequest extends BlinkEventTarget {
   static final instance = new BlinkIDBRequest();
 
-  static error_Getter(mthis) native "IDBRequest_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  error_Getter_(mthis) => mthis["error"];
 
-  static onerror_Getter(mthis) native "IDBRequest_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onerror_Setter(mthis, __arg_0) native "IDBRequest_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onsuccess_Getter(mthis) native "IDBRequest_onsuccess_Getter";
-  onsuccess_Getter_(mthis) => onsuccess_Getter(mthis);
+  onsuccess_Getter_(mthis) => mthis["onsuccess"];
 
-  static onsuccess_Setter(mthis, __arg_0) native "IDBRequest_onsuccess_Setter";
-  onsuccess_Setter_(mthis, __arg_0) => onsuccess_Setter(mthis, __arg_0);
+  onsuccess_Setter_(mthis, __arg_0) => mthis["onsuccess"] = __arg_0;
 
-  static readyState_Getter(mthis) native "IDBRequest_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static result_Getter(mthis) native "IDBRequest_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static source_Getter(mthis) native "IDBRequest_source_Getter";
-  source_Getter_(mthis) => source_Getter(mthis);
+  source_Getter_(mthis) => mthis["source"];
 
-  static transaction_Getter(mthis) native "IDBRequest_transaction_Getter";
-  transaction_Getter_(mthis) => transaction_Getter(mthis);
+  transaction_Getter_(mthis) => mthis["transaction"];
 
 }
 
 class BlinkIDBTransaction extends BlinkEventTarget {
   static final instance = new BlinkIDBTransaction();
 
-  static abort_Callback_0(mthis) native "IDBTransaction_abort_Callback";
-  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+  abort_Callback_0_(mthis) => mthis.callMethod("abort", []);
 
-  static abort_Callback_1(mthis, __arg_0) native "IDBTransaction_abort_Callback";
-  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+  db_Getter_(mthis) => mthis["db"];
 
-  static abort_Callback_2(mthis, __arg_0, __arg_1) native "IDBTransaction_abort_Callback";
-  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+  error_Getter_(mthis) => mthis["error"];
 
-  static db_Getter(mthis) native "IDBTransaction_db_Getter";
-  db_Getter_(mthis) => db_Getter(mthis);
+  mode_Getter_(mthis) => mthis["mode"];
 
-  static error_Getter(mthis) native "IDBTransaction_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  objectStore_Callback_0_(mthis) => mthis.callMethod("objectStore", []);
 
-  static mode_Getter(mthis) native "IDBTransaction_mode_Getter";
-  mode_Getter_(mthis) => mode_Getter(mthis);
+  objectStore_Callback_1_(mthis, __arg_0) => mthis.callMethod("objectStore", [__arg_0]);
 
-  static objectStore_Callback_0(mthis) native "IDBTransaction_objectStore_Callback";
-  objectStore_Callback_0_(mthis) => objectStore_Callback_0(mthis);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static objectStore_Callback_1(mthis, __arg_0) native "IDBTransaction_objectStore_Callback";
-  objectStore_Callback_1_(mthis, __arg_0) => objectStore_Callback_1(mthis, __arg_0);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static objectStore_Callback_2(mthis, __arg_0, __arg_1) native "IDBTransaction_objectStore_Callback";
-  objectStore_Callback_2_(mthis, __arg_0, __arg_1) => objectStore_Callback_2(mthis, __arg_0, __arg_1);
+  oncomplete_Getter_(mthis) => mthis["oncomplete"];
 
-  static objectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBTransaction_objectStore_Callback";
-  objectStore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => objectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  oncomplete_Setter_(mthis, __arg_0) => mthis["oncomplete"] = __arg_0;
 
-  static onabort_Getter(mthis) native "IDBTransaction_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onabort_Setter(mthis, __arg_0) native "IDBTransaction_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
-
-  static oncomplete_Getter(mthis) native "IDBTransaction_oncomplete_Getter";
-  oncomplete_Getter_(mthis) => oncomplete_Getter(mthis);
-
-  static oncomplete_Setter(mthis, __arg_0) native "IDBTransaction_oncomplete_Setter";
-  oncomplete_Setter_(mthis, __arg_0) => oncomplete_Setter(mthis, __arg_0);
-
-  static onerror_Getter(mthis) native "IDBTransaction_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
-
-  static onerror_Setter(mthis, __arg_0) native "IDBTransaction_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
 }
 
 class BlinkIDBVersionChangeEvent extends BlinkEvent {
   static final instance = new BlinkIDBVersionChangeEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "IDBVersionChangeEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["IDBVersionChangeEvent"], [__arg_0, __arg_1]);
 
-  static dataLossMessage_Getter(mthis) native "IDBVersionChangeEvent_dataLossMessage_Getter";
-  dataLossMessage_Getter_(mthis) => dataLossMessage_Getter(mthis);
+  dataLossMessage_Getter_(mthis) => mthis["dataLossMessage"];
 
-  static dataLoss_Getter(mthis) native "IDBVersionChangeEvent_dataLoss_Getter";
-  dataLoss_Getter_(mthis) => dataLoss_Getter(mthis);
+  dataLoss_Getter_(mthis) => mthis["dataLoss"];
 
-  static newVersion_Getter(mthis) native "IDBVersionChangeEvent_newVersion_Getter";
-  newVersion_Getter_(mthis) => newVersion_Getter(mthis);
+  newVersion_Getter_(mthis) => mthis["newVersion"];
 
-  static oldVersion_Getter(mthis) native "IDBVersionChangeEvent_oldVersion_Getter";
-  oldVersion_Getter_(mthis) => oldVersion_Getter(mthis);
+  oldVersion_Getter_(mthis) => mthis["oldVersion"];
 
 }
 
 class BlinkImageBitmap {
   static final instance = new BlinkImageBitmap();
 
-  static height_Getter(mthis) native "ImageBitmap_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static width_Getter(mthis) native "ImageBitmap_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
 }
 
 class BlinkImageData {
   static final instance = new BlinkImageData();
 
-  static constructorCallback_0() native "ImageData_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["ImageData"], []);
 
-  static constructorCallback_1(__arg_0) native "ImageData_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["ImageData"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "ImageData_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["ImageData"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "ImageData_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["ImageData"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "ImageData_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  data_Getter_(mthis) => mthis["data"];
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "ImageData_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  height_Getter_(mthis) => mthis["height"];
 
-  static data_Getter(mthis) native "ImageData_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
-
-  static height_Getter(mthis) native "ImageData_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
-
-  static width_Getter(mthis) native "ImageData_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
 }
 
 class BlinkInjectedScriptHost {
   static final instance = new BlinkInjectedScriptHost();
 
-  static callFunction_Callback_0(mthis) native "InjectedScriptHost_callFunction_Callback";
-  callFunction_Callback_0_(mthis) => callFunction_Callback_0(mthis);
+  callFunction_Callback_0_(mthis) => mthis.callMethod("callFunction", []);
 
-  static callFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_callFunction_Callback";
-  callFunction_Callback_1_(mthis, __arg_0) => callFunction_Callback_1(mthis, __arg_0);
+  callFunction_Callback_1_(mthis, __arg_0) => mthis.callMethod("callFunction", [__arg_0]);
 
-  static callFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_callFunction_Callback";
-  callFunction_Callback_2_(mthis, __arg_0, __arg_1) => callFunction_Callback_2(mthis, __arg_0, __arg_1);
+  callFunction_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("callFunction", [__arg_0, __arg_1]);
 
-  static callFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_callFunction_Callback";
-  callFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => callFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  callFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("callFunction", [__arg_0, __arg_1, __arg_2]);
 
-  static callFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_callFunction_Callback";
-  callFunction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => callFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  clearConsoleMessages_Callback_0_(mthis) => mthis.callMethod("clearConsoleMessages", []);
 
-  static callFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InjectedScriptHost_callFunction_Callback";
-  callFunction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => callFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  collectionEntries_Callback_0_(mthis) => mthis.callMethod("collectionEntries", []);
 
-  static clearConsoleMessages_Callback_0(mthis) native "InjectedScriptHost_clearConsoleMessages_Callback";
-  clearConsoleMessages_Callback_0_(mthis) => clearConsoleMessages_Callback_0(mthis);
+  collectionEntries_Callback_1_(mthis, __arg_0) => mthis.callMethod("collectionEntries", [__arg_0]);
 
-  static clearConsoleMessages_Callback_1(mthis, __arg_0) native "InjectedScriptHost_clearConsoleMessages_Callback";
-  clearConsoleMessages_Callback_1_(mthis, __arg_0) => clearConsoleMessages_Callback_1(mthis, __arg_0);
+  debugFunction_Callback_0_(mthis) => mthis.callMethod("debugFunction", []);
 
-  static clearConsoleMessages_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_clearConsoleMessages_Callback";
-  clearConsoleMessages_Callback_2_(mthis, __arg_0, __arg_1) => clearConsoleMessages_Callback_2(mthis, __arg_0, __arg_1);
+  debugFunction_Callback_1_(mthis, __arg_0) => mthis.callMethod("debugFunction", [__arg_0]);
 
-  static collectionEntries_Callback_0(mthis) native "InjectedScriptHost_collectionEntries_Callback";
-  collectionEntries_Callback_0_(mthis) => collectionEntries_Callback_0(mthis);
+  eval_Callback_0_(mthis) => mthis.callMethod("eval", []);
 
-  static collectionEntries_Callback_1(mthis, __arg_0) native "InjectedScriptHost_collectionEntries_Callback";
-  collectionEntries_Callback_1_(mthis, __arg_0) => collectionEntries_Callback_1(mthis, __arg_0);
+  eval_Callback_1_(mthis, __arg_0) => mthis.callMethod("eval", [__arg_0]);
 
-  static collectionEntries_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_collectionEntries_Callback";
-  collectionEntries_Callback_2_(mthis, __arg_0, __arg_1) => collectionEntries_Callback_2(mthis, __arg_0, __arg_1);
+  evaluateWithExceptionDetails_Callback_0_(mthis) => mthis.callMethod("evaluateWithExceptionDetails", []);
 
-  static collectionEntries_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_collectionEntries_Callback";
-  collectionEntries_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => collectionEntries_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  evaluateWithExceptionDetails_Callback_1_(mthis, __arg_0) => mthis.callMethod("evaluateWithExceptionDetails", [__arg_0]);
 
-  static debugFunction_Callback_0(mthis) native "InjectedScriptHost_debugFunction_Callback";
-  debugFunction_Callback_0_(mthis) => debugFunction_Callback_0(mthis);
+  functionDetails_Callback_0_(mthis) => mthis.callMethod("functionDetails", []);
 
-  static debugFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_debugFunction_Callback";
-  debugFunction_Callback_1_(mthis, __arg_0) => debugFunction_Callback_1(mthis, __arg_0);
+  functionDetails_Callback_1_(mthis, __arg_0) => mthis.callMethod("functionDetails", [__arg_0]);
 
-  static debugFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_debugFunction_Callback";
-  debugFunction_Callback_2_(mthis, __arg_0, __arg_1) => debugFunction_Callback_2(mthis, __arg_0, __arg_1);
+  getEventListeners_Callback_0_(mthis) => mthis.callMethod("getEventListeners", []);
 
-  static debugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_debugFunction_Callback";
-  debugFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => debugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getEventListeners_Callback_1_(mthis, __arg_0) => mthis.callMethod("getEventListeners", [__arg_0]);
 
-  static eval_Callback_0(mthis) native "InjectedScriptHost_eval_Callback";
-  eval_Callback_0_(mthis) => eval_Callback_0(mthis);
+  getInternalProperties_Callback_0_(mthis) => mthis.callMethod("getInternalProperties", []);
 
-  static eval_Callback_1(mthis, __arg_0) native "InjectedScriptHost_eval_Callback";
-  eval_Callback_1_(mthis, __arg_0) => eval_Callback_1(mthis, __arg_0);
+  getInternalProperties_Callback_1_(mthis, __arg_0) => mthis.callMethod("getInternalProperties", [__arg_0]);
 
-  static eval_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_eval_Callback";
-  eval_Callback_2_(mthis, __arg_0, __arg_1) => eval_Callback_2(mthis, __arg_0, __arg_1);
+  inspect_Callback_0_(mthis) => mthis.callMethod("inspect", []);
 
-  static eval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_eval_Callback";
-  eval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => eval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  inspect_Callback_1_(mthis, __arg_0) => mthis.callMethod("inspect", [__arg_0]);
 
-  static evaluateWithExceptionDetails_Callback_0(mthis) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_0_(mthis) => evaluateWithExceptionDetails_Callback_0(mthis);
+  inspect_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("inspect", [__arg_0, __arg_1]);
 
-  static evaluateWithExceptionDetails_Callback_1(mthis, __arg_0) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_1_(mthis, __arg_0) => evaluateWithExceptionDetails_Callback_1(mthis, __arg_0);
+  inspectedObject_Callback_0_(mthis) => mthis.callMethod("inspectedObject", []);
 
-  static evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_2_(mthis, __arg_0, __arg_1) => evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1);
+  inspectedObject_Callback_1_(mthis, __arg_0) => mthis.callMethod("inspectedObject", [__arg_0]);
 
-  static evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  internalConstructorName_Callback_0_(mthis) => mthis.callMethod("internalConstructorName", []);
 
-  static functionDetails_Callback_0(mthis) native "InjectedScriptHost_functionDetails_Callback";
-  functionDetails_Callback_0_(mthis) => functionDetails_Callback_0(mthis);
+  internalConstructorName_Callback_1_(mthis, __arg_0) => mthis.callMethod("internalConstructorName", [__arg_0]);
 
-  static functionDetails_Callback_1(mthis, __arg_0) native "InjectedScriptHost_functionDetails_Callback";
-  functionDetails_Callback_1_(mthis, __arg_0) => functionDetails_Callback_1(mthis, __arg_0);
+  isHTMLAllCollection_Callback_0_(mthis) => mthis.callMethod("isHTMLAllCollection", []);
 
-  static functionDetails_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_functionDetails_Callback";
-  functionDetails_Callback_2_(mthis, __arg_0, __arg_1) => functionDetails_Callback_2(mthis, __arg_0, __arg_1);
+  isHTMLAllCollection_Callback_1_(mthis, __arg_0) => mthis.callMethod("isHTMLAllCollection", [__arg_0]);
 
-  static functionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_functionDetails_Callback";
-  functionDetails_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => functionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  monitorFunction_Callback_0_(mthis) => mthis.callMethod("monitorFunction", []);
 
-  static getEventListeners_Callback_0(mthis) native "InjectedScriptHost_getEventListeners_Callback";
-  getEventListeners_Callback_0_(mthis) => getEventListeners_Callback_0(mthis);
+  monitorFunction_Callback_1_(mthis, __arg_0) => mthis.callMethod("monitorFunction", [__arg_0]);
 
-  static getEventListeners_Callback_1(mthis, __arg_0) native "InjectedScriptHost_getEventListeners_Callback";
-  getEventListeners_Callback_1_(mthis, __arg_0) => getEventListeners_Callback_1(mthis, __arg_0);
+  setFunctionVariableValue_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setFunctionVariableValue", [__arg_0, __arg_1]);
 
-  static getEventListeners_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_getEventListeners_Callback";
-  getEventListeners_Callback_2_(mthis, __arg_0, __arg_1) => getEventListeners_Callback_2(mthis, __arg_0, __arg_1);
+  setFunctionVariableValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setFunctionVariableValue", [__arg_0, __arg_1, __arg_2]);
 
-  static getEventListeners_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_getEventListeners_Callback";
-  getEventListeners_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEventListeners_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setFunctionVariableValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("setFunctionVariableValue", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getInternalProperties_Callback_0(mthis) native "InjectedScriptHost_getInternalProperties_Callback";
-  getInternalProperties_Callback_0_(mthis) => getInternalProperties_Callback_0(mthis);
+  setNonEnumProperty_Callback_1_(mthis, __arg_0) => mthis.callMethod("setNonEnumProperty", [__arg_0]);
 
-  static getInternalProperties_Callback_1(mthis, __arg_0) native "InjectedScriptHost_getInternalProperties_Callback";
-  getInternalProperties_Callback_1_(mthis, __arg_0) => getInternalProperties_Callback_1(mthis, __arg_0);
+  setNonEnumProperty_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setNonEnumProperty", [__arg_0, __arg_1]);
 
-  static getInternalProperties_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_getInternalProperties_Callback";
-  getInternalProperties_Callback_2_(mthis, __arg_0, __arg_1) => getInternalProperties_Callback_2(mthis, __arg_0, __arg_1);
+  setNonEnumProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setNonEnumProperty", [__arg_0, __arg_1, __arg_2]);
 
-  static getInternalProperties_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_getInternalProperties_Callback";
-  getInternalProperties_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getInternalProperties_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  subtype_Callback_0_(mthis) => mthis.callMethod("subtype", []);
 
-  static inspect_Callback_0(mthis) native "InjectedScriptHost_inspect_Callback";
-  inspect_Callback_0_(mthis) => inspect_Callback_0(mthis);
+  subtype_Callback_1_(mthis, __arg_0) => mthis.callMethod("subtype", [__arg_0]);
 
-  static inspect_Callback_1(mthis, __arg_0) native "InjectedScriptHost_inspect_Callback";
-  inspect_Callback_1_(mthis, __arg_0) => inspect_Callback_1(mthis, __arg_0);
+  suppressWarningsAndCallFunction_Callback_0_(mthis) => mthis.callMethod("suppressWarningsAndCallFunction", []);
 
-  static inspect_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_inspect_Callback";
-  inspect_Callback_2_(mthis, __arg_0, __arg_1) => inspect_Callback_2(mthis, __arg_0, __arg_1);
+  suppressWarningsAndCallFunction_Callback_1_(mthis, __arg_0) => mthis.callMethod("suppressWarningsAndCallFunction", [__arg_0]);
 
-  static inspect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_inspect_Callback";
-  inspect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => inspect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  suppressWarningsAndCallFunction_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("suppressWarningsAndCallFunction", [__arg_0, __arg_1]);
 
-  static inspect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_inspect_Callback";
-  inspect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => inspect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  suppressWarningsAndCallFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("suppressWarningsAndCallFunction", [__arg_0, __arg_1, __arg_2]);
 
-  static inspectedObject_Callback_0(mthis) native "InjectedScriptHost_inspectedObject_Callback";
-  inspectedObject_Callback_0_(mthis) => inspectedObject_Callback_0(mthis);
-
-  static inspectedObject_Callback_1(mthis, __arg_0) native "InjectedScriptHost_inspectedObject_Callback";
-  inspectedObject_Callback_1_(mthis, __arg_0) => inspectedObject_Callback_1(mthis, __arg_0);
-
-  static inspectedObject_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_inspectedObject_Callback";
-  inspectedObject_Callback_2_(mthis, __arg_0, __arg_1) => inspectedObject_Callback_2(mthis, __arg_0, __arg_1);
-
-  static inspectedObject_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_inspectedObject_Callback";
-  inspectedObject_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => inspectedObject_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static internalConstructorName_Callback_0(mthis) native "InjectedScriptHost_internalConstructorName_Callback";
-  internalConstructorName_Callback_0_(mthis) => internalConstructorName_Callback_0(mthis);
-
-  static internalConstructorName_Callback_1(mthis, __arg_0) native "InjectedScriptHost_internalConstructorName_Callback";
-  internalConstructorName_Callback_1_(mthis, __arg_0) => internalConstructorName_Callback_1(mthis, __arg_0);
-
-  static internalConstructorName_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_internalConstructorName_Callback";
-  internalConstructorName_Callback_2_(mthis, __arg_0, __arg_1) => internalConstructorName_Callback_2(mthis, __arg_0, __arg_1);
-
-  static internalConstructorName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_internalConstructorName_Callback";
-  internalConstructorName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => internalConstructorName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isHTMLAllCollection_Callback_0(mthis) native "InjectedScriptHost_isHTMLAllCollection_Callback";
-  isHTMLAllCollection_Callback_0_(mthis) => isHTMLAllCollection_Callback_0(mthis);
-
-  static isHTMLAllCollection_Callback_1(mthis, __arg_0) native "InjectedScriptHost_isHTMLAllCollection_Callback";
-  isHTMLAllCollection_Callback_1_(mthis, __arg_0) => isHTMLAllCollection_Callback_1(mthis, __arg_0);
-
-  static isHTMLAllCollection_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_isHTMLAllCollection_Callback";
-  isHTMLAllCollection_Callback_2_(mthis, __arg_0, __arg_1) => isHTMLAllCollection_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isHTMLAllCollection_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_isHTMLAllCollection_Callback";
-  isHTMLAllCollection_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isHTMLAllCollection_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static monitorFunction_Callback_0(mthis) native "InjectedScriptHost_monitorFunction_Callback";
-  monitorFunction_Callback_0_(mthis) => monitorFunction_Callback_0(mthis);
-
-  static monitorFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_monitorFunction_Callback";
-  monitorFunction_Callback_1_(mthis, __arg_0) => monitorFunction_Callback_1(mthis, __arg_0);
-
-  static monitorFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_monitorFunction_Callback";
-  monitorFunction_Callback_2_(mthis, __arg_0, __arg_1) => monitorFunction_Callback_2(mthis, __arg_0, __arg_1);
-
-  static monitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_monitorFunction_Callback";
-  monitorFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => monitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setFunctionVariableValue_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_setFunctionVariableValue_Callback";
-  setFunctionVariableValue_Callback_2_(mthis, __arg_0, __arg_1) => setFunctionVariableValue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setFunctionVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_setFunctionVariableValue_Callback";
-  setFunctionVariableValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setFunctionVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setFunctionVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_setFunctionVariableValue_Callback";
-  setFunctionVariableValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setFunctionVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setFunctionVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InjectedScriptHost_setFunctionVariableValue_Callback";
-  setFunctionVariableValue_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setFunctionVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static setFunctionVariableValue_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "InjectedScriptHost_setFunctionVariableValue_Callback";
-  setFunctionVariableValue_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setFunctionVariableValue_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static setNonEnumProperty_Callback_1(mthis, __arg_0) native "InjectedScriptHost_setNonEnumProperty_Callback";
-  setNonEnumProperty_Callback_1_(mthis, __arg_0) => setNonEnumProperty_Callback_1(mthis, __arg_0);
-
-  static setNonEnumProperty_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_setNonEnumProperty_Callback";
-  setNonEnumProperty_Callback_2_(mthis, __arg_0, __arg_1) => setNonEnumProperty_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setNonEnumProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_setNonEnumProperty_Callback";
-  setNonEnumProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setNonEnumProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setNonEnumProperty_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_setNonEnumProperty_Callback";
-  setNonEnumProperty_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setNonEnumProperty_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setNonEnumProperty_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InjectedScriptHost_setNonEnumProperty_Callback";
-  setNonEnumProperty_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setNonEnumProperty_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static subtype_Callback_0(mthis) native "InjectedScriptHost_subtype_Callback";
-  subtype_Callback_0_(mthis) => subtype_Callback_0(mthis);
-
-  static subtype_Callback_1(mthis, __arg_0) native "InjectedScriptHost_subtype_Callback";
-  subtype_Callback_1_(mthis, __arg_0) => subtype_Callback_1(mthis, __arg_0);
-
-  static subtype_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_subtype_Callback";
-  subtype_Callback_2_(mthis, __arg_0, __arg_1) => subtype_Callback_2(mthis, __arg_0, __arg_1);
-
-  static subtype_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_subtype_Callback";
-  subtype_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => subtype_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static suppressWarningsAndCallFunction_Callback_0(mthis) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
-  suppressWarningsAndCallFunction_Callback_0_(mthis) => suppressWarningsAndCallFunction_Callback_0(mthis);
-
-  static suppressWarningsAndCallFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
-  suppressWarningsAndCallFunction_Callback_1_(mthis, __arg_0) => suppressWarningsAndCallFunction_Callback_1(mthis, __arg_0);
-
-  static suppressWarningsAndCallFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
-  suppressWarningsAndCallFunction_Callback_2_(mthis, __arg_0, __arg_1) => suppressWarningsAndCallFunction_Callback_2(mthis, __arg_0, __arg_1);
-
-  static suppressWarningsAndCallFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
-  suppressWarningsAndCallFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => suppressWarningsAndCallFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static suppressWarningsAndCallFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
-  suppressWarningsAndCallFunction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => suppressWarningsAndCallFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static suppressWarningsAndCallFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
-  suppressWarningsAndCallFunction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => suppressWarningsAndCallFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static undebugFunction_Callback_0(mthis) native "InjectedScriptHost_undebugFunction_Callback";
-  undebugFunction_Callback_0_(mthis) => undebugFunction_Callback_0(mthis);
-
-  static undebugFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_undebugFunction_Callback";
-  undebugFunction_Callback_1_(mthis, __arg_0) => undebugFunction_Callback_1(mthis, __arg_0);
-
-  static undebugFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_undebugFunction_Callback";
-  undebugFunction_Callback_2_(mthis, __arg_0, __arg_1) => undebugFunction_Callback_2(mthis, __arg_0, __arg_1);
-
-  static undebugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_undebugFunction_Callback";
-  undebugFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => undebugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static unmonitorFunction_Callback_0(mthis) native "InjectedScriptHost_unmonitorFunction_Callback";
-  unmonitorFunction_Callback_0_(mthis) => unmonitorFunction_Callback_0(mthis);
+  undebugFunction_Callback_0_(mthis) => mthis.callMethod("undebugFunction", []);
 
-  static unmonitorFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_unmonitorFunction_Callback";
-  unmonitorFunction_Callback_1_(mthis, __arg_0) => unmonitorFunction_Callback_1(mthis, __arg_0);
+  undebugFunction_Callback_1_(mthis, __arg_0) => mthis.callMethod("undebugFunction", [__arg_0]);
 
-  static unmonitorFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_unmonitorFunction_Callback";
-  unmonitorFunction_Callback_2_(mthis, __arg_0, __arg_1) => unmonitorFunction_Callback_2(mthis, __arg_0, __arg_1);
+  unmonitorFunction_Callback_0_(mthis) => mthis.callMethod("unmonitorFunction", []);
 
-  static unmonitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_unmonitorFunction_Callback";
-  unmonitorFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unmonitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  unmonitorFunction_Callback_1_(mthis, __arg_0) => mthis.callMethod("unmonitorFunction", [__arg_0]);
 
 }
 
 class BlinkInputMethodContext extends BlinkEventTarget {
   static final instance = new BlinkInputMethodContext();
 
-  static compositionEndOffset_Getter(mthis) native "InputMethodContext_compositionEndOffset_Getter";
-  compositionEndOffset_Getter_(mthis) => compositionEndOffset_Getter(mthis);
+  compositionEndOffset_Getter_(mthis) => mthis["compositionEndOffset"];
 
-  static compositionStartOffset_Getter(mthis) native "InputMethodContext_compositionStartOffset_Getter";
-  compositionStartOffset_Getter_(mthis) => compositionStartOffset_Getter(mthis);
+  compositionStartOffset_Getter_(mthis) => mthis["compositionStartOffset"];
 
-  static confirmComposition_Callback_0(mthis) native "InputMethodContext_confirmComposition_Callback";
-  confirmComposition_Callback_0_(mthis) => confirmComposition_Callback_0(mthis);
+  confirmComposition_Callback_0_(mthis) => mthis.callMethod("confirmComposition", []);
 
-  static confirmComposition_Callback_1(mthis, __arg_0) native "InputMethodContext_confirmComposition_Callback";
-  confirmComposition_Callback_1_(mthis, __arg_0) => confirmComposition_Callback_1(mthis, __arg_0);
+  locale_Getter_(mthis) => mthis["locale"];
 
-  static confirmComposition_Callback_2(mthis, __arg_0, __arg_1) native "InputMethodContext_confirmComposition_Callback";
-  confirmComposition_Callback_2_(mthis, __arg_0, __arg_1) => confirmComposition_Callback_2(mthis, __arg_0, __arg_1);
+  oncandidatewindowhide_Getter_(mthis) => mthis["oncandidatewindowhide"];
 
-  static locale_Getter(mthis) native "InputMethodContext_locale_Getter";
-  locale_Getter_(mthis) => locale_Getter(mthis);
+  oncandidatewindowhide_Setter_(mthis, __arg_0) => mthis["oncandidatewindowhide"] = __arg_0;
 
-  static oncandidatewindowhide_Getter(mthis) native "InputMethodContext_oncandidatewindowhide_Getter";
-  oncandidatewindowhide_Getter_(mthis) => oncandidatewindowhide_Getter(mthis);
+  oncandidatewindowshow_Getter_(mthis) => mthis["oncandidatewindowshow"];
 
-  static oncandidatewindowhide_Setter(mthis, __arg_0) native "InputMethodContext_oncandidatewindowhide_Setter";
-  oncandidatewindowhide_Setter_(mthis, __arg_0) => oncandidatewindowhide_Setter(mthis, __arg_0);
+  oncandidatewindowshow_Setter_(mthis, __arg_0) => mthis["oncandidatewindowshow"] = __arg_0;
 
-  static oncandidatewindowshow_Getter(mthis) native "InputMethodContext_oncandidatewindowshow_Getter";
-  oncandidatewindowshow_Getter_(mthis) => oncandidatewindowshow_Getter(mthis);
+  oncandidatewindowupdate_Getter_(mthis) => mthis["oncandidatewindowupdate"];
 
-  static oncandidatewindowshow_Setter(mthis, __arg_0) native "InputMethodContext_oncandidatewindowshow_Setter";
-  oncandidatewindowshow_Setter_(mthis, __arg_0) => oncandidatewindowshow_Setter(mthis, __arg_0);
+  oncandidatewindowupdate_Setter_(mthis, __arg_0) => mthis["oncandidatewindowupdate"] = __arg_0;
 
-  static oncandidatewindowupdate_Getter(mthis) native "InputMethodContext_oncandidatewindowupdate_Getter";
-  oncandidatewindowupdate_Getter_(mthis) => oncandidatewindowupdate_Getter(mthis);
-
-  static oncandidatewindowupdate_Setter(mthis, __arg_0) native "InputMethodContext_oncandidatewindowupdate_Setter";
-  oncandidatewindowupdate_Setter_(mthis, __arg_0) => oncandidatewindowupdate_Setter(mthis, __arg_0);
-
-  static target_Getter(mthis) native "InputMethodContext_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
 }
 
 class BlinkInspectorFrontendHost {
   static final instance = new BlinkInspectorFrontendHost();
 
-  static copyText_Callback_0(mthis) native "InspectorFrontendHost_copyText_Callback";
-  copyText_Callback_0_(mthis) => copyText_Callback_0(mthis);
+  copyText_Callback_0_(mthis) => mthis.callMethod("copyText", []);
 
-  static copyText_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_copyText_Callback";
-  copyText_Callback_1_(mthis, __arg_0) => copyText_Callback_1(mthis, __arg_0);
+  copyText_Callback_1_(mthis, __arg_0) => mthis.callMethod("copyText", [__arg_0]);
 
-  static copyText_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_copyText_Callback";
-  copyText_Callback_2_(mthis, __arg_0, __arg_1) => copyText_Callback_2(mthis, __arg_0, __arg_1);
+  getSelectionBackgroundColor_Callback_0_(mthis) => mthis.callMethod("getSelectionBackgroundColor", []);
 
-  static copyText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_copyText_Callback";
-  copyText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => copyText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getSelectionForegroundColor_Callback_0_(mthis) => mthis.callMethod("getSelectionForegroundColor", []);
 
-  static getSelectionBackgroundColor_Callback_0(mthis) native "InspectorFrontendHost_getSelectionBackgroundColor_Callback";
-  getSelectionBackgroundColor_Callback_0_(mthis) => getSelectionBackgroundColor_Callback_0(mthis);
+  isHostedMode_Callback_0_(mthis) => mthis.callMethod("isHostedMode", []);
 
-  static getSelectionBackgroundColor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_getSelectionBackgroundColor_Callback";
-  getSelectionBackgroundColor_Callback_1_(mthis, __arg_0) => getSelectionBackgroundColor_Callback_1(mthis, __arg_0);
+  isUnderTest_Callback_0_(mthis) => mthis.callMethod("isUnderTest", []);
 
-  static getSelectionBackgroundColor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_getSelectionBackgroundColor_Callback";
-  getSelectionBackgroundColor_Callback_2_(mthis, __arg_0, __arg_1) => getSelectionBackgroundColor_Callback_2(mthis, __arg_0, __arg_1);
+  isolatedFileSystem_Callback_0_(mthis) => mthis.callMethod("isolatedFileSystem", []);
 
-  static getSelectionForegroundColor_Callback_0(mthis) native "InspectorFrontendHost_getSelectionForegroundColor_Callback";
-  getSelectionForegroundColor_Callback_0_(mthis) => getSelectionForegroundColor_Callback_0(mthis);
+  isolatedFileSystem_Callback_1_(mthis, __arg_0) => mthis.callMethod("isolatedFileSystem", [__arg_0]);
 
-  static getSelectionForegroundColor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_getSelectionForegroundColor_Callback";
-  getSelectionForegroundColor_Callback_1_(mthis, __arg_0) => getSelectionForegroundColor_Callback_1(mthis, __arg_0);
+  isolatedFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("isolatedFileSystem", [__arg_0, __arg_1]);
 
-  static getSelectionForegroundColor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_getSelectionForegroundColor_Callback";
-  getSelectionForegroundColor_Callback_2_(mthis, __arg_0, __arg_1) => getSelectionForegroundColor_Callback_2(mthis, __arg_0, __arg_1);
+  platform_Callback_0_(mthis) => mthis.callMethod("platform", []);
 
-  static isHostedMode_Callback_0(mthis) native "InspectorFrontendHost_isHostedMode_Callback";
-  isHostedMode_Callback_0_(mthis) => isHostedMode_Callback_0(mthis);
+  port_Callback_0_(mthis) => mthis.callMethod("port", []);
 
-  static isHostedMode_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_isHostedMode_Callback";
-  isHostedMode_Callback_1_(mthis, __arg_0) => isHostedMode_Callback_1(mthis, __arg_0);
+  recordActionTaken_Callback_0_(mthis) => mthis.callMethod("recordActionTaken", []);
 
-  static isHostedMode_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_isHostedMode_Callback";
-  isHostedMode_Callback_2_(mthis, __arg_0, __arg_1) => isHostedMode_Callback_2(mthis, __arg_0, __arg_1);
+  recordActionTaken_Callback_1_(mthis, __arg_0) => mthis.callMethod("recordActionTaken", [__arg_0]);
 
-  static isUnderTest_Callback_0(mthis) native "InspectorFrontendHost_isUnderTest_Callback";
-  isUnderTest_Callback_0_(mthis) => isUnderTest_Callback_0(mthis);
+  recordPanelShown_Callback_0_(mthis) => mthis.callMethod("recordPanelShown", []);
 
-  static isUnderTest_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_isUnderTest_Callback";
-  isUnderTest_Callback_1_(mthis, __arg_0) => isUnderTest_Callback_1(mthis, __arg_0);
+  recordPanelShown_Callback_1_(mthis, __arg_0) => mthis.callMethod("recordPanelShown", [__arg_0]);
 
-  static isUnderTest_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_isUnderTest_Callback";
-  isUnderTest_Callback_2_(mthis, __arg_0, __arg_1) => isUnderTest_Callback_2(mthis, __arg_0, __arg_1);
+  sendMessageToBackend_Callback_0_(mthis) => mthis.callMethod("sendMessageToBackend", []);
 
-  static isolatedFileSystem_Callback_0(mthis) native "InspectorFrontendHost_isolatedFileSystem_Callback";
-  isolatedFileSystem_Callback_0_(mthis) => isolatedFileSystem_Callback_0(mthis);
+  sendMessageToBackend_Callback_1_(mthis, __arg_0) => mthis.callMethod("sendMessageToBackend", [__arg_0]);
 
-  static isolatedFileSystem_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_isolatedFileSystem_Callback";
-  isolatedFileSystem_Callback_1_(mthis, __arg_0) => isolatedFileSystem_Callback_1(mthis, __arg_0);
+  sendMessageToEmbedder_Callback_0_(mthis) => mthis.callMethod("sendMessageToEmbedder", []);
 
-  static isolatedFileSystem_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_isolatedFileSystem_Callback";
-  isolatedFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => isolatedFileSystem_Callback_2(mthis, __arg_0, __arg_1);
+  sendMessageToEmbedder_Callback_1_(mthis, __arg_0) => mthis.callMethod("sendMessageToEmbedder", [__arg_0]);
 
-  static isolatedFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_isolatedFileSystem_Callback";
-  isolatedFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isolatedFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setInjectedScriptForOrigin_Callback_0_(mthis) => mthis.callMethod("setInjectedScriptForOrigin", []);
 
-  static isolatedFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_isolatedFileSystem_Callback";
-  isolatedFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isolatedFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setInjectedScriptForOrigin_Callback_1_(mthis, __arg_0) => mthis.callMethod("setInjectedScriptForOrigin", [__arg_0]);
 
-  static platform_Callback_0(mthis) native "InspectorFrontendHost_platform_Callback";
-  platform_Callback_0_(mthis) => platform_Callback_0(mthis);
+  setInjectedScriptForOrigin_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setInjectedScriptForOrigin", [__arg_0, __arg_1]);
 
-  static platform_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_platform_Callback";
-  platform_Callback_1_(mthis, __arg_0) => platform_Callback_1(mthis, __arg_0);
+  setZoomFactor_Callback_0_(mthis) => mthis.callMethod("setZoomFactor", []);
 
-  static platform_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_platform_Callback";
-  platform_Callback_2_(mthis, __arg_0, __arg_1) => platform_Callback_2(mthis, __arg_0, __arg_1);
+  setZoomFactor_Callback_1_(mthis, __arg_0) => mthis.callMethod("setZoomFactor", [__arg_0]);
 
-  static port_Callback_0(mthis) native "InspectorFrontendHost_port_Callback";
-  port_Callback_0_(mthis) => port_Callback_0(mthis);
+  showContextMenuAtPoint_Callback_1_(mthis, __arg_0) => mthis.callMethod("showContextMenuAtPoint", [__arg_0]);
 
-  static port_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_port_Callback";
-  port_Callback_1_(mthis, __arg_0) => port_Callback_1(mthis, __arg_0);
+  showContextMenuAtPoint_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("showContextMenuAtPoint", [__arg_0, __arg_1]);
 
-  static port_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_port_Callback";
-  port_Callback_2_(mthis, __arg_0, __arg_1) => port_Callback_2(mthis, __arg_0, __arg_1);
+  showContextMenuAtPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("showContextMenuAtPoint", [__arg_0, __arg_1, __arg_2]);
 
-  static recordActionTaken_Callback_0(mthis) native "InspectorFrontendHost_recordActionTaken_Callback";
-  recordActionTaken_Callback_0_(mthis) => recordActionTaken_Callback_0(mthis);
+  showContextMenu_Callback_0_(mthis) => mthis.callMethod("showContextMenu", []);
 
-  static recordActionTaken_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_recordActionTaken_Callback";
-  recordActionTaken_Callback_1_(mthis, __arg_0) => recordActionTaken_Callback_1(mthis, __arg_0);
+  showContextMenu_Callback_1_(mthis, __arg_0) => mthis.callMethod("showContextMenu", [__arg_0]);
 
-  static recordActionTaken_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_recordActionTaken_Callback";
-  recordActionTaken_Callback_2_(mthis, __arg_0, __arg_1) => recordActionTaken_Callback_2(mthis, __arg_0, __arg_1);
+  showContextMenu_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("showContextMenu", [__arg_0, __arg_1]);
 
-  static recordActionTaken_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_recordActionTaken_Callback";
-  recordActionTaken_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => recordActionTaken_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  upgradeDraggedFileSystemPermissions_Callback_0_(mthis) => mthis.callMethod("upgradeDraggedFileSystemPermissions", []);
 
-  static recordPanelShown_Callback_0(mthis) native "InspectorFrontendHost_recordPanelShown_Callback";
-  recordPanelShown_Callback_0_(mthis) => recordPanelShown_Callback_0(mthis);
+  upgradeDraggedFileSystemPermissions_Callback_1_(mthis, __arg_0) => mthis.callMethod("upgradeDraggedFileSystemPermissions", [__arg_0]);
 
-  static recordPanelShown_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_recordPanelShown_Callback";
-  recordPanelShown_Callback_1_(mthis, __arg_0) => recordPanelShown_Callback_1(mthis, __arg_0);
-
-  static recordPanelShown_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_recordPanelShown_Callback";
-  recordPanelShown_Callback_2_(mthis, __arg_0, __arg_1) => recordPanelShown_Callback_2(mthis, __arg_0, __arg_1);
-
-  static recordPanelShown_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_recordPanelShown_Callback";
-  recordPanelShown_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => recordPanelShown_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static sendMessageToBackend_Callback_0(mthis) native "InspectorFrontendHost_sendMessageToBackend_Callback";
-  sendMessageToBackend_Callback_0_(mthis) => sendMessageToBackend_Callback_0(mthis);
-
-  static sendMessageToBackend_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_sendMessageToBackend_Callback";
-  sendMessageToBackend_Callback_1_(mthis, __arg_0) => sendMessageToBackend_Callback_1(mthis, __arg_0);
-
-  static sendMessageToBackend_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_sendMessageToBackend_Callback";
-  sendMessageToBackend_Callback_2_(mthis, __arg_0, __arg_1) => sendMessageToBackend_Callback_2(mthis, __arg_0, __arg_1);
-
-  static sendMessageToBackend_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_sendMessageToBackend_Callback";
-  sendMessageToBackend_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sendMessageToBackend_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static sendMessageToEmbedder_Callback_0(mthis) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
-  sendMessageToEmbedder_Callback_0_(mthis) => sendMessageToEmbedder_Callback_0(mthis);
-
-  static sendMessageToEmbedder_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
-  sendMessageToEmbedder_Callback_1_(mthis, __arg_0) => sendMessageToEmbedder_Callback_1(mthis, __arg_0);
-
-  static sendMessageToEmbedder_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
-  sendMessageToEmbedder_Callback_2_(mthis, __arg_0, __arg_1) => sendMessageToEmbedder_Callback_2(mthis, __arg_0, __arg_1);
-
-  static sendMessageToEmbedder_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
-  sendMessageToEmbedder_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sendMessageToEmbedder_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setInjectedScriptForOrigin_Callback_0(mthis) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
-  setInjectedScriptForOrigin_Callback_0_(mthis) => setInjectedScriptForOrigin_Callback_0(mthis);
-
-  static setInjectedScriptForOrigin_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
-  setInjectedScriptForOrigin_Callback_1_(mthis, __arg_0) => setInjectedScriptForOrigin_Callback_1(mthis, __arg_0);
-
-  static setInjectedScriptForOrigin_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
-  setInjectedScriptForOrigin_Callback_2_(mthis, __arg_0, __arg_1) => setInjectedScriptForOrigin_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setInjectedScriptForOrigin_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
-  setInjectedScriptForOrigin_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setInjectedScriptForOrigin_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setInjectedScriptForOrigin_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
-  setInjectedScriptForOrigin_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setInjectedScriptForOrigin_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setZoomFactor_Callback_0(mthis) native "InspectorFrontendHost_setZoomFactor_Callback";
-  setZoomFactor_Callback_0_(mthis) => setZoomFactor_Callback_0(mthis);
-
-  static setZoomFactor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_setZoomFactor_Callback";
-  setZoomFactor_Callback_1_(mthis, __arg_0) => setZoomFactor_Callback_1(mthis, __arg_0);
-
-  static setZoomFactor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_setZoomFactor_Callback";
-  setZoomFactor_Callback_2_(mthis, __arg_0, __arg_1) => setZoomFactor_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setZoomFactor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_setZoomFactor_Callback";
-  setZoomFactor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setZoomFactor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static showContextMenuAtPoint_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
-  showContextMenuAtPoint_Callback_1_(mthis, __arg_0) => showContextMenuAtPoint_Callback_1(mthis, __arg_0);
-
-  static showContextMenuAtPoint_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
-  showContextMenuAtPoint_Callback_2_(mthis, __arg_0, __arg_1) => showContextMenuAtPoint_Callback_2(mthis, __arg_0, __arg_1);
-
-  static showContextMenuAtPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
-  showContextMenuAtPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => showContextMenuAtPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static showContextMenuAtPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
-  showContextMenuAtPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => showContextMenuAtPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static showContextMenuAtPoint_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
-  showContextMenuAtPoint_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => showContextMenuAtPoint_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static showContextMenu_Callback_0(mthis) native "InspectorFrontendHost_showContextMenu_Callback";
-  showContextMenu_Callback_0_(mthis) => showContextMenu_Callback_0(mthis);
-
-  static showContextMenu_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_showContextMenu_Callback";
-  showContextMenu_Callback_1_(mthis, __arg_0) => showContextMenu_Callback_1(mthis, __arg_0);
-
-  static showContextMenu_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_showContextMenu_Callback";
-  showContextMenu_Callback_2_(mthis, __arg_0, __arg_1) => showContextMenu_Callback_2(mthis, __arg_0, __arg_1);
-
-  static showContextMenu_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_showContextMenu_Callback";
-  showContextMenu_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => showContextMenu_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static showContextMenu_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_showContextMenu_Callback";
-  showContextMenu_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => showContextMenu_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static upgradeDraggedFileSystemPermissions_Callback_0(mthis) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
-  upgradeDraggedFileSystemPermissions_Callback_0_(mthis) => upgradeDraggedFileSystemPermissions_Callback_0(mthis);
-
-  static upgradeDraggedFileSystemPermissions_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
-  upgradeDraggedFileSystemPermissions_Callback_1_(mthis, __arg_0) => upgradeDraggedFileSystemPermissions_Callback_1(mthis, __arg_0);
-
-  static upgradeDraggedFileSystemPermissions_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
-  upgradeDraggedFileSystemPermissions_Callback_2_(mthis, __arg_0, __arg_1) => upgradeDraggedFileSystemPermissions_Callback_2(mthis, __arg_0, __arg_1);
-
-  static upgradeDraggedFileSystemPermissions_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
-  upgradeDraggedFileSystemPermissions_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => upgradeDraggedFileSystemPermissions_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static zoomFactor_Callback_0(mthis) native "InspectorFrontendHost_zoomFactor_Callback";
-  zoomFactor_Callback_0_(mthis) => zoomFactor_Callback_0(mthis);
-
-  static zoomFactor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_zoomFactor_Callback";
-  zoomFactor_Callback_1_(mthis, __arg_0) => zoomFactor_Callback_1(mthis, __arg_0);
-
-  static zoomFactor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_zoomFactor_Callback";
-  zoomFactor_Callback_2_(mthis, __arg_0, __arg_1) => zoomFactor_Callback_2(mthis, __arg_0, __arg_1);
+  zoomFactor_Callback_0_(mthis) => mthis.callMethod("zoomFactor", []);
 
 }
 
 class BlinkInspectorOverlayHost {
   static final instance = new BlinkInspectorOverlayHost();
 
-  static resume_Callback_0(mthis) native "InspectorOverlayHost_resume_Callback";
-  resume_Callback_0_(mthis) => resume_Callback_0(mthis);
+  resume_Callback_0_(mthis) => mthis.callMethod("resume", []);
 
-  static resume_Callback_1(mthis, __arg_0) native "InspectorOverlayHost_resume_Callback";
-  resume_Callback_1_(mthis, __arg_0) => resume_Callback_1(mthis, __arg_0);
-
-  static resume_Callback_2(mthis, __arg_0, __arg_1) native "InspectorOverlayHost_resume_Callback";
-  resume_Callback_2_(mthis, __arg_0, __arg_1) => resume_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stepOver_Callback_0(mthis) native "InspectorOverlayHost_stepOver_Callback";
-  stepOver_Callback_0_(mthis) => stepOver_Callback_0(mthis);
-
-  static stepOver_Callback_1(mthis, __arg_0) native "InspectorOverlayHost_stepOver_Callback";
-  stepOver_Callback_1_(mthis, __arg_0) => stepOver_Callback_1(mthis, __arg_0);
-
-  static stepOver_Callback_2(mthis, __arg_0, __arg_1) native "InspectorOverlayHost_stepOver_Callback";
-  stepOver_Callback_2_(mthis, __arg_0, __arg_1) => stepOver_Callback_2(mthis, __arg_0, __arg_1);
+  stepOver_Callback_0_(mthis) => mthis.callMethod("stepOver", []);
 
 }
 
 class BlinkInstallEvent extends BlinkExtendableEvent {
   static final instance = new BlinkInstallEvent();
 
-  static reloadAll_Callback_0(mthis) native "InstallEvent_reloadAll_Callback";
-  reloadAll_Callback_0_(mthis) => reloadAll_Callback_0(mthis);
+  reloadAll_Callback_0_(mthis) => mthis.callMethod("reloadAll", []);
 
-  static reloadAll_Callback_1(mthis, __arg_0) native "InstallEvent_reloadAll_Callback";
-  reloadAll_Callback_1_(mthis, __arg_0) => reloadAll_Callback_1(mthis, __arg_0);
-
-  static reloadAll_Callback_2(mthis, __arg_0, __arg_1) native "InstallEvent_reloadAll_Callback";
-  reloadAll_Callback_2_(mthis, __arg_0, __arg_1) => reloadAll_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replace_Callback_0(mthis) native "InstallEvent_replace_Callback";
-  replace_Callback_0_(mthis) => replace_Callback_0(mthis);
-
-  static replace_Callback_1(mthis, __arg_0) native "InstallEvent_replace_Callback";
-  replace_Callback_1_(mthis, __arg_0) => replace_Callback_1(mthis, __arg_0);
-
-  static replace_Callback_2(mthis, __arg_0, __arg_1) native "InstallEvent_replace_Callback";
-  replace_Callback_2_(mthis, __arg_0, __arg_1) => replace_Callback_2(mthis, __arg_0, __arg_1);
+  replace_Callback_0_(mthis) => mthis.callMethod("replace", []);
 
 }
 
 class BlinkIterator {
   static final instance = new BlinkIterator();
 
-  static next_Callback_0(mthis) native "Iterator_next_Callback";
-  next_Callback_0_(mthis) => next_Callback_0(mthis);
+  next_Callback_0_(mthis) => mthis.callMethod("next", []);
 
-  static next_Callback_1(mthis, __arg_0) native "Iterator_next_Callback";
-  next_Callback_1_(mthis, __arg_0) => next_Callback_1(mthis, __arg_0);
-
-  static next_Callback_2(mthis, __arg_0, __arg_1) native "Iterator_next_Callback";
-  next_Callback_2_(mthis, __arg_0, __arg_1) => next_Callback_2(mthis, __arg_0, __arg_1);
-
-  static next_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Iterator_next_Callback";
-  next_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => next_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  next_Callback_1_(mthis, __arg_0) => mthis.callMethod("next", [__arg_0]);
 
 }
 
 class BlinkJavaScriptCallFrame {
   static final instance = new BlinkJavaScriptCallFrame();
 
-  static caller_Getter(mthis) native "JavaScriptCallFrame_caller_Getter";
-  caller_Getter_(mthis) => caller_Getter(mthis);
+  caller_Getter_(mthis) => mthis["caller"];
 
-  static column_Getter(mthis) native "JavaScriptCallFrame_column_Getter";
-  column_Getter_(mthis) => column_Getter(mthis);
+  column_Getter_(mthis) => mthis["column"];
 
-  static evaluateWithExceptionDetails_Callback_0(mthis) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_0_(mthis) => evaluateWithExceptionDetails_Callback_0(mthis);
+  evaluateWithExceptionDetails_Callback_0_(mthis) => mthis.callMethod("evaluateWithExceptionDetails", []);
 
-  static evaluateWithExceptionDetails_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_1_(mthis, __arg_0) => evaluateWithExceptionDetails_Callback_1(mthis, __arg_0);
+  evaluateWithExceptionDetails_Callback_1_(mthis, __arg_0) => mthis.callMethod("evaluateWithExceptionDetails", [__arg_0]);
 
-  static evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_2_(mthis, __arg_0, __arg_1) => evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1);
+  functionName_Getter_(mthis) => mthis["functionName"];
 
-  static evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
-  evaluateWithExceptionDetails_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isAtReturn_Getter_(mthis) => mthis["isAtReturn"];
 
-  static functionName_Getter(mthis) native "JavaScriptCallFrame_functionName_Getter";
-  functionName_Getter_(mthis) => functionName_Getter(mthis);
+  line_Getter_(mthis) => mthis["line"];
 
-  static isAtReturn_Getter(mthis) native "JavaScriptCallFrame_isAtReturn_Getter";
-  isAtReturn_Getter_(mthis) => isAtReturn_Getter(mthis);
+  restart_Callback_0_(mthis) => mthis.callMethod("restart", []);
 
-  static line_Getter(mthis) native "JavaScriptCallFrame_line_Getter";
-  line_Getter_(mthis) => line_Getter(mthis);
+  returnValue_Getter_(mthis) => mthis["returnValue"];
 
-  static restart_Callback_0(mthis) native "JavaScriptCallFrame_restart_Callback";
-  restart_Callback_0_(mthis) => restart_Callback_0(mthis);
+  scopeChain_Getter_(mthis) => mthis["scopeChain"];
 
-  static restart_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_restart_Callback";
-  restart_Callback_1_(mthis, __arg_0) => restart_Callback_1(mthis, __arg_0);
+  scopeType_Callback_0_(mthis) => mthis.callMethod("scopeType", []);
 
-  static restart_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_restart_Callback";
-  restart_Callback_2_(mthis, __arg_0, __arg_1) => restart_Callback_2(mthis, __arg_0, __arg_1);
+  scopeType_Callback_1_(mthis, __arg_0) => mthis.callMethod("scopeType", [__arg_0]);
 
-  static returnValue_Getter(mthis) native "JavaScriptCallFrame_returnValue_Getter";
-  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
+  setVariableValue_Callback_0_(mthis) => mthis.callMethod("setVariableValue", []);
 
-  static scopeChain_Getter(mthis) native "JavaScriptCallFrame_scopeChain_Getter";
-  scopeChain_Getter_(mthis) => scopeChain_Getter(mthis);
+  setVariableValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("setVariableValue", [__arg_0]);
 
-  static scopeType_Callback_0(mthis) native "JavaScriptCallFrame_scopeType_Callback";
-  scopeType_Callback_0_(mthis) => scopeType_Callback_0(mthis);
+  setVariableValue_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setVariableValue", [__arg_0, __arg_1]);
 
-  static scopeType_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_scopeType_Callback";
-  scopeType_Callback_1_(mthis, __arg_0) => scopeType_Callback_1(mthis, __arg_0);
+  setVariableValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setVariableValue", [__arg_0, __arg_1, __arg_2]);
 
-  static scopeType_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_scopeType_Callback";
-  scopeType_Callback_2_(mthis, __arg_0, __arg_1) => scopeType_Callback_2(mthis, __arg_0, __arg_1);
+  sourceID_Getter_(mthis) => mthis["sourceID"];
 
-  static scopeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "JavaScriptCallFrame_scopeType_Callback";
-  scopeType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scopeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stepInPositions_Getter_(mthis) => mthis["stepInPositions"];
 
-  static setVariableValue_Callback_0(mthis) native "JavaScriptCallFrame_setVariableValue_Callback";
-  setVariableValue_Callback_0_(mthis) => setVariableValue_Callback_0(mthis);
+  thisObject_Getter_(mthis) => mthis["thisObject"];
 
-  static setVariableValue_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_setVariableValue_Callback";
-  setVariableValue_Callback_1_(mthis, __arg_0) => setVariableValue_Callback_1(mthis, __arg_0);
-
-  static setVariableValue_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_setVariableValue_Callback";
-  setVariableValue_Callback_2_(mthis, __arg_0, __arg_1) => setVariableValue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "JavaScriptCallFrame_setVariableValue_Callback";
-  setVariableValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "JavaScriptCallFrame_setVariableValue_Callback";
-  setVariableValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "JavaScriptCallFrame_setVariableValue_Callback";
-  setVariableValue_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static sourceID_Getter(mthis) native "JavaScriptCallFrame_sourceID_Getter";
-  sourceID_Getter_(mthis) => sourceID_Getter(mthis);
-
-  static stepInPositions_Getter(mthis) native "JavaScriptCallFrame_stepInPositions_Getter";
-  stepInPositions_Getter_(mthis) => stepInPositions_Getter(mthis);
-
-  static thisObject_Getter(mthis) native "JavaScriptCallFrame_thisObject_Getter";
-  thisObject_Getter_(mthis) => thisObject_Getter(mthis);
-
-  static type_Getter(mthis) native "JavaScriptCallFrame_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkKeyboardEvent extends BlinkUIEvent {
   static final instance = new BlinkKeyboardEvent();
 
-  static altKey_Getter(mthis) native "KeyboardEvent_altKey_Getter";
-  altKey_Getter_(mthis) => altKey_Getter(mthis);
+  altKey_Getter_(mthis) => mthis["altKey"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "KeyboardEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["KeyboardEvent"], [__arg_0, __arg_1]);
 
-  static ctrlKey_Getter(mthis) native "KeyboardEvent_ctrlKey_Getter";
-  ctrlKey_Getter_(mthis) => ctrlKey_Getter(mthis);
+  ctrlKey_Getter_(mthis) => mthis["ctrlKey"];
 
-  static getModifierState_Callback_0(mthis) native "KeyboardEvent_getModifierState_Callback";
-  getModifierState_Callback_0_(mthis) => getModifierState_Callback_0(mthis);
+  getModifierState_Callback_0_(mthis) => mthis.callMethod("getModifierState", []);
 
-  static getModifierState_Callback_1(mthis, __arg_0) native "KeyboardEvent_getModifierState_Callback";
-  getModifierState_Callback_1_(mthis, __arg_0) => getModifierState_Callback_1(mthis, __arg_0);
+  getModifierState_Callback_1_(mthis, __arg_0) => mthis.callMethod("getModifierState", [__arg_0]);
 
-  static getModifierState_Callback_2(mthis, __arg_0, __arg_1) native "KeyboardEvent_getModifierState_Callback";
-  getModifierState_Callback_2_(mthis, __arg_0, __arg_1) => getModifierState_Callback_2(mthis, __arg_0, __arg_1);
+  initKeyboardEvent_Callback_0_(mthis) => mthis.callMethod("initKeyboardEvent", []);
 
-  static getModifierState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "KeyboardEvent_getModifierState_Callback";
-  getModifierState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getModifierState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initKeyboardEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initKeyboardEvent", [__arg_0]);
 
-  static initKeyboardEvent_Callback_0(mthis) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_0_(mthis) => initKeyboardEvent_Callback_0(mthis);
+  initKeyboardEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  static initKeyboardEvent_Callback_1(mthis, __arg_0) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_1_(mthis, __arg_0) => initKeyboardEvent_Callback_1(mthis, __arg_0);
+  initKeyboardEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1]);
 
-  static initKeyboardEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initKeyboardEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  initKeyboardEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initKeyboardEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => initKeyboardEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+  initKeyboardEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initKeyboardEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => initKeyboardEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+  initKeyboardEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initKeyboardEvent_Callback_2(mthis, __arg_0, __arg_1) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_2_(mthis, __arg_0, __arg_1) => initKeyboardEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initKeyboardEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initKeyboardEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initKeyboardEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initKeyboardEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static initKeyboardEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initKeyboardEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initKeyboardEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static initKeyboardEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initKeyboardEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initKeyboardEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => mthis.callMethod("initKeyboardEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  static initKeyboardEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initKeyboardEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  keyIdentifier_Getter_(mthis) => mthis["keyIdentifier"];
 
-  static initKeyboardEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initKeyboardEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  keyLocation_Getter_(mthis) => mthis["keyLocation"];
 
-  static initKeyboardEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initKeyboardEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  location_Getter_(mthis) => mthis["location"];
 
-  static initKeyboardEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "KeyboardEvent_initKeyboardEvent_Callback";
-  initKeyboardEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initKeyboardEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  metaKey_Getter_(mthis) => mthis["metaKey"];
 
-  static keyIdentifier_Getter(mthis) native "KeyboardEvent_keyIdentifier_Getter";
-  keyIdentifier_Getter_(mthis) => keyIdentifier_Getter(mthis);
+  repeat_Getter_(mthis) => mthis["repeat"];
 
-  static keyLocation_Getter(mthis) native "KeyboardEvent_keyLocation_Getter";
-  keyLocation_Getter_(mthis) => keyLocation_Getter(mthis);
-
-  static location_Getter(mthis) native "KeyboardEvent_location_Getter";
-  location_Getter_(mthis) => location_Getter(mthis);
-
-  static metaKey_Getter(mthis) native "KeyboardEvent_metaKey_Getter";
-  metaKey_Getter_(mthis) => metaKey_Getter(mthis);
-
-  static repeat_Getter(mthis) native "KeyboardEvent_repeat_Getter";
-  repeat_Getter_(mthis) => repeat_Getter(mthis);
-
-  static shiftKey_Getter(mthis) native "KeyboardEvent_shiftKey_Getter";
-  shiftKey_Getter_(mthis) => shiftKey_Getter(mthis);
+  shiftKey_Getter_(mthis) => mthis["shiftKey"];
 
 }
 
 class BlinkLocalCredential extends BlinkCredential {
   static final instance = new BlinkLocalCredential();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "LocalCredential_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["LocalCredential"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "LocalCredential_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["LocalCredential"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "LocalCredential_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => new js.JsObject(js.context["LocalCredential"], [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "LocalCredential_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "LocalCredential_constructorCallback";
-  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static password_Getter(mthis) native "LocalCredential_password_Getter";
-  password_Getter_(mthis) => password_Getter(mthis);
+  password_Getter_(mthis) => mthis["password"];
 
 }
 
 class BlinkLocation {
   static final instance = new BlinkLocation();
 
-  static ancestorOrigins_Getter(mthis) native "Location_ancestorOrigins_Getter";
-  ancestorOrigins_Getter_(mthis) => ancestorOrigins_Getter(mthis);
+  ancestorOrigins_Getter_(mthis) => mthis["ancestorOrigins"];
 
-  static assign_Callback_0(mthis) native "Location_assign_Callback";
-  assign_Callback_0_(mthis) => assign_Callback_0(mthis);
+  assign_Callback_0_(mthis) => mthis.callMethod("assign", []);
 
-  static assign_Callback_1(mthis, __arg_0) native "Location_assign_Callback";
-  assign_Callback_1_(mthis, __arg_0) => assign_Callback_1(mthis, __arg_0);
+  assign_Callback_1_(mthis, __arg_0) => mthis.callMethod("assign", [__arg_0]);
 
-  static assign_Callback_2(mthis, __arg_0, __arg_1) native "Location_assign_Callback";
-  assign_Callback_2_(mthis, __arg_0, __arg_1) => assign_Callback_2(mthis, __arg_0, __arg_1);
+  hash_Getter_(mthis) => mthis["hash"];
 
-  static assign_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Location_assign_Callback";
-  assign_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => assign_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
 
-  static hash_Getter(mthis) native "Location_hash_Getter";
-  hash_Getter_(mthis) => hash_Getter(mthis);
+  host_Getter_(mthis) => mthis["host"];
 
-  static hash_Setter(mthis, __arg_0) native "Location_hash_Setter";
-  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
+  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
 
-  static host_Getter(mthis) native "Location_host_Getter";
-  host_Getter_(mthis) => host_Getter(mthis);
+  hostname_Getter_(mthis) => mthis["hostname"];
 
-  static host_Setter(mthis, __arg_0) native "Location_host_Setter";
-  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
+  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
 
-  static hostname_Getter(mthis) native "Location_hostname_Getter";
-  hostname_Getter_(mthis) => hostname_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static hostname_Setter(mthis, __arg_0) native "Location_hostname_Setter";
-  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
+  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
 
-  static href_Getter(mthis) native "Location_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  origin_Getter_(mthis) => mthis["origin"];
 
-  static href_Setter(mthis, __arg_0) native "Location_href_Setter";
-  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
+  pathname_Getter_(mthis) => mthis["pathname"];
 
-  static origin_Getter(mthis) native "Location_origin_Getter";
-  origin_Getter_(mthis) => origin_Getter(mthis);
+  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
 
-  static pathname_Getter(mthis) native "Location_pathname_Getter";
-  pathname_Getter_(mthis) => pathname_Getter(mthis);
+  port_Getter_(mthis) => mthis["port"];
 
-  static pathname_Setter(mthis, __arg_0) native "Location_pathname_Setter";
-  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
+  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
 
-  static port_Getter(mthis) native "Location_port_Getter";
-  port_Getter_(mthis) => port_Getter(mthis);
+  protocol_Getter_(mthis) => mthis["protocol"];
 
-  static port_Setter(mthis, __arg_0) native "Location_port_Setter";
-  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
+  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
 
-  static protocol_Getter(mthis) native "Location_protocol_Getter";
-  protocol_Getter_(mthis) => protocol_Getter(mthis);
+  reload_Callback_0_(mthis) => mthis.callMethod("reload", []);
 
-  static protocol_Setter(mthis, __arg_0) native "Location_protocol_Setter";
-  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
+  replace_Callback_0_(mthis) => mthis.callMethod("replace", []);
 
-  static reload_Callback_0(mthis) native "Location_reload_Callback";
-  reload_Callback_0_(mthis) => reload_Callback_0(mthis);
+  replace_Callback_1_(mthis, __arg_0) => mthis.callMethod("replace", [__arg_0]);
 
-  static reload_Callback_1(mthis, __arg_0) native "Location_reload_Callback";
-  reload_Callback_1_(mthis, __arg_0) => reload_Callback_1(mthis, __arg_0);
+  search_Getter_(mthis) => mthis["search"];
 
-  static reload_Callback_2(mthis, __arg_0, __arg_1) native "Location_reload_Callback";
-  reload_Callback_2_(mthis, __arg_0, __arg_1) => reload_Callback_2(mthis, __arg_0, __arg_1);
+  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
 
-  static replace_Callback_0(mthis) native "Location_replace_Callback";
-  replace_Callback_0_(mthis) => replace_Callback_0(mthis);
-
-  static replace_Callback_1(mthis, __arg_0) native "Location_replace_Callback";
-  replace_Callback_1_(mthis, __arg_0) => replace_Callback_1(mthis, __arg_0);
-
-  static replace_Callback_2(mthis, __arg_0, __arg_1) native "Location_replace_Callback";
-  replace_Callback_2_(mthis, __arg_0, __arg_1) => replace_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replace_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Location_replace_Callback";
-  replace_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replace_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static search_Getter(mthis) native "Location_search_Getter";
-  search_Getter_(mthis) => search_Getter(mthis);
-
-  static search_Setter(mthis, __arg_0) native "Location_search_Setter";
-  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
-
-  static toString_Callback_0(mthis) native "Location_toString_Callback";
-  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
-
-  static toString_Callback_1(mthis, __arg_0) native "Location_toString_Callback";
-  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
-
-  static toString_Callback_2(mthis, __arg_0, __arg_1) native "Location_toString_Callback";
-  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
+  toString_Callback_0_(mthis) => mthis.callMethod("toString", []);
 
 }
 
 class BlinkMIDIAccess extends BlinkEventTarget {
   static final instance = new BlinkMIDIAccess();
 
-  static inputs_Getter(mthis) native "MIDIAccess_inputs_Getter";
-  inputs_Getter_(mthis) => inputs_Getter(mthis);
+  inputs_Getter_(mthis) => mthis["inputs"];
 
-  static onconnect_Getter(mthis) native "MIDIAccess_onconnect_Getter";
-  onconnect_Getter_(mthis) => onconnect_Getter(mthis);
+  onconnect_Getter_(mthis) => mthis["onconnect"];
 
-  static onconnect_Setter(mthis, __arg_0) native "MIDIAccess_onconnect_Setter";
-  onconnect_Setter_(mthis, __arg_0) => onconnect_Setter(mthis, __arg_0);
+  onconnect_Setter_(mthis, __arg_0) => mthis["onconnect"] = __arg_0;
 
-  static ondisconnect_Getter(mthis) native "MIDIAccess_ondisconnect_Getter";
-  ondisconnect_Getter_(mthis) => ondisconnect_Getter(mthis);
+  ondisconnect_Getter_(mthis) => mthis["ondisconnect"];
 
-  static ondisconnect_Setter(mthis, __arg_0) native "MIDIAccess_ondisconnect_Setter";
-  ondisconnect_Setter_(mthis, __arg_0) => ondisconnect_Setter(mthis, __arg_0);
+  ondisconnect_Setter_(mthis, __arg_0) => mthis["ondisconnect"] = __arg_0;
 
-  static outputs_Getter(mthis) native "MIDIAccess_outputs_Getter";
-  outputs_Getter_(mthis) => outputs_Getter(mthis);
+  outputs_Getter_(mthis) => mthis["outputs"];
 
-  static sysexEnabled_Getter(mthis) native "MIDIAccess_sysexEnabled_Getter";
-  sysexEnabled_Getter_(mthis) => sysexEnabled_Getter(mthis);
+  sysexEnabled_Getter_(mthis) => mthis["sysexEnabled"];
 
 }
 
 class BlinkMIDIConnectionEvent extends BlinkEvent {
   static final instance = new BlinkMIDIConnectionEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MIDIConnectionEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MIDIConnectionEvent"], [__arg_0, __arg_1]);
 
-  static port_Getter(mthis) native "MIDIConnectionEvent_port_Getter";
-  port_Getter_(mthis) => port_Getter(mthis);
+  port_Getter_(mthis) => mthis["port"];
 
 }
 
 class BlinkMIDIInput extends BlinkMIDIPort {
   static final instance = new BlinkMIDIInput();
 
-  static onmidimessage_Getter(mthis) native "MIDIInput_onmidimessage_Getter";
-  onmidimessage_Getter_(mthis) => onmidimessage_Getter(mthis);
+  onmidimessage_Getter_(mthis) => mthis["onmidimessage"];
 
-  static onmidimessage_Setter(mthis, __arg_0) native "MIDIInput_onmidimessage_Setter";
-  onmidimessage_Setter_(mthis, __arg_0) => onmidimessage_Setter(mthis, __arg_0);
+  onmidimessage_Setter_(mthis, __arg_0) => mthis["onmidimessage"] = __arg_0;
 
 }
 
 class BlinkMIDIInputMap {
   static final instance = new BlinkMIDIInputMap();
 
-  static entries_Callback_0(mthis) native "MIDIInputMap_entries_Callback";
-  entries_Callback_0_(mthis) => entries_Callback_0(mthis);
+  entries_Callback_0_(mthis) => mthis.callMethod("entries", []);
 
-  static entries_Callback_1(mthis, __arg_0) native "MIDIInputMap_entries_Callback";
-  entries_Callback_1_(mthis, __arg_0) => entries_Callback_1(mthis, __arg_0);
+  get_Callback_0_(mthis) => mthis.callMethod("get", []);
 
-  static entries_Callback_2(mthis, __arg_0, __arg_1) native "MIDIInputMap_entries_Callback";
-  entries_Callback_2_(mthis, __arg_0, __arg_1) => entries_Callback_2(mthis, __arg_0, __arg_1);
+  get_Callback_1_(mthis, __arg_0) => mthis.callMethod("get", [__arg_0]);
 
-  static get_Callback_0(mthis) native "MIDIInputMap_get_Callback";
-  get_Callback_0_(mthis) => get_Callback_0(mthis);
+  has_Callback_0_(mthis) => mthis.callMethod("has", []);
 
-  static get_Callback_1(mthis, __arg_0) native "MIDIInputMap_get_Callback";
-  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+  has_Callback_1_(mthis, __arg_0) => mthis.callMethod("has", [__arg_0]);
 
-  static get_Callback_2(mthis, __arg_0, __arg_1) native "MIDIInputMap_get_Callback";
-  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+  keys_Callback_0_(mthis) => mthis.callMethod("keys", []);
 
-  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MIDIInputMap_get_Callback";
-  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  size_Getter_(mthis) => mthis["size"];
 
-  static has_Callback_0(mthis) native "MIDIInputMap_has_Callback";
-  has_Callback_0_(mthis) => has_Callback_0(mthis);
-
-  static has_Callback_1(mthis, __arg_0) native "MIDIInputMap_has_Callback";
-  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
-
-  static has_Callback_2(mthis, __arg_0, __arg_1) native "MIDIInputMap_has_Callback";
-  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
-
-  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MIDIInputMap_has_Callback";
-  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static keys_Callback_0(mthis) native "MIDIInputMap_keys_Callback";
-  keys_Callback_0_(mthis) => keys_Callback_0(mthis);
-
-  static keys_Callback_1(mthis, __arg_0) native "MIDIInputMap_keys_Callback";
-  keys_Callback_1_(mthis, __arg_0) => keys_Callback_1(mthis, __arg_0);
-
-  static keys_Callback_2(mthis, __arg_0, __arg_1) native "MIDIInputMap_keys_Callback";
-  keys_Callback_2_(mthis, __arg_0, __arg_1) => keys_Callback_2(mthis, __arg_0, __arg_1);
-
-  static size_Getter(mthis) native "MIDIInputMap_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
-
-  static values_Callback_0(mthis) native "MIDIInputMap_values_Callback";
-  values_Callback_0_(mthis) => values_Callback_0(mthis);
-
-  static values_Callback_1(mthis, __arg_0) native "MIDIInputMap_values_Callback";
-  values_Callback_1_(mthis, __arg_0) => values_Callback_1(mthis, __arg_0);
-
-  static values_Callback_2(mthis, __arg_0, __arg_1) native "MIDIInputMap_values_Callback";
-  values_Callback_2_(mthis, __arg_0, __arg_1) => values_Callback_2(mthis, __arg_0, __arg_1);
+  values_Callback_0_(mthis) => mthis.callMethod("values", []);
 
 }
 
 class BlinkMIDIMessageEvent extends BlinkEvent {
   static final instance = new BlinkMIDIMessageEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MIDIMessageEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MIDIMessageEvent"], [__arg_0, __arg_1]);
 
-  static data_Getter(mthis) native "MIDIMessageEvent_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
+  data_Getter_(mthis) => mthis["data"];
 
-  static receivedTime_Getter(mthis) native "MIDIMessageEvent_receivedTime_Getter";
-  receivedTime_Getter_(mthis) => receivedTime_Getter(mthis);
+  receivedTime_Getter_(mthis) => mthis["receivedTime"];
 
 }
 
 class BlinkMIDIOutput extends BlinkMIDIPort {
   static final instance = new BlinkMIDIOutput();
 
-  static send_Callback_0(mthis) native "MIDIOutput_send_Callback";
-  send_Callback_0_(mthis) => send_Callback_0(mthis);
+  send_Callback_0_(mthis) => mthis.callMethod("send", []);
 
-  static send_Callback_1(mthis, __arg_0) native "MIDIOutput_send_Callback";
-  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
+  send_Callback_1_(mthis, __arg_0) => mthis.callMethod("send", [__arg_0]);
 
-  static send_Callback_2(mthis, __arg_0, __arg_1) native "MIDIOutput_send_Callback";
-  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
-
-  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MIDIOutput_send_Callback";
-  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static send_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MIDIOutput_send_Callback";
-  send_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => send_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  send_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("send", [__arg_0, __arg_1]);
 
 }
 
 class BlinkMIDIOutputMap {
   static final instance = new BlinkMIDIOutputMap();
 
-  static entries_Callback_0(mthis) native "MIDIOutputMap_entries_Callback";
-  entries_Callback_0_(mthis) => entries_Callback_0(mthis);
+  entries_Callback_0_(mthis) => mthis.callMethod("entries", []);
 
-  static entries_Callback_1(mthis, __arg_0) native "MIDIOutputMap_entries_Callback";
-  entries_Callback_1_(mthis, __arg_0) => entries_Callback_1(mthis, __arg_0);
+  get_Callback_0_(mthis) => mthis.callMethod("get", []);
 
-  static entries_Callback_2(mthis, __arg_0, __arg_1) native "MIDIOutputMap_entries_Callback";
-  entries_Callback_2_(mthis, __arg_0, __arg_1) => entries_Callback_2(mthis, __arg_0, __arg_1);
+  get_Callback_1_(mthis, __arg_0) => mthis.callMethod("get", [__arg_0]);
 
-  static get_Callback_0(mthis) native "MIDIOutputMap_get_Callback";
-  get_Callback_0_(mthis) => get_Callback_0(mthis);
+  has_Callback_0_(mthis) => mthis.callMethod("has", []);
 
-  static get_Callback_1(mthis, __arg_0) native "MIDIOutputMap_get_Callback";
-  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+  has_Callback_1_(mthis, __arg_0) => mthis.callMethod("has", [__arg_0]);
 
-  static get_Callback_2(mthis, __arg_0, __arg_1) native "MIDIOutputMap_get_Callback";
-  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+  keys_Callback_0_(mthis) => mthis.callMethod("keys", []);
 
-  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MIDIOutputMap_get_Callback";
-  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  size_Getter_(mthis) => mthis["size"];
 
-  static has_Callback_0(mthis) native "MIDIOutputMap_has_Callback";
-  has_Callback_0_(mthis) => has_Callback_0(mthis);
-
-  static has_Callback_1(mthis, __arg_0) native "MIDIOutputMap_has_Callback";
-  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
-
-  static has_Callback_2(mthis, __arg_0, __arg_1) native "MIDIOutputMap_has_Callback";
-  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
-
-  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MIDIOutputMap_has_Callback";
-  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static keys_Callback_0(mthis) native "MIDIOutputMap_keys_Callback";
-  keys_Callback_0_(mthis) => keys_Callback_0(mthis);
-
-  static keys_Callback_1(mthis, __arg_0) native "MIDIOutputMap_keys_Callback";
-  keys_Callback_1_(mthis, __arg_0) => keys_Callback_1(mthis, __arg_0);
-
-  static keys_Callback_2(mthis, __arg_0, __arg_1) native "MIDIOutputMap_keys_Callback";
-  keys_Callback_2_(mthis, __arg_0, __arg_1) => keys_Callback_2(mthis, __arg_0, __arg_1);
-
-  static size_Getter(mthis) native "MIDIOutputMap_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
-
-  static values_Callback_0(mthis) native "MIDIOutputMap_values_Callback";
-  values_Callback_0_(mthis) => values_Callback_0(mthis);
-
-  static values_Callback_1(mthis, __arg_0) native "MIDIOutputMap_values_Callback";
-  values_Callback_1_(mthis, __arg_0) => values_Callback_1(mthis, __arg_0);
-
-  static values_Callback_2(mthis, __arg_0, __arg_1) native "MIDIOutputMap_values_Callback";
-  values_Callback_2_(mthis, __arg_0, __arg_1) => values_Callback_2(mthis, __arg_0, __arg_1);
+  values_Callback_0_(mthis) => mthis.callMethod("values", []);
 
 }
 
 class BlinkMIDIPort extends BlinkEventTarget {
   static final instance = new BlinkMIDIPort();
 
-  static id_Getter(mthis) native "MIDIPort_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static manufacturer_Getter(mthis) native "MIDIPort_manufacturer_Getter";
-  manufacturer_Getter_(mthis) => manufacturer_Getter(mthis);
+  manufacturer_Getter_(mthis) => mthis["manufacturer"];
 
-  static name_Getter(mthis) native "MIDIPort_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static ondisconnect_Getter(mthis) native "MIDIPort_ondisconnect_Getter";
-  ondisconnect_Getter_(mthis) => ondisconnect_Getter(mthis);
+  ondisconnect_Getter_(mthis) => mthis["ondisconnect"];
 
-  static ondisconnect_Setter(mthis, __arg_0) native "MIDIPort_ondisconnect_Setter";
-  ondisconnect_Setter_(mthis, __arg_0) => ondisconnect_Setter(mthis, __arg_0);
+  ondisconnect_Setter_(mthis, __arg_0) => mthis["ondisconnect"] = __arg_0;
 
-  static type_Getter(mthis) native "MIDIPort_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static version_Getter(mthis) native "MIDIPort_version_Getter";
-  version_Getter_(mthis) => version_Getter(mthis);
+  version_Getter_(mthis) => mthis["version"];
 
 }
 
 class BlinkMediaController extends BlinkEventTarget {
   static final instance = new BlinkMediaController();
 
-  static buffered_Getter(mthis) native "MediaController_buffered_Getter";
-  buffered_Getter_(mthis) => buffered_Getter(mthis);
+  buffered_Getter_(mthis) => mthis["buffered"];
 
-  static constructorCallback_0() native "MediaController_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["MediaController"], []);
 
-  static constructorCallback_1(__arg_0) native "MediaController_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  currentTime_Getter_(mthis) => mthis["currentTime"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaController_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  currentTime_Setter_(mthis, __arg_0) => mthis["currentTime"] = __arg_0;
 
-  static currentTime_Getter(mthis) native "MediaController_currentTime_Getter";
-  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
+  defaultPlaybackRate_Getter_(mthis) => mthis["defaultPlaybackRate"];
 
-  static currentTime_Setter(mthis, __arg_0) native "MediaController_currentTime_Setter";
-  currentTime_Setter_(mthis, __arg_0) => currentTime_Setter(mthis, __arg_0);
+  defaultPlaybackRate_Setter_(mthis, __arg_0) => mthis["defaultPlaybackRate"] = __arg_0;
 
-  static defaultPlaybackRate_Getter(mthis) native "MediaController_defaultPlaybackRate_Getter";
-  defaultPlaybackRate_Getter_(mthis) => defaultPlaybackRate_Getter(mthis);
+  duration_Getter_(mthis) => mthis["duration"];
 
-  static defaultPlaybackRate_Setter(mthis, __arg_0) native "MediaController_defaultPlaybackRate_Setter";
-  defaultPlaybackRate_Setter_(mthis, __arg_0) => defaultPlaybackRate_Setter(mthis, __arg_0);
+  muted_Getter_(mthis) => mthis["muted"];
 
-  static duration_Getter(mthis) native "MediaController_duration_Getter";
-  duration_Getter_(mthis) => duration_Getter(mthis);
+  muted_Setter_(mthis, __arg_0) => mthis["muted"] = __arg_0;
 
-  static muted_Getter(mthis) native "MediaController_muted_Getter";
-  muted_Getter_(mthis) => muted_Getter(mthis);
+  pause_Callback_0_(mthis) => mthis.callMethod("pause", []);
 
-  static muted_Setter(mthis, __arg_0) native "MediaController_muted_Setter";
-  muted_Setter_(mthis, __arg_0) => muted_Setter(mthis, __arg_0);
+  paused_Getter_(mthis) => mthis["paused"];
 
-  static pause_Callback_0(mthis) native "MediaController_pause_Callback";
-  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
+  play_Callback_0_(mthis) => mthis.callMethod("play", []);
 
-  static pause_Callback_1(mthis, __arg_0) native "MediaController_pause_Callback";
-  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
+  playbackRate_Getter_(mthis) => mthis["playbackRate"];
 
-  static pause_Callback_2(mthis, __arg_0, __arg_1) native "MediaController_pause_Callback";
-  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
+  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
 
-  static paused_Getter(mthis) native "MediaController_paused_Getter";
-  paused_Getter_(mthis) => paused_Getter(mthis);
+  playbackState_Getter_(mthis) => mthis["playbackState"];
 
-  static play_Callback_0(mthis) native "MediaController_play_Callback";
-  play_Callback_0_(mthis) => play_Callback_0(mthis);
+  played_Getter_(mthis) => mthis["played"];
 
-  static play_Callback_1(mthis, __arg_0) native "MediaController_play_Callback";
-  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
+  seekable_Getter_(mthis) => mthis["seekable"];
 
-  static play_Callback_2(mthis, __arg_0, __arg_1) native "MediaController_play_Callback";
-  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
+  unpause_Callback_0_(mthis) => mthis.callMethod("unpause", []);
 
-  static playbackRate_Getter(mthis) native "MediaController_playbackRate_Getter";
-  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
+  volume_Getter_(mthis) => mthis["volume"];
 
-  static playbackRate_Setter(mthis, __arg_0) native "MediaController_playbackRate_Setter";
-  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
-
-  static playbackState_Getter(mthis) native "MediaController_playbackState_Getter";
-  playbackState_Getter_(mthis) => playbackState_Getter(mthis);
-
-  static played_Getter(mthis) native "MediaController_played_Getter";
-  played_Getter_(mthis) => played_Getter(mthis);
-
-  static seekable_Getter(mthis) native "MediaController_seekable_Getter";
-  seekable_Getter_(mthis) => seekable_Getter(mthis);
-
-  static unpause_Callback_0(mthis) native "MediaController_unpause_Callback";
-  unpause_Callback_0_(mthis) => unpause_Callback_0(mthis);
-
-  static unpause_Callback_1(mthis, __arg_0) native "MediaController_unpause_Callback";
-  unpause_Callback_1_(mthis, __arg_0) => unpause_Callback_1(mthis, __arg_0);
-
-  static unpause_Callback_2(mthis, __arg_0, __arg_1) native "MediaController_unpause_Callback";
-  unpause_Callback_2_(mthis, __arg_0, __arg_1) => unpause_Callback_2(mthis, __arg_0, __arg_1);
-
-  static volume_Getter(mthis) native "MediaController_volume_Getter";
-  volume_Getter_(mthis) => volume_Getter(mthis);
-
-  static volume_Setter(mthis, __arg_0) native "MediaController_volume_Setter";
-  volume_Setter_(mthis, __arg_0) => volume_Setter(mthis, __arg_0);
+  volume_Setter_(mthis, __arg_0) => mthis["volume"] = __arg_0;
 
 }
 
 class BlinkMediaDeviceInfo {
   static final instance = new BlinkMediaDeviceInfo();
 
-  static deviceId_Getter(mthis) native "MediaDeviceInfo_deviceId_Getter";
-  deviceId_Getter_(mthis) => deviceId_Getter(mthis);
+  deviceId_Getter_(mthis) => mthis["deviceId"];
 
-  static groupId_Getter(mthis) native "MediaDeviceInfo_groupId_Getter";
-  groupId_Getter_(mthis) => groupId_Getter(mthis);
+  groupId_Getter_(mthis) => mthis["groupId"];
 
-  static kind_Getter(mthis) native "MediaDeviceInfo_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static label_Getter(mthis) native "MediaDeviceInfo_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
 }
 
 class BlinkMediaElementAudioSourceNode extends BlinkAudioSourceNode {
   static final instance = new BlinkMediaElementAudioSourceNode();
 
-  static mediaElement_Getter(mthis) native "MediaElementAudioSourceNode_mediaElement_Getter";
-  mediaElement_Getter_(mthis) => mediaElement_Getter(mthis);
+  mediaElement_Getter_(mthis) => mthis["mediaElement"];
 
 }
 
 class BlinkMediaError {
   static final instance = new BlinkMediaError();
 
-  static code_Getter(mthis) native "MediaError_code_Getter";
-  code_Getter_(mthis) => code_Getter(mthis);
+  code_Getter_(mthis) => mthis["code"];
 
 }
 
 class BlinkMediaKeyError {
   static final instance = new BlinkMediaKeyError();
 
-  static code_Getter(mthis) native "MediaKeyError_code_Getter";
-  code_Getter_(mthis) => code_Getter(mthis);
+  code_Getter_(mthis) => mthis["code"];
 
-  static systemCode_Getter(mthis) native "MediaKeyError_systemCode_Getter";
-  systemCode_Getter_(mthis) => systemCode_Getter(mthis);
+  systemCode_Getter_(mthis) => mthis["systemCode"];
 
 }
 
 class BlinkMediaKeyEvent extends BlinkEvent {
   static final instance = new BlinkMediaKeyEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaKeyEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MediaKeyEvent"], [__arg_0, __arg_1]);
 
-  static defaultURL_Getter(mthis) native "MediaKeyEvent_defaultURL_Getter";
-  defaultURL_Getter_(mthis) => defaultURL_Getter(mthis);
+  defaultURL_Getter_(mthis) => mthis["defaultURL"];
 
-  static errorCode_Getter(mthis) native "MediaKeyEvent_errorCode_Getter";
-  errorCode_Getter_(mthis) => errorCode_Getter(mthis);
+  errorCode_Getter_(mthis) => mthis["errorCode"];
 
-  static initData_Getter(mthis) native "MediaKeyEvent_initData_Getter";
-  initData_Getter_(mthis) => initData_Getter(mthis);
+  initData_Getter_(mthis) => mthis["initData"];
 
-  static keySystem_Getter(mthis) native "MediaKeyEvent_keySystem_Getter";
-  keySystem_Getter_(mthis) => keySystem_Getter(mthis);
+  keySystem_Getter_(mthis) => mthis["keySystem"];
 
-  static message_Getter(mthis) native "MediaKeyEvent_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
-  static sessionId_Getter(mthis) native "MediaKeyEvent_sessionId_Getter";
-  sessionId_Getter_(mthis) => sessionId_Getter(mthis);
+  sessionId_Getter_(mthis) => mthis["sessionId"];
 
-  static systemCode_Getter(mthis) native "MediaKeyEvent_systemCode_Getter";
-  systemCode_Getter_(mthis) => systemCode_Getter(mthis);
+  systemCode_Getter_(mthis) => mthis["systemCode"];
 
 }
 
 class BlinkMediaKeyMessageEvent extends BlinkEvent {
   static final instance = new BlinkMediaKeyMessageEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaKeyMessageEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MediaKeyMessageEvent"], [__arg_0, __arg_1]);
 
-  static destinationURL_Getter(mthis) native "MediaKeyMessageEvent_destinationURL_Getter";
-  destinationURL_Getter_(mthis) => destinationURL_Getter(mthis);
+  destinationURL_Getter_(mthis) => mthis["destinationURL"];
 
-  static message_Getter(mthis) native "MediaKeyMessageEvent_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
 }
 
 class BlinkMediaKeyNeededEvent extends BlinkEvent {
   static final instance = new BlinkMediaKeyNeededEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaKeyNeededEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MediaKeyNeededEvent"], [__arg_0, __arg_1]);
 
-  static contentType_Getter(mthis) native "MediaKeyNeededEvent_contentType_Getter";
-  contentType_Getter_(mthis) => contentType_Getter(mthis);
+  contentType_Getter_(mthis) => mthis["contentType"];
 
-  static initData_Getter(mthis) native "MediaKeyNeededEvent_initData_Getter";
-  initData_Getter_(mthis) => initData_Getter(mthis);
+  initData_Getter_(mthis) => mthis["initData"];
 
 }
 
 class BlinkMediaKeySession extends BlinkEventTarget {
   static final instance = new BlinkMediaKeySession();
 
-  static closed_Getter(mthis) native "MediaKeySession_closed_Getter";
-  closed_Getter_(mthis) => closed_Getter(mthis);
+  closed_Getter_(mthis) => mthis["closed"];
 
-  static error_Getter(mthis) native "MediaKeySession_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  error_Getter_(mthis) => mthis["error"];
 
-  static generateRequest_Callback_0(mthis) native "MediaKeySession_generateRequest_Callback";
-  generateRequest_Callback_0_(mthis) => generateRequest_Callback_0(mthis);
+  generateRequest_Callback_0_(mthis) => mthis.callMethod("generateRequest", []);
 
-  static generateRequest_Callback_1(mthis, __arg_0) native "MediaKeySession_generateRequest_Callback";
-  generateRequest_Callback_1_(mthis, __arg_0) => generateRequest_Callback_1(mthis, __arg_0);
+  generateRequest_Callback_1_(mthis, __arg_0) => mthis.callMethod("generateRequest", [__arg_0]);
 
-  static generateRequest_Callback_2(mthis, __arg_0, __arg_1) native "MediaKeySession_generateRequest_Callback";
-  generateRequest_Callback_2_(mthis, __arg_0, __arg_1) => generateRequest_Callback_2(mthis, __arg_0, __arg_1);
+  generateRequest_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("generateRequest", [__arg_0, __arg_1]);
 
-  static generateRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaKeySession_generateRequest_Callback";
-  generateRequest_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => generateRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  keySystem_Getter_(mthis) => mthis["keySystem"];
 
-  static generateRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MediaKeySession_generateRequest_Callback";
-  generateRequest_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => generateRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  release_Callback_0_(mthis) => mthis.callMethod("release", []);
 
-  static keySystem_Getter(mthis) native "MediaKeySession_keySystem_Getter";
-  keySystem_Getter_(mthis) => keySystem_Getter(mthis);
+  sessionId_Getter_(mthis) => mthis["sessionId"];
 
-  static release_Callback_0(mthis) native "MediaKeySession_release_Callback";
-  release_Callback_0_(mthis) => release_Callback_0(mthis);
+  update_Callback_0_(mthis) => mthis.callMethod("update", []);
 
-  static release_Callback_1(mthis, __arg_0) native "MediaKeySession_release_Callback";
-  release_Callback_1_(mthis, __arg_0) => release_Callback_1(mthis, __arg_0);
-
-  static release_Callback_2(mthis, __arg_0, __arg_1) native "MediaKeySession_release_Callback";
-  release_Callback_2_(mthis, __arg_0, __arg_1) => release_Callback_2(mthis, __arg_0, __arg_1);
-
-  static sessionId_Getter(mthis) native "MediaKeySession_sessionId_Getter";
-  sessionId_Getter_(mthis) => sessionId_Getter(mthis);
-
-  static update_Callback_0(mthis) native "MediaKeySession_update_Callback";
-  update_Callback_0_(mthis) => update_Callback_0(mthis);
-
-  static update_Callback_1(mthis, __arg_0) native "MediaKeySession_update_Callback";
-  update_Callback_1_(mthis, __arg_0) => update_Callback_1(mthis, __arg_0);
-
-  static update_Callback_2(mthis, __arg_0, __arg_1) native "MediaKeySession_update_Callback";
-  update_Callback_2_(mthis, __arg_0, __arg_1) => update_Callback_2(mthis, __arg_0, __arg_1);
-
-  static update_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaKeySession_update_Callback";
-  update_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => update_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  update_Callback_1_(mthis, __arg_0) => mthis.callMethod("update", [__arg_0]);
 
 }
 
 class BlinkMediaKeys {
   static final instance = new BlinkMediaKeys();
 
-  static createSession_Callback_0(mthis) native "MediaKeys_createSession_Callback";
-  createSession_Callback_0_(mthis) => createSession_Callback_0(mthis);
+  createSession_Callback_0_(mthis) => mthis.callMethod("createSession", []);
 
-  static createSession_Callback_1(mthis, __arg_0) native "MediaKeys_createSession_Callback";
-  createSession_Callback_1_(mthis, __arg_0) => createSession_Callback_1(mthis, __arg_0);
+  createSession_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSession", [__arg_0]);
 
-  static createSession_Callback_2(mthis, __arg_0, __arg_1) native "MediaKeys_createSession_Callback";
-  createSession_Callback_2_(mthis, __arg_0, __arg_1) => createSession_Callback_2(mthis, __arg_0, __arg_1);
+  create_Callback_0_() => js.context["MediaKeys"].callMethod("create", []);
 
-  static createSession_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaKeys_createSession_Callback";
-  createSession_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSession_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  create_Callback_1_(__arg_0) => js.context["MediaKeys"].callMethod("create", [__arg_0]);
 
-  static create_Callback_0() native "MediaKeys_create_Callback";
-  create_Callback_0_() => create_Callback_0();
+  isTypeSupported_Callback_0_() => js.context["MediaKeys"].callMethod("isTypeSupported", []);
 
-  static create_Callback_1(__arg_0) native "MediaKeys_create_Callback";
-  create_Callback_1_(__arg_0) => create_Callback_1(__arg_0);
+  isTypeSupported_Callback_1_(__arg_0) => js.context["MediaKeys"].callMethod("isTypeSupported", [__arg_0]);
 
-  static create_Callback_2(__arg_0, __arg_1) native "MediaKeys_create_Callback";
-  create_Callback_2_(__arg_0, __arg_1) => create_Callback_2(__arg_0, __arg_1);
+  isTypeSupported_Callback_2_(__arg_0, __arg_1) => js.context["MediaKeys"].callMethod("isTypeSupported", [__arg_0, __arg_1]);
 
-  static create_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaKeys_create_Callback";
-  create_Callback_3_(__arg_0, __arg_1, __arg_2) => create_Callback_3(__arg_0, __arg_1, __arg_2);
-
-  static isTypeSupported_Callback_0() native "MediaKeys_isTypeSupported_Callback";
-  isTypeSupported_Callback_0_() => isTypeSupported_Callback_0();
-
-  static isTypeSupported_Callback_1(__arg_0) native "MediaKeys_isTypeSupported_Callback";
-  isTypeSupported_Callback_1_(__arg_0) => isTypeSupported_Callback_1(__arg_0);
-
-  static isTypeSupported_Callback_2(__arg_0, __arg_1) native "MediaKeys_isTypeSupported_Callback";
-  isTypeSupported_Callback_2_(__arg_0, __arg_1) => isTypeSupported_Callback_2(__arg_0, __arg_1);
-
-  static isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaKeys_isTypeSupported_Callback";
-  isTypeSupported_Callback_3_(__arg_0, __arg_1, __arg_2) => isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2);
-
-  static isTypeSupported_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "MediaKeys_isTypeSupported_Callback";
-  isTypeSupported_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => isTypeSupported_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
-
-  static keySystem_Getter(mthis) native "MediaKeys_keySystem_Getter";
-  keySystem_Getter_(mthis) => keySystem_Getter(mthis);
+  keySystem_Getter_(mthis) => mthis["keySystem"];
 
 }
 
 class BlinkMediaList {
   static final instance = new BlinkMediaList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "MediaList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static appendMedium_Callback_0(mthis) native "MediaList_appendMedium_Callback";
-  appendMedium_Callback_0_(mthis) => appendMedium_Callback_0(mthis);
+  appendMedium_Callback_0_(mthis) => mthis.callMethod("appendMedium", []);
 
-  static appendMedium_Callback_1(mthis, __arg_0) native "MediaList_appendMedium_Callback";
-  appendMedium_Callback_1_(mthis, __arg_0) => appendMedium_Callback_1(mthis, __arg_0);
+  appendMedium_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendMedium", [__arg_0]);
 
-  static appendMedium_Callback_2(mthis, __arg_0, __arg_1) native "MediaList_appendMedium_Callback";
-  appendMedium_Callback_2_(mthis, __arg_0, __arg_1) => appendMedium_Callback_2(mthis, __arg_0, __arg_1);
+  deleteMedium_Callback_0_(mthis) => mthis.callMethod("deleteMedium", []);
 
-  static appendMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaList_appendMedium_Callback";
-  appendMedium_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  deleteMedium_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteMedium", [__arg_0]);
 
-  static deleteMedium_Callback_0(mthis) native "MediaList_deleteMedium_Callback";
-  deleteMedium_Callback_0_(mthis) => deleteMedium_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static deleteMedium_Callback_1(mthis, __arg_0) native "MediaList_deleteMedium_Callback";
-  deleteMedium_Callback_1_(mthis, __arg_0) => deleteMedium_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static deleteMedium_Callback_2(mthis, __arg_0, __arg_1) native "MediaList_deleteMedium_Callback";
-  deleteMedium_Callback_2_(mthis, __arg_0, __arg_1) => deleteMedium_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static deleteMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaList_deleteMedium_Callback";
-  deleteMedium_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  mediaText_Getter_(mthis) => mthis["mediaText"];
 
-  static item_Callback_0(mthis) native "MediaList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
-
-  static item_Callback_1(mthis, __arg_0) native "MediaList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
-
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "MediaList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "MediaList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static mediaText_Getter(mthis) native "MediaList_mediaText_Getter";
-  mediaText_Getter_(mthis) => mediaText_Getter(mthis);
-
-  static mediaText_Setter(mthis, __arg_0) native "MediaList_mediaText_Setter";
-  mediaText_Setter_(mthis, __arg_0) => mediaText_Setter(mthis, __arg_0);
+  mediaText_Setter_(mthis, __arg_0) => mthis["mediaText"] = __arg_0;
 
 }
 
 class BlinkMediaQueryList extends BlinkEventTarget {
   static final instance = new BlinkMediaQueryList();
 
-  static addListener_Callback_0(mthis) native "MediaQueryList_addListener_Callback";
-  addListener_Callback_0_(mthis) => addListener_Callback_0(mthis);
+  addListener_Callback_0_(mthis) => mthis.callMethod("addListener", []);
 
-  static addListener_Callback_1(mthis, __arg_0) native "MediaQueryList_addListener_Callback";
-  addListener_Callback_1_(mthis, __arg_0) => addListener_Callback_1(mthis, __arg_0);
+  addListener_Callback_1_(mthis, __arg_0) => mthis.callMethod("addListener", [__arg_0]);
 
-  static addListener_Callback_2(mthis, __arg_0, __arg_1) native "MediaQueryList_addListener_Callback";
-  addListener_Callback_2_(mthis, __arg_0, __arg_1) => addListener_Callback_2(mthis, __arg_0, __arg_1);
+  matches_Getter_(mthis) => mthis["matches"];
 
-  static addListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaQueryList_addListener_Callback";
-  addListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  media_Getter_(mthis) => mthis["media"];
 
-  static matches_Getter(mthis) native "MediaQueryList_matches_Getter";
-  matches_Getter_(mthis) => matches_Getter(mthis);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static media_Getter(mthis) native "MediaQueryList_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static onchange_Getter(mthis) native "MediaQueryList_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  removeListener_Callback_0_(mthis) => mthis.callMethod("removeListener", []);
 
-  static onchange_Setter(mthis, __arg_0) native "MediaQueryList_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
-
-  static removeListener_Callback_0(mthis) native "MediaQueryList_removeListener_Callback";
-  removeListener_Callback_0_(mthis) => removeListener_Callback_0(mthis);
-
-  static removeListener_Callback_1(mthis, __arg_0) native "MediaQueryList_removeListener_Callback";
-  removeListener_Callback_1_(mthis, __arg_0) => removeListener_Callback_1(mthis, __arg_0);
-
-  static removeListener_Callback_2(mthis, __arg_0, __arg_1) native "MediaQueryList_removeListener_Callback";
-  removeListener_Callback_2_(mthis, __arg_0, __arg_1) => removeListener_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaQueryList_removeListener_Callback";
-  removeListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeListener_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeListener", [__arg_0]);
 
 }
 
 class BlinkMediaQueryListEvent extends BlinkEvent {
   static final instance = new BlinkMediaQueryListEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaQueryListEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MediaQueryListEvent"], [__arg_0, __arg_1]);
 
-  static matches_Getter(mthis) native "MediaQueryListEvent_matches_Getter";
-  matches_Getter_(mthis) => matches_Getter(mthis);
+  matches_Getter_(mthis) => mthis["matches"];
 
-  static media_Getter(mthis) native "MediaQueryListEvent_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
 }
 
 class BlinkMediaSource extends BlinkEventTarget {
   static final instance = new BlinkMediaSource();
 
-  static activeSourceBuffers_Getter(mthis) native "MediaSource_activeSourceBuffers_Getter";
-  activeSourceBuffers_Getter_(mthis) => activeSourceBuffers_Getter(mthis);
+  activeSourceBuffers_Getter_(mthis) => mthis["activeSourceBuffers"];
 
-  static addSourceBuffer_Callback_0(mthis) native "MediaSource_addSourceBuffer_Callback";
-  addSourceBuffer_Callback_0_(mthis) => addSourceBuffer_Callback_0(mthis);
+  addSourceBuffer_Callback_0_(mthis) => mthis.callMethod("addSourceBuffer", []);
 
-  static addSourceBuffer_Callback_1(mthis, __arg_0) native "MediaSource_addSourceBuffer_Callback";
-  addSourceBuffer_Callback_1_(mthis, __arg_0) => addSourceBuffer_Callback_1(mthis, __arg_0);
+  addSourceBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("addSourceBuffer", [__arg_0]);
 
-  static addSourceBuffer_Callback_2(mthis, __arg_0, __arg_1) native "MediaSource_addSourceBuffer_Callback";
-  addSourceBuffer_Callback_2_(mthis, __arg_0, __arg_1) => addSourceBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_0_() => new js.JsObject(js.context["MediaSource"], []);
 
-  static addSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaSource_addSourceBuffer_Callback";
-  addSourceBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  duration_Getter_(mthis) => mthis["duration"];
 
-  static constructorCallback_0() native "MediaSource_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  duration_Setter_(mthis, __arg_0) => mthis["duration"] = __arg_0;
 
-  static constructorCallback_1(__arg_0) native "MediaSource_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  endOfStream_Callback_0_(mthis) => mthis.callMethod("endOfStream", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaSource_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  endOfStream_Callback_1_(mthis, __arg_0) => mthis.callMethod("endOfStream", [__arg_0]);
 
-  static duration_Getter(mthis) native "MediaSource_duration_Getter";
-  duration_Getter_(mthis) => duration_Getter(mthis);
+  isTypeSupported_Callback_0_() => js.context["MediaSource"].callMethod("isTypeSupported", []);
 
-  static duration_Setter(mthis, __arg_0) native "MediaSource_duration_Setter";
-  duration_Setter_(mthis, __arg_0) => duration_Setter(mthis, __arg_0);
+  isTypeSupported_Callback_1_(__arg_0) => js.context["MediaSource"].callMethod("isTypeSupported", [__arg_0]);
 
-  static endOfStream_Callback_0(mthis) native "MediaSource_endOfStream_Callback";
-  endOfStream_Callback_0_(mthis) => endOfStream_Callback_0(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static endOfStream_Callback_1(mthis, __arg_0) native "MediaSource_endOfStream_Callback";
-  endOfStream_Callback_1_(mthis, __arg_0) => endOfStream_Callback_1(mthis, __arg_0);
+  removeSourceBuffer_Callback_0_(mthis) => mthis.callMethod("removeSourceBuffer", []);
 
-  static endOfStream_Callback_2(mthis, __arg_0, __arg_1) native "MediaSource_endOfStream_Callback";
-  endOfStream_Callback_2_(mthis, __arg_0, __arg_1) => endOfStream_Callback_2(mthis, __arg_0, __arg_1);
+  removeSourceBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeSourceBuffer", [__arg_0]);
 
-  static endOfStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaSource_endOfStream_Callback";
-  endOfStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => endOfStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isTypeSupported_Callback_0() native "MediaSource_isTypeSupported_Callback";
-  isTypeSupported_Callback_0_() => isTypeSupported_Callback_0();
-
-  static isTypeSupported_Callback_1(__arg_0) native "MediaSource_isTypeSupported_Callback";
-  isTypeSupported_Callback_1_(__arg_0) => isTypeSupported_Callback_1(__arg_0);
-
-  static isTypeSupported_Callback_2(__arg_0, __arg_1) native "MediaSource_isTypeSupported_Callback";
-  isTypeSupported_Callback_2_(__arg_0, __arg_1) => isTypeSupported_Callback_2(__arg_0, __arg_1);
-
-  static isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaSource_isTypeSupported_Callback";
-  isTypeSupported_Callback_3_(__arg_0, __arg_1, __arg_2) => isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2);
-
-  static readyState_Getter(mthis) native "MediaSource_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
-
-  static removeSourceBuffer_Callback_0(mthis) native "MediaSource_removeSourceBuffer_Callback";
-  removeSourceBuffer_Callback_0_(mthis) => removeSourceBuffer_Callback_0(mthis);
-
-  static removeSourceBuffer_Callback_1(mthis, __arg_0) native "MediaSource_removeSourceBuffer_Callback";
-  removeSourceBuffer_Callback_1_(mthis, __arg_0) => removeSourceBuffer_Callback_1(mthis, __arg_0);
-
-  static removeSourceBuffer_Callback_2(mthis, __arg_0, __arg_1) native "MediaSource_removeSourceBuffer_Callback";
-  removeSourceBuffer_Callback_2_(mthis, __arg_0, __arg_1) => removeSourceBuffer_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaSource_removeSourceBuffer_Callback";
-  removeSourceBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static sourceBuffers_Getter(mthis) native "MediaSource_sourceBuffers_Getter";
-  sourceBuffers_Getter_(mthis) => sourceBuffers_Getter(mthis);
+  sourceBuffers_Getter_(mthis) => mthis["sourceBuffers"];
 
 }
 
 class BlinkMediaStream extends BlinkEventTarget {
   static final instance = new BlinkMediaStream();
 
-  static addTrack_Callback_0(mthis) native "MediaStream_addTrack_Callback";
-  addTrack_Callback_0_(mthis) => addTrack_Callback_0(mthis);
+  addTrack_Callback_0_(mthis) => mthis.callMethod("addTrack", []);
 
-  static addTrack_Callback_1(mthis, __arg_0) native "MediaStream_addTrack_Callback";
-  addTrack_Callback_1_(mthis, __arg_0) => addTrack_Callback_1(mthis, __arg_0);
+  addTrack_Callback_1_(mthis, __arg_0) => mthis.callMethod("addTrack", [__arg_0]);
 
-  static addTrack_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_addTrack_Callback";
-  addTrack_Callback_2_(mthis, __arg_0, __arg_1) => addTrack_Callback_2(mthis, __arg_0, __arg_1);
+  clone_Callback_0_(mthis) => mthis.callMethod("clone", []);
 
-  static addTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaStream_addTrack_Callback";
-  addTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  constructorCallback_0_() => new js.JsObject(js.context["MediaStream"], []);
 
-  static clone_Callback_0(mthis) native "MediaStream_clone_Callback";
-  clone_Callback_0_(mthis) => clone_Callback_0(mthis);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["MediaStream"], [__arg_0]);
 
-  static clone_Callback_1(mthis, __arg_0) native "MediaStream_clone_Callback";
-  clone_Callback_1_(mthis, __arg_0) => clone_Callback_1(mthis, __arg_0);
+  ended_Getter_(mthis) => mthis["ended"];
 
-  static clone_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_clone_Callback";
-  clone_Callback_2_(mthis, __arg_0, __arg_1) => clone_Callback_2(mthis, __arg_0, __arg_1);
+  getAudioTracks_Callback_0_(mthis) => mthis.callMethod("getAudioTracks", []);
 
-  static constructorCallback_0() native "MediaStream_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  getTrackById_Callback_0_(mthis) => mthis.callMethod("getTrackById", []);
 
-  static constructorCallback_1(__arg_0) native "MediaStream_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  getTrackById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getTrackById", [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaStream_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  getTracks_Callback_0_(mthis) => mthis.callMethod("getTracks", []);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "MediaStream_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  getVideoTracks_Callback_0_(mthis) => mthis.callMethod("getVideoTracks", []);
 
-  static ended_Getter(mthis) native "MediaStream_ended_Getter";
-  ended_Getter_(mthis) => ended_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static getAudioTracks_Callback_0(mthis) native "MediaStream_getAudioTracks_Callback";
-  getAudioTracks_Callback_0_(mthis) => getAudioTracks_Callback_0(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static getAudioTracks_Callback_1(mthis, __arg_0) native "MediaStream_getAudioTracks_Callback";
-  getAudioTracks_Callback_1_(mthis, __arg_0) => getAudioTracks_Callback_1(mthis, __arg_0);
+  onaddtrack_Getter_(mthis) => mthis["onaddtrack"];
 
-  static getAudioTracks_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getAudioTracks_Callback";
-  getAudioTracks_Callback_2_(mthis, __arg_0, __arg_1) => getAudioTracks_Callback_2(mthis, __arg_0, __arg_1);
+  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
 
-  static getTrackById_Callback_0(mthis) native "MediaStream_getTrackById_Callback";
-  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static getTrackById_Callback_1(mthis, __arg_0) native "MediaStream_getTrackById_Callback";
-  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getTrackById_Callback";
-  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+  onremovetrack_Getter_(mthis) => mthis["onremovetrack"];
 
-  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaStream_getTrackById_Callback";
-  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
 
-  static getTracks_Callback_0(mthis) native "MediaStream_getTracks_Callback";
-  getTracks_Callback_0_(mthis) => getTracks_Callback_0(mthis);
+  removeTrack_Callback_0_(mthis) => mthis.callMethod("removeTrack", []);
 
-  static getTracks_Callback_1(mthis, __arg_0) native "MediaStream_getTracks_Callback";
-  getTracks_Callback_1_(mthis, __arg_0) => getTracks_Callback_1(mthis, __arg_0);
+  removeTrack_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeTrack", [__arg_0]);
 
-  static getTracks_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getTracks_Callback";
-  getTracks_Callback_2_(mthis, __arg_0, __arg_1) => getTracks_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getVideoTracks_Callback_0(mthis) native "MediaStream_getVideoTracks_Callback";
-  getVideoTracks_Callback_0_(mthis) => getVideoTracks_Callback_0(mthis);
-
-  static getVideoTracks_Callback_1(mthis, __arg_0) native "MediaStream_getVideoTracks_Callback";
-  getVideoTracks_Callback_1_(mthis, __arg_0) => getVideoTracks_Callback_1(mthis, __arg_0);
-
-  static getVideoTracks_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getVideoTracks_Callback";
-  getVideoTracks_Callback_2_(mthis, __arg_0, __arg_1) => getVideoTracks_Callback_2(mthis, __arg_0, __arg_1);
-
-  static id_Getter(mthis) native "MediaStream_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
-
-  static label_Getter(mthis) native "MediaStream_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
-
-  static onaddtrack_Getter(mthis) native "MediaStream_onaddtrack_Getter";
-  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
-
-  static onaddtrack_Setter(mthis, __arg_0) native "MediaStream_onaddtrack_Setter";
-  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
-
-  static onended_Getter(mthis) native "MediaStream_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
-
-  static onended_Setter(mthis, __arg_0) native "MediaStream_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
-
-  static onremovetrack_Getter(mthis) native "MediaStream_onremovetrack_Getter";
-  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
-
-  static onremovetrack_Setter(mthis, __arg_0) native "MediaStream_onremovetrack_Setter";
-  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
-
-  static removeTrack_Callback_0(mthis) native "MediaStream_removeTrack_Callback";
-  removeTrack_Callback_0_(mthis) => removeTrack_Callback_0(mthis);
-
-  static removeTrack_Callback_1(mthis, __arg_0) native "MediaStream_removeTrack_Callback";
-  removeTrack_Callback_1_(mthis, __arg_0) => removeTrack_Callback_1(mthis, __arg_0);
-
-  static removeTrack_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_removeTrack_Callback";
-  removeTrack_Callback_2_(mthis, __arg_0, __arg_1) => removeTrack_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaStream_removeTrack_Callback";
-  removeTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stop_Callback_0(mthis) native "MediaStream_stop_Callback";
-  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
-
-  static stop_Callback_1(mthis, __arg_0) native "MediaStream_stop_Callback";
-  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
-
-  static stop_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_stop_Callback";
-  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+  stop_Callback_0_(mthis) => mthis.callMethod("stop", []);
 
 }
 
 class BlinkMediaStreamAudioDestinationNode extends BlinkAudioNode {
   static final instance = new BlinkMediaStreamAudioDestinationNode();
 
-  static stream_Getter(mthis) native "MediaStreamAudioDestinationNode_stream_Getter";
-  stream_Getter_(mthis) => stream_Getter(mthis);
+  stream_Getter_(mthis) => mthis["stream"];
 
 }
 
 class BlinkMediaStreamAudioSourceNode extends BlinkAudioSourceNode {
   static final instance = new BlinkMediaStreamAudioSourceNode();
 
-  static mediaStream_Getter(mthis) native "MediaStreamAudioSourceNode_mediaStream_Getter";
-  mediaStream_Getter_(mthis) => mediaStream_Getter(mthis);
+  mediaStream_Getter_(mthis) => mthis["mediaStream"];
 
 }
 
 class BlinkMediaStreamEvent extends BlinkEvent {
   static final instance = new BlinkMediaStreamEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MediaStreamEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MediaStreamEvent"], [__arg_0, __arg_1]);
 
-  static stream_Getter(mthis) native "MediaStreamEvent_stream_Getter";
-  stream_Getter_(mthis) => stream_Getter(mthis);
+  stream_Getter_(mthis) => mthis["stream"];
 
 }
 
 class BlinkMediaStreamTrack extends BlinkEventTarget {
   static final instance = new BlinkMediaStreamTrack();
 
-  static clone_Callback_0(mthis) native "MediaStreamTrack_clone_Callback";
-  clone_Callback_0_(mthis) => clone_Callback_0(mthis);
+  clone_Callback_0_(mthis) => mthis.callMethod("clone", []);
 
-  static clone_Callback_1(mthis, __arg_0) native "MediaStreamTrack_clone_Callback";
-  clone_Callback_1_(mthis, __arg_0) => clone_Callback_1(mthis, __arg_0);
+  enabled_Getter_(mthis) => mthis["enabled"];
 
-  static clone_Callback_2(mthis, __arg_0, __arg_1) native "MediaStreamTrack_clone_Callback";
-  clone_Callback_2_(mthis, __arg_0, __arg_1) => clone_Callback_2(mthis, __arg_0, __arg_1);
+  enabled_Setter_(mthis, __arg_0) => mthis["enabled"] = __arg_0;
 
-  static enabled_Getter(mthis) native "MediaStreamTrack_enabled_Getter";
-  enabled_Getter_(mthis) => enabled_Getter(mthis);
+  getSources_Callback_0_() => js.context["MediaStreamTrack"].callMethod("getSources", []);
 
-  static enabled_Setter(mthis, __arg_0) native "MediaStreamTrack_enabled_Setter";
-  enabled_Setter_(mthis, __arg_0) => enabled_Setter(mthis, __arg_0);
+  getSources_Callback_1_(__arg_0) => js.context["MediaStreamTrack"].callMethod("getSources", [__arg_0]);
 
-  static getSources_Callback_0() native "MediaStreamTrack_getSources_Callback";
-  getSources_Callback_0_() => getSources_Callback_0();
+  id_Getter_(mthis) => mthis["id"];
 
-  static getSources_Callback_1(__arg_0) native "MediaStreamTrack_getSources_Callback";
-  getSources_Callback_1_(__arg_0) => getSources_Callback_1(__arg_0);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static getSources_Callback_2(__arg_0, __arg_1) native "MediaStreamTrack_getSources_Callback";
-  getSources_Callback_2_(__arg_0, __arg_1) => getSources_Callback_2(__arg_0, __arg_1);
+  label_Getter_(mthis) => mthis["label"];
 
-  static getSources_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaStreamTrack_getSources_Callback";
-  getSources_Callback_3_(__arg_0, __arg_1, __arg_2) => getSources_Callback_3(__arg_0, __arg_1, __arg_2);
+  muted_Getter_(mthis) => mthis["muted"];
 
-  static id_Getter(mthis) native "MediaStreamTrack_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static kind_Getter(mthis) native "MediaStreamTrack_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static label_Getter(mthis) native "MediaStreamTrack_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  onmute_Getter_(mthis) => mthis["onmute"];
 
-  static muted_Getter(mthis) native "MediaStreamTrack_muted_Getter";
-  muted_Getter_(mthis) => muted_Getter(mthis);
+  onmute_Setter_(mthis, __arg_0) => mthis["onmute"] = __arg_0;
 
-  static onended_Getter(mthis) native "MediaStreamTrack_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
+  onunmute_Getter_(mthis) => mthis["onunmute"];
 
-  static onended_Setter(mthis, __arg_0) native "MediaStreamTrack_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+  onunmute_Setter_(mthis, __arg_0) => mthis["onunmute"] = __arg_0;
 
-  static onmute_Getter(mthis) native "MediaStreamTrack_onmute_Getter";
-  onmute_Getter_(mthis) => onmute_Getter(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static onmute_Setter(mthis, __arg_0) native "MediaStreamTrack_onmute_Setter";
-  onmute_Setter_(mthis, __arg_0) => onmute_Setter(mthis, __arg_0);
-
-  static onunmute_Getter(mthis) native "MediaStreamTrack_onunmute_Getter";
-  onunmute_Getter_(mthis) => onunmute_Getter(mthis);
-
-  static onunmute_Setter(mthis, __arg_0) native "MediaStreamTrack_onunmute_Setter";
-  onunmute_Setter_(mthis, __arg_0) => onunmute_Setter(mthis, __arg_0);
-
-  static readyState_Getter(mthis) native "MediaStreamTrack_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
-
-  static stop_Callback_0(mthis) native "MediaStreamTrack_stop_Callback";
-  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
-
-  static stop_Callback_1(mthis, __arg_0) native "MediaStreamTrack_stop_Callback";
-  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
-
-  static stop_Callback_2(mthis, __arg_0, __arg_1) native "MediaStreamTrack_stop_Callback";
-  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+  stop_Callback_0_(mthis) => mthis.callMethod("stop", []);
 
 }
 
 class BlinkMediaStreamTrackEvent extends BlinkEvent {
   static final instance = new BlinkMediaStreamTrackEvent();
 
-  static track_Getter(mthis) native "MediaStreamTrackEvent_track_Getter";
-  track_Getter_(mthis) => track_Getter(mthis);
+  track_Getter_(mthis) => mthis["track"];
 
 }
 
 class BlinkMemoryInfo {
   static final instance = new BlinkMemoryInfo();
 
-  static jsHeapSizeLimit_Getter(mthis) native "MemoryInfo_jsHeapSizeLimit_Getter";
-  jsHeapSizeLimit_Getter_(mthis) => jsHeapSizeLimit_Getter(mthis);
+  jsHeapSizeLimit_Getter_(mthis) => mthis["jsHeapSizeLimit"];
 
-  static totalJSHeapSize_Getter(mthis) native "MemoryInfo_totalJSHeapSize_Getter";
-  totalJSHeapSize_Getter_(mthis) => totalJSHeapSize_Getter(mthis);
+  totalJSHeapSize_Getter_(mthis) => mthis["totalJSHeapSize"];
 
-  static usedJSHeapSize_Getter(mthis) native "MemoryInfo_usedJSHeapSize_Getter";
-  usedJSHeapSize_Getter_(mthis) => usedJSHeapSize_Getter(mthis);
+  usedJSHeapSize_Getter_(mthis) => mthis["usedJSHeapSize"];
 
 }
 
 class BlinkMessageChannel {
   static final instance = new BlinkMessageChannel();
 
-  static constructorCallback_0() native "MessageChannel_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["MessageChannel"], []);
 
-  static constructorCallback_1(__arg_0) native "MessageChannel_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  port1_Getter_(mthis) => mthis["port1"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MessageChannel_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
-
-  static port1_Getter(mthis) native "MessageChannel_port1_Getter";
-  port1_Getter_(mthis) => port1_Getter(mthis);
-
-  static port2_Getter(mthis) native "MessageChannel_port2_Getter";
-  port2_Getter_(mthis) => port2_Getter(mthis);
+  port2_Getter_(mthis) => mthis["port2"];
 
 }
 
 class BlinkMessageEvent extends BlinkEvent {
   static final instance = new BlinkMessageEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MessageEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MessageEvent"], [__arg_0, __arg_1]);
 
-  static data_Getter(mthis) native "MessageEvent_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
+  data_Getter_(mthis) => mthis["data"];
 
-  static initMessageEvent_Callback_0(mthis) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_0_(mthis) => initMessageEvent_Callback_0(mthis);
+  initMessageEvent_Callback_0_(mthis) => mthis.callMethod("initMessageEvent", []);
 
-  static initMessageEvent_Callback_1(mthis, __arg_0) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_1_(mthis, __arg_0) => initMessageEvent_Callback_1(mthis, __arg_0);
+  initMessageEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initMessageEvent", [__arg_0]);
 
-  static initMessageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initMessageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  initMessageEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initMessageEvent", [__arg_0, __arg_1]);
 
-  static initMessageEvent_Callback_2(mthis, __arg_0, __arg_1) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_2_(mthis, __arg_0, __arg_1) => initMessageEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initMessageEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initMessageEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initMessageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initMessageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initMessageEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initMessageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initMessageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initMessageEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initMessageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initMessageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initMessageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initMessageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initMessageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initMessageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static initMessageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initMessageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initMessageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("initMessageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static initMessageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initMessageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  lastEventId_Getter_(mthis) => mthis["lastEventId"];
 
-  static initMessageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "MessageEvent_initMessageEvent_Callback";
-  initMessageEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initMessageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  origin_Getter_(mthis) => mthis["origin"];
 
-  static lastEventId_Getter(mthis) native "MessageEvent_lastEventId_Getter";
-  lastEventId_Getter_(mthis) => lastEventId_Getter(mthis);
-
-  static origin_Getter(mthis) native "MessageEvent_origin_Getter";
-  origin_Getter_(mthis) => origin_Getter(mthis);
-
-  static source_Getter(mthis) native "MessageEvent_source_Getter";
-  source_Getter_(mthis) => source_Getter(mthis);
+  source_Getter_(mthis) => mthis["source"];
 
 }
 
 class BlinkMessagePort extends BlinkEventTarget {
   static final instance = new BlinkMessagePort();
 
-  static close_Callback_0(mthis) native "MessagePort_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "MessagePort_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "MessagePort_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "MessagePort_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  postMessage_Callback_0_(mthis) => mthis.callMethod("postMessage", []);
 
-  static onmessage_Setter(mthis, __arg_0) native "MessagePort_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  postMessage_Callback_1_(mthis, __arg_0) => mthis.callMethod("postMessage", [__arg_0]);
 
-  static postMessage_Callback_0(mthis) native "MessagePort_postMessage_Callback";
-  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("postMessage", [__arg_0, __arg_1]);
 
-  static postMessage_Callback_1(mthis, __arg_0) native "MessagePort_postMessage_Callback";
-  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
-
-  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "MessagePort_postMessage_Callback";
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
-
-  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MessagePort_postMessage_Callback";
-  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MessagePort_postMessage_Callback";
-  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static start_Callback_0(mthis) native "MessagePort_start_Callback";
-  start_Callback_0_(mthis) => start_Callback_0(mthis);
-
-  static start_Callback_1(mthis, __arg_0) native "MessagePort_start_Callback";
-  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
-
-  static start_Callback_2(mthis, __arg_0, __arg_1) native "MessagePort_start_Callback";
-  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
+  start_Callback_0_(mthis) => mthis.callMethod("start", []);
 
 }
 
 class BlinkMetadata {
   static final instance = new BlinkMetadata();
 
-  static modificationTime_Getter(mthis) native "Metadata_modificationTime_Getter";
-  modificationTime_Getter_(mthis) => modificationTime_Getter(mthis);
+  modificationTime_Getter_(mthis) => mthis["modificationTime"];
 
-  static size_Getter(mthis) native "Metadata_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
+  size_Getter_(mthis) => mthis["size"];
 
 }
 
 class BlinkMimeType {
   static final instance = new BlinkMimeType();
 
-  static description_Getter(mthis) native "MimeType_description_Getter";
-  description_Getter_(mthis) => description_Getter(mthis);
+  description_Getter_(mthis) => mthis["description"];
 
-  static enabledPlugin_Getter(mthis) native "MimeType_enabledPlugin_Getter";
-  enabledPlugin_Getter_(mthis) => enabledPlugin_Getter(mthis);
+  enabledPlugin_Getter_(mthis) => mthis["enabledPlugin"];
 
-  static suffixes_Getter(mthis) native "MimeType_suffixes_Getter";
-  suffixes_Getter_(mthis) => suffixes_Getter(mthis);
+  suffixes_Getter_(mthis) => mthis["suffixes"];
 
-  static type_Getter(mthis) native "MimeType_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkMimeTypeArray {
   static final instance = new BlinkMimeTypeArray();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "MimeTypeArray___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "MimeTypeArray_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "MimeTypeArray_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "MimeTypeArray_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MimeTypeArray_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static length_Getter(mthis) native "MimeTypeArray_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static namedItem_Callback_0(mthis) native "MimeTypeArray_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
-
-  static namedItem_Callback_1(mthis, __arg_0) native "MimeTypeArray_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
-
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "MimeTypeArray_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MimeTypeArray_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
 }
 
 class BlinkMouseEvent extends BlinkUIEvent {
   static final instance = new BlinkMouseEvent();
 
-  static altKey_Getter(mthis) native "MouseEvent_altKey_Getter";
-  altKey_Getter_(mthis) => altKey_Getter(mthis);
+  altKey_Getter_(mthis) => mthis["altKey"];
 
-  static button_Getter(mthis) native "MouseEvent_button_Getter";
-  button_Getter_(mthis) => button_Getter(mthis);
+  button_Getter_(mthis) => mthis["button"];
 
-  static clientX_Getter(mthis) native "MouseEvent_clientX_Getter";
-  clientX_Getter_(mthis) => clientX_Getter(mthis);
+  clientX_Getter_(mthis) => mthis["clientX"];
 
-  static clientY_Getter(mthis) native "MouseEvent_clientY_Getter";
-  clientY_Getter_(mthis) => clientY_Getter(mthis);
+  clientY_Getter_(mthis) => mthis["clientY"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MouseEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["MouseEvent"], [__arg_0, __arg_1]);
 
-  static ctrlKey_Getter(mthis) native "MouseEvent_ctrlKey_Getter";
-  ctrlKey_Getter_(mthis) => ctrlKey_Getter(mthis);
+  ctrlKey_Getter_(mthis) => mthis["ctrlKey"];
 
-  static dataTransfer_Getter(mthis) native "MouseEvent_dataTransfer_Getter";
-  dataTransfer_Getter_(mthis) => dataTransfer_Getter(mthis);
+  dataTransfer_Getter_(mthis) => mthis["dataTransfer"];
 
-  static fromElement_Getter(mthis) native "MouseEvent_fromElement_Getter";
-  fromElement_Getter_(mthis) => fromElement_Getter(mthis);
+  fromElement_Getter_(mthis) => mthis["fromElement"];
 
-  static initMouseEvent_Callback_0(mthis) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_0_(mthis) => initMouseEvent_Callback_0(mthis);
+  initMouseEvent_Callback_0_(mthis) => mthis.callMethod("initMouseEvent", []);
 
-  static initMouseEvent_Callback_1(mthis, __arg_0) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_1_(mthis, __arg_0) => initMouseEvent_Callback_1(mthis, __arg_0);
+  initMouseEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initMouseEvent", [__arg_0]);
 
-  static initMouseEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initMouseEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  initMouseEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  static initMouseEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => initMouseEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+  initMouseEvent_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
 
-  static initMouseEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => initMouseEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+  initMouseEvent_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => mthis.callMethod("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]);
 
-  static initMouseEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_13_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) => initMouseEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12);
+  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) => mthis.callMethod("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]);
 
-  static initMouseEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_14_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) => initMouseEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13);
+  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) => mthis.callMethod("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]);
 
-  static initMouseEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_15_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) => initMouseEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14);
+  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) => mthis.callMethod("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]);
 
-  static initMouseEvent_Callback_16(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_16_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15) => initMouseEvent_Callback_16(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15);
+  initMouseEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1]);
 
-  static initMouseEvent_Callback_17(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15, __arg_16) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_17_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15, __arg_16) => initMouseEvent_Callback_17(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15, __arg_16);
+  initMouseEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initMouseEvent_Callback_2(mthis, __arg_0, __arg_1) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_2_(mthis, __arg_0, __arg_1) => initMouseEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initMouseEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initMouseEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initMouseEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initMouseEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initMouseEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initMouseEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initMouseEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initMouseEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initMouseEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initMouseEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static initMouseEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initMouseEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initMouseEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static initMouseEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initMouseEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initMouseEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => mthis.callMethod("initMouseEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  static initMouseEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initMouseEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  metaKey_Getter_(mthis) => mthis["metaKey"];
 
-  static initMouseEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "MouseEvent_initMouseEvent_Callback";
-  initMouseEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initMouseEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  movementX_Getter_(mthis) => mthis["movementX"];
 
-  static metaKey_Getter(mthis) native "MouseEvent_metaKey_Getter";
-  metaKey_Getter_(mthis) => metaKey_Getter(mthis);
+  movementY_Getter_(mthis) => mthis["movementY"];
 
-  static movementX_Getter(mthis) native "MouseEvent_movementX_Getter";
-  movementX_Getter_(mthis) => movementX_Getter(mthis);
+  offsetX_Getter_(mthis) => mthis["offsetX"];
 
-  static movementY_Getter(mthis) native "MouseEvent_movementY_Getter";
-  movementY_Getter_(mthis) => movementY_Getter(mthis);
+  offsetY_Getter_(mthis) => mthis["offsetY"];
 
-  static offsetX_Getter(mthis) native "MouseEvent_offsetX_Getter";
-  offsetX_Getter_(mthis) => offsetX_Getter(mthis);
+  region_Getter_(mthis) => mthis["region"];
 
-  static offsetY_Getter(mthis) native "MouseEvent_offsetY_Getter";
-  offsetY_Getter_(mthis) => offsetY_Getter(mthis);
+  relatedTarget_Getter_(mthis) => mthis["relatedTarget"];
 
-  static region_Getter(mthis) native "MouseEvent_region_Getter";
-  region_Getter_(mthis) => region_Getter(mthis);
+  screenX_Getter_(mthis) => mthis["screenX"];
 
-  static relatedTarget_Getter(mthis) native "MouseEvent_relatedTarget_Getter";
-  relatedTarget_Getter_(mthis) => relatedTarget_Getter(mthis);
+  screenY_Getter_(mthis) => mthis["screenY"];
 
-  static screenX_Getter(mthis) native "MouseEvent_screenX_Getter";
-  screenX_Getter_(mthis) => screenX_Getter(mthis);
+  shiftKey_Getter_(mthis) => mthis["shiftKey"];
 
-  static screenY_Getter(mthis) native "MouseEvent_screenY_Getter";
-  screenY_Getter_(mthis) => screenY_Getter(mthis);
+  toElement_Getter_(mthis) => mthis["toElement"];
 
-  static shiftKey_Getter(mthis) native "MouseEvent_shiftKey_Getter";
-  shiftKey_Getter_(mthis) => shiftKey_Getter(mthis);
+  webkitMovementX_Getter_(mthis) => mthis["webkitMovementX"];
 
-  static toElement_Getter(mthis) native "MouseEvent_toElement_Getter";
-  toElement_Getter_(mthis) => toElement_Getter(mthis);
-
-  static webkitMovementX_Getter(mthis) native "MouseEvent_webkitMovementX_Getter";
-  webkitMovementX_Getter_(mthis) => webkitMovementX_Getter(mthis);
-
-  static webkitMovementY_Getter(mthis) native "MouseEvent_webkitMovementY_Getter";
-  webkitMovementY_Getter_(mthis) => webkitMovementY_Getter(mthis);
+  webkitMovementY_Getter_(mthis) => mthis["webkitMovementY"];
 
 }
 
 class BlinkMutationEvent extends BlinkEvent {
   static final instance = new BlinkMutationEvent();
 
-  static attrChange_Getter(mthis) native "MutationEvent_attrChange_Getter";
-  attrChange_Getter_(mthis) => attrChange_Getter(mthis);
+  attrChange_Getter_(mthis) => mthis["attrChange"];
 
-  static attrName_Getter(mthis) native "MutationEvent_attrName_Getter";
-  attrName_Getter_(mthis) => attrName_Getter(mthis);
+  attrName_Getter_(mthis) => mthis["attrName"];
 
-  static initMutationEvent_Callback_0(mthis) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_0_(mthis) => initMutationEvent_Callback_0(mthis);
+  initMutationEvent_Callback_0_(mthis) => mthis.callMethod("initMutationEvent", []);
 
-  static initMutationEvent_Callback_1(mthis, __arg_0) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_1_(mthis, __arg_0) => initMutationEvent_Callback_1(mthis, __arg_0);
+  initMutationEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initMutationEvent", [__arg_0]);
 
-  static initMutationEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initMutationEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  initMutationEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initMutationEvent", [__arg_0, __arg_1]);
 
-  static initMutationEvent_Callback_2(mthis, __arg_0, __arg_1) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_2_(mthis, __arg_0, __arg_1) => initMutationEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initMutationEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initMutationEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initMutationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initMutationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initMutationEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initMutationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initMutationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initMutationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initMutationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initMutationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initMutationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initMutationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initMutationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initMutationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static initMutationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initMutationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initMutationEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("initMutationEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static initMutationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initMutationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  newValue_Getter_(mthis) => mthis["newValue"];
 
-  static initMutationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "MutationEvent_initMutationEvent_Callback";
-  initMutationEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initMutationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  prevValue_Getter_(mthis) => mthis["prevValue"];
 
-  static newValue_Getter(mthis) native "MutationEvent_newValue_Getter";
-  newValue_Getter_(mthis) => newValue_Getter(mthis);
-
-  static prevValue_Getter(mthis) native "MutationEvent_prevValue_Getter";
-  prevValue_Getter_(mthis) => prevValue_Getter(mthis);
-
-  static relatedNode_Getter(mthis) native "MutationEvent_relatedNode_Getter";
-  relatedNode_Getter_(mthis) => relatedNode_Getter(mthis);
+  relatedNode_Getter_(mthis) => mthis["relatedNode"];
 
 }
 
 class BlinkMutationObserver {
   static final instance = new BlinkMutationObserver();
 
-  static constructorCallback_0() native "MutationObserver_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["MutationObserver"], []);
 
-  static constructorCallback_1(__arg_0) native "MutationObserver_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["MutationObserver"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "MutationObserver_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  disconnect_Callback_0_(mthis) => mthis.callMethod("disconnect", []);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "MutationObserver_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  observe_Callback_0_(mthis) => mthis.callMethod("observe", []);
 
-  static disconnect_Callback_0(mthis) native "MutationObserver_disconnect_Callback";
-  disconnect_Callback_0_(mthis) => disconnect_Callback_0(mthis);
+  observe_Callback_1_(mthis, __arg_0) => mthis.callMethod("observe", [__arg_0]);
 
-  static disconnect_Callback_1(mthis, __arg_0) native "MutationObserver_disconnect_Callback";
-  disconnect_Callback_1_(mthis, __arg_0) => disconnect_Callback_1(mthis, __arg_0);
+  observe_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("observe", [__arg_0, __arg_1]);
 
-  static disconnect_Callback_2(mthis, __arg_0, __arg_1) native "MutationObserver_disconnect_Callback";
-  disconnect_Callback_2_(mthis, __arg_0, __arg_1) => disconnect_Callback_2(mthis, __arg_0, __arg_1);
-
-  static observe_Callback_0(mthis) native "MutationObserver_observe_Callback";
-  observe_Callback_0_(mthis) => observe_Callback_0(mthis);
-
-  static observe_Callback_1(mthis, __arg_0) native "MutationObserver_observe_Callback";
-  observe_Callback_1_(mthis, __arg_0) => observe_Callback_1(mthis, __arg_0);
-
-  static observe_Callback_2(mthis, __arg_0, __arg_1) native "MutationObserver_observe_Callback";
-  observe_Callback_2_(mthis, __arg_0, __arg_1) => observe_Callback_2(mthis, __arg_0, __arg_1);
-
-  static observe_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MutationObserver_observe_Callback";
-  observe_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => observe_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static observe_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MutationObserver_observe_Callback";
-  observe_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => observe_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static takeRecords_Callback_0(mthis) native "MutationObserver_takeRecords_Callback";
-  takeRecords_Callback_0_(mthis) => takeRecords_Callback_0(mthis);
-
-  static takeRecords_Callback_1(mthis, __arg_0) native "MutationObserver_takeRecords_Callback";
-  takeRecords_Callback_1_(mthis, __arg_0) => takeRecords_Callback_1(mthis, __arg_0);
-
-  static takeRecords_Callback_2(mthis, __arg_0, __arg_1) native "MutationObserver_takeRecords_Callback";
-  takeRecords_Callback_2_(mthis, __arg_0, __arg_1) => takeRecords_Callback_2(mthis, __arg_0, __arg_1);
+  takeRecords_Callback_0_(mthis) => mthis.callMethod("takeRecords", []);
 
 }
 
 class BlinkMutationRecord {
   static final instance = new BlinkMutationRecord();
 
-  static addedNodes_Getter(mthis) native "MutationRecord_addedNodes_Getter";
-  addedNodes_Getter_(mthis) => addedNodes_Getter(mthis);
+  addedNodes_Getter_(mthis) => mthis["addedNodes"];
 
-  static attributeName_Getter(mthis) native "MutationRecord_attributeName_Getter";
-  attributeName_Getter_(mthis) => attributeName_Getter(mthis);
+  attributeName_Getter_(mthis) => mthis["attributeName"];
 
-  static attributeNamespace_Getter(mthis) native "MutationRecord_attributeNamespace_Getter";
-  attributeNamespace_Getter_(mthis) => attributeNamespace_Getter(mthis);
+  attributeNamespace_Getter_(mthis) => mthis["attributeNamespace"];
 
-  static nextSibling_Getter(mthis) native "MutationRecord_nextSibling_Getter";
-  nextSibling_Getter_(mthis) => nextSibling_Getter(mthis);
+  nextSibling_Getter_(mthis) => mthis["nextSibling"];
 
-  static oldValue_Getter(mthis) native "MutationRecord_oldValue_Getter";
-  oldValue_Getter_(mthis) => oldValue_Getter(mthis);
+  oldValue_Getter_(mthis) => mthis["oldValue"];
 
-  static previousSibling_Getter(mthis) native "MutationRecord_previousSibling_Getter";
-  previousSibling_Getter_(mthis) => previousSibling_Getter(mthis);
+  previousSibling_Getter_(mthis) => mthis["previousSibling"];
 
-  static removedNodes_Getter(mthis) native "MutationRecord_removedNodes_Getter";
-  removedNodes_Getter_(mthis) => removedNodes_Getter(mthis);
+  removedNodes_Getter_(mthis) => mthis["removedNodes"];
 
-  static target_Getter(mthis) native "MutationRecord_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
-  static type_Getter(mthis) native "MutationRecord_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkNamedNodeMap {
   static final instance = new BlinkNamedNodeMap();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "NamedNodeMap___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static getNamedItemNS_Callback_0(mthis) native "NamedNodeMap_getNamedItemNS_Callback";
-  getNamedItemNS_Callback_0_(mthis) => getNamedItemNS_Callback_0(mthis);
+  getNamedItemNS_Callback_0_(mthis) => mthis.callMethod("getNamedItemNS", []);
 
-  static getNamedItemNS_Callback_1(mthis, __arg_0) native "NamedNodeMap_getNamedItemNS_Callback";
-  getNamedItemNS_Callback_1_(mthis, __arg_0) => getNamedItemNS_Callback_1(mthis, __arg_0);
+  getNamedItemNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("getNamedItemNS", [__arg_0]);
 
-  static getNamedItemNS_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_getNamedItemNS_Callback";
-  getNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => getNamedItemNS_Callback_2(mthis, __arg_0, __arg_1);
+  getNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getNamedItemNS", [__arg_0, __arg_1]);
 
-  static getNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_getNamedItemNS_Callback";
-  getNamedItemNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getNamedItem_Callback_0_(mthis) => mthis.callMethod("getNamedItem", []);
 
-  static getNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "NamedNodeMap_getNamedItemNS_Callback";
-  getNamedItemNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getNamedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getNamedItem", [__arg_0]);
 
-  static getNamedItem_Callback_0(mthis) native "NamedNodeMap_getNamedItem_Callback";
-  getNamedItem_Callback_0_(mthis) => getNamedItem_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static getNamedItem_Callback_1(mthis, __arg_0) native "NamedNodeMap_getNamedItem_Callback";
-  getNamedItem_Callback_1_(mthis, __arg_0) => getNamedItem_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static getNamedItem_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_getNamedItem_Callback";
-  getNamedItem_Callback_2_(mthis, __arg_0, __arg_1) => getNamedItem_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static getNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_getNamedItem_Callback";
-  getNamedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeNamedItemNS_Callback_0_(mthis) => mthis.callMethod("removeNamedItemNS", []);
 
-  static item_Callback_0(mthis) native "NamedNodeMap_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  removeNamedItemNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeNamedItemNS", [__arg_0]);
 
-  static item_Callback_1(mthis, __arg_0) native "NamedNodeMap_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  removeNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("removeNamedItemNS", [__arg_0, __arg_1]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  removeNamedItem_Callback_0_(mthis) => mthis.callMethod("removeNamedItem", []);
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeNamedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeNamedItem", [__arg_0]);
 
-  static length_Getter(mthis) native "NamedNodeMap_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  setNamedItemNS_Callback_0_(mthis) => mthis.callMethod("setNamedItemNS", []);
 
-  static removeNamedItemNS_Callback_0(mthis) native "NamedNodeMap_removeNamedItemNS_Callback";
-  removeNamedItemNS_Callback_0_(mthis) => removeNamedItemNS_Callback_0(mthis);
+  setNamedItemNS_Callback_1_(mthis, __arg_0) => mthis.callMethod("setNamedItemNS", [__arg_0]);
 
-  static removeNamedItemNS_Callback_1(mthis, __arg_0) native "NamedNodeMap_removeNamedItemNS_Callback";
-  removeNamedItemNS_Callback_1_(mthis, __arg_0) => removeNamedItemNS_Callback_1(mthis, __arg_0);
+  setNamedItem_Callback_0_(mthis) => mthis.callMethod("setNamedItem", []);
 
-  static removeNamedItemNS_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_removeNamedItemNS_Callback";
-  removeNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => removeNamedItemNS_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_removeNamedItemNS_Callback";
-  removeNamedItemNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "NamedNodeMap_removeNamedItemNS_Callback";
-  removeNamedItemNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static removeNamedItem_Callback_0(mthis) native "NamedNodeMap_removeNamedItem_Callback";
-  removeNamedItem_Callback_0_(mthis) => removeNamedItem_Callback_0(mthis);
-
-  static removeNamedItem_Callback_1(mthis, __arg_0) native "NamedNodeMap_removeNamedItem_Callback";
-  removeNamedItem_Callback_1_(mthis, __arg_0) => removeNamedItem_Callback_1(mthis, __arg_0);
-
-  static removeNamedItem_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_removeNamedItem_Callback";
-  removeNamedItem_Callback_2_(mthis, __arg_0, __arg_1) => removeNamedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_removeNamedItem_Callback";
-  removeNamedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setNamedItemNS_Callback_0(mthis) native "NamedNodeMap_setNamedItemNS_Callback";
-  setNamedItemNS_Callback_0_(mthis) => setNamedItemNS_Callback_0(mthis);
-
-  static setNamedItemNS_Callback_1(mthis, __arg_0) native "NamedNodeMap_setNamedItemNS_Callback";
-  setNamedItemNS_Callback_1_(mthis, __arg_0) => setNamedItemNS_Callback_1(mthis, __arg_0);
-
-  static setNamedItemNS_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_setNamedItemNS_Callback";
-  setNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => setNamedItemNS_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_setNamedItemNS_Callback";
-  setNamedItemNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setNamedItem_Callback_0(mthis) native "NamedNodeMap_setNamedItem_Callback";
-  setNamedItem_Callback_0_(mthis) => setNamedItem_Callback_0(mthis);
-
-  static setNamedItem_Callback_1(mthis, __arg_0) native "NamedNodeMap_setNamedItem_Callback";
-  setNamedItem_Callback_1_(mthis, __arg_0) => setNamedItem_Callback_1(mthis, __arg_0);
-
-  static setNamedItem_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_setNamedItem_Callback";
-  setNamedItem_Callback_2_(mthis, __arg_0, __arg_1) => setNamedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_setNamedItem_Callback";
-  setNamedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setNamedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("setNamedItem", [__arg_0]);
 
 }
 
 class BlinkNavigator {
   static final instance = new BlinkNavigator();
 
-  static appCodeName_Getter(mthis) native "Navigator_appCodeName_Getter";
-  appCodeName_Getter_(mthis) => appCodeName_Getter(mthis);
+  appCodeName_Getter_(mthis) => mthis["appCodeName"];
 
-  static appName_Getter(mthis) native "Navigator_appName_Getter";
-  appName_Getter_(mthis) => appName_Getter(mthis);
+  appName_Getter_(mthis) => mthis["appName"];
 
-  static appVersion_Getter(mthis) native "Navigator_appVersion_Getter";
-  appVersion_Getter_(mthis) => appVersion_Getter(mthis);
+  appVersion_Getter_(mthis) => mthis["appVersion"];
 
-  static connection_Getter(mthis) native "Navigator_connection_Getter";
-  connection_Getter_(mthis) => connection_Getter(mthis);
+  connection_Getter_(mthis) => mthis["connection"];
 
-  static cookieEnabled_Getter(mthis) native "Navigator_cookieEnabled_Getter";
-  cookieEnabled_Getter_(mthis) => cookieEnabled_Getter(mthis);
+  cookieEnabled_Getter_(mthis) => mthis["cookieEnabled"];
 
-  static credentials_Getter(mthis) native "Navigator_credentials_Getter";
-  credentials_Getter_(mthis) => credentials_Getter(mthis);
+  credentials_Getter_(mthis) => mthis["credentials"];
 
-  static dartEnabled_Getter(mthis) native "Navigator_dartEnabled_Getter";
-  dartEnabled_Getter_(mthis) => dartEnabled_Getter(mthis);
+  dartEnabled_Getter_(mthis) => mthis["dartEnabled"];
 
-  static doNotTrack_Getter(mthis) native "Navigator_doNotTrack_Getter";
-  doNotTrack_Getter_(mthis) => doNotTrack_Getter(mthis);
+  doNotTrack_Getter_(mthis) => mthis["doNotTrack"];
 
-  static geofencing_Getter(mthis) native "Navigator_geofencing_Getter";
-  geofencing_Getter_(mthis) => geofencing_Getter(mthis);
+  geofencing_Getter_(mthis) => mthis["geofencing"];
 
-  static geolocation_Getter(mthis) native "Navigator_geolocation_Getter";
-  geolocation_Getter_(mthis) => geolocation_Getter(mthis);
+  geolocation_Getter_(mthis) => mthis["geolocation"];
 
-  static getBattery_Callback_0(mthis) native "Navigator_getBattery_Callback";
-  getBattery_Callback_0_(mthis) => getBattery_Callback_0(mthis);
+  getBattery_Callback_0_(mthis) => mthis.callMethod("getBattery", []);
 
-  static getBattery_Callback_1(mthis, __arg_0) native "Navigator_getBattery_Callback";
-  getBattery_Callback_1_(mthis, __arg_0) => getBattery_Callback_1(mthis, __arg_0);
+  getGamepads_Callback_0_(mthis) => mthis.callMethod("getGamepads", []);
 
-  static getBattery_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_getBattery_Callback";
-  getBattery_Callback_2_(mthis, __arg_0, __arg_1) => getBattery_Callback_2(mthis, __arg_0, __arg_1);
+  getStorageUpdates_Callback_0_(mthis) => mthis.callMethod("getStorageUpdates", []);
 
-  static getGamepads_Callback_0(mthis) native "Navigator_getGamepads_Callback";
-  getGamepads_Callback_0_(mthis) => getGamepads_Callback_0(mthis);
+  hardwareConcurrency_Getter_(mthis) => mthis["hardwareConcurrency"];
 
-  static getGamepads_Callback_1(mthis, __arg_0) native "Navigator_getGamepads_Callback";
-  getGamepads_Callback_1_(mthis, __arg_0) => getGamepads_Callback_1(mthis, __arg_0);
+  isProtocolHandlerRegistered_Callback_0_(mthis) => mthis.callMethod("isProtocolHandlerRegistered", []);
 
-  static getGamepads_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_getGamepads_Callback";
-  getGamepads_Callback_2_(mthis, __arg_0, __arg_1) => getGamepads_Callback_2(mthis, __arg_0, __arg_1);
+  isProtocolHandlerRegistered_Callback_1_(mthis, __arg_0) => mthis.callMethod("isProtocolHandlerRegistered", [__arg_0]);
 
-  static getStorageUpdates_Callback_0(mthis) native "Navigator_getStorageUpdates_Callback";
-  getStorageUpdates_Callback_0_(mthis) => getStorageUpdates_Callback_0(mthis);
+  isProtocolHandlerRegistered_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("isProtocolHandlerRegistered", [__arg_0, __arg_1]);
 
-  static getStorageUpdates_Callback_1(mthis, __arg_0) native "Navigator_getStorageUpdates_Callback";
-  getStorageUpdates_Callback_1_(mthis, __arg_0) => getStorageUpdates_Callback_1(mthis, __arg_0);
+  javaEnabled_Callback_0_(mthis) => mthis.callMethod("javaEnabled", []);
 
-  static getStorageUpdates_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_getStorageUpdates_Callback";
-  getStorageUpdates_Callback_2_(mthis, __arg_0, __arg_1) => getStorageUpdates_Callback_2(mthis, __arg_0, __arg_1);
+  language_Getter_(mthis) => mthis["language"];
 
-  static hardwareConcurrency_Getter(mthis) native "Navigator_hardwareConcurrency_Getter";
-  hardwareConcurrency_Getter_(mthis) => hardwareConcurrency_Getter(mthis);
+  languages_Getter_(mthis) => mthis["languages"];
 
-  static isProtocolHandlerRegistered_Callback_0(mthis) native "Navigator_isProtocolHandlerRegistered_Callback";
-  isProtocolHandlerRegistered_Callback_0_(mthis) => isProtocolHandlerRegistered_Callback_0(mthis);
+  maxTouchPoints_Getter_(mthis) => mthis["maxTouchPoints"];
 
-  static isProtocolHandlerRegistered_Callback_1(mthis, __arg_0) native "Navigator_isProtocolHandlerRegistered_Callback";
-  isProtocolHandlerRegistered_Callback_1_(mthis, __arg_0) => isProtocolHandlerRegistered_Callback_1(mthis, __arg_0);
+  mimeTypes_Getter_(mthis) => mthis["mimeTypes"];
 
-  static isProtocolHandlerRegistered_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_isProtocolHandlerRegistered_Callback";
-  isProtocolHandlerRegistered_Callback_2_(mthis, __arg_0, __arg_1) => isProtocolHandlerRegistered_Callback_2(mthis, __arg_0, __arg_1);
+  onLine_Getter_(mthis) => mthis["onLine"];
 
-  static isProtocolHandlerRegistered_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_isProtocolHandlerRegistered_Callback";
-  isProtocolHandlerRegistered_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isProtocolHandlerRegistered_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  platform_Getter_(mthis) => mthis["platform"];
 
-  static isProtocolHandlerRegistered_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_isProtocolHandlerRegistered_Callback";
-  isProtocolHandlerRegistered_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isProtocolHandlerRegistered_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  plugins_Getter_(mthis) => mthis["plugins"];
 
-  static javaEnabled_Callback_0(mthis) native "Navigator_javaEnabled_Callback";
-  javaEnabled_Callback_0_(mthis) => javaEnabled_Callback_0(mthis);
+  presentation_Getter_(mthis) => mthis["presentation"];
 
-  static javaEnabled_Callback_1(mthis, __arg_0) native "Navigator_javaEnabled_Callback";
-  javaEnabled_Callback_1_(mthis, __arg_0) => javaEnabled_Callback_1(mthis, __arg_0);
+  productSub_Getter_(mthis) => mthis["productSub"];
 
-  static javaEnabled_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_javaEnabled_Callback";
-  javaEnabled_Callback_2_(mthis, __arg_0, __arg_1) => javaEnabled_Callback_2(mthis, __arg_0, __arg_1);
+  product_Getter_(mthis) => mthis["product"];
 
-  static language_Getter(mthis) native "Navigator_language_Getter";
-  language_Getter_(mthis) => language_Getter(mthis);
+  push_Getter_(mthis) => mthis["push"];
 
-  static languages_Getter(mthis) native "Navigator_languages_Getter";
-  languages_Getter_(mthis) => languages_Getter(mthis);
+  registerProtocolHandler_Callback_1_(mthis, __arg_0) => mthis.callMethod("registerProtocolHandler", [__arg_0]);
 
-  static maxTouchPoints_Getter(mthis) native "Navigator_maxTouchPoints_Getter";
-  maxTouchPoints_Getter_(mthis) => maxTouchPoints_Getter(mthis);
+  registerProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("registerProtocolHandler", [__arg_0, __arg_1]);
 
-  static mimeTypes_Getter(mthis) native "Navigator_mimeTypes_Getter";
-  mimeTypes_Getter_(mthis) => mimeTypes_Getter(mthis);
+  registerProtocolHandler_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("registerProtocolHandler", [__arg_0, __arg_1, __arg_2]);
 
-  static onLine_Getter(mthis) native "Navigator_onLine_Getter";
-  onLine_Getter_(mthis) => onLine_Getter(mthis);
+  sendBeacon_Callback_0_(mthis) => mthis.callMethod("sendBeacon", []);
 
-  static platform_Getter(mthis) native "Navigator_platform_Getter";
-  platform_Getter_(mthis) => platform_Getter(mthis);
+  sendBeacon_Callback_1_(mthis, __arg_0) => mthis.callMethod("sendBeacon", [__arg_0]);
 
-  static plugins_Getter(mthis) native "Navigator_plugins_Getter";
-  plugins_Getter_(mthis) => plugins_Getter(mthis);
+  sendBeacon_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("sendBeacon", [__arg_0, __arg_1]);
 
-  static presentation_Getter(mthis) native "Navigator_presentation_Getter";
-  presentation_Getter_(mthis) => presentation_Getter(mthis);
+  serviceWorker_Getter_(mthis) => mthis["serviceWorker"];
 
-  static productSub_Getter(mthis) native "Navigator_productSub_Getter";
-  productSub_Getter_(mthis) => productSub_Getter(mthis);
-
-  static product_Getter(mthis) native "Navigator_product_Getter";
-  product_Getter_(mthis) => product_Getter(mthis);
-
-  static push_Getter(mthis) native "Navigator_push_Getter";
-  push_Getter_(mthis) => push_Getter(mthis);
-
-  static registerProtocolHandler_Callback_1(mthis, __arg_0) native "Navigator_registerProtocolHandler_Callback";
-  registerProtocolHandler_Callback_1_(mthis, __arg_0) => registerProtocolHandler_Callback_1(mthis, __arg_0);
-
-  static registerProtocolHandler_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_registerProtocolHandler_Callback";
-  registerProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => registerProtocolHandler_Callback_2(mthis, __arg_0, __arg_1);
-
-  static registerProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_registerProtocolHandler_Callback";
-  registerProtocolHandler_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => registerProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static registerProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_registerProtocolHandler_Callback";
-  registerProtocolHandler_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => registerProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static registerProtocolHandler_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Navigator_registerProtocolHandler_Callback";
-  registerProtocolHandler_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => registerProtocolHandler_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static sendBeacon_Callback_0(mthis) native "Navigator_sendBeacon_Callback";
-  sendBeacon_Callback_0_(mthis) => sendBeacon_Callback_0(mthis);
-
-  static sendBeacon_Callback_1(mthis, __arg_0) native "Navigator_sendBeacon_Callback";
-  sendBeacon_Callback_1_(mthis, __arg_0) => sendBeacon_Callback_1(mthis, __arg_0);
-
-  static sendBeacon_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_sendBeacon_Callback";
-  sendBeacon_Callback_2_(mthis, __arg_0, __arg_1) => sendBeacon_Callback_2(mthis, __arg_0, __arg_1);
-
-  static sendBeacon_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_sendBeacon_Callback";
-  sendBeacon_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sendBeacon_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static sendBeacon_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_sendBeacon_Callback";
-  sendBeacon_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => sendBeacon_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static serviceWorker_Getter(mthis) native "Navigator_serviceWorker_Getter";
-  serviceWorker_Getter_(mthis) => serviceWorker_Getter(mthis);
-
-  static storageQuota_Getter(mthis) native "Navigator_storageQuota_Getter";
-  storageQuota_Getter_(mthis) => storageQuota_Getter(mthis);
-
-  static unregisterProtocolHandler_Callback_0(mthis) native "Navigator_unregisterProtocolHandler_Callback";
-  unregisterProtocolHandler_Callback_0_(mthis) => unregisterProtocolHandler_Callback_0(mthis);
-
-  static unregisterProtocolHandler_Callback_1(mthis, __arg_0) native "Navigator_unregisterProtocolHandler_Callback";
-  unregisterProtocolHandler_Callback_1_(mthis, __arg_0) => unregisterProtocolHandler_Callback_1(mthis, __arg_0);
-
-  static unregisterProtocolHandler_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_unregisterProtocolHandler_Callback";
-  unregisterProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => unregisterProtocolHandler_Callback_2(mthis, __arg_0, __arg_1);
-
-  static unregisterProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_unregisterProtocolHandler_Callback";
-  unregisterProtocolHandler_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unregisterProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static unregisterProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_unregisterProtocolHandler_Callback";
-  unregisterProtocolHandler_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => unregisterProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static userAgent_Getter(mthis) native "Navigator_userAgent_Getter";
-  userAgent_Getter_(mthis) => userAgent_Getter(mthis);
-
-  static vendorSub_Getter(mthis) native "Navigator_vendorSub_Getter";
-  vendorSub_Getter_(mthis) => vendorSub_Getter(mthis);
-
-  static vendor_Getter(mthis) native "Navigator_vendor_Getter";
-  vendor_Getter_(mthis) => vendor_Getter(mthis);
+  storageQuota_Getter_(mthis) => mthis["storageQuota"];
 
-  static vibrate_Callback_0(mthis) native "Navigator_vibrate_Callback";
-  vibrate_Callback_0_(mthis) => vibrate_Callback_0(mthis);
+  unregisterProtocolHandler_Callback_0_(mthis) => mthis.callMethod("unregisterProtocolHandler", []);
 
-  static vibrate_Callback_1(mthis, __arg_0) native "Navigator_vibrate_Callback";
-  vibrate_Callback_1_(mthis, __arg_0) => vibrate_Callback_1(mthis, __arg_0);
+  unregisterProtocolHandler_Callback_1_(mthis, __arg_0) => mthis.callMethod("unregisterProtocolHandler", [__arg_0]);
 
-  static vibrate_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_vibrate_Callback";
-  vibrate_Callback_2_(mthis, __arg_0, __arg_1) => vibrate_Callback_2(mthis, __arg_0, __arg_1);
+  unregisterProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("unregisterProtocolHandler", [__arg_0, __arg_1]);
 
-  static vibrate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_vibrate_Callback";
-  vibrate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vibrate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  userAgent_Getter_(mthis) => mthis["userAgent"];
 
-  static webkitGetGamepads_Callback_0(mthis) native "Navigator_webkitGetGamepads_Callback";
-  webkitGetGamepads_Callback_0_(mthis) => webkitGetGamepads_Callback_0(mthis);
+  vendorSub_Getter_(mthis) => mthis["vendorSub"];
 
-  static webkitGetGamepads_Callback_1(mthis, __arg_0) native "Navigator_webkitGetGamepads_Callback";
-  webkitGetGamepads_Callback_1_(mthis, __arg_0) => webkitGetGamepads_Callback_1(mthis, __arg_0);
+  vendor_Getter_(mthis) => mthis["vendor"];
 
-  static webkitGetGamepads_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_webkitGetGamepads_Callback";
-  webkitGetGamepads_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetGamepads_Callback_2(mthis, __arg_0, __arg_1);
+  vibrate_Callback_0_(mthis) => mthis.callMethod("vibrate", []);
 
-  static webkitGetUserMedia_Callback_1(mthis, __arg_0) native "Navigator_webkitGetUserMedia_Callback";
-  webkitGetUserMedia_Callback_1_(mthis, __arg_0) => webkitGetUserMedia_Callback_1(mthis, __arg_0);
+  vibrate_Callback_1_(mthis, __arg_0) => mthis.callMethod("vibrate", [__arg_0]);
 
-  static webkitGetUserMedia_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_webkitGetUserMedia_Callback";
-  webkitGetUserMedia_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetUserMedia_Callback_2(mthis, __arg_0, __arg_1);
+  webkitGetGamepads_Callback_0_(mthis) => mthis.callMethod("webkitGetGamepads", []);
 
-  static webkitGetUserMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_webkitGetUserMedia_Callback";
-  webkitGetUserMedia_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitGetUserMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitGetUserMedia_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitGetUserMedia", [__arg_0]);
 
-  static webkitGetUserMedia_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_webkitGetUserMedia_Callback";
-  webkitGetUserMedia_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitGetUserMedia_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  webkitGetUserMedia_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitGetUserMedia", [__arg_0, __arg_1]);
 
-  static webkitGetUserMedia_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Navigator_webkitGetUserMedia_Callback";
-  webkitGetUserMedia_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitGetUserMedia_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  webkitGetUserMedia_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("webkitGetUserMedia", [__arg_0, __arg_1, __arg_2]);
 
-  static webkitPersistentStorage_Getter(mthis) native "Navigator_webkitPersistentStorage_Getter";
-  webkitPersistentStorage_Getter_(mthis) => webkitPersistentStorage_Getter(mthis);
+  webkitPersistentStorage_Getter_(mthis) => mthis["webkitPersistentStorage"];
 
-  static webkitTemporaryStorage_Getter(mthis) native "Navigator_webkitTemporaryStorage_Getter";
-  webkitTemporaryStorage_Getter_(mthis) => webkitTemporaryStorage_Getter(mthis);
+  webkitTemporaryStorage_Getter_(mthis) => mthis["webkitTemporaryStorage"];
 
 }
 
 class BlinkNavigatorUserMediaError {
   static final instance = new BlinkNavigatorUserMediaError();
 
-  static constraintName_Getter(mthis) native "NavigatorUserMediaError_constraintName_Getter";
-  constraintName_Getter_(mthis) => constraintName_Getter(mthis);
+  constraintName_Getter_(mthis) => mthis["constraintName"];
 
-  static message_Getter(mthis) native "NavigatorUserMediaError_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
-  static name_Getter(mthis) native "NavigatorUserMediaError_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
 }
 
 class BlinkNetworkInformation extends BlinkEventTarget {
   static final instance = new BlinkNetworkInformation();
 
-  static ontypechange_Getter(mthis) native "NetworkInformation_ontypechange_Getter";
-  ontypechange_Getter_(mthis) => ontypechange_Getter(mthis);
+  ontypechange_Getter_(mthis) => mthis["ontypechange"];
 
-  static ontypechange_Setter(mthis, __arg_0) native "NetworkInformation_ontypechange_Setter";
-  ontypechange_Setter_(mthis, __arg_0) => ontypechange_Setter(mthis, __arg_0);
+  ontypechange_Setter_(mthis, __arg_0) => mthis["ontypechange"] = __arg_0;
 
-  static type_Getter(mthis) native "NetworkInformation_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkNode extends BlinkEventTarget {
   static final instance = new BlinkNode();
 
-  static appendChild_Callback_0(mthis) native "Node_appendChild_Callback";
-  appendChild_Callback_0_(mthis) => appendChild_Callback_0(mthis);
+  appendChild_Callback_0_(mthis) => mthis.callMethod("appendChild", []);
 
-  static appendChild_Callback_1(mthis, __arg_0) native "Node_appendChild_Callback";
-  appendChild_Callback_1_(mthis, __arg_0) => appendChild_Callback_1(mthis, __arg_0);
+  appendChild_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendChild", [__arg_0]);
 
-  static appendChild_Callback_2(mthis, __arg_0, __arg_1) native "Node_appendChild_Callback";
-  appendChild_Callback_2_(mthis, __arg_0, __arg_1) => appendChild_Callback_2(mthis, __arg_0, __arg_1);
+  baseURI_Getter_(mthis) => mthis["baseURI"];
 
-  static appendChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_appendChild_Callback";
-  appendChild_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  childNodes_Getter_(mthis) => mthis["childNodes"];
 
-  static baseURI_Getter(mthis) native "Node_baseURI_Getter";
-  baseURI_Getter_(mthis) => baseURI_Getter(mthis);
+  cloneNode_Callback_0_(mthis) => mthis.callMethod("cloneNode", []);
 
-  static childNodes_Getter(mthis) native "Node_childNodes_Getter";
-  childNodes_Getter_(mthis) => childNodes_Getter(mthis);
+  cloneNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("cloneNode", [__arg_0]);
 
-  static cloneNode_Callback_0(mthis) native "Node_cloneNode_Callback";
-  cloneNode_Callback_0_(mthis) => cloneNode_Callback_0(mthis);
+  contains_Callback_0_(mthis) => mthis.callMethod("contains", []);
 
-  static cloneNode_Callback_1(mthis, __arg_0) native "Node_cloneNode_Callback";
-  cloneNode_Callback_1_(mthis, __arg_0) => cloneNode_Callback_1(mthis, __arg_0);
+  contains_Callback_1_(mthis, __arg_0) => mthis.callMethod("contains", [__arg_0]);
 
-  static cloneNode_Callback_2(mthis, __arg_0, __arg_1) native "Node_cloneNode_Callback";
-  cloneNode_Callback_2_(mthis, __arg_0, __arg_1) => cloneNode_Callback_2(mthis, __arg_0, __arg_1);
+  firstChild_Getter_(mthis) => mthis["firstChild"];
 
-  static cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_cloneNode_Callback";
-  cloneNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  hasChildNodes_Callback_0_(mthis) => mthis.callMethod("hasChildNodes", []);
 
-  static contains_Callback_0(mthis) native "Node_contains_Callback";
-  contains_Callback_0_(mthis) => contains_Callback_0(mthis);
+  insertBefore_Callback_0_(mthis) => mthis.callMethod("insertBefore", []);
 
-  static contains_Callback_1(mthis, __arg_0) native "Node_contains_Callback";
-  contains_Callback_1_(mthis, __arg_0) => contains_Callback_1(mthis, __arg_0);
+  insertBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertBefore", [__arg_0]);
 
-  static contains_Callback_2(mthis, __arg_0, __arg_1) native "Node_contains_Callback";
-  contains_Callback_2_(mthis, __arg_0, __arg_1) => contains_Callback_2(mthis, __arg_0, __arg_1);
+  insertBefore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertBefore", [__arg_0, __arg_1]);
 
-  static contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_contains_Callback";
-  contains_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  lastChild_Getter_(mthis) => mthis["lastChild"];
 
-  static firstChild_Getter(mthis) native "Node_firstChild_Getter";
-  firstChild_Getter_(mthis) => firstChild_Getter(mthis);
+  localName_Getter_(mthis) => mthis["localName"];
 
-  static hasChildNodes_Callback_0(mthis) native "Node_hasChildNodes_Callback";
-  hasChildNodes_Callback_0_(mthis) => hasChildNodes_Callback_0(mthis);
+  namespaceURI_Getter_(mthis) => mthis["namespaceURI"];
 
-  static hasChildNodes_Callback_1(mthis, __arg_0) native "Node_hasChildNodes_Callback";
-  hasChildNodes_Callback_1_(mthis, __arg_0) => hasChildNodes_Callback_1(mthis, __arg_0);
+  nextSibling_Getter_(mthis) => mthis["nextSibling"];
 
-  static hasChildNodes_Callback_2(mthis, __arg_0, __arg_1) native "Node_hasChildNodes_Callback";
-  hasChildNodes_Callback_2_(mthis, __arg_0, __arg_1) => hasChildNodes_Callback_2(mthis, __arg_0, __arg_1);
+  nodeName_Getter_(mthis) => mthis["nodeName"];
 
-  static insertBefore_Callback_0(mthis) native "Node_insertBefore_Callback";
-  insertBefore_Callback_0_(mthis) => insertBefore_Callback_0(mthis);
+  nodeType_Getter_(mthis) => mthis["nodeType"];
 
-  static insertBefore_Callback_1(mthis, __arg_0) native "Node_insertBefore_Callback";
-  insertBefore_Callback_1_(mthis, __arg_0) => insertBefore_Callback_1(mthis, __arg_0);
+  nodeValue_Getter_(mthis) => mthis["nodeValue"];
 
-  static insertBefore_Callback_2(mthis, __arg_0, __arg_1) native "Node_insertBefore_Callback";
-  insertBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertBefore_Callback_2(mthis, __arg_0, __arg_1);
+  nodeValue_Setter_(mthis, __arg_0) => mthis["nodeValue"] = __arg_0;
 
-  static insertBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_insertBefore_Callback";
-  insertBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ownerDocument_Getter_(mthis) => mthis["ownerDocument"];
 
-  static insertBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Node_insertBefore_Callback";
-  insertBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  parentElement_Getter_(mthis) => mthis["parentElement"];
 
-  static lastChild_Getter(mthis) native "Node_lastChild_Getter";
-  lastChild_Getter_(mthis) => lastChild_Getter(mthis);
+  parentNode_Getter_(mthis) => mthis["parentNode"];
 
-  static localName_Getter(mthis) native "Node_localName_Getter";
-  localName_Getter_(mthis) => localName_Getter(mthis);
+  previousSibling_Getter_(mthis) => mthis["previousSibling"];
 
-  static namespaceURI_Getter(mthis) native "Node_namespaceURI_Getter";
-  namespaceURI_Getter_(mthis) => namespaceURI_Getter(mthis);
+  removeChild_Callback_0_(mthis) => mthis.callMethod("removeChild", []);
 
-  static nextSibling_Getter(mthis) native "Node_nextSibling_Getter";
-  nextSibling_Getter_(mthis) => nextSibling_Getter(mthis);
+  removeChild_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeChild", [__arg_0]);
 
-  static nodeName_Getter(mthis) native "Node_nodeName_Getter";
-  nodeName_Getter_(mthis) => nodeName_Getter(mthis);
+  replaceChild_Callback_0_(mthis) => mthis.callMethod("replaceChild", []);
 
-  static nodeType_Getter(mthis) native "Node_nodeType_Getter";
-  nodeType_Getter_(mthis) => nodeType_Getter(mthis);
+  replaceChild_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceChild", [__arg_0]);
 
-  static nodeValue_Getter(mthis) native "Node_nodeValue_Getter";
-  nodeValue_Getter_(mthis) => nodeValue_Getter(mthis);
+  replaceChild_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceChild", [__arg_0, __arg_1]);
 
-  static nodeValue_Setter(mthis, __arg_0) native "Node_nodeValue_Setter";
-  nodeValue_Setter_(mthis, __arg_0) => nodeValue_Setter(mthis, __arg_0);
+  textContent_Getter_(mthis) => mthis["textContent"];
 
-  static ownerDocument_Getter(mthis) native "Node_ownerDocument_Getter";
-  ownerDocument_Getter_(mthis) => ownerDocument_Getter(mthis);
-
-  static parentElement_Getter(mthis) native "Node_parentElement_Getter";
-  parentElement_Getter_(mthis) => parentElement_Getter(mthis);
-
-  static parentNode_Getter(mthis) native "Node_parentNode_Getter";
-  parentNode_Getter_(mthis) => parentNode_Getter(mthis);
-
-  static previousSibling_Getter(mthis) native "Node_previousSibling_Getter";
-  previousSibling_Getter_(mthis) => previousSibling_Getter(mthis);
-
-  static removeChild_Callback_0(mthis) native "Node_removeChild_Callback";
-  removeChild_Callback_0_(mthis) => removeChild_Callback_0(mthis);
-
-  static removeChild_Callback_1(mthis, __arg_0) native "Node_removeChild_Callback";
-  removeChild_Callback_1_(mthis, __arg_0) => removeChild_Callback_1(mthis, __arg_0);
-
-  static removeChild_Callback_2(mthis, __arg_0, __arg_1) native "Node_removeChild_Callback";
-  removeChild_Callback_2_(mthis, __arg_0, __arg_1) => removeChild_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_removeChild_Callback";
-  removeChild_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceChild_Callback_0(mthis) native "Node_replaceChild_Callback";
-  replaceChild_Callback_0_(mthis) => replaceChild_Callback_0(mthis);
-
-  static replaceChild_Callback_1(mthis, __arg_0) native "Node_replaceChild_Callback";
-  replaceChild_Callback_1_(mthis, __arg_0) => replaceChild_Callback_1(mthis, __arg_0);
-
-  static replaceChild_Callback_2(mthis, __arg_0, __arg_1) native "Node_replaceChild_Callback";
-  replaceChild_Callback_2_(mthis, __arg_0, __arg_1) => replaceChild_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_replaceChild_Callback";
-  replaceChild_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceChild_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Node_replaceChild_Callback";
-  replaceChild_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceChild_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static textContent_Getter(mthis) native "Node_textContent_Getter";
-  textContent_Getter_(mthis) => textContent_Getter(mthis);
-
-  static textContent_Setter(mthis, __arg_0) native "Node_textContent_Setter";
-  textContent_Setter_(mthis, __arg_0) => textContent_Setter(mthis, __arg_0);
+  textContent_Setter_(mthis, __arg_0) => mthis["textContent"] = __arg_0;
 
 }
 
@@ -16689,153 +9230,79 @@
 class BlinkNodeIterator {
   static final instance = new BlinkNodeIterator();
 
-  static detach_Callback_0(mthis) native "NodeIterator_detach_Callback";
-  detach_Callback_0_(mthis) => detach_Callback_0(mthis);
+  detach_Callback_0_(mthis) => mthis.callMethod("detach", []);
 
-  static detach_Callback_1(mthis, __arg_0) native "NodeIterator_detach_Callback";
-  detach_Callback_1_(mthis, __arg_0) => detach_Callback_1(mthis, __arg_0);
+  nextNode_Callback_0_(mthis) => mthis.callMethod("nextNode", []);
 
-  static detach_Callback_2(mthis, __arg_0, __arg_1) native "NodeIterator_detach_Callback";
-  detach_Callback_2_(mthis, __arg_0, __arg_1) => detach_Callback_2(mthis, __arg_0, __arg_1);
+  pointerBeforeReferenceNode_Getter_(mthis) => mthis["pointerBeforeReferenceNode"];
 
-  static nextNode_Callback_0(mthis) native "NodeIterator_nextNode_Callback";
-  nextNode_Callback_0_(mthis) => nextNode_Callback_0(mthis);
+  previousNode_Callback_0_(mthis) => mthis.callMethod("previousNode", []);
 
-  static nextNode_Callback_1(mthis, __arg_0) native "NodeIterator_nextNode_Callback";
-  nextNode_Callback_1_(mthis, __arg_0) => nextNode_Callback_1(mthis, __arg_0);
+  referenceNode_Getter_(mthis) => mthis["referenceNode"];
 
-  static nextNode_Callback_2(mthis, __arg_0, __arg_1) native "NodeIterator_nextNode_Callback";
-  nextNode_Callback_2_(mthis, __arg_0, __arg_1) => nextNode_Callback_2(mthis, __arg_0, __arg_1);
+  root_Getter_(mthis) => mthis["root"];
 
-  static pointerBeforeReferenceNode_Getter(mthis) native "NodeIterator_pointerBeforeReferenceNode_Getter";
-  pointerBeforeReferenceNode_Getter_(mthis) => pointerBeforeReferenceNode_Getter(mthis);
-
-  static previousNode_Callback_0(mthis) native "NodeIterator_previousNode_Callback";
-  previousNode_Callback_0_(mthis) => previousNode_Callback_0(mthis);
-
-  static previousNode_Callback_1(mthis, __arg_0) native "NodeIterator_previousNode_Callback";
-  previousNode_Callback_1_(mthis, __arg_0) => previousNode_Callback_1(mthis, __arg_0);
-
-  static previousNode_Callback_2(mthis, __arg_0, __arg_1) native "NodeIterator_previousNode_Callback";
-  previousNode_Callback_2_(mthis, __arg_0, __arg_1) => previousNode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static referenceNode_Getter(mthis) native "NodeIterator_referenceNode_Getter";
-  referenceNode_Getter_(mthis) => referenceNode_Getter(mthis);
-
-  static root_Getter(mthis) native "NodeIterator_root_Getter";
-  root_Getter_(mthis) => root_Getter(mthis);
-
-  static whatToShow_Getter(mthis) native "NodeIterator_whatToShow_Getter";
-  whatToShow_Getter_(mthis) => whatToShow_Getter(mthis);
+  whatToShow_Getter_(mthis) => mthis["whatToShow"];
 
 }
 
 class BlinkNodeList {
   static final instance = new BlinkNodeList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "NodeList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "NodeList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "NodeList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "NodeList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NodeList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "NodeList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkNotification extends BlinkEventTarget {
   static final instance = new BlinkNotification();
 
-  static body_Getter(mthis) native "Notification_body_Getter";
-  body_Getter_(mthis) => body_Getter(mthis);
+  body_Getter_(mthis) => mthis["body"];
 
-  static close_Callback_0(mthis) native "Notification_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "Notification_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["Notification"], []);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "Notification_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Notification"], [__arg_0]);
 
-  static constructorCallback_0() native "Notification_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Notification"], [__arg_0, __arg_1]);
 
-  static constructorCallback_1(__arg_0) native "Notification_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  dir_Getter_(mthis) => mthis["dir"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Notification_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  icon_Getter_(mthis) => mthis["icon"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Notification_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  lang_Getter_(mthis) => mthis["lang"];
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Notification_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  onclick_Getter_(mthis) => mthis["onclick"];
 
-  static dir_Getter(mthis) native "Notification_dir_Getter";
-  dir_Getter_(mthis) => dir_Getter(mthis);
+  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
 
-  static icon_Getter(mthis) native "Notification_icon_Getter";
-  icon_Getter_(mthis) => icon_Getter(mthis);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static lang_Getter(mthis) native "Notification_lang_Getter";
-  lang_Getter_(mthis) => lang_Getter(mthis);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static onclick_Getter(mthis) native "Notification_onclick_Getter";
-  onclick_Getter_(mthis) => onclick_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onclick_Setter(mthis, __arg_0) native "Notification_onclick_Setter";
-  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onclose_Getter(mthis) native "Notification_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  onshow_Getter_(mthis) => mthis["onshow"];
 
-  static onclose_Setter(mthis, __arg_0) native "Notification_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
 
-  static onerror_Getter(mthis) native "Notification_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  permission_Getter_() => js.context["Notification"]["permission"];
 
-  static onerror_Setter(mthis, __arg_0) native "Notification_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  requestPermission_Callback_0_() => js.context["Notification"].callMethod("requestPermission", []);
 
-  static onshow_Getter(mthis) native "Notification_onshow_Getter";
-  onshow_Getter_(mthis) => onshow_Getter(mthis);
+  requestPermission_Callback_1_(__arg_0) => js.context["Notification"].callMethod("requestPermission", [__arg_0]);
 
-  static onshow_Setter(mthis, __arg_0) native "Notification_onshow_Setter";
-  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+  tag_Getter_(mthis) => mthis["tag"];
 
-  static permission_Getter() native "Notification_permission_Getter";
-  permission_Getter_() => permission_Getter();
-
-  static requestPermission_Callback_0() native "Notification_requestPermission_Callback";
-  requestPermission_Callback_0_() => requestPermission_Callback_0();
-
-  static requestPermission_Callback_1(__arg_0) native "Notification_requestPermission_Callback";
-  requestPermission_Callback_1_(__arg_0) => requestPermission_Callback_1(__arg_0);
-
-  static requestPermission_Callback_2(__arg_0, __arg_1) native "Notification_requestPermission_Callback";
-  requestPermission_Callback_2_(__arg_0, __arg_1) => requestPermission_Callback_2(__arg_0, __arg_1);
-
-  static requestPermission_Callback_3(__arg_0, __arg_1, __arg_2) native "Notification_requestPermission_Callback";
-  requestPermission_Callback_3_(__arg_0, __arg_1, __arg_2) => requestPermission_Callback_3(__arg_0, __arg_1, __arg_2);
-
-  static tag_Getter(mthis) native "Notification_tag_Getter";
-  tag_Getter_(mthis) => tag_Getter(mthis);
-
-  static title_Getter(mthis) native "Notification_title_Getter";
-  title_Getter_(mthis) => title_Getter(mthis);
+  title_Getter_(mthis) => mthis["title"];
 
 }
 
@@ -16872,724 +9339,333 @@
 class BlinkOESVertexArrayObject {
   static final instance = new BlinkOESVertexArrayObject();
 
-  static bindVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
-  bindVertexArrayOES_Callback_0_(mthis) => bindVertexArrayOES_Callback_0(mthis);
+  bindVertexArrayOES_Callback_0_(mthis) => mthis.callMethod("bindVertexArrayOES", []);
 
-  static bindVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
-  bindVertexArrayOES_Callback_1_(mthis, __arg_0) => bindVertexArrayOES_Callback_1(mthis, __arg_0);
+  bindVertexArrayOES_Callback_1_(mthis, __arg_0) => mthis.callMethod("bindVertexArrayOES", [__arg_0]);
 
-  static bindVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
-  bindVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => bindVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
+  createVertexArrayOES_Callback_0_(mthis) => mthis.callMethod("createVertexArrayOES", []);
 
-  static bindVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
-  bindVertexArrayOES_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  deleteVertexArrayOES_Callback_0_(mthis) => mthis.callMethod("deleteVertexArrayOES", []);
 
-  static createVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_createVertexArrayOES_Callback";
-  createVertexArrayOES_Callback_0_(mthis) => createVertexArrayOES_Callback_0(mthis);
+  deleteVertexArrayOES_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteVertexArrayOES", [__arg_0]);
 
-  static createVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_createVertexArrayOES_Callback";
-  createVertexArrayOES_Callback_1_(mthis, __arg_0) => createVertexArrayOES_Callback_1(mthis, __arg_0);
+  isVertexArrayOES_Callback_0_(mthis) => mthis.callMethod("isVertexArrayOES", []);
 
-  static createVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_createVertexArrayOES_Callback";
-  createVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => createVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
-
-  static deleteVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
-  deleteVertexArrayOES_Callback_0_(mthis) => deleteVertexArrayOES_Callback_0(mthis);
-
-  static deleteVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
-  deleteVertexArrayOES_Callback_1_(mthis, __arg_0) => deleteVertexArrayOES_Callback_1(mthis, __arg_0);
-
-  static deleteVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
-  deleteVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => deleteVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
-
-  static deleteVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
-  deleteVertexArrayOES_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_isVertexArrayOES_Callback";
-  isVertexArrayOES_Callback_0_(mthis) => isVertexArrayOES_Callback_0(mthis);
-
-  static isVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_isVertexArrayOES_Callback";
-  isVertexArrayOES_Callback_1_(mthis, __arg_0) => isVertexArrayOES_Callback_1(mthis, __arg_0);
-
-  static isVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_isVertexArrayOES_Callback";
-  isVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => isVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OESVertexArrayObject_isVertexArrayOES_Callback";
-  isVertexArrayOES_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isVertexArrayOES_Callback_1_(mthis, __arg_0) => mthis.callMethod("isVertexArrayOES", [__arg_0]);
 
 }
 
 class BlinkOfflineAudioCompletionEvent extends BlinkEvent {
   static final instance = new BlinkOfflineAudioCompletionEvent();
 
-  static renderedBuffer_Getter(mthis) native "OfflineAudioCompletionEvent_renderedBuffer_Getter";
-  renderedBuffer_Getter_(mthis) => renderedBuffer_Getter(mthis);
+  renderedBuffer_Getter_(mthis) => mthis["renderedBuffer"];
 
 }
 
 class BlinkOfflineAudioContext extends BlinkAudioContext {
   static final instance = new BlinkOfflineAudioContext();
 
-  static constructorCallback_1(__arg_0) native "OfflineAudioContext_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["OfflineAudioContext"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "OfflineAudioContext_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["OfflineAudioContext"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "OfflineAudioContext_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
-
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "OfflineAudioContext_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
-
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "OfflineAudioContext_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["OfflineAudioContext"], [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkOscillatorNode extends BlinkAudioSourceNode {
   static final instance = new BlinkOscillatorNode();
 
-  static detune_Getter(mthis) native "OscillatorNode_detune_Getter";
-  detune_Getter_(mthis) => detune_Getter(mthis);
+  detune_Getter_(mthis) => mthis["detune"];
 
-  static frequency_Getter(mthis) native "OscillatorNode_frequency_Getter";
-  frequency_Getter_(mthis) => frequency_Getter(mthis);
+  frequency_Getter_(mthis) => mthis["frequency"];
 
-  static noteOff_Callback_0(mthis) native "OscillatorNode_noteOff_Callback";
-  noteOff_Callback_0_(mthis) => noteOff_Callback_0(mthis);
+  noteOff_Callback_0_(mthis) => mthis.callMethod("noteOff", []);
 
-  static noteOff_Callback_1(mthis, __arg_0) native "OscillatorNode_noteOff_Callback";
-  noteOff_Callback_1_(mthis, __arg_0) => noteOff_Callback_1(mthis, __arg_0);
+  noteOff_Callback_1_(mthis, __arg_0) => mthis.callMethod("noteOff", [__arg_0]);
 
-  static noteOff_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_noteOff_Callback";
-  noteOff_Callback_2_(mthis, __arg_0, __arg_1) => noteOff_Callback_2(mthis, __arg_0, __arg_1);
+  noteOn_Callback_0_(mthis) => mthis.callMethod("noteOn", []);
 
-  static noteOff_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_noteOff_Callback";
-  noteOff_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => noteOff_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  noteOn_Callback_1_(mthis, __arg_0) => mthis.callMethod("noteOn", [__arg_0]);
 
-  static noteOn_Callback_0(mthis) native "OscillatorNode_noteOn_Callback";
-  noteOn_Callback_0_(mthis) => noteOn_Callback_0(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static noteOn_Callback_1(mthis, __arg_0) native "OscillatorNode_noteOn_Callback";
-  noteOn_Callback_1_(mthis, __arg_0) => noteOn_Callback_1(mthis, __arg_0);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static noteOn_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_noteOn_Callback";
-  noteOn_Callback_2_(mthis, __arg_0, __arg_1) => noteOn_Callback_2(mthis, __arg_0, __arg_1);
+  setPeriodicWave_Callback_0_(mthis) => mthis.callMethod("setPeriodicWave", []);
 
-  static noteOn_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_noteOn_Callback";
-  noteOn_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => noteOn_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setPeriodicWave_Callback_1_(mthis, __arg_0) => mthis.callMethod("setPeriodicWave", [__arg_0]);
 
-  static onended_Getter(mthis) native "OscillatorNode_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
+  start_Callback_0_(mthis) => mthis.callMethod("start", []);
 
-  static onended_Setter(mthis, __arg_0) native "OscillatorNode_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+  start_Callback_1_(mthis, __arg_0) => mthis.callMethod("start", [__arg_0]);
 
-  static setPeriodicWave_Callback_0(mthis) native "OscillatorNode_setPeriodicWave_Callback";
-  setPeriodicWave_Callback_0_(mthis) => setPeriodicWave_Callback_0(mthis);
+  stop_Callback_0_(mthis) => mthis.callMethod("stop", []);
 
-  static setPeriodicWave_Callback_1(mthis, __arg_0) native "OscillatorNode_setPeriodicWave_Callback";
-  setPeriodicWave_Callback_1_(mthis, __arg_0) => setPeriodicWave_Callback_1(mthis, __arg_0);
+  stop_Callback_1_(mthis, __arg_0) => mthis.callMethod("stop", [__arg_0]);
 
-  static setPeriodicWave_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_setPeriodicWave_Callback";
-  setPeriodicWave_Callback_2_(mthis, __arg_0, __arg_1) => setPeriodicWave_Callback_2(mthis, __arg_0, __arg_1);
+  type_Getter_(mthis) => mthis["type"];
 
-  static setPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_setPeriodicWave_Callback";
-  setPeriodicWave_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static start_Callback_0(mthis) native "OscillatorNode_start_Callback";
-  start_Callback_0_(mthis) => start_Callback_0(mthis);
-
-  static start_Callback_1(mthis, __arg_0) native "OscillatorNode_start_Callback";
-  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
-
-  static start_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_start_Callback";
-  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
-
-  static start_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_start_Callback";
-  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => start_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stop_Callback_0(mthis) native "OscillatorNode_stop_Callback";
-  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
-
-  static stop_Callback_1(mthis, __arg_0) native "OscillatorNode_stop_Callback";
-  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
-
-  static stop_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_stop_Callback";
-  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_stop_Callback";
-  stop_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static type_Getter(mthis) native "OscillatorNode_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static type_Setter(mthis, __arg_0) native "OscillatorNode_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkOverflowEvent extends BlinkEvent {
   static final instance = new BlinkOverflowEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "OverflowEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["OverflowEvent"], [__arg_0, __arg_1]);
 
-  static horizontalOverflow_Getter(mthis) native "OverflowEvent_horizontalOverflow_Getter";
-  horizontalOverflow_Getter_(mthis) => horizontalOverflow_Getter(mthis);
+  horizontalOverflow_Getter_(mthis) => mthis["horizontalOverflow"];
 
-  static orient_Getter(mthis) native "OverflowEvent_orient_Getter";
-  orient_Getter_(mthis) => orient_Getter(mthis);
+  orient_Getter_(mthis) => mthis["orient"];
 
-  static verticalOverflow_Getter(mthis) native "OverflowEvent_verticalOverflow_Getter";
-  verticalOverflow_Getter_(mthis) => verticalOverflow_Getter(mthis);
+  verticalOverflow_Getter_(mthis) => mthis["verticalOverflow"];
 
 }
 
 class BlinkPagePopupController {
   static final instance = new BlinkPagePopupController();
 
-  static closePopup_Callback_0(mthis) native "PagePopupController_closePopup_Callback";
-  closePopup_Callback_0_(mthis) => closePopup_Callback_0(mthis);
+  closePopup_Callback_0_(mthis) => mthis.callMethod("closePopup", []);
 
-  static closePopup_Callback_1(mthis, __arg_0) native "PagePopupController_closePopup_Callback";
-  closePopup_Callback_1_(mthis, __arg_0) => closePopup_Callback_1(mthis, __arg_0);
+  formatMonth_Callback_0_(mthis) => mthis.callMethod("formatMonth", []);
 
-  static closePopup_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_closePopup_Callback";
-  closePopup_Callback_2_(mthis, __arg_0, __arg_1) => closePopup_Callback_2(mthis, __arg_0, __arg_1);
+  formatMonth_Callback_1_(mthis, __arg_0) => mthis.callMethod("formatMonth", [__arg_0]);
 
-  static formatMonth_Callback_0(mthis) native "PagePopupController_formatMonth_Callback";
-  formatMonth_Callback_0_(mthis) => formatMonth_Callback_0(mthis);
+  formatMonth_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("formatMonth", [__arg_0, __arg_1]);
 
-  static formatMonth_Callback_1(mthis, __arg_0) native "PagePopupController_formatMonth_Callback";
-  formatMonth_Callback_1_(mthis, __arg_0) => formatMonth_Callback_1(mthis, __arg_0);
+  formatShortMonth_Callback_0_(mthis) => mthis.callMethod("formatShortMonth", []);
 
-  static formatMonth_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_formatMonth_Callback";
-  formatMonth_Callback_2_(mthis, __arg_0, __arg_1) => formatMonth_Callback_2(mthis, __arg_0, __arg_1);
+  formatShortMonth_Callback_1_(mthis, __arg_0) => mthis.callMethod("formatShortMonth", [__arg_0]);
 
-  static formatMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_formatMonth_Callback";
-  formatMonth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => formatMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  formatShortMonth_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("formatShortMonth", [__arg_0, __arg_1]);
 
-  static formatMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_formatMonth_Callback";
-  formatMonth_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => formatMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  formatWeek_Callback_1_(mthis, __arg_0) => mthis.callMethod("formatWeek", [__arg_0]);
 
-  static formatShortMonth_Callback_0(mthis) native "PagePopupController_formatShortMonth_Callback";
-  formatShortMonth_Callback_0_(mthis) => formatShortMonth_Callback_0(mthis);
+  formatWeek_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("formatWeek", [__arg_0, __arg_1]);
 
-  static formatShortMonth_Callback_1(mthis, __arg_0) native "PagePopupController_formatShortMonth_Callback";
-  formatShortMonth_Callback_1_(mthis, __arg_0) => formatShortMonth_Callback_1(mthis, __arg_0);
+  formatWeek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("formatWeek", [__arg_0, __arg_1, __arg_2]);
 
-  static formatShortMonth_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_formatShortMonth_Callback";
-  formatShortMonth_Callback_2_(mthis, __arg_0, __arg_1) => formatShortMonth_Callback_2(mthis, __arg_0, __arg_1);
+  histogramEnumeration_Callback_1_(mthis, __arg_0) => mthis.callMethod("histogramEnumeration", [__arg_0]);
 
-  static formatShortMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_formatShortMonth_Callback";
-  formatShortMonth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => formatShortMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  histogramEnumeration_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("histogramEnumeration", [__arg_0, __arg_1]);
 
-  static formatShortMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_formatShortMonth_Callback";
-  formatShortMonth_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => formatShortMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  histogramEnumeration_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("histogramEnumeration", [__arg_0, __arg_1, __arg_2]);
 
-  static formatWeek_Callback_1(mthis, __arg_0) native "PagePopupController_formatWeek_Callback";
-  formatWeek_Callback_1_(mthis, __arg_0) => formatWeek_Callback_1(mthis, __arg_0);
+  localizeNumberString_Callback_0_(mthis) => mthis.callMethod("localizeNumberString", []);
 
-  static formatWeek_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_formatWeek_Callback";
-  formatWeek_Callback_2_(mthis, __arg_0, __arg_1) => formatWeek_Callback_2(mthis, __arg_0, __arg_1);
+  localizeNumberString_Callback_1_(mthis, __arg_0) => mthis.callMethod("localizeNumberString", [__arg_0]);
 
-  static formatWeek_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_formatWeek_Callback";
-  formatWeek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => formatWeek_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setValueAndClosePopup_Callback_0_(mthis) => mthis.callMethod("setValueAndClosePopup", []);
 
-  static formatWeek_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_formatWeek_Callback";
-  formatWeek_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => formatWeek_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setValueAndClosePopup_Callback_1_(mthis, __arg_0) => mthis.callMethod("setValueAndClosePopup", [__arg_0]);
 
-  static formatWeek_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PagePopupController_formatWeek_Callback";
-  formatWeek_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => formatWeek_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setValueAndClosePopup_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setValueAndClosePopup", [__arg_0, __arg_1]);
 
-  static histogramEnumeration_Callback_1(mthis, __arg_0) native "PagePopupController_histogramEnumeration_Callback";
-  histogramEnumeration_Callback_1_(mthis, __arg_0) => histogramEnumeration_Callback_1(mthis, __arg_0);
+  setValue_Callback_0_(mthis) => mthis.callMethod("setValue", []);
 
-  static histogramEnumeration_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_histogramEnumeration_Callback";
-  histogramEnumeration_Callback_2_(mthis, __arg_0, __arg_1) => histogramEnumeration_Callback_2(mthis, __arg_0, __arg_1);
-
-  static histogramEnumeration_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_histogramEnumeration_Callback";
-  histogramEnumeration_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => histogramEnumeration_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static histogramEnumeration_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_histogramEnumeration_Callback";
-  histogramEnumeration_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => histogramEnumeration_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static histogramEnumeration_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PagePopupController_histogramEnumeration_Callback";
-  histogramEnumeration_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => histogramEnumeration_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static localizeNumberString_Callback_0(mthis) native "PagePopupController_localizeNumberString_Callback";
-  localizeNumberString_Callback_0_(mthis) => localizeNumberString_Callback_0(mthis);
-
-  static localizeNumberString_Callback_1(mthis, __arg_0) native "PagePopupController_localizeNumberString_Callback";
-  localizeNumberString_Callback_1_(mthis, __arg_0) => localizeNumberString_Callback_1(mthis, __arg_0);
-
-  static localizeNumberString_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_localizeNumberString_Callback";
-  localizeNumberString_Callback_2_(mthis, __arg_0, __arg_1) => localizeNumberString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static localizeNumberString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_localizeNumberString_Callback";
-  localizeNumberString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => localizeNumberString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setValueAndClosePopup_Callback_0(mthis) native "PagePopupController_setValueAndClosePopup_Callback";
-  setValueAndClosePopup_Callback_0_(mthis) => setValueAndClosePopup_Callback_0(mthis);
-
-  static setValueAndClosePopup_Callback_1(mthis, __arg_0) native "PagePopupController_setValueAndClosePopup_Callback";
-  setValueAndClosePopup_Callback_1_(mthis, __arg_0) => setValueAndClosePopup_Callback_1(mthis, __arg_0);
-
-  static setValueAndClosePopup_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_setValueAndClosePopup_Callback";
-  setValueAndClosePopup_Callback_2_(mthis, __arg_0, __arg_1) => setValueAndClosePopup_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setValueAndClosePopup_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_setValueAndClosePopup_Callback";
-  setValueAndClosePopup_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValueAndClosePopup_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setValueAndClosePopup_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_setValueAndClosePopup_Callback";
-  setValueAndClosePopup_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setValueAndClosePopup_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setValue_Callback_0(mthis) native "PagePopupController_setValue_Callback";
-  setValue_Callback_0_(mthis) => setValue_Callback_0(mthis);
-
-  static setValue_Callback_1(mthis, __arg_0) native "PagePopupController_setValue_Callback";
-  setValue_Callback_1_(mthis, __arg_0) => setValue_Callback_1(mthis, __arg_0);
-
-  static setValue_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_setValue_Callback";
-  setValue_Callback_2_(mthis, __arg_0, __arg_1) => setValue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_setValue_Callback";
-  setValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("setValue", [__arg_0]);
 
 }
 
 class BlinkPageTransitionEvent extends BlinkEvent {
   static final instance = new BlinkPageTransitionEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "PageTransitionEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["PageTransitionEvent"], [__arg_0, __arg_1]);
 
-  static persisted_Getter(mthis) native "PageTransitionEvent_persisted_Getter";
-  persisted_Getter_(mthis) => persisted_Getter(mthis);
+  persisted_Getter_(mthis) => mthis["persisted"];
 
 }
 
 class BlinkPannerNode extends BlinkAudioNode {
   static final instance = new BlinkPannerNode();
 
-  static coneInnerAngle_Getter(mthis) native "PannerNode_coneInnerAngle_Getter";
-  coneInnerAngle_Getter_(mthis) => coneInnerAngle_Getter(mthis);
+  coneInnerAngle_Getter_(mthis) => mthis["coneInnerAngle"];
 
-  static coneInnerAngle_Setter(mthis, __arg_0) native "PannerNode_coneInnerAngle_Setter";
-  coneInnerAngle_Setter_(mthis, __arg_0) => coneInnerAngle_Setter(mthis, __arg_0);
+  coneInnerAngle_Setter_(mthis, __arg_0) => mthis["coneInnerAngle"] = __arg_0;
 
-  static coneOuterAngle_Getter(mthis) native "PannerNode_coneOuterAngle_Getter";
-  coneOuterAngle_Getter_(mthis) => coneOuterAngle_Getter(mthis);
+  coneOuterAngle_Getter_(mthis) => mthis["coneOuterAngle"];
 
-  static coneOuterAngle_Setter(mthis, __arg_0) native "PannerNode_coneOuterAngle_Setter";
-  coneOuterAngle_Setter_(mthis, __arg_0) => coneOuterAngle_Setter(mthis, __arg_0);
+  coneOuterAngle_Setter_(mthis, __arg_0) => mthis["coneOuterAngle"] = __arg_0;
 
-  static coneOuterGain_Getter(mthis) native "PannerNode_coneOuterGain_Getter";
-  coneOuterGain_Getter_(mthis) => coneOuterGain_Getter(mthis);
+  coneOuterGain_Getter_(mthis) => mthis["coneOuterGain"];
 
-  static coneOuterGain_Setter(mthis, __arg_0) native "PannerNode_coneOuterGain_Setter";
-  coneOuterGain_Setter_(mthis, __arg_0) => coneOuterGain_Setter(mthis, __arg_0);
+  coneOuterGain_Setter_(mthis, __arg_0) => mthis["coneOuterGain"] = __arg_0;
 
-  static distanceModel_Getter(mthis) native "PannerNode_distanceModel_Getter";
-  distanceModel_Getter_(mthis) => distanceModel_Getter(mthis);
+  distanceModel_Getter_(mthis) => mthis["distanceModel"];
 
-  static distanceModel_Setter(mthis, __arg_0) native "PannerNode_distanceModel_Setter";
-  distanceModel_Setter_(mthis, __arg_0) => distanceModel_Setter(mthis, __arg_0);
+  distanceModel_Setter_(mthis, __arg_0) => mthis["distanceModel"] = __arg_0;
 
-  static maxDistance_Getter(mthis) native "PannerNode_maxDistance_Getter";
-  maxDistance_Getter_(mthis) => maxDistance_Getter(mthis);
+  maxDistance_Getter_(mthis) => mthis["maxDistance"];
 
-  static maxDistance_Setter(mthis, __arg_0) native "PannerNode_maxDistance_Setter";
-  maxDistance_Setter_(mthis, __arg_0) => maxDistance_Setter(mthis, __arg_0);
+  maxDistance_Setter_(mthis, __arg_0) => mthis["maxDistance"] = __arg_0;
 
-  static panningModel_Getter(mthis) native "PannerNode_panningModel_Getter";
-  panningModel_Getter_(mthis) => panningModel_Getter(mthis);
+  panningModel_Getter_(mthis) => mthis["panningModel"];
 
-  static panningModel_Setter(mthis, __arg_0) native "PannerNode_panningModel_Setter";
-  panningModel_Setter_(mthis, __arg_0) => panningModel_Setter(mthis, __arg_0);
+  panningModel_Setter_(mthis, __arg_0) => mthis["panningModel"] = __arg_0;
 
-  static refDistance_Getter(mthis) native "PannerNode_refDistance_Getter";
-  refDistance_Getter_(mthis) => refDistance_Getter(mthis);
+  refDistance_Getter_(mthis) => mthis["refDistance"];
 
-  static refDistance_Setter(mthis, __arg_0) native "PannerNode_refDistance_Setter";
-  refDistance_Setter_(mthis, __arg_0) => refDistance_Setter(mthis, __arg_0);
+  refDistance_Setter_(mthis, __arg_0) => mthis["refDistance"] = __arg_0;
 
-  static rolloffFactor_Getter(mthis) native "PannerNode_rolloffFactor_Getter";
-  rolloffFactor_Getter_(mthis) => rolloffFactor_Getter(mthis);
+  rolloffFactor_Getter_(mthis) => mthis["rolloffFactor"];
 
-  static rolloffFactor_Setter(mthis, __arg_0) native "PannerNode_rolloffFactor_Setter";
-  rolloffFactor_Setter_(mthis, __arg_0) => rolloffFactor_Setter(mthis, __arg_0);
+  rolloffFactor_Setter_(mthis, __arg_0) => mthis["rolloffFactor"] = __arg_0;
 
-  static setOrientation_Callback_1(mthis, __arg_0) native "PannerNode_setOrientation_Callback";
-  setOrientation_Callback_1_(mthis, __arg_0) => setOrientation_Callback_1(mthis, __arg_0);
+  setOrientation_Callback_1_(mthis, __arg_0) => mthis.callMethod("setOrientation", [__arg_0]);
 
-  static setOrientation_Callback_2(mthis, __arg_0, __arg_1) native "PannerNode_setOrientation_Callback";
-  setOrientation_Callback_2_(mthis, __arg_0, __arg_1) => setOrientation_Callback_2(mthis, __arg_0, __arg_1);
+  setOrientation_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setOrientation", [__arg_0, __arg_1]);
 
-  static setOrientation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PannerNode_setOrientation_Callback";
-  setOrientation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setOrientation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setOrientation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setOrientation", [__arg_0, __arg_1, __arg_2]);
 
-  static setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PannerNode_setOrientation_Callback";
-  setOrientation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setPosition_Callback_1_(mthis, __arg_0) => mthis.callMethod("setPosition", [__arg_0]);
 
-  static setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PannerNode_setOrientation_Callback";
-  setOrientation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setPosition", [__arg_0, __arg_1]);
 
-  static setPosition_Callback_1(mthis, __arg_0) native "PannerNode_setPosition_Callback";
-  setPosition_Callback_1_(mthis, __arg_0) => setPosition_Callback_1(mthis, __arg_0);
+  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setPosition", [__arg_0, __arg_1, __arg_2]);
 
-  static setPosition_Callback_2(mthis, __arg_0, __arg_1) native "PannerNode_setPosition_Callback";
-  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => setPosition_Callback_2(mthis, __arg_0, __arg_1);
+  setVelocity_Callback_1_(mthis, __arg_0) => mthis.callMethod("setVelocity", [__arg_0]);
 
-  static setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PannerNode_setPosition_Callback";
-  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setVelocity", [__arg_0, __arg_1]);
 
-  static setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PannerNode_setPosition_Callback";
-  setPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PannerNode_setPosition_Callback";
-  setPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static setVelocity_Callback_1(mthis, __arg_0) native "PannerNode_setVelocity_Callback";
-  setVelocity_Callback_1_(mthis, __arg_0) => setVelocity_Callback_1(mthis, __arg_0);
-
-  static setVelocity_Callback_2(mthis, __arg_0, __arg_1) native "PannerNode_setVelocity_Callback";
-  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => setVelocity_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PannerNode_setVelocity_Callback";
-  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PannerNode_setVelocity_Callback";
-  setVelocity_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PannerNode_setVelocity_Callback";
-  setVelocity_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setVelocity", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkPath2D {
   static final instance = new BlinkPath2D();
 
-  static addPath_Callback_0(mthis) native "Path2D_addPath_Callback";
-  addPath_Callback_0_(mthis) => addPath_Callback_0(mthis);
+  addPath_Callback_0_(mthis) => mthis.callMethod("addPath", []);
 
-  static addPath_Callback_1(mthis, __arg_0) native "Path2D_addPath_Callback";
-  addPath_Callback_1_(mthis, __arg_0) => addPath_Callback_1(mthis, __arg_0);
+  addPath_Callback_1_(mthis, __arg_0) => mthis.callMethod("addPath", [__arg_0]);
 
-  static addPath_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_addPath_Callback";
-  addPath_Callback_2_(mthis, __arg_0, __arg_1) => addPath_Callback_2(mthis, __arg_0, __arg_1);
+  addPath_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addPath", [__arg_0, __arg_1]);
 
-  static addPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_addPath_Callback";
-  addPath_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("arcTo", [__arg_0, __arg_1, __arg_2]);
 
-  static addPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_addPath_Callback";
-  addPath_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("arcTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_arcTo_Callback";
-  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("arcTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_arcTo_Callback";
-  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  arc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2]);
 
-  static arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_arcTo_Callback";
-  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_arcTo_Callback";
-  arcTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_arcTo_Callback";
-  arcTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("arc", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_arc_Callback";
-  arc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_arc_Callback";
-  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_arc_Callback";
-  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("bezierCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_arc_Callback";
-  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  closePath_Callback_0_(mthis) => mthis.callMethod("closePath", []);
 
-  static arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_arc_Callback";
-  arc_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  constructorCallback_0_() => new js.JsObject(js.context["Path2D"], []);
 
-  static arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Path2D_arc_Callback";
-  arc_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Path2D"], [__arg_0]);
 
-  static bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  ellipse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("ellipse", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Path2D_bezierCurveTo_Callback";
-  bezierCurveTo_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  lineTo_Callback_0_(mthis) => mthis.callMethod("lineTo", []);
 
-  static closePath_Callback_0(mthis) native "Path2D_closePath_Callback";
-  closePath_Callback_0_(mthis) => closePath_Callback_0(mthis);
+  lineTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("lineTo", [__arg_0]);
 
-  static closePath_Callback_1(mthis, __arg_0) native "Path2D_closePath_Callback";
-  closePath_Callback_1_(mthis, __arg_0) => closePath_Callback_1(mthis, __arg_0);
+  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("lineTo", [__arg_0, __arg_1]);
 
-  static closePath_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_closePath_Callback";
-  closePath_Callback_2_(mthis, __arg_0, __arg_1) => closePath_Callback_2(mthis, __arg_0, __arg_1);
+  moveTo_Callback_0_(mthis) => mthis.callMethod("moveTo", []);
 
-  static constructorCallback_0() native "Path2D_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  moveTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("moveTo", [__arg_0]);
 
-  static constructorCallback_1(__arg_0) native "Path2D_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("moveTo", [__arg_0, __arg_1]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Path2D_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("quadraticCurveTo", [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Path2D_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("quadraticCurveTo", [__arg_0, __arg_1, __arg_2]);
 
-  static ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "Path2D_ellipse_Callback";
-  ellipse_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("quadraticCurveTo", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_ellipse_Callback";
-  ellipse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  rect_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("rect", [__arg_0, __arg_1]);
 
-  static ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_ellipse_Callback";
-  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("rect", [__arg_0, __arg_1, __arg_2]);
 
-  static ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_ellipse_Callback";
-  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Path2D_ellipse_Callback";
-  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "Path2D_ellipse_Callback";
-  ellipse_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
-
-  static lineTo_Callback_0(mthis) native "Path2D_lineTo_Callback";
-  lineTo_Callback_0_(mthis) => lineTo_Callback_0(mthis);
-
-  static lineTo_Callback_1(mthis, __arg_0) native "Path2D_lineTo_Callback";
-  lineTo_Callback_1_(mthis, __arg_0) => lineTo_Callback_1(mthis, __arg_0);
-
-  static lineTo_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_lineTo_Callback";
-  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => lineTo_Callback_2(mthis, __arg_0, __arg_1);
-
-  static lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_lineTo_Callback";
-  lineTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_lineTo_Callback";
-  lineTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static moveTo_Callback_0(mthis) native "Path2D_moveTo_Callback";
-  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
-
-  static moveTo_Callback_1(mthis, __arg_0) native "Path2D_moveTo_Callback";
-  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
-
-  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_moveTo_Callback";
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
-
-  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_moveTo_Callback";
-  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_moveTo_Callback";
-  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1);
-
-  static quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_quadraticCurveTo_Callback";
-  quadraticCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static rect_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_rect_Callback";
-  rect_Callback_2_(mthis, __arg_0, __arg_1) => rect_Callback_2(mthis, __arg_0, __arg_1);
-
-  static rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_rect_Callback";
-  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_rect_Callback";
-  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_rect_Callback";
-  rect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_rect_Callback";
-  rect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("rect", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkPerformance extends BlinkEventTarget {
   static final instance = new BlinkPerformance();
 
-  static clearMarks_Callback_0(mthis) native "Performance_clearMarks_Callback";
-  clearMarks_Callback_0_(mthis) => clearMarks_Callback_0(mthis);
+  clearMarks_Callback_0_(mthis) => mthis.callMethod("clearMarks", []);
 
-  static clearMarks_Callback_1(mthis, __arg_0) native "Performance_clearMarks_Callback";
-  clearMarks_Callback_1_(mthis, __arg_0) => clearMarks_Callback_1(mthis, __arg_0);
+  clearMarks_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearMarks", [__arg_0]);
 
-  static clearMarks_Callback_2(mthis, __arg_0, __arg_1) native "Performance_clearMarks_Callback";
-  clearMarks_Callback_2_(mthis, __arg_0, __arg_1) => clearMarks_Callback_2(mthis, __arg_0, __arg_1);
+  clearMeasures_Callback_0_(mthis) => mthis.callMethod("clearMeasures", []);
 
-  static clearMarks_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_clearMarks_Callback";
-  clearMarks_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearMarks_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  clearMeasures_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearMeasures", [__arg_0]);
 
-  static clearMeasures_Callback_0(mthis) native "Performance_clearMeasures_Callback";
-  clearMeasures_Callback_0_(mthis) => clearMeasures_Callback_0(mthis);
+  getEntriesByName_Callback_0_(mthis) => mthis.callMethod("getEntriesByName", []);
 
-  static clearMeasures_Callback_1(mthis, __arg_0) native "Performance_clearMeasures_Callback";
-  clearMeasures_Callback_1_(mthis, __arg_0) => clearMeasures_Callback_1(mthis, __arg_0);
+  getEntriesByName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getEntriesByName", [__arg_0]);
 
-  static clearMeasures_Callback_2(mthis, __arg_0, __arg_1) native "Performance_clearMeasures_Callback";
-  clearMeasures_Callback_2_(mthis, __arg_0, __arg_1) => clearMeasures_Callback_2(mthis, __arg_0, __arg_1);
+  getEntriesByName_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getEntriesByName", [__arg_0, __arg_1]);
 
-  static clearMeasures_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_clearMeasures_Callback";
-  clearMeasures_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearMeasures_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getEntriesByType_Callback_0_(mthis) => mthis.callMethod("getEntriesByType", []);
 
-  static getEntriesByName_Callback_0(mthis) native "Performance_getEntriesByName_Callback";
-  getEntriesByName_Callback_0_(mthis) => getEntriesByName_Callback_0(mthis);
+  getEntriesByType_Callback_1_(mthis, __arg_0) => mthis.callMethod("getEntriesByType", [__arg_0]);
 
-  static getEntriesByName_Callback_1(mthis, __arg_0) native "Performance_getEntriesByName_Callback";
-  getEntriesByName_Callback_1_(mthis, __arg_0) => getEntriesByName_Callback_1(mthis, __arg_0);
+  getEntries_Callback_0_(mthis) => mthis.callMethod("getEntries", []);
 
-  static getEntriesByName_Callback_2(mthis, __arg_0, __arg_1) native "Performance_getEntriesByName_Callback";
-  getEntriesByName_Callback_2_(mthis, __arg_0, __arg_1) => getEntriesByName_Callback_2(mthis, __arg_0, __arg_1);
+  mark_Callback_0_(mthis) => mthis.callMethod("mark", []);
 
-  static getEntriesByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_getEntriesByName_Callback";
-  getEntriesByName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEntriesByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  mark_Callback_1_(mthis, __arg_0) => mthis.callMethod("mark", [__arg_0]);
 
-  static getEntriesByName_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Performance_getEntriesByName_Callback";
-  getEntriesByName_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getEntriesByName_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  measure_Callback_0_(mthis) => mthis.callMethod("measure", []);
 
-  static getEntriesByType_Callback_0(mthis) native "Performance_getEntriesByType_Callback";
-  getEntriesByType_Callback_0_(mthis) => getEntriesByType_Callback_0(mthis);
+  measure_Callback_1_(mthis, __arg_0) => mthis.callMethod("measure", [__arg_0]);
 
-  static getEntriesByType_Callback_1(mthis, __arg_0) native "Performance_getEntriesByType_Callback";
-  getEntriesByType_Callback_1_(mthis, __arg_0) => getEntriesByType_Callback_1(mthis, __arg_0);
+  measure_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("measure", [__arg_0, __arg_1]);
 
-  static getEntriesByType_Callback_2(mthis, __arg_0, __arg_1) native "Performance_getEntriesByType_Callback";
-  getEntriesByType_Callback_2_(mthis, __arg_0, __arg_1) => getEntriesByType_Callback_2(mthis, __arg_0, __arg_1);
+  measure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("measure", [__arg_0, __arg_1, __arg_2]);
 
-  static getEntriesByType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_getEntriesByType_Callback";
-  getEntriesByType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEntriesByType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  memory_Getter_(mthis) => mthis["memory"];
 
-  static getEntries_Callback_0(mthis) native "Performance_getEntries_Callback";
-  getEntries_Callback_0_(mthis) => getEntries_Callback_0(mthis);
+  navigation_Getter_(mthis) => mthis["navigation"];
 
-  static getEntries_Callback_1(mthis, __arg_0) native "Performance_getEntries_Callback";
-  getEntries_Callback_1_(mthis, __arg_0) => getEntries_Callback_1(mthis, __arg_0);
+  now_Callback_0_(mthis) => mthis.callMethod("now", []);
 
-  static getEntries_Callback_2(mthis, __arg_0, __arg_1) native "Performance_getEntries_Callback";
-  getEntries_Callback_2_(mthis, __arg_0, __arg_1) => getEntries_Callback_2(mthis, __arg_0, __arg_1);
+  onwebkitresourcetimingbufferfull_Getter_(mthis) => mthis["onwebkitresourcetimingbufferfull"];
 
-  static mark_Callback_0(mthis) native "Performance_mark_Callback";
-  mark_Callback_0_(mthis) => mark_Callback_0(mthis);
+  onwebkitresourcetimingbufferfull_Setter_(mthis, __arg_0) => mthis["onwebkitresourcetimingbufferfull"] = __arg_0;
 
-  static mark_Callback_1(mthis, __arg_0) native "Performance_mark_Callback";
-  mark_Callback_1_(mthis, __arg_0) => mark_Callback_1(mthis, __arg_0);
+  timing_Getter_(mthis) => mthis["timing"];
 
-  static mark_Callback_2(mthis, __arg_0, __arg_1) native "Performance_mark_Callback";
-  mark_Callback_2_(mthis, __arg_0, __arg_1) => mark_Callback_2(mthis, __arg_0, __arg_1);
+  webkitClearResourceTimings_Callback_0_(mthis) => mthis.callMethod("webkitClearResourceTimings", []);
 
-  static mark_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_mark_Callback";
-  mark_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mark_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitSetResourceTimingBufferSize_Callback_0_(mthis) => mthis.callMethod("webkitSetResourceTimingBufferSize", []);
 
-  static measure_Callback_0(mthis) native "Performance_measure_Callback";
-  measure_Callback_0_(mthis) => measure_Callback_0(mthis);
-
-  static measure_Callback_1(mthis, __arg_0) native "Performance_measure_Callback";
-  measure_Callback_1_(mthis, __arg_0) => measure_Callback_1(mthis, __arg_0);
-
-  static measure_Callback_2(mthis, __arg_0, __arg_1) native "Performance_measure_Callback";
-  measure_Callback_2_(mthis, __arg_0, __arg_1) => measure_Callback_2(mthis, __arg_0, __arg_1);
-
-  static measure_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_measure_Callback";
-  measure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => measure_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static measure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Performance_measure_Callback";
-  measure_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => measure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static measure_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Performance_measure_Callback";
-  measure_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => measure_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static memory_Getter(mthis) native "Performance_memory_Getter";
-  memory_Getter_(mthis) => memory_Getter(mthis);
-
-  static navigation_Getter(mthis) native "Performance_navigation_Getter";
-  navigation_Getter_(mthis) => navigation_Getter(mthis);
-
-  static now_Callback_0(mthis) native "Performance_now_Callback";
-  now_Callback_0_(mthis) => now_Callback_0(mthis);
-
-  static now_Callback_1(mthis, __arg_0) native "Performance_now_Callback";
-  now_Callback_1_(mthis, __arg_0) => now_Callback_1(mthis, __arg_0);
-
-  static now_Callback_2(mthis, __arg_0, __arg_1) native "Performance_now_Callback";
-  now_Callback_2_(mthis, __arg_0, __arg_1) => now_Callback_2(mthis, __arg_0, __arg_1);
-
-  static onwebkitresourcetimingbufferfull_Getter(mthis) native "Performance_onwebkitresourcetimingbufferfull_Getter";
-  onwebkitresourcetimingbufferfull_Getter_(mthis) => onwebkitresourcetimingbufferfull_Getter(mthis);
-
-  static onwebkitresourcetimingbufferfull_Setter(mthis, __arg_0) native "Performance_onwebkitresourcetimingbufferfull_Setter";
-  onwebkitresourcetimingbufferfull_Setter_(mthis, __arg_0) => onwebkitresourcetimingbufferfull_Setter(mthis, __arg_0);
-
-  static timing_Getter(mthis) native "Performance_timing_Getter";
-  timing_Getter_(mthis) => timing_Getter(mthis);
-
-  static webkitClearResourceTimings_Callback_0(mthis) native "Performance_webkitClearResourceTimings_Callback";
-  webkitClearResourceTimings_Callback_0_(mthis) => webkitClearResourceTimings_Callback_0(mthis);
-
-  static webkitClearResourceTimings_Callback_1(mthis, __arg_0) native "Performance_webkitClearResourceTimings_Callback";
-  webkitClearResourceTimings_Callback_1_(mthis, __arg_0) => webkitClearResourceTimings_Callback_1(mthis, __arg_0);
-
-  static webkitClearResourceTimings_Callback_2(mthis, __arg_0, __arg_1) native "Performance_webkitClearResourceTimings_Callback";
-  webkitClearResourceTimings_Callback_2_(mthis, __arg_0, __arg_1) => webkitClearResourceTimings_Callback_2(mthis, __arg_0, __arg_1);
-
-  static webkitSetResourceTimingBufferSize_Callback_0(mthis) native "Performance_webkitSetResourceTimingBufferSize_Callback";
-  webkitSetResourceTimingBufferSize_Callback_0_(mthis) => webkitSetResourceTimingBufferSize_Callback_0(mthis);
-
-  static webkitSetResourceTimingBufferSize_Callback_1(mthis, __arg_0) native "Performance_webkitSetResourceTimingBufferSize_Callback";
-  webkitSetResourceTimingBufferSize_Callback_1_(mthis, __arg_0) => webkitSetResourceTimingBufferSize_Callback_1(mthis, __arg_0);
-
-  static webkitSetResourceTimingBufferSize_Callback_2(mthis, __arg_0, __arg_1) native "Performance_webkitSetResourceTimingBufferSize_Callback";
-  webkitSetResourceTimingBufferSize_Callback_2_(mthis, __arg_0, __arg_1) => webkitSetResourceTimingBufferSize_Callback_2(mthis, __arg_0, __arg_1);
-
-  static webkitSetResourceTimingBufferSize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_webkitSetResourceTimingBufferSize_Callback";
-  webkitSetResourceTimingBufferSize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitSetResourceTimingBufferSize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitSetResourceTimingBufferSize_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitSetResourceTimingBufferSize", [__arg_0]);
 
 }
 
 class BlinkPerformanceEntry {
   static final instance = new BlinkPerformanceEntry();
 
-  static duration_Getter(mthis) native "PerformanceEntry_duration_Getter";
-  duration_Getter_(mthis) => duration_Getter(mthis);
+  duration_Getter_(mthis) => mthis["duration"];
 
-  static entryType_Getter(mthis) native "PerformanceEntry_entryType_Getter";
-  entryType_Getter_(mthis) => entryType_Getter(mthis);
+  entryType_Getter_(mthis) => mthis["entryType"];
 
-  static name_Getter(mthis) native "PerformanceEntry_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static startTime_Getter(mthis) native "PerformanceEntry_startTime_Getter";
-  startTime_Getter_(mthis) => startTime_Getter(mthis);
+  startTime_Getter_(mthis) => mthis["startTime"];
 
 }
 
@@ -17606,120 +9682,85 @@
 class BlinkPerformanceNavigation {
   static final instance = new BlinkPerformanceNavigation();
 
-  static redirectCount_Getter(mthis) native "PerformanceNavigation_redirectCount_Getter";
-  redirectCount_Getter_(mthis) => redirectCount_Getter(mthis);
+  redirectCount_Getter_(mthis) => mthis["redirectCount"];
 
-  static type_Getter(mthis) native "PerformanceNavigation_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkPerformanceResourceTiming extends BlinkPerformanceEntry {
   static final instance = new BlinkPerformanceResourceTiming();
 
-  static connectEnd_Getter(mthis) native "PerformanceResourceTiming_connectEnd_Getter";
-  connectEnd_Getter_(mthis) => connectEnd_Getter(mthis);
+  connectEnd_Getter_(mthis) => mthis["connectEnd"];
 
-  static connectStart_Getter(mthis) native "PerformanceResourceTiming_connectStart_Getter";
-  connectStart_Getter_(mthis) => connectStart_Getter(mthis);
+  connectStart_Getter_(mthis) => mthis["connectStart"];
 
-  static domainLookupEnd_Getter(mthis) native "PerformanceResourceTiming_domainLookupEnd_Getter";
-  domainLookupEnd_Getter_(mthis) => domainLookupEnd_Getter(mthis);
+  domainLookupEnd_Getter_(mthis) => mthis["domainLookupEnd"];
 
-  static domainLookupStart_Getter(mthis) native "PerformanceResourceTiming_domainLookupStart_Getter";
-  domainLookupStart_Getter_(mthis) => domainLookupStart_Getter(mthis);
+  domainLookupStart_Getter_(mthis) => mthis["domainLookupStart"];
 
-  static fetchStart_Getter(mthis) native "PerformanceResourceTiming_fetchStart_Getter";
-  fetchStart_Getter_(mthis) => fetchStart_Getter(mthis);
+  fetchStart_Getter_(mthis) => mthis["fetchStart"];
 
-  static initiatorType_Getter(mthis) native "PerformanceResourceTiming_initiatorType_Getter";
-  initiatorType_Getter_(mthis) => initiatorType_Getter(mthis);
+  initiatorType_Getter_(mthis) => mthis["initiatorType"];
 
-  static redirectEnd_Getter(mthis) native "PerformanceResourceTiming_redirectEnd_Getter";
-  redirectEnd_Getter_(mthis) => redirectEnd_Getter(mthis);
+  redirectEnd_Getter_(mthis) => mthis["redirectEnd"];
 
-  static redirectStart_Getter(mthis) native "PerformanceResourceTiming_redirectStart_Getter";
-  redirectStart_Getter_(mthis) => redirectStart_Getter(mthis);
+  redirectStart_Getter_(mthis) => mthis["redirectStart"];
 
-  static requestStart_Getter(mthis) native "PerformanceResourceTiming_requestStart_Getter";
-  requestStart_Getter_(mthis) => requestStart_Getter(mthis);
+  requestStart_Getter_(mthis) => mthis["requestStart"];
 
-  static responseEnd_Getter(mthis) native "PerformanceResourceTiming_responseEnd_Getter";
-  responseEnd_Getter_(mthis) => responseEnd_Getter(mthis);
+  responseEnd_Getter_(mthis) => mthis["responseEnd"];
 
-  static responseStart_Getter(mthis) native "PerformanceResourceTiming_responseStart_Getter";
-  responseStart_Getter_(mthis) => responseStart_Getter(mthis);
+  responseStart_Getter_(mthis) => mthis["responseStart"];
 
-  static secureConnectionStart_Getter(mthis) native "PerformanceResourceTiming_secureConnectionStart_Getter";
-  secureConnectionStart_Getter_(mthis) => secureConnectionStart_Getter(mthis);
+  secureConnectionStart_Getter_(mthis) => mthis["secureConnectionStart"];
 
 }
 
 class BlinkPerformanceTiming {
   static final instance = new BlinkPerformanceTiming();
 
-  static connectEnd_Getter(mthis) native "PerformanceTiming_connectEnd_Getter";
-  connectEnd_Getter_(mthis) => connectEnd_Getter(mthis);
+  connectEnd_Getter_(mthis) => mthis["connectEnd"];
 
-  static connectStart_Getter(mthis) native "PerformanceTiming_connectStart_Getter";
-  connectStart_Getter_(mthis) => connectStart_Getter(mthis);
+  connectStart_Getter_(mthis) => mthis["connectStart"];
 
-  static domComplete_Getter(mthis) native "PerformanceTiming_domComplete_Getter";
-  domComplete_Getter_(mthis) => domComplete_Getter(mthis);
+  domComplete_Getter_(mthis) => mthis["domComplete"];
 
-  static domContentLoadedEventEnd_Getter(mthis) native "PerformanceTiming_domContentLoadedEventEnd_Getter";
-  domContentLoadedEventEnd_Getter_(mthis) => domContentLoadedEventEnd_Getter(mthis);
+  domContentLoadedEventEnd_Getter_(mthis) => mthis["domContentLoadedEventEnd"];
 
-  static domContentLoadedEventStart_Getter(mthis) native "PerformanceTiming_domContentLoadedEventStart_Getter";
-  domContentLoadedEventStart_Getter_(mthis) => domContentLoadedEventStart_Getter(mthis);
+  domContentLoadedEventStart_Getter_(mthis) => mthis["domContentLoadedEventStart"];
 
-  static domInteractive_Getter(mthis) native "PerformanceTiming_domInteractive_Getter";
-  domInteractive_Getter_(mthis) => domInteractive_Getter(mthis);
+  domInteractive_Getter_(mthis) => mthis["domInteractive"];
 
-  static domLoading_Getter(mthis) native "PerformanceTiming_domLoading_Getter";
-  domLoading_Getter_(mthis) => domLoading_Getter(mthis);
+  domLoading_Getter_(mthis) => mthis["domLoading"];
 
-  static domainLookupEnd_Getter(mthis) native "PerformanceTiming_domainLookupEnd_Getter";
-  domainLookupEnd_Getter_(mthis) => domainLookupEnd_Getter(mthis);
+  domainLookupEnd_Getter_(mthis) => mthis["domainLookupEnd"];
 
-  static domainLookupStart_Getter(mthis) native "PerformanceTiming_domainLookupStart_Getter";
-  domainLookupStart_Getter_(mthis) => domainLookupStart_Getter(mthis);
+  domainLookupStart_Getter_(mthis) => mthis["domainLookupStart"];
 
-  static fetchStart_Getter(mthis) native "PerformanceTiming_fetchStart_Getter";
-  fetchStart_Getter_(mthis) => fetchStart_Getter(mthis);
+  fetchStart_Getter_(mthis) => mthis["fetchStart"];
 
-  static loadEventEnd_Getter(mthis) native "PerformanceTiming_loadEventEnd_Getter";
-  loadEventEnd_Getter_(mthis) => loadEventEnd_Getter(mthis);
+  loadEventEnd_Getter_(mthis) => mthis["loadEventEnd"];
 
-  static loadEventStart_Getter(mthis) native "PerformanceTiming_loadEventStart_Getter";
-  loadEventStart_Getter_(mthis) => loadEventStart_Getter(mthis);
+  loadEventStart_Getter_(mthis) => mthis["loadEventStart"];
 
-  static navigationStart_Getter(mthis) native "PerformanceTiming_navigationStart_Getter";
-  navigationStart_Getter_(mthis) => navigationStart_Getter(mthis);
+  navigationStart_Getter_(mthis) => mthis["navigationStart"];
 
-  static redirectEnd_Getter(mthis) native "PerformanceTiming_redirectEnd_Getter";
-  redirectEnd_Getter_(mthis) => redirectEnd_Getter(mthis);
+  redirectEnd_Getter_(mthis) => mthis["redirectEnd"];
 
-  static redirectStart_Getter(mthis) native "PerformanceTiming_redirectStart_Getter";
-  redirectStart_Getter_(mthis) => redirectStart_Getter(mthis);
+  redirectStart_Getter_(mthis) => mthis["redirectStart"];
 
-  static requestStart_Getter(mthis) native "PerformanceTiming_requestStart_Getter";
-  requestStart_Getter_(mthis) => requestStart_Getter(mthis);
+  requestStart_Getter_(mthis) => mthis["requestStart"];
 
-  static responseEnd_Getter(mthis) native "PerformanceTiming_responseEnd_Getter";
-  responseEnd_Getter_(mthis) => responseEnd_Getter(mthis);
+  responseEnd_Getter_(mthis) => mthis["responseEnd"];
 
-  static responseStart_Getter(mthis) native "PerformanceTiming_responseStart_Getter";
-  responseStart_Getter_(mthis) => responseStart_Getter(mthis);
+  responseStart_Getter_(mthis) => mthis["responseStart"];
 
-  static secureConnectionStart_Getter(mthis) native "PerformanceTiming_secureConnectionStart_Getter";
-  secureConnectionStart_Getter_(mthis) => secureConnectionStart_Getter(mthis);
+  secureConnectionStart_Getter_(mthis) => mthis["secureConnectionStart"];
 
-  static unloadEventEnd_Getter(mthis) native "PerformanceTiming_unloadEventEnd_Getter";
-  unloadEventEnd_Getter_(mthis) => unloadEventEnd_Getter(mthis);
+  unloadEventEnd_Getter_(mthis) => mthis["unloadEventEnd"];
 
-  static unloadEventStart_Getter(mthis) native "PerformanceTiming_unloadEventStart_Getter";
-  unloadEventStart_Getter_(mthis) => unloadEventStart_Getter(mthis);
+  unloadEventStart_Getter_(mthis) => mthis["unloadEventStart"];
 
 }
 
@@ -17731,1471 +9772,739 @@
 class BlinkPlugin {
   static final instance = new BlinkPlugin();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "Plugin___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static description_Getter(mthis) native "Plugin_description_Getter";
-  description_Getter_(mthis) => description_Getter(mthis);
+  description_Getter_(mthis) => mthis["description"];
 
-  static filename_Getter(mthis) native "Plugin_filename_Getter";
-  filename_Getter_(mthis) => filename_Getter(mthis);
+  filename_Getter_(mthis) => mthis["filename"];
 
-  static item_Callback_0(mthis) native "Plugin_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "Plugin_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "Plugin_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Plugin_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  name_Getter_(mthis) => mthis["name"];
 
-  static length_Getter(mthis) native "Plugin_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static name_Getter(mthis) native "Plugin_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
-
-  static namedItem_Callback_0(mthis) native "Plugin_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
-
-  static namedItem_Callback_1(mthis, __arg_0) native "Plugin_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
-
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "Plugin_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Plugin_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
 }
 
 class BlinkPluginArray {
   static final instance = new BlinkPluginArray();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "PluginArray___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "PluginArray_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "PluginArray_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "PluginArray_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PluginArray_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static length_Getter(mthis) native "PluginArray_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
-  static namedItem_Callback_0(mthis) native "PluginArray_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+  refresh_Callback_0_(mthis) => mthis.callMethod("refresh", []);
 
-  static namedItem_Callback_1(mthis, __arg_0) native "PluginArray_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
-
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "PluginArray_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PluginArray_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static refresh_Callback_0(mthis) native "PluginArray_refresh_Callback";
-  refresh_Callback_0_(mthis) => refresh_Callback_0(mthis);
-
-  static refresh_Callback_1(mthis, __arg_0) native "PluginArray_refresh_Callback";
-  refresh_Callback_1_(mthis, __arg_0) => refresh_Callback_1(mthis, __arg_0);
-
-  static refresh_Callback_2(mthis, __arg_0, __arg_1) native "PluginArray_refresh_Callback";
-  refresh_Callback_2_(mthis, __arg_0, __arg_1) => refresh_Callback_2(mthis, __arg_0, __arg_1);
-
-  static refresh_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PluginArray_refresh_Callback";
-  refresh_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => refresh_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  refresh_Callback_1_(mthis, __arg_0) => mthis.callMethod("refresh", [__arg_0]);
 
 }
 
 class BlinkPluginPlaceholderElement extends BlinkHTMLDivElement {
   static final instance = new BlinkPluginPlaceholderElement();
 
-  static createdCallback_Callback_0(mthis) native "PluginPlaceholderElement_createdCallback_Callback";
-  createdCallback_Callback_0_(mthis) => createdCallback_Callback_0(mthis);
+  createdCallback_Callback_0_(mthis) => mthis.callMethod("createdCallback", []);
 
-  static createdCallback_Callback_1(mthis, __arg_0) native "PluginPlaceholderElement_createdCallback_Callback";
-  createdCallback_Callback_1_(mthis, __arg_0) => createdCallback_Callback_1(mthis, __arg_0);
+  message_Getter_(mthis) => mthis["message"];
 
-  static createdCallback_Callback_2(mthis, __arg_0, __arg_1) native "PluginPlaceholderElement_createdCallback_Callback";
-  createdCallback_Callback_2_(mthis, __arg_0, __arg_1) => createdCallback_Callback_2(mthis, __arg_0, __arg_1);
-
-  static message_Getter(mthis) native "PluginPlaceholderElement_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
-
-  static message_Setter(mthis, __arg_0) native "PluginPlaceholderElement_message_Setter";
-  message_Setter_(mthis, __arg_0) => message_Setter(mthis, __arg_0);
+  message_Setter_(mthis, __arg_0) => mthis["message"] = __arg_0;
 
 }
 
 class BlinkPopStateEvent extends BlinkEvent {
   static final instance = new BlinkPopStateEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "PopStateEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["PopStateEvent"], [__arg_0, __arg_1]);
 
-  static state_Getter(mthis) native "PopStateEvent_state_Getter";
-  state_Getter_(mthis) => state_Getter(mthis);
+  state_Getter_(mthis) => mthis["state"];
 
 }
 
 class BlinkPositionError {
   static final instance = new BlinkPositionError();
 
-  static code_Getter(mthis) native "PositionError_code_Getter";
-  code_Getter_(mthis) => code_Getter(mthis);
+  code_Getter_(mthis) => mthis["code"];
 
-  static message_Getter(mthis) native "PositionError_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
 }
 
 class BlinkPresentation extends BlinkEventTarget {
   static final instance = new BlinkPresentation();
 
-  static onavailablechange_Getter(mthis) native "Presentation_onavailablechange_Getter";
-  onavailablechange_Getter_(mthis) => onavailablechange_Getter(mthis);
+  onavailablechange_Getter_(mthis) => mthis["onavailablechange"];
 
-  static onavailablechange_Setter(mthis, __arg_0) native "Presentation_onavailablechange_Setter";
-  onavailablechange_Setter_(mthis, __arg_0) => onavailablechange_Setter(mthis, __arg_0);
+  onavailablechange_Setter_(mthis, __arg_0) => mthis["onavailablechange"] = __arg_0;
 
 }
 
 class BlinkProcessingInstruction extends BlinkCharacterData {
   static final instance = new BlinkProcessingInstruction();
 
-  static sheet_Getter(mthis) native "ProcessingInstruction_sheet_Getter";
-  sheet_Getter_(mthis) => sheet_Getter(mthis);
+  sheet_Getter_(mthis) => mthis["sheet"];
 
-  static target_Getter(mthis) native "ProcessingInstruction_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
 }
 
 class BlinkProgressEvent extends BlinkEvent {
   static final instance = new BlinkProgressEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "ProgressEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["ProgressEvent"], [__arg_0, __arg_1]);
 
-  static lengthComputable_Getter(mthis) native "ProgressEvent_lengthComputable_Getter";
-  lengthComputable_Getter_(mthis) => lengthComputable_Getter(mthis);
+  lengthComputable_Getter_(mthis) => mthis["lengthComputable"];
 
-  static loaded_Getter(mthis) native "ProgressEvent_loaded_Getter";
-  loaded_Getter_(mthis) => loaded_Getter(mthis);
+  loaded_Getter_(mthis) => mthis["loaded"];
 
-  static total_Getter(mthis) native "ProgressEvent_total_Getter";
-  total_Getter_(mthis) => total_Getter(mthis);
+  total_Getter_(mthis) => mthis["total"];
 
 }
 
 class BlinkPushEvent extends BlinkEvent {
   static final instance = new BlinkPushEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "PushEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["PushEvent"], [__arg_0, __arg_1]);
 
-  static data_Getter(mthis) native "PushEvent_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
+  data_Getter_(mthis) => mthis["data"];
 
 }
 
 class BlinkPushManager {
   static final instance = new BlinkPushManager();
 
-  static register_Callback_0(mthis) native "PushManager_register_Callback";
-  register_Callback_0_(mthis) => register_Callback_0(mthis);
+  register_Callback_0_(mthis) => mthis.callMethod("register", []);
 
-  static register_Callback_1(mthis, __arg_0) native "PushManager_register_Callback";
-  register_Callback_1_(mthis, __arg_0) => register_Callback_1(mthis, __arg_0);
-
-  static register_Callback_2(mthis, __arg_0, __arg_1) native "PushManager_register_Callback";
-  register_Callback_2_(mthis, __arg_0, __arg_1) => register_Callback_2(mthis, __arg_0, __arg_1);
-
-  static register_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PushManager_register_Callback";
-  register_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => register_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  register_Callback_1_(mthis, __arg_0) => mthis.callMethod("register", [__arg_0]);
 
 }
 
 class BlinkPushRegistration {
   static final instance = new BlinkPushRegistration();
 
-  static pushEndpoint_Getter(mthis) native "PushRegistration_pushEndpoint_Getter";
-  pushEndpoint_Getter_(mthis) => pushEndpoint_Getter(mthis);
+  pushEndpoint_Getter_(mthis) => mthis["pushEndpoint"];
 
-  static pushRegistrationId_Getter(mthis) native "PushRegistration_pushRegistrationId_Getter";
-  pushRegistrationId_Getter_(mthis) => pushRegistrationId_Getter(mthis);
+  pushRegistrationId_Getter_(mthis) => mthis["pushRegistrationId"];
 
 }
 
 class BlinkRGBColor {
   static final instance = new BlinkRGBColor();
 
-  static blue_Getter(mthis) native "RGBColor_blue_Getter";
-  blue_Getter_(mthis) => blue_Getter(mthis);
+  blue_Getter_(mthis) => mthis["blue"];
 
-  static green_Getter(mthis) native "RGBColor_green_Getter";
-  green_Getter_(mthis) => green_Getter(mthis);
+  green_Getter_(mthis) => mthis["green"];
 
-  static red_Getter(mthis) native "RGBColor_red_Getter";
-  red_Getter_(mthis) => red_Getter(mthis);
+  red_Getter_(mthis) => mthis["red"];
 
 }
 
 class BlinkRTCDTMFSender extends BlinkEventTarget {
   static final instance = new BlinkRTCDTMFSender();
 
-  static canInsertDTMF_Getter(mthis) native "RTCDTMFSender_canInsertDTMF_Getter";
-  canInsertDTMF_Getter_(mthis) => canInsertDTMF_Getter(mthis);
+  canInsertDTMF_Getter_(mthis) => mthis["canInsertDTMF"];
 
-  static duration_Getter(mthis) native "RTCDTMFSender_duration_Getter";
-  duration_Getter_(mthis) => duration_Getter(mthis);
+  duration_Getter_(mthis) => mthis["duration"];
 
-  static insertDTMF_Callback_0(mthis) native "RTCDTMFSender_insertDTMF_Callback";
-  insertDTMF_Callback_0_(mthis) => insertDTMF_Callback_0(mthis);
+  insertDTMF_Callback_0_(mthis) => mthis.callMethod("insertDTMF", []);
 
-  static insertDTMF_Callback_1(mthis, __arg_0) native "RTCDTMFSender_insertDTMF_Callback";
-  insertDTMF_Callback_1_(mthis, __arg_0) => insertDTMF_Callback_1(mthis, __arg_0);
+  insertDTMF_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertDTMF", [__arg_0]);
 
-  static insertDTMF_Callback_2(mthis, __arg_0, __arg_1) native "RTCDTMFSender_insertDTMF_Callback";
-  insertDTMF_Callback_2_(mthis, __arg_0, __arg_1) => insertDTMF_Callback_2(mthis, __arg_0, __arg_1);
+  insertDTMF_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertDTMF", [__arg_0, __arg_1]);
 
-  static insertDTMF_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCDTMFSender_insertDTMF_Callback";
-  insertDTMF_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertDTMF_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  insertDTMF_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("insertDTMF", [__arg_0, __arg_1, __arg_2]);
 
-  static insertDTMF_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCDTMFSender_insertDTMF_Callback";
-  insertDTMF_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertDTMF_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  interToneGap_Getter_(mthis) => mthis["interToneGap"];
 
-  static insertDTMF_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCDTMFSender_insertDTMF_Callback";
-  insertDTMF_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => insertDTMF_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  ontonechange_Getter_(mthis) => mthis["ontonechange"];
 
-  static interToneGap_Getter(mthis) native "RTCDTMFSender_interToneGap_Getter";
-  interToneGap_Getter_(mthis) => interToneGap_Getter(mthis);
+  ontonechange_Setter_(mthis, __arg_0) => mthis["ontonechange"] = __arg_0;
 
-  static ontonechange_Getter(mthis) native "RTCDTMFSender_ontonechange_Getter";
-  ontonechange_Getter_(mthis) => ontonechange_Getter(mthis);
+  toneBuffer_Getter_(mthis) => mthis["toneBuffer"];
 
-  static ontonechange_Setter(mthis, __arg_0) native "RTCDTMFSender_ontonechange_Setter";
-  ontonechange_Setter_(mthis, __arg_0) => ontonechange_Setter(mthis, __arg_0);
-
-  static toneBuffer_Getter(mthis) native "RTCDTMFSender_toneBuffer_Getter";
-  toneBuffer_Getter_(mthis) => toneBuffer_Getter(mthis);
-
-  static track_Getter(mthis) native "RTCDTMFSender_track_Getter";
-  track_Getter_(mthis) => track_Getter(mthis);
+  track_Getter_(mthis) => mthis["track"];
 
 }
 
 class BlinkRTCDTMFToneChangeEvent extends BlinkEvent {
   static final instance = new BlinkRTCDTMFToneChangeEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "RTCDTMFToneChangeEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["RTCDTMFToneChangeEvent"], [__arg_0, __arg_1]);
 
-  static tone_Getter(mthis) native "RTCDTMFToneChangeEvent_tone_Getter";
-  tone_Getter_(mthis) => tone_Getter(mthis);
+  tone_Getter_(mthis) => mthis["tone"];
 
 }
 
 class BlinkRTCDataChannel extends BlinkEventTarget {
   static final instance = new BlinkRTCDataChannel();
 
-  static binaryType_Getter(mthis) native "RTCDataChannel_binaryType_Getter";
-  binaryType_Getter_(mthis) => binaryType_Getter(mthis);
+  binaryType_Getter_(mthis) => mthis["binaryType"];
 
-  static binaryType_Setter(mthis, __arg_0) native "RTCDataChannel_binaryType_Setter";
-  binaryType_Setter_(mthis, __arg_0) => binaryType_Setter(mthis, __arg_0);
+  binaryType_Setter_(mthis, __arg_0) => mthis["binaryType"] = __arg_0;
 
-  static bufferedAmount_Getter(mthis) native "RTCDataChannel_bufferedAmount_Getter";
-  bufferedAmount_Getter_(mthis) => bufferedAmount_Getter(mthis);
+  bufferedAmount_Getter_(mthis) => mthis["bufferedAmount"];
 
-  static close_Callback_0(mthis) native "RTCDataChannel_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "RTCDataChannel_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  id_Getter_(mthis) => mthis["id"];
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "RTCDataChannel_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  label_Getter_(mthis) => mthis["label"];
 
-  static id_Getter(mthis) native "RTCDataChannel_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  maxRetransmitTime_Getter_(mthis) => mthis["maxRetransmitTime"];
 
-  static label_Getter(mthis) native "RTCDataChannel_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  maxRetransmits_Getter_(mthis) => mthis["maxRetransmits"];
 
-  static maxRetransmitTime_Getter(mthis) native "RTCDataChannel_maxRetransmitTime_Getter";
-  maxRetransmitTime_Getter_(mthis) => maxRetransmitTime_Getter(mthis);
+  negotiated_Getter_(mthis) => mthis["negotiated"];
 
-  static maxRetransmits_Getter(mthis) native "RTCDataChannel_maxRetransmits_Getter";
-  maxRetransmits_Getter_(mthis) => maxRetransmits_Getter(mthis);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static negotiated_Getter(mthis) native "RTCDataChannel_negotiated_Getter";
-  negotiated_Getter_(mthis) => negotiated_Getter(mthis);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static onclose_Getter(mthis) native "RTCDataChannel_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onclose_Setter(mthis, __arg_0) native "RTCDataChannel_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onerror_Getter(mthis) native "RTCDataChannel_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static onerror_Setter(mthis, __arg_0) native "RTCDataChannel_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "RTCDataChannel_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  onopen_Getter_(mthis) => mthis["onopen"];
 
-  static onmessage_Setter(mthis, __arg_0) native "RTCDataChannel_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  onopen_Setter_(mthis, __arg_0) => mthis["onopen"] = __arg_0;
 
-  static onopen_Getter(mthis) native "RTCDataChannel_onopen_Getter";
-  onopen_Getter_(mthis) => onopen_Getter(mthis);
+  ordered_Getter_(mthis) => mthis["ordered"];
 
-  static onopen_Setter(mthis, __arg_0) native "RTCDataChannel_onopen_Setter";
-  onopen_Setter_(mthis, __arg_0) => onopen_Setter(mthis, __arg_0);
+  protocol_Getter_(mthis) => mthis["protocol"];
 
-  static ordered_Getter(mthis) native "RTCDataChannel_ordered_Getter";
-  ordered_Getter_(mthis) => ordered_Getter(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static protocol_Getter(mthis) native "RTCDataChannel_protocol_Getter";
-  protocol_Getter_(mthis) => protocol_Getter(mthis);
+  reliable_Getter_(mthis) => mthis["reliable"];
 
-  static readyState_Getter(mthis) native "RTCDataChannel_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
+  send_Callback_0_(mthis) => mthis.callMethod("send", []);
 
-  static reliable_Getter(mthis) native "RTCDataChannel_reliable_Getter";
-  reliable_Getter_(mthis) => reliable_Getter(mthis);
-
-  static send_Callback_0(mthis) native "RTCDataChannel_send_Callback";
-  send_Callback_0_(mthis) => send_Callback_0(mthis);
-
-  static send_Callback_1(mthis, __arg_0) native "RTCDataChannel_send_Callback";
-  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
-
-  static send_Callback_2(mthis, __arg_0, __arg_1) native "RTCDataChannel_send_Callback";
-  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
-
-  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCDataChannel_send_Callback";
-  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  send_Callback_1_(mthis, __arg_0) => mthis.callMethod("send", [__arg_0]);
 
 }
 
 class BlinkRTCDataChannelEvent extends BlinkEvent {
   static final instance = new BlinkRTCDataChannelEvent();
 
-  static channel_Getter(mthis) native "RTCDataChannelEvent_channel_Getter";
-  channel_Getter_(mthis) => channel_Getter(mthis);
+  channel_Getter_(mthis) => mthis["channel"];
 
 }
 
 class BlinkRTCIceCandidate {
   static final instance = new BlinkRTCIceCandidate();
 
-  static candidate_Getter(mthis) native "RTCIceCandidate_candidate_Getter";
-  candidate_Getter_(mthis) => candidate_Getter(mthis);
+  candidate_Getter_(mthis) => mthis["candidate"];
 
-  static candidate_Setter(mthis, __arg_0) native "RTCIceCandidate_candidate_Setter";
-  candidate_Setter_(mthis, __arg_0) => candidate_Setter(mthis, __arg_0);
+  candidate_Setter_(mthis, __arg_0) => mthis["candidate"] = __arg_0;
 
-  static constructorCallback_0() native "RTCIceCandidate_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["RTCIceCandidate"], []);
 
-  static constructorCallback_1(__arg_0) native "RTCIceCandidate_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["RTCIceCandidate"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "RTCIceCandidate_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  sdpMLineIndex_Getter_(mthis) => mthis["sdpMLineIndex"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "RTCIceCandidate_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  sdpMLineIndex_Setter_(mthis, __arg_0) => mthis["sdpMLineIndex"] = __arg_0;
 
-  static sdpMLineIndex_Getter(mthis) native "RTCIceCandidate_sdpMLineIndex_Getter";
-  sdpMLineIndex_Getter_(mthis) => sdpMLineIndex_Getter(mthis);
+  sdpMid_Getter_(mthis) => mthis["sdpMid"];
 
-  static sdpMLineIndex_Setter(mthis, __arg_0) native "RTCIceCandidate_sdpMLineIndex_Setter";
-  sdpMLineIndex_Setter_(mthis, __arg_0) => sdpMLineIndex_Setter(mthis, __arg_0);
-
-  static sdpMid_Getter(mthis) native "RTCIceCandidate_sdpMid_Getter";
-  sdpMid_Getter_(mthis) => sdpMid_Getter(mthis);
-
-  static sdpMid_Setter(mthis, __arg_0) native "RTCIceCandidate_sdpMid_Setter";
-  sdpMid_Setter_(mthis, __arg_0) => sdpMid_Setter(mthis, __arg_0);
+  sdpMid_Setter_(mthis, __arg_0) => mthis["sdpMid"] = __arg_0;
 
 }
 
 class BlinkRTCIceCandidateEvent extends BlinkEvent {
   static final instance = new BlinkRTCIceCandidateEvent();
 
-  static candidate_Getter(mthis) native "RTCIceCandidateEvent_candidate_Getter";
-  candidate_Getter_(mthis) => candidate_Getter(mthis);
+  candidate_Getter_(mthis) => mthis["candidate"];
 
 }
 
 class BlinkRTCPeerConnection extends BlinkEventTarget {
   static final instance = new BlinkRTCPeerConnection();
 
-  static addIceCandidate_Callback_1(mthis, __arg_0) native "RTCPeerConnection_addIceCandidate_Callback";
-  addIceCandidate_Callback_1_(mthis, __arg_0) => addIceCandidate_Callback_1(mthis, __arg_0);
+  addIceCandidate_Callback_1_(mthis, __arg_0) => mthis.callMethod("addIceCandidate", [__arg_0]);
 
-  static addIceCandidate_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_addIceCandidate_Callback";
-  addIceCandidate_Callback_2_(mthis, __arg_0, __arg_1) => addIceCandidate_Callback_2(mthis, __arg_0, __arg_1);
+  addIceCandidate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addIceCandidate", [__arg_0, __arg_1]);
 
-  static addIceCandidate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_addIceCandidate_Callback";
-  addIceCandidate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addIceCandidate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  addIceCandidate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("addIceCandidate", [__arg_0, __arg_1, __arg_2]);
 
-  static addIceCandidate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_addIceCandidate_Callback";
-  addIceCandidate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addIceCandidate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  addStream_Callback_0_(mthis) => mthis.callMethod("addStream", []);
 
-  static addIceCandidate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_addIceCandidate_Callback";
-  addIceCandidate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addIceCandidate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  addStream_Callback_1_(mthis, __arg_0) => mthis.callMethod("addStream", [__arg_0]);
 
-  static addStream_Callback_0(mthis) native "RTCPeerConnection_addStream_Callback";
-  addStream_Callback_0_(mthis) => addStream_Callback_0(mthis);
+  addStream_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addStream", [__arg_0, __arg_1]);
 
-  static addStream_Callback_1(mthis, __arg_0) native "RTCPeerConnection_addStream_Callback";
-  addStream_Callback_1_(mthis, __arg_0) => addStream_Callback_1(mthis, __arg_0);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static addStream_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_addStream_Callback";
-  addStream_Callback_2_(mthis, __arg_0, __arg_1) => addStream_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_0_() => new js.JsObject(js.context["webkitRTCPeerConnection"], []);
 
-  static addStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_addStream_Callback";
-  addStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["webkitRTCPeerConnection"], [__arg_0]);
 
-  static addStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_addStream_Callback";
-  addStream_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["webkitRTCPeerConnection"], [__arg_0, __arg_1]);
 
-  static close_Callback_0(mthis) native "RTCPeerConnection_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  createAnswer_Callback_0_(mthis) => mthis.callMethod("createAnswer", []);
 
-  static close_Callback_1(mthis, __arg_0) native "RTCPeerConnection_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  createAnswer_Callback_1_(mthis, __arg_0) => mthis.callMethod("createAnswer", [__arg_0]);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  createAnswer_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createAnswer", [__arg_0, __arg_1]);
 
-  static constructorCallback_0() native "RTCPeerConnection_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  createAnswer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createAnswer", [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_1(__arg_0) native "RTCPeerConnection_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  createDTMFSender_Callback_0_(mthis) => mthis.callMethod("createDTMFSender", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "RTCPeerConnection_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  createDTMFSender_Callback_1_(mthis, __arg_0) => mthis.callMethod("createDTMFSender", [__arg_0]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "RTCPeerConnection_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  createDataChannel_Callback_0_(mthis) => mthis.callMethod("createDataChannel", []);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  createDataChannel_Callback_1_(mthis, __arg_0) => mthis.callMethod("createDataChannel", [__arg_0]);
 
-  static createAnswer_Callback_0(mthis) native "RTCPeerConnection_createAnswer_Callback";
-  createAnswer_Callback_0_(mthis) => createAnswer_Callback_0(mthis);
+  createDataChannel_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createDataChannel", [__arg_0, __arg_1]);
 
-  static createAnswer_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createAnswer_Callback";
-  createAnswer_Callback_1_(mthis, __arg_0) => createAnswer_Callback_1(mthis, __arg_0);
+  createOffer_Callback_0_(mthis) => mthis.callMethod("createOffer", []);
 
-  static createAnswer_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createAnswer_Callback";
-  createAnswer_Callback_2_(mthis, __arg_0, __arg_1) => createAnswer_Callback_2(mthis, __arg_0, __arg_1);
+  createOffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("createOffer", [__arg_0]);
 
-  static createAnswer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createAnswer_Callback";
-  createAnswer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createAnswer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createOffer_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createOffer", [__arg_0, __arg_1]);
 
-  static createAnswer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_createAnswer_Callback";
-  createAnswer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createAnswer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createOffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createOffer", [__arg_0, __arg_1, __arg_2]);
 
-  static createAnswer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_createAnswer_Callback";
-  createAnswer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createAnswer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  getLocalStreams_Callback_0_(mthis) => mthis.callMethod("getLocalStreams", []);
 
-  static createDTMFSender_Callback_0(mthis) native "RTCPeerConnection_createDTMFSender_Callback";
-  createDTMFSender_Callback_0_(mthis) => createDTMFSender_Callback_0(mthis);
+  getRemoteStreams_Callback_0_(mthis) => mthis.callMethod("getRemoteStreams", []);
 
-  static createDTMFSender_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createDTMFSender_Callback";
-  createDTMFSender_Callback_1_(mthis, __arg_0) => createDTMFSender_Callback_1(mthis, __arg_0);
+  getStats_Callback_0_(mthis) => mthis.callMethod("getStats", []);
 
-  static createDTMFSender_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createDTMFSender_Callback";
-  createDTMFSender_Callback_2_(mthis, __arg_0, __arg_1) => createDTMFSender_Callback_2(mthis, __arg_0, __arg_1);
+  getStats_Callback_1_(mthis, __arg_0) => mthis.callMethod("getStats", [__arg_0]);
 
-  static createDTMFSender_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createDTMFSender_Callback";
-  createDTMFSender_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDTMFSender_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getStats_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getStats", [__arg_0, __arg_1]);
 
-  static createDataChannel_Callback_0(mthis) native "RTCPeerConnection_createDataChannel_Callback";
-  createDataChannel_Callback_0_(mthis) => createDataChannel_Callback_0(mthis);
+  getStreamById_Callback_0_(mthis) => mthis.callMethod("getStreamById", []);
 
-  static createDataChannel_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createDataChannel_Callback";
-  createDataChannel_Callback_1_(mthis, __arg_0) => createDataChannel_Callback_1(mthis, __arg_0);
+  getStreamById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getStreamById", [__arg_0]);
 
-  static createDataChannel_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createDataChannel_Callback";
-  createDataChannel_Callback_2_(mthis, __arg_0, __arg_1) => createDataChannel_Callback_2(mthis, __arg_0, __arg_1);
+  iceConnectionState_Getter_(mthis) => mthis["iceConnectionState"];
 
-  static createDataChannel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createDataChannel_Callback";
-  createDataChannel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDataChannel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  iceGatheringState_Getter_(mthis) => mthis["iceGatheringState"];
 
-  static createDataChannel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_createDataChannel_Callback";
-  createDataChannel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createDataChannel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  localDescription_Getter_(mthis) => mthis["localDescription"];
 
-  static createOffer_Callback_0(mthis) native "RTCPeerConnection_createOffer_Callback";
-  createOffer_Callback_0_(mthis) => createOffer_Callback_0(mthis);
+  onaddstream_Getter_(mthis) => mthis["onaddstream"];
 
-  static createOffer_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createOffer_Callback";
-  createOffer_Callback_1_(mthis, __arg_0) => createOffer_Callback_1(mthis, __arg_0);
+  onaddstream_Setter_(mthis, __arg_0) => mthis["onaddstream"] = __arg_0;
 
-  static createOffer_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createOffer_Callback";
-  createOffer_Callback_2_(mthis, __arg_0, __arg_1) => createOffer_Callback_2(mthis, __arg_0, __arg_1);
+  ondatachannel_Getter_(mthis) => mthis["ondatachannel"];
 
-  static createOffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createOffer_Callback";
-  createOffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createOffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ondatachannel_Setter_(mthis, __arg_0) => mthis["ondatachannel"] = __arg_0;
 
-  static createOffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_createOffer_Callback";
-  createOffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createOffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onicecandidate_Getter_(mthis) => mthis["onicecandidate"];
 
-  static createOffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_createOffer_Callback";
-  createOffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createOffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  onicecandidate_Setter_(mthis, __arg_0) => mthis["onicecandidate"] = __arg_0;
 
-  static getLocalStreams_Callback_0(mthis) native "RTCPeerConnection_getLocalStreams_Callback";
-  getLocalStreams_Callback_0_(mthis) => getLocalStreams_Callback_0(mthis);
+  oniceconnectionstatechange_Getter_(mthis) => mthis["oniceconnectionstatechange"];
 
-  static getLocalStreams_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getLocalStreams_Callback";
-  getLocalStreams_Callback_1_(mthis, __arg_0) => getLocalStreams_Callback_1(mthis, __arg_0);
+  oniceconnectionstatechange_Setter_(mthis, __arg_0) => mthis["oniceconnectionstatechange"] = __arg_0;
 
-  static getLocalStreams_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getLocalStreams_Callback";
-  getLocalStreams_Callback_2_(mthis, __arg_0, __arg_1) => getLocalStreams_Callback_2(mthis, __arg_0, __arg_1);
+  onnegotiationneeded_Getter_(mthis) => mthis["onnegotiationneeded"];
 
-  static getRemoteStreams_Callback_0(mthis) native "RTCPeerConnection_getRemoteStreams_Callback";
-  getRemoteStreams_Callback_0_(mthis) => getRemoteStreams_Callback_0(mthis);
+  onnegotiationneeded_Setter_(mthis, __arg_0) => mthis["onnegotiationneeded"] = __arg_0;
 
-  static getRemoteStreams_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getRemoteStreams_Callback";
-  getRemoteStreams_Callback_1_(mthis, __arg_0) => getRemoteStreams_Callback_1(mthis, __arg_0);
+  onremovestream_Getter_(mthis) => mthis["onremovestream"];
 
-  static getRemoteStreams_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getRemoteStreams_Callback";
-  getRemoteStreams_Callback_2_(mthis, __arg_0, __arg_1) => getRemoteStreams_Callback_2(mthis, __arg_0, __arg_1);
+  onremovestream_Setter_(mthis, __arg_0) => mthis["onremovestream"] = __arg_0;
 
-  static getStats_Callback_0(mthis) native "RTCPeerConnection_getStats_Callback";
-  getStats_Callback_0_(mthis) => getStats_Callback_0(mthis);
+  onsignalingstatechange_Getter_(mthis) => mthis["onsignalingstatechange"];
 
-  static getStats_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getStats_Callback";
-  getStats_Callback_1_(mthis, __arg_0) => getStats_Callback_1(mthis, __arg_0);
-
-  static getStats_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getStats_Callback";
-  getStats_Callback_2_(mthis, __arg_0, __arg_1) => getStats_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getStats_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_getStats_Callback";
-  getStats_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getStats_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getStats_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_getStats_Callback";
-  getStats_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getStats_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getStreamById_Callback_0(mthis) native "RTCPeerConnection_getStreamById_Callback";
-  getStreamById_Callback_0_(mthis) => getStreamById_Callback_0(mthis);
-
-  static getStreamById_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getStreamById_Callback";
-  getStreamById_Callback_1_(mthis, __arg_0) => getStreamById_Callback_1(mthis, __arg_0);
-
-  static getStreamById_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getStreamById_Callback";
-  getStreamById_Callback_2_(mthis, __arg_0, __arg_1) => getStreamById_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getStreamById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_getStreamById_Callback";
-  getStreamById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getStreamById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static iceConnectionState_Getter(mthis) native "RTCPeerConnection_iceConnectionState_Getter";
-  iceConnectionState_Getter_(mthis) => iceConnectionState_Getter(mthis);
-
-  static iceGatheringState_Getter(mthis) native "RTCPeerConnection_iceGatheringState_Getter";
-  iceGatheringState_Getter_(mthis) => iceGatheringState_Getter(mthis);
-
-  static localDescription_Getter(mthis) native "RTCPeerConnection_localDescription_Getter";
-  localDescription_Getter_(mthis) => localDescription_Getter(mthis);
-
-  static onaddstream_Getter(mthis) native "RTCPeerConnection_onaddstream_Getter";
-  onaddstream_Getter_(mthis) => onaddstream_Getter(mthis);
-
-  static onaddstream_Setter(mthis, __arg_0) native "RTCPeerConnection_onaddstream_Setter";
-  onaddstream_Setter_(mthis, __arg_0) => onaddstream_Setter(mthis, __arg_0);
-
-  static ondatachannel_Getter(mthis) native "RTCPeerConnection_ondatachannel_Getter";
-  ondatachannel_Getter_(mthis) => ondatachannel_Getter(mthis);
-
-  static ondatachannel_Setter(mthis, __arg_0) native "RTCPeerConnection_ondatachannel_Setter";
-  ondatachannel_Setter_(mthis, __arg_0) => ondatachannel_Setter(mthis, __arg_0);
-
-  static onicecandidate_Getter(mthis) native "RTCPeerConnection_onicecandidate_Getter";
-  onicecandidate_Getter_(mthis) => onicecandidate_Getter(mthis);
-
-  static onicecandidate_Setter(mthis, __arg_0) native "RTCPeerConnection_onicecandidate_Setter";
-  onicecandidate_Setter_(mthis, __arg_0) => onicecandidate_Setter(mthis, __arg_0);
-
-  static oniceconnectionstatechange_Getter(mthis) native "RTCPeerConnection_oniceconnectionstatechange_Getter";
-  oniceconnectionstatechange_Getter_(mthis) => oniceconnectionstatechange_Getter(mthis);
-
-  static oniceconnectionstatechange_Setter(mthis, __arg_0) native "RTCPeerConnection_oniceconnectionstatechange_Setter";
-  oniceconnectionstatechange_Setter_(mthis, __arg_0) => oniceconnectionstatechange_Setter(mthis, __arg_0);
-
-  static onnegotiationneeded_Getter(mthis) native "RTCPeerConnection_onnegotiationneeded_Getter";
-  onnegotiationneeded_Getter_(mthis) => onnegotiationneeded_Getter(mthis);
-
-  static onnegotiationneeded_Setter(mthis, __arg_0) native "RTCPeerConnection_onnegotiationneeded_Setter";
-  onnegotiationneeded_Setter_(mthis, __arg_0) => onnegotiationneeded_Setter(mthis, __arg_0);
-
-  static onremovestream_Getter(mthis) native "RTCPeerConnection_onremovestream_Getter";
-  onremovestream_Getter_(mthis) => onremovestream_Getter(mthis);
-
-  static onremovestream_Setter(mthis, __arg_0) native "RTCPeerConnection_onremovestream_Setter";
-  onremovestream_Setter_(mthis, __arg_0) => onremovestream_Setter(mthis, __arg_0);
-
-  static onsignalingstatechange_Getter(mthis) native "RTCPeerConnection_onsignalingstatechange_Getter";
-  onsignalingstatechange_Getter_(mthis) => onsignalingstatechange_Getter(mthis);
-
-  static onsignalingstatechange_Setter(mthis, __arg_0) native "RTCPeerConnection_onsignalingstatechange_Setter";
-  onsignalingstatechange_Setter_(mthis, __arg_0) => onsignalingstatechange_Setter(mthis, __arg_0);
-
-  static remoteDescription_Getter(mthis) native "RTCPeerConnection_remoteDescription_Getter";
-  remoteDescription_Getter_(mthis) => remoteDescription_Getter(mthis);
-
-  static removeStream_Callback_0(mthis) native "RTCPeerConnection_removeStream_Callback";
-  removeStream_Callback_0_(mthis) => removeStream_Callback_0(mthis);
-
-  static removeStream_Callback_1(mthis, __arg_0) native "RTCPeerConnection_removeStream_Callback";
-  removeStream_Callback_1_(mthis, __arg_0) => removeStream_Callback_1(mthis, __arg_0);
-
-  static removeStream_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_removeStream_Callback";
-  removeStream_Callback_2_(mthis, __arg_0, __arg_1) => removeStream_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_removeStream_Callback";
-  removeStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setLocalDescription_Callback_0(mthis) native "RTCPeerConnection_setLocalDescription_Callback";
-  setLocalDescription_Callback_0_(mthis) => setLocalDescription_Callback_0(mthis);
-
-  static setLocalDescription_Callback_1(mthis, __arg_0) native "RTCPeerConnection_setLocalDescription_Callback";
-  setLocalDescription_Callback_1_(mthis, __arg_0) => setLocalDescription_Callback_1(mthis, __arg_0);
-
-  static setLocalDescription_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_setLocalDescription_Callback";
-  setLocalDescription_Callback_2_(mthis, __arg_0, __arg_1) => setLocalDescription_Callback_2(mthis, __arg_0, __arg_1);
+  onsignalingstatechange_Setter_(mthis, __arg_0) => mthis["onsignalingstatechange"] = __arg_0;
 
-  static setLocalDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_setLocalDescription_Callback";
-  setLocalDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setLocalDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  remoteDescription_Getter_(mthis) => mthis["remoteDescription"];
 
-  static setLocalDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_setLocalDescription_Callback";
-  setLocalDescription_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setLocalDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  removeStream_Callback_0_(mthis) => mthis.callMethod("removeStream", []);
 
-  static setLocalDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_setLocalDescription_Callback";
-  setLocalDescription_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setLocalDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  removeStream_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeStream", [__arg_0]);
 
-  static setRemoteDescription_Callback_0(mthis) native "RTCPeerConnection_setRemoteDescription_Callback";
-  setRemoteDescription_Callback_0_(mthis) => setRemoteDescription_Callback_0(mthis);
+  setLocalDescription_Callback_0_(mthis) => mthis.callMethod("setLocalDescription", []);
 
-  static setRemoteDescription_Callback_1(mthis, __arg_0) native "RTCPeerConnection_setRemoteDescription_Callback";
-  setRemoteDescription_Callback_1_(mthis, __arg_0) => setRemoteDescription_Callback_1(mthis, __arg_0);
+  setLocalDescription_Callback_1_(mthis, __arg_0) => mthis.callMethod("setLocalDescription", [__arg_0]);
 
-  static setRemoteDescription_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_setRemoteDescription_Callback";
-  setRemoteDescription_Callback_2_(mthis, __arg_0, __arg_1) => setRemoteDescription_Callback_2(mthis, __arg_0, __arg_1);
+  setLocalDescription_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setLocalDescription", [__arg_0, __arg_1]);
 
-  static setRemoteDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_setRemoteDescription_Callback";
-  setRemoteDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRemoteDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setLocalDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setLocalDescription", [__arg_0, __arg_1, __arg_2]);
 
-  static setRemoteDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_setRemoteDescription_Callback";
-  setRemoteDescription_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRemoteDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setRemoteDescription_Callback_0_(mthis) => mthis.callMethod("setRemoteDescription", []);
 
-  static setRemoteDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_setRemoteDescription_Callback";
-  setRemoteDescription_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRemoteDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setRemoteDescription_Callback_1_(mthis, __arg_0) => mthis.callMethod("setRemoteDescription", [__arg_0]);
 
-  static signalingState_Getter(mthis) native "RTCPeerConnection_signalingState_Getter";
-  signalingState_Getter_(mthis) => signalingState_Getter(mthis);
+  setRemoteDescription_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setRemoteDescription", [__arg_0, __arg_1]);
 
-  static updateIce_Callback_0(mthis) native "RTCPeerConnection_updateIce_Callback";
-  updateIce_Callback_0_(mthis) => updateIce_Callback_0(mthis);
+  setRemoteDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setRemoteDescription", [__arg_0, __arg_1, __arg_2]);
 
-  static updateIce_Callback_1(mthis, __arg_0) native "RTCPeerConnection_updateIce_Callback";
-  updateIce_Callback_1_(mthis, __arg_0) => updateIce_Callback_1(mthis, __arg_0);
+  signalingState_Getter_(mthis) => mthis["signalingState"];
 
-  static updateIce_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_updateIce_Callback";
-  updateIce_Callback_2_(mthis, __arg_0, __arg_1) => updateIce_Callback_2(mthis, __arg_0, __arg_1);
+  updateIce_Callback_0_(mthis) => mthis.callMethod("updateIce", []);
 
-  static updateIce_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_updateIce_Callback";
-  updateIce_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => updateIce_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  updateIce_Callback_1_(mthis, __arg_0) => mthis.callMethod("updateIce", [__arg_0]);
 
-  static updateIce_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_updateIce_Callback";
-  updateIce_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => updateIce_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  updateIce_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("updateIce", [__arg_0, __arg_1]);
 
 }
 
 class BlinkRTCSessionDescription {
   static final instance = new BlinkRTCSessionDescription();
 
-  static constructorCallback_0() native "RTCSessionDescription_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["RTCSessionDescription"], []);
 
-  static constructorCallback_1(__arg_0) native "RTCSessionDescription_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["RTCSessionDescription"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "RTCSessionDescription_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  sdp_Getter_(mthis) => mthis["sdp"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "RTCSessionDescription_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  sdp_Setter_(mthis, __arg_0) => mthis["sdp"] = __arg_0;
 
-  static sdp_Getter(mthis) native "RTCSessionDescription_sdp_Getter";
-  sdp_Getter_(mthis) => sdp_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static sdp_Setter(mthis, __arg_0) native "RTCSessionDescription_sdp_Setter";
-  sdp_Setter_(mthis, __arg_0) => sdp_Setter(mthis, __arg_0);
-
-  static type_Getter(mthis) native "RTCSessionDescription_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static type_Setter(mthis, __arg_0) native "RTCSessionDescription_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
 class BlinkRTCStatsReport {
   static final instance = new BlinkRTCStatsReport();
 
-  static id_Getter(mthis) native "RTCStatsReport_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static local_Getter(mthis) native "RTCStatsReport_local_Getter";
-  local_Getter_(mthis) => local_Getter(mthis);
+  local_Getter_(mthis) => mthis["local"];
 
-  static names_Callback_0(mthis) native "RTCStatsReport_names_Callback";
-  names_Callback_0_(mthis) => names_Callback_0(mthis);
+  names_Callback_0_(mthis) => mthis.callMethod("names", []);
 
-  static names_Callback_1(mthis, __arg_0) native "RTCStatsReport_names_Callback";
-  names_Callback_1_(mthis, __arg_0) => names_Callback_1(mthis, __arg_0);
+  remote_Getter_(mthis) => mthis["remote"];
 
-  static names_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsReport_names_Callback";
-  names_Callback_2_(mthis, __arg_0, __arg_1) => names_Callback_2(mthis, __arg_0, __arg_1);
+  stat_Callback_0_(mthis) => mthis.callMethod("stat", []);
 
-  static remote_Getter(mthis) native "RTCStatsReport_remote_Getter";
-  remote_Getter_(mthis) => remote_Getter(mthis);
+  stat_Callback_1_(mthis, __arg_0) => mthis.callMethod("stat", [__arg_0]);
 
-  static stat_Callback_0(mthis) native "RTCStatsReport_stat_Callback";
-  stat_Callback_0_(mthis) => stat_Callback_0(mthis);
+  timestamp_Getter_(mthis) => mthis["timestamp"];
 
-  static stat_Callback_1(mthis, __arg_0) native "RTCStatsReport_stat_Callback";
-  stat_Callback_1_(mthis, __arg_0) => stat_Callback_1(mthis, __arg_0);
-
-  static stat_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsReport_stat_Callback";
-  stat_Callback_2_(mthis, __arg_0, __arg_1) => stat_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stat_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCStatsReport_stat_Callback";
-  stat_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stat_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static timestamp_Getter(mthis) native "RTCStatsReport_timestamp_Getter";
-  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
-
-  static type_Getter(mthis) native "RTCStatsReport_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkRTCStatsResponse {
   static final instance = new BlinkRTCStatsResponse();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "RTCStatsResponse___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static namedItem_Callback_0(mthis) native "RTCStatsResponse_namedItem_Callback";
-  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+  namedItem_Callback_0_(mthis) => mthis.callMethod("namedItem", []);
 
-  static namedItem_Callback_1(mthis, __arg_0) native "RTCStatsResponse_namedItem_Callback";
-  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
+  namedItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("namedItem", [__arg_0]);
 
-  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsResponse_namedItem_Callback";
-  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCStatsResponse_namedItem_Callback";
-  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static result_Callback_0(mthis) native "RTCStatsResponse_result_Callback";
-  result_Callback_0_(mthis) => result_Callback_0(mthis);
-
-  static result_Callback_1(mthis, __arg_0) native "RTCStatsResponse_result_Callback";
-  result_Callback_1_(mthis, __arg_0) => result_Callback_1(mthis, __arg_0);
-
-  static result_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsResponse_result_Callback";
-  result_Callback_2_(mthis, __arg_0, __arg_1) => result_Callback_2(mthis, __arg_0, __arg_1);
+  result_Callback_0_(mthis) => mthis.callMethod("result", []);
 
 }
 
 class BlinkRadioNodeList extends BlinkNodeList {
   static final instance = new BlinkRadioNodeList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "RadioNodeList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static value_Getter(mthis) native "RadioNodeList_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "RadioNodeList_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkRange {
   static final instance = new BlinkRange();
 
-  static cloneContents_Callback_0(mthis) native "Range_cloneContents_Callback";
-  cloneContents_Callback_0_(mthis) => cloneContents_Callback_0(mthis);
+  cloneContents_Callback_0_(mthis) => mthis.callMethod("cloneContents", []);
 
-  static cloneContents_Callback_1(mthis, __arg_0) native "Range_cloneContents_Callback";
-  cloneContents_Callback_1_(mthis, __arg_0) => cloneContents_Callback_1(mthis, __arg_0);
+  cloneRange_Callback_0_(mthis) => mthis.callMethod("cloneRange", []);
 
-  static cloneContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_cloneContents_Callback";
-  cloneContents_Callback_2_(mthis, __arg_0, __arg_1) => cloneContents_Callback_2(mthis, __arg_0, __arg_1);
+  collapse_Callback_0_(mthis) => mthis.callMethod("collapse", []);
 
-  static cloneRange_Callback_0(mthis) native "Range_cloneRange_Callback";
-  cloneRange_Callback_0_(mthis) => cloneRange_Callback_0(mthis);
+  collapse_Callback_1_(mthis, __arg_0) => mthis.callMethod("collapse", [__arg_0]);
 
-  static cloneRange_Callback_1(mthis, __arg_0) native "Range_cloneRange_Callback";
-  cloneRange_Callback_1_(mthis, __arg_0) => cloneRange_Callback_1(mthis, __arg_0);
+  collapsed_Getter_(mthis) => mthis["collapsed"];
 
-  static cloneRange_Callback_2(mthis, __arg_0, __arg_1) native "Range_cloneRange_Callback";
-  cloneRange_Callback_2_(mthis, __arg_0, __arg_1) => cloneRange_Callback_2(mthis, __arg_0, __arg_1);
+  commonAncestorContainer_Getter_(mthis) => mthis["commonAncestorContainer"];
 
-  static collapse_Callback_0(mthis) native "Range_collapse_Callback";
-  collapse_Callback_0_(mthis) => collapse_Callback_0(mthis);
+  compareBoundaryPoints_Callback_0_(mthis) => mthis.callMethod("compareBoundaryPoints", []);
 
-  static collapse_Callback_1(mthis, __arg_0) native "Range_collapse_Callback";
-  collapse_Callback_1_(mthis, __arg_0) => collapse_Callback_1(mthis, __arg_0);
+  compareBoundaryPoints_Callback_1_(mthis, __arg_0) => mthis.callMethod("compareBoundaryPoints", [__arg_0]);
 
-  static collapse_Callback_2(mthis, __arg_0, __arg_1) native "Range_collapse_Callback";
-  collapse_Callback_2_(mthis, __arg_0, __arg_1) => collapse_Callback_2(mthis, __arg_0, __arg_1);
+  compareBoundaryPoints_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("compareBoundaryPoints", [__arg_0, __arg_1]);
 
-  static collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_collapse_Callback";
-  collapse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  compareNode_Callback_0_(mthis) => mthis.callMethod("compareNode", []);
 
-  static collapsed_Getter(mthis) native "Range_collapsed_Getter";
-  collapsed_Getter_(mthis) => collapsed_Getter(mthis);
+  compareNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("compareNode", [__arg_0]);
 
-  static commonAncestorContainer_Getter(mthis) native "Range_commonAncestorContainer_Getter";
-  commonAncestorContainer_Getter_(mthis) => commonAncestorContainer_Getter(mthis);
+  comparePoint_Callback_0_(mthis) => mthis.callMethod("comparePoint", []);
 
-  static compareBoundaryPoints_Callback_0(mthis) native "Range_compareBoundaryPoints_Callback";
-  compareBoundaryPoints_Callback_0_(mthis) => compareBoundaryPoints_Callback_0(mthis);
+  comparePoint_Callback_1_(mthis, __arg_0) => mthis.callMethod("comparePoint", [__arg_0]);
 
-  static compareBoundaryPoints_Callback_1(mthis, __arg_0) native "Range_compareBoundaryPoints_Callback";
-  compareBoundaryPoints_Callback_1_(mthis, __arg_0) => compareBoundaryPoints_Callback_1(mthis, __arg_0);
+  comparePoint_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("comparePoint", [__arg_0, __arg_1]);
 
-  static compareBoundaryPoints_Callback_2(mthis, __arg_0, __arg_1) native "Range_compareBoundaryPoints_Callback";
-  compareBoundaryPoints_Callback_2_(mthis, __arg_0, __arg_1) => compareBoundaryPoints_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_0_() => new js.JsObject(js.context["Range"], []);
 
-  static compareBoundaryPoints_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_compareBoundaryPoints_Callback";
-  compareBoundaryPoints_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => compareBoundaryPoints_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createContextualFragment_Callback_0_(mthis) => mthis.callMethod("createContextualFragment", []);
 
-  static compareBoundaryPoints_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_compareBoundaryPoints_Callback";
-  compareBoundaryPoints_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => compareBoundaryPoints_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createContextualFragment_Callback_1_(mthis, __arg_0) => mthis.callMethod("createContextualFragment", [__arg_0]);
 
-  static compareNode_Callback_0(mthis) native "Range_compareNode_Callback";
-  compareNode_Callback_0_(mthis) => compareNode_Callback_0(mthis);
+  deleteContents_Callback_0_(mthis) => mthis.callMethod("deleteContents", []);
 
-  static compareNode_Callback_1(mthis, __arg_0) native "Range_compareNode_Callback";
-  compareNode_Callback_1_(mthis, __arg_0) => compareNode_Callback_1(mthis, __arg_0);
+  detach_Callback_0_(mthis) => mthis.callMethod("detach", []);
 
-  static compareNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_compareNode_Callback";
-  compareNode_Callback_2_(mthis, __arg_0, __arg_1) => compareNode_Callback_2(mthis, __arg_0, __arg_1);
+  endContainer_Getter_(mthis) => mthis["endContainer"];
 
-  static compareNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_compareNode_Callback";
-  compareNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => compareNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  endOffset_Getter_(mthis) => mthis["endOffset"];
 
-  static comparePoint_Callback_0(mthis) native "Range_comparePoint_Callback";
-  comparePoint_Callback_0_(mthis) => comparePoint_Callback_0(mthis);
+  expand_Callback_0_(mthis) => mthis.callMethod("expand", []);
 
-  static comparePoint_Callback_1(mthis, __arg_0) native "Range_comparePoint_Callback";
-  comparePoint_Callback_1_(mthis, __arg_0) => comparePoint_Callback_1(mthis, __arg_0);
+  expand_Callback_1_(mthis, __arg_0) => mthis.callMethod("expand", [__arg_0]);
 
-  static comparePoint_Callback_2(mthis, __arg_0, __arg_1) native "Range_comparePoint_Callback";
-  comparePoint_Callback_2_(mthis, __arg_0, __arg_1) => comparePoint_Callback_2(mthis, __arg_0, __arg_1);
+  extractContents_Callback_0_(mthis) => mthis.callMethod("extractContents", []);
 
-  static comparePoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_comparePoint_Callback";
-  comparePoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => comparePoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getBoundingClientRect_Callback_0_(mthis) => mthis.callMethod("getBoundingClientRect", []);
 
-  static comparePoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_comparePoint_Callback";
-  comparePoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => comparePoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getClientRects_Callback_0_(mthis) => mthis.callMethod("getClientRects", []);
 
-  static constructorCallback_0() native "Range_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  insertNode_Callback_0_(mthis) => mthis.callMethod("insertNode", []);
 
-  static constructorCallback_1(__arg_0) native "Range_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  insertNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertNode", [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Range_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  intersectsNode_Callback_0_(mthis) => mthis.callMethod("intersectsNode", []);
 
-  static createContextualFragment_Callback_0(mthis) native "Range_createContextualFragment_Callback";
-  createContextualFragment_Callback_0_(mthis) => createContextualFragment_Callback_0(mthis);
+  intersectsNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("intersectsNode", [__arg_0]);
 
-  static createContextualFragment_Callback_1(mthis, __arg_0) native "Range_createContextualFragment_Callback";
-  createContextualFragment_Callback_1_(mthis, __arg_0) => createContextualFragment_Callback_1(mthis, __arg_0);
+  isPointInRange_Callback_0_(mthis) => mthis.callMethod("isPointInRange", []);
 
-  static createContextualFragment_Callback_2(mthis, __arg_0, __arg_1) native "Range_createContextualFragment_Callback";
-  createContextualFragment_Callback_2_(mthis, __arg_0, __arg_1) => createContextualFragment_Callback_2(mthis, __arg_0, __arg_1);
+  isPointInRange_Callback_1_(mthis, __arg_0) => mthis.callMethod("isPointInRange", [__arg_0]);
 
-  static createContextualFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_createContextualFragment_Callback";
-  createContextualFragment_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createContextualFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isPointInRange_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("isPointInRange", [__arg_0, __arg_1]);
 
-  static deleteContents_Callback_0(mthis) native "Range_deleteContents_Callback";
-  deleteContents_Callback_0_(mthis) => deleteContents_Callback_0(mthis);
+  selectNodeContents_Callback_0_(mthis) => mthis.callMethod("selectNodeContents", []);
 
-  static deleteContents_Callback_1(mthis, __arg_0) native "Range_deleteContents_Callback";
-  deleteContents_Callback_1_(mthis, __arg_0) => deleteContents_Callback_1(mthis, __arg_0);
+  selectNodeContents_Callback_1_(mthis, __arg_0) => mthis.callMethod("selectNodeContents", [__arg_0]);
 
-  static deleteContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_deleteContents_Callback";
-  deleteContents_Callback_2_(mthis, __arg_0, __arg_1) => deleteContents_Callback_2(mthis, __arg_0, __arg_1);
+  selectNode_Callback_0_(mthis) => mthis.callMethod("selectNode", []);
 
-  static detach_Callback_0(mthis) native "Range_detach_Callback";
-  detach_Callback_0_(mthis) => detach_Callback_0(mthis);
+  selectNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("selectNode", [__arg_0]);
 
-  static detach_Callback_1(mthis, __arg_0) native "Range_detach_Callback";
-  detach_Callback_1_(mthis, __arg_0) => detach_Callback_1(mthis, __arg_0);
+  setEndAfter_Callback_0_(mthis) => mthis.callMethod("setEndAfter", []);
 
-  static detach_Callback_2(mthis, __arg_0, __arg_1) native "Range_detach_Callback";
-  detach_Callback_2_(mthis, __arg_0, __arg_1) => detach_Callback_2(mthis, __arg_0, __arg_1);
+  setEndAfter_Callback_1_(mthis, __arg_0) => mthis.callMethod("setEndAfter", [__arg_0]);
 
-  static endContainer_Getter(mthis) native "Range_endContainer_Getter";
-  endContainer_Getter_(mthis) => endContainer_Getter(mthis);
+  setEndBefore_Callback_0_(mthis) => mthis.callMethod("setEndBefore", []);
 
-  static endOffset_Getter(mthis) native "Range_endOffset_Getter";
-  endOffset_Getter_(mthis) => endOffset_Getter(mthis);
+  setEndBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("setEndBefore", [__arg_0]);
 
-  static expand_Callback_0(mthis) native "Range_expand_Callback";
-  expand_Callback_0_(mthis) => expand_Callback_0(mthis);
+  setEnd_Callback_0_(mthis) => mthis.callMethod("setEnd", []);
 
-  static expand_Callback_1(mthis, __arg_0) native "Range_expand_Callback";
-  expand_Callback_1_(mthis, __arg_0) => expand_Callback_1(mthis, __arg_0);
+  setEnd_Callback_1_(mthis, __arg_0) => mthis.callMethod("setEnd", [__arg_0]);
 
-  static expand_Callback_2(mthis, __arg_0, __arg_1) native "Range_expand_Callback";
-  expand_Callback_2_(mthis, __arg_0, __arg_1) => expand_Callback_2(mthis, __arg_0, __arg_1);
+  setEnd_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setEnd", [__arg_0, __arg_1]);
 
-  static expand_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_expand_Callback";
-  expand_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => expand_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setStartAfter_Callback_0_(mthis) => mthis.callMethod("setStartAfter", []);
 
-  static extractContents_Callback_0(mthis) native "Range_extractContents_Callback";
-  extractContents_Callback_0_(mthis) => extractContents_Callback_0(mthis);
+  setStartAfter_Callback_1_(mthis, __arg_0) => mthis.callMethod("setStartAfter", [__arg_0]);
 
-  static extractContents_Callback_1(mthis, __arg_0) native "Range_extractContents_Callback";
-  extractContents_Callback_1_(mthis, __arg_0) => extractContents_Callback_1(mthis, __arg_0);
+  setStartBefore_Callback_0_(mthis) => mthis.callMethod("setStartBefore", []);
 
-  static extractContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_extractContents_Callback";
-  extractContents_Callback_2_(mthis, __arg_0, __arg_1) => extractContents_Callback_2(mthis, __arg_0, __arg_1);
+  setStartBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("setStartBefore", [__arg_0]);
 
-  static getBoundingClientRect_Callback_0(mthis) native "Range_getBoundingClientRect_Callback";
-  getBoundingClientRect_Callback_0_(mthis) => getBoundingClientRect_Callback_0(mthis);
+  setStart_Callback_0_(mthis) => mthis.callMethod("setStart", []);
 
-  static getBoundingClientRect_Callback_1(mthis, __arg_0) native "Range_getBoundingClientRect_Callback";
-  getBoundingClientRect_Callback_1_(mthis, __arg_0) => getBoundingClientRect_Callback_1(mthis, __arg_0);
+  setStart_Callback_1_(mthis, __arg_0) => mthis.callMethod("setStart", [__arg_0]);
 
-  static getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1) native "Range_getBoundingClientRect_Callback";
-  getBoundingClientRect_Callback_2_(mthis, __arg_0, __arg_1) => getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1);
+  setStart_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setStart", [__arg_0, __arg_1]);
 
-  static getClientRects_Callback_0(mthis) native "Range_getClientRects_Callback";
-  getClientRects_Callback_0_(mthis) => getClientRects_Callback_0(mthis);
+  startContainer_Getter_(mthis) => mthis["startContainer"];
 
-  static getClientRects_Callback_1(mthis, __arg_0) native "Range_getClientRects_Callback";
-  getClientRects_Callback_1_(mthis, __arg_0) => getClientRects_Callback_1(mthis, __arg_0);
+  startOffset_Getter_(mthis) => mthis["startOffset"];
 
-  static getClientRects_Callback_2(mthis, __arg_0, __arg_1) native "Range_getClientRects_Callback";
-  getClientRects_Callback_2_(mthis, __arg_0, __arg_1) => getClientRects_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertNode_Callback_0(mthis) native "Range_insertNode_Callback";
-  insertNode_Callback_0_(mthis) => insertNode_Callback_0(mthis);
-
-  static insertNode_Callback_1(mthis, __arg_0) native "Range_insertNode_Callback";
-  insertNode_Callback_1_(mthis, __arg_0) => insertNode_Callback_1(mthis, __arg_0);
-
-  static insertNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_insertNode_Callback";
-  insertNode_Callback_2_(mthis, __arg_0, __arg_1) => insertNode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_insertNode_Callback";
-  insertNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static intersectsNode_Callback_0(mthis) native "Range_intersectsNode_Callback";
-  intersectsNode_Callback_0_(mthis) => intersectsNode_Callback_0(mthis);
-
-  static intersectsNode_Callback_1(mthis, __arg_0) native "Range_intersectsNode_Callback";
-  intersectsNode_Callback_1_(mthis, __arg_0) => intersectsNode_Callback_1(mthis, __arg_0);
-
-  static intersectsNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_intersectsNode_Callback";
-  intersectsNode_Callback_2_(mthis, __arg_0, __arg_1) => intersectsNode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static intersectsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_intersectsNode_Callback";
-  intersectsNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => intersectsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isPointInRange_Callback_0(mthis) native "Range_isPointInRange_Callback";
-  isPointInRange_Callback_0_(mthis) => isPointInRange_Callback_0(mthis);
-
-  static isPointInRange_Callback_1(mthis, __arg_0) native "Range_isPointInRange_Callback";
-  isPointInRange_Callback_1_(mthis, __arg_0) => isPointInRange_Callback_1(mthis, __arg_0);
-
-  static isPointInRange_Callback_2(mthis, __arg_0, __arg_1) native "Range_isPointInRange_Callback";
-  isPointInRange_Callback_2_(mthis, __arg_0, __arg_1) => isPointInRange_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isPointInRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_isPointInRange_Callback";
-  isPointInRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isPointInRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_isPointInRange_Callback";
-  isPointInRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isPointInRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static selectNodeContents_Callback_0(mthis) native "Range_selectNodeContents_Callback";
-  selectNodeContents_Callback_0_(mthis) => selectNodeContents_Callback_0(mthis);
-
-  static selectNodeContents_Callback_1(mthis, __arg_0) native "Range_selectNodeContents_Callback";
-  selectNodeContents_Callback_1_(mthis, __arg_0) => selectNodeContents_Callback_1(mthis, __arg_0);
-
-  static selectNodeContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_selectNodeContents_Callback";
-  selectNodeContents_Callback_2_(mthis, __arg_0, __arg_1) => selectNodeContents_Callback_2(mthis, __arg_0, __arg_1);
-
-  static selectNodeContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_selectNodeContents_Callback";
-  selectNodeContents_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectNodeContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static selectNode_Callback_0(mthis) native "Range_selectNode_Callback";
-  selectNode_Callback_0_(mthis) => selectNode_Callback_0(mthis);
-
-  static selectNode_Callback_1(mthis, __arg_0) native "Range_selectNode_Callback";
-  selectNode_Callback_1_(mthis, __arg_0) => selectNode_Callback_1(mthis, __arg_0);
-
-  static selectNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_selectNode_Callback";
-  selectNode_Callback_2_(mthis, __arg_0, __arg_1) => selectNode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static selectNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_selectNode_Callback";
-  selectNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setEndAfter_Callback_0(mthis) native "Range_setEndAfter_Callback";
-  setEndAfter_Callback_0_(mthis) => setEndAfter_Callback_0(mthis);
-
-  static setEndAfter_Callback_1(mthis, __arg_0) native "Range_setEndAfter_Callback";
-  setEndAfter_Callback_1_(mthis, __arg_0) => setEndAfter_Callback_1(mthis, __arg_0);
-
-  static setEndAfter_Callback_2(mthis, __arg_0, __arg_1) native "Range_setEndAfter_Callback";
-  setEndAfter_Callback_2_(mthis, __arg_0, __arg_1) => setEndAfter_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setEndAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setEndAfter_Callback";
-  setEndAfter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEndAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setEndBefore_Callback_0(mthis) native "Range_setEndBefore_Callback";
-  setEndBefore_Callback_0_(mthis) => setEndBefore_Callback_0(mthis);
-
-  static setEndBefore_Callback_1(mthis, __arg_0) native "Range_setEndBefore_Callback";
-  setEndBefore_Callback_1_(mthis, __arg_0) => setEndBefore_Callback_1(mthis, __arg_0);
-
-  static setEndBefore_Callback_2(mthis, __arg_0, __arg_1) native "Range_setEndBefore_Callback";
-  setEndBefore_Callback_2_(mthis, __arg_0, __arg_1) => setEndBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setEndBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setEndBefore_Callback";
-  setEndBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEndBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setEnd_Callback_0(mthis) native "Range_setEnd_Callback";
-  setEnd_Callback_0_(mthis) => setEnd_Callback_0(mthis);
-
-  static setEnd_Callback_1(mthis, __arg_0) native "Range_setEnd_Callback";
-  setEnd_Callback_1_(mthis, __arg_0) => setEnd_Callback_1(mthis, __arg_0);
-
-  static setEnd_Callback_2(mthis, __arg_0, __arg_1) native "Range_setEnd_Callback";
-  setEnd_Callback_2_(mthis, __arg_0, __arg_1) => setEnd_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setEnd_Callback";
-  setEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setEnd_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_setEnd_Callback";
-  setEnd_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setEnd_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setStartAfter_Callback_0(mthis) native "Range_setStartAfter_Callback";
-  setStartAfter_Callback_0_(mthis) => setStartAfter_Callback_0(mthis);
-
-  static setStartAfter_Callback_1(mthis, __arg_0) native "Range_setStartAfter_Callback";
-  setStartAfter_Callback_1_(mthis, __arg_0) => setStartAfter_Callback_1(mthis, __arg_0);
-
-  static setStartAfter_Callback_2(mthis, __arg_0, __arg_1) native "Range_setStartAfter_Callback";
-  setStartAfter_Callback_2_(mthis, __arg_0, __arg_1) => setStartAfter_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setStartAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setStartAfter_Callback";
-  setStartAfter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStartAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setStartBefore_Callback_0(mthis) native "Range_setStartBefore_Callback";
-  setStartBefore_Callback_0_(mthis) => setStartBefore_Callback_0(mthis);
-
-  static setStartBefore_Callback_1(mthis, __arg_0) native "Range_setStartBefore_Callback";
-  setStartBefore_Callback_1_(mthis, __arg_0) => setStartBefore_Callback_1(mthis, __arg_0);
-
-  static setStartBefore_Callback_2(mthis, __arg_0, __arg_1) native "Range_setStartBefore_Callback";
-  setStartBefore_Callback_2_(mthis, __arg_0, __arg_1) => setStartBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setStartBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setStartBefore_Callback";
-  setStartBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStartBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setStart_Callback_0(mthis) native "Range_setStart_Callback";
-  setStart_Callback_0_(mthis) => setStart_Callback_0(mthis);
-
-  static setStart_Callback_1(mthis, __arg_0) native "Range_setStart_Callback";
-  setStart_Callback_1_(mthis, __arg_0) => setStart_Callback_1(mthis, __arg_0);
-
-  static setStart_Callback_2(mthis, __arg_0, __arg_1) native "Range_setStart_Callback";
-  setStart_Callback_2_(mthis, __arg_0, __arg_1) => setStart_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setStart_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setStart_Callback";
-  setStart_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStart_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setStart_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_setStart_Callback";
-  setStart_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStart_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static startContainer_Getter(mthis) native "Range_startContainer_Getter";
-  startContainer_Getter_(mthis) => startContainer_Getter(mthis);
-
-  static startOffset_Getter(mthis) native "Range_startOffset_Getter";
-  startOffset_Getter_(mthis) => startOffset_Getter(mthis);
-
-  static surroundContents_Callback_0(mthis) native "Range_surroundContents_Callback";
-  surroundContents_Callback_0_(mthis) => surroundContents_Callback_0(mthis);
-
-  static surroundContents_Callback_1(mthis, __arg_0) native "Range_surroundContents_Callback";
-  surroundContents_Callback_1_(mthis, __arg_0) => surroundContents_Callback_1(mthis, __arg_0);
-
-  static surroundContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_surroundContents_Callback";
-  surroundContents_Callback_2_(mthis, __arg_0, __arg_1) => surroundContents_Callback_2(mthis, __arg_0, __arg_1);
+  surroundContents_Callback_0_(mthis) => mthis.callMethod("surroundContents", []);
 
-  static surroundContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_surroundContents_Callback";
-  surroundContents_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => surroundContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  surroundContents_Callback_1_(mthis, __arg_0) => mthis.callMethod("surroundContents", [__arg_0]);
 
 }
 
 class BlinkReadableStream {
   static final instance = new BlinkReadableStream();
 
-  static cancel_Callback_0(mthis) native "ReadableStream_cancel_Callback";
-  cancel_Callback_0_(mthis) => cancel_Callback_0(mthis);
+  cancel_Callback_0_(mthis) => mthis.callMethod("cancel", []);
 
-  static cancel_Callback_1(mthis, __arg_0) native "ReadableStream_cancel_Callback";
-  cancel_Callback_1_(mthis, __arg_0) => cancel_Callback_1(mthis, __arg_0);
+  cancel_Callback_1_(mthis, __arg_0) => mthis.callMethod("cancel", [__arg_0]);
 
-  static cancel_Callback_2(mthis, __arg_0, __arg_1) native "ReadableStream_cancel_Callback";
-  cancel_Callback_2_(mthis, __arg_0, __arg_1) => cancel_Callback_2(mthis, __arg_0, __arg_1);
+  closed_Getter_(mthis) => mthis["closed"];
 
-  static cancel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ReadableStream_cancel_Callback";
-  cancel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cancel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  read_Callback_0_(mthis) => mthis.callMethod("read", []);
 
-  static closed_Getter(mthis) native "ReadableStream_closed_Getter";
-  closed_Getter_(mthis) => closed_Getter(mthis);
+  state_Getter_(mthis) => mthis["state"];
 
-  static read_Callback_0(mthis) native "ReadableStream_read_Callback";
-  read_Callback_0_(mthis) => read_Callback_0(mthis);
-
-  static read_Callback_1(mthis, __arg_0) native "ReadableStream_read_Callback";
-  read_Callback_1_(mthis, __arg_0) => read_Callback_1(mthis, __arg_0);
-
-  static read_Callback_2(mthis, __arg_0, __arg_1) native "ReadableStream_read_Callback";
-  read_Callback_2_(mthis, __arg_0, __arg_1) => read_Callback_2(mthis, __arg_0, __arg_1);
-
-  static state_Getter(mthis) native "ReadableStream_state_Getter";
-  state_Getter_(mthis) => state_Getter(mthis);
-
-  static wait_Callback_0(mthis) native "ReadableStream_wait_Callback";
-  wait_Callback_0_(mthis) => wait_Callback_0(mthis);
-
-  static wait_Callback_1(mthis, __arg_0) native "ReadableStream_wait_Callback";
-  wait_Callback_1_(mthis, __arg_0) => wait_Callback_1(mthis, __arg_0);
-
-  static wait_Callback_2(mthis, __arg_0, __arg_1) native "ReadableStream_wait_Callback";
-  wait_Callback_2_(mthis, __arg_0, __arg_1) => wait_Callback_2(mthis, __arg_0, __arg_1);
+  wait_Callback_0_(mthis) => mthis.callMethod("wait", []);
 
 }
 
 class BlinkRect {
   static final instance = new BlinkRect();
 
-  static bottom_Getter(mthis) native "Rect_bottom_Getter";
-  bottom_Getter_(mthis) => bottom_Getter(mthis);
+  bottom_Getter_(mthis) => mthis["bottom"];
 
-  static left_Getter(mthis) native "Rect_left_Getter";
-  left_Getter_(mthis) => left_Getter(mthis);
+  left_Getter_(mthis) => mthis["left"];
 
-  static right_Getter(mthis) native "Rect_right_Getter";
-  right_Getter_(mthis) => right_Getter(mthis);
+  right_Getter_(mthis) => mthis["right"];
 
-  static top_Getter(mthis) native "Rect_top_Getter";
-  top_Getter_(mthis) => top_Getter(mthis);
+  top_Getter_(mthis) => mthis["top"];
 
 }
 
 class BlinkRelatedEvent extends BlinkEvent {
   static final instance = new BlinkRelatedEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "RelatedEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["RelatedEvent"], [__arg_0, __arg_1]);
 
-  static relatedTarget_Getter(mthis) native "RelatedEvent_relatedTarget_Getter";
-  relatedTarget_Getter_(mthis) => relatedTarget_Getter(mthis);
+  relatedTarget_Getter_(mthis) => mthis["relatedTarget"];
 
 }
 
 class BlinkRequest {
   static final instance = new BlinkRequest();
 
-  static arrayBuffer_Callback_0(mthis) native "Request_arrayBuffer_Callback";
-  arrayBuffer_Callback_0_(mthis) => arrayBuffer_Callback_0(mthis);
+  arrayBuffer_Callback_0_(mthis) => mthis.callMethod("arrayBuffer", []);
 
-  static arrayBuffer_Callback_1(mthis, __arg_0) native "Request_arrayBuffer_Callback";
-  arrayBuffer_Callback_1_(mthis, __arg_0) => arrayBuffer_Callback_1(mthis, __arg_0);
+  blob_Callback_0_(mthis) => mthis.callMethod("blob", []);
 
-  static arrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "Request_arrayBuffer_Callback";
-  arrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => arrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  bodyUsed_Getter_(mthis) => mthis["bodyUsed"];
 
-  static blob_Callback_0(mthis) native "Request_blob_Callback";
-  blob_Callback_0_(mthis) => blob_Callback_0(mthis);
+  clone_Callback_0_(mthis) => mthis.callMethod("clone", []);
 
-  static blob_Callback_1(mthis, __arg_0) native "Request_blob_Callback";
-  blob_Callback_1_(mthis, __arg_0) => blob_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["Request"], []);
 
-  static blob_Callback_2(mthis, __arg_0, __arg_1) native "Request_blob_Callback";
-  blob_Callback_2_(mthis, __arg_0, __arg_1) => blob_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Request"], [__arg_0]);
 
-  static bodyUsed_Getter(mthis) native "Request_bodyUsed_Getter";
-  bodyUsed_Getter_(mthis) => bodyUsed_Getter(mthis);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Request"], [__arg_0, __arg_1]);
 
-  static clone_Callback_0(mthis) native "Request_clone_Callback";
-  clone_Callback_0_(mthis) => clone_Callback_0(mthis);
+  credentials_Getter_(mthis) => mthis["credentials"];
 
-  static clone_Callback_1(mthis, __arg_0) native "Request_clone_Callback";
-  clone_Callback_1_(mthis, __arg_0) => clone_Callback_1(mthis, __arg_0);
+  headers_Getter_(mthis) => mthis["headers"];
 
-  static clone_Callback_2(mthis, __arg_0, __arg_1) native "Request_clone_Callback";
-  clone_Callback_2_(mthis, __arg_0, __arg_1) => clone_Callback_2(mthis, __arg_0, __arg_1);
+  json_Callback_0_(mthis) => mthis.callMethod("json", []);
 
-  static constructorCallback_0() native "Request_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  method_Getter_(mthis) => mthis["method"];
 
-  static constructorCallback_1(__arg_0) native "Request_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  mode_Getter_(mthis) => mthis["mode"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Request_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  referrer_Getter_(mthis) => mthis["referrer"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Request_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  text_Callback_0_(mthis) => mthis.callMethod("text", []);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Request_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
-
-  static credentials_Getter(mthis) native "Request_credentials_Getter";
-  credentials_Getter_(mthis) => credentials_Getter(mthis);
-
-  static headers_Getter(mthis) native "Request_headers_Getter";
-  headers_Getter_(mthis) => headers_Getter(mthis);
-
-  static json_Callback_0(mthis) native "Request_json_Callback";
-  json_Callback_0_(mthis) => json_Callback_0(mthis);
-
-  static json_Callback_1(mthis, __arg_0) native "Request_json_Callback";
-  json_Callback_1_(mthis, __arg_0) => json_Callback_1(mthis, __arg_0);
-
-  static json_Callback_2(mthis, __arg_0, __arg_1) native "Request_json_Callback";
-  json_Callback_2_(mthis, __arg_0, __arg_1) => json_Callback_2(mthis, __arg_0, __arg_1);
-
-  static method_Getter(mthis) native "Request_method_Getter";
-  method_Getter_(mthis) => method_Getter(mthis);
-
-  static mode_Getter(mthis) native "Request_mode_Getter";
-  mode_Getter_(mthis) => mode_Getter(mthis);
-
-  static referrer_Getter(mthis) native "Request_referrer_Getter";
-  referrer_Getter_(mthis) => referrer_Getter(mthis);
-
-  static text_Callback_0(mthis) native "Request_text_Callback";
-  text_Callback_0_(mthis) => text_Callback_0(mthis);
-
-  static text_Callback_1(mthis, __arg_0) native "Request_text_Callback";
-  text_Callback_1_(mthis, __arg_0) => text_Callback_1(mthis, __arg_0);
-
-  static text_Callback_2(mthis, __arg_0, __arg_1) native "Request_text_Callback";
-  text_Callback_2_(mthis, __arg_0, __arg_1) => text_Callback_2(mthis, __arg_0, __arg_1);
-
-  static url_Getter(mthis) native "Request_url_Getter";
-  url_Getter_(mthis) => url_Getter(mthis);
+  url_Getter_(mthis) => mthis["url"];
 
 }
 
 class BlinkResourceProgressEvent extends BlinkProgressEvent {
   static final instance = new BlinkResourceProgressEvent();
 
-  static url_Getter(mthis) native "ResourceProgressEvent_url_Getter";
-  url_Getter_(mthis) => url_Getter(mthis);
+  url_Getter_(mthis) => mthis["url"];
 
 }
 
 class BlinkResponse {
   static final instance = new BlinkResponse();
 
-  static arrayBuffer_Callback_0(mthis) native "Response_arrayBuffer_Callback";
-  arrayBuffer_Callback_0_(mthis) => arrayBuffer_Callback_0(mthis);
+  arrayBuffer_Callback_0_(mthis) => mthis.callMethod("arrayBuffer", []);
 
-  static arrayBuffer_Callback_1(mthis, __arg_0) native "Response_arrayBuffer_Callback";
-  arrayBuffer_Callback_1_(mthis, __arg_0) => arrayBuffer_Callback_1(mthis, __arg_0);
+  blob_Callback_0_(mthis) => mthis.callMethod("blob", []);
 
-  static arrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "Response_arrayBuffer_Callback";
-  arrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => arrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  bodyUsed_Getter_(mthis) => mthis["bodyUsed"];
 
-  static blob_Callback_0(mthis) native "Response_blob_Callback";
-  blob_Callback_0_(mthis) => blob_Callback_0(mthis);
+  clone_Callback_0_(mthis) => mthis.callMethod("clone", []);
 
-  static blob_Callback_1(mthis, __arg_0) native "Response_blob_Callback";
-  blob_Callback_1_(mthis, __arg_0) => blob_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["Response"], []);
 
-  static blob_Callback_2(mthis, __arg_0, __arg_1) native "Response_blob_Callback";
-  blob_Callback_2_(mthis, __arg_0, __arg_1) => blob_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Response"], [__arg_0]);
 
-  static bodyUsed_Getter(mthis) native "Response_bodyUsed_Getter";
-  bodyUsed_Getter_(mthis) => bodyUsed_Getter(mthis);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["Response"], [__arg_0, __arg_1]);
 
-  static clone_Callback_0(mthis) native "Response_clone_Callback";
-  clone_Callback_0_(mthis) => clone_Callback_0(mthis);
+  headers_Getter_(mthis) => mthis["headers"];
 
-  static clone_Callback_1(mthis, __arg_0) native "Response_clone_Callback";
-  clone_Callback_1_(mthis, __arg_0) => clone_Callback_1(mthis, __arg_0);
+  json_Callback_0_(mthis) => mthis.callMethod("json", []);
 
-  static clone_Callback_2(mthis, __arg_0, __arg_1) native "Response_clone_Callback";
-  clone_Callback_2_(mthis, __arg_0, __arg_1) => clone_Callback_2(mthis, __arg_0, __arg_1);
+  statusText_Getter_(mthis) => mthis["statusText"];
 
-  static constructorCallback_0() native "Response_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  status_Getter_(mthis) => mthis["status"];
 
-  static constructorCallback_1(__arg_0) native "Response_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  text_Callback_0_(mthis) => mthis.callMethod("text", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Response_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  type_Getter_(mthis) => mthis["type"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Response_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
-
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Response_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
-
-  static headers_Getter(mthis) native "Response_headers_Getter";
-  headers_Getter_(mthis) => headers_Getter(mthis);
-
-  static json_Callback_0(mthis) native "Response_json_Callback";
-  json_Callback_0_(mthis) => json_Callback_0(mthis);
-
-  static json_Callback_1(mthis, __arg_0) native "Response_json_Callback";
-  json_Callback_1_(mthis, __arg_0) => json_Callback_1(mthis, __arg_0);
-
-  static json_Callback_2(mthis, __arg_0, __arg_1) native "Response_json_Callback";
-  json_Callback_2_(mthis, __arg_0, __arg_1) => json_Callback_2(mthis, __arg_0, __arg_1);
-
-  static statusText_Getter(mthis) native "Response_statusText_Getter";
-  statusText_Getter_(mthis) => statusText_Getter(mthis);
-
-  static status_Getter(mthis) native "Response_status_Getter";
-  status_Getter_(mthis) => status_Getter(mthis);
-
-  static text_Callback_0(mthis) native "Response_text_Callback";
-  text_Callback_0_(mthis) => text_Callback_0(mthis);
-
-  static text_Callback_1(mthis, __arg_0) native "Response_text_Callback";
-  text_Callback_1_(mthis, __arg_0) => text_Callback_1(mthis, __arg_0);
-
-  static text_Callback_2(mthis, __arg_0, __arg_1) native "Response_text_Callback";
-  text_Callback_2_(mthis, __arg_0, __arg_1) => text_Callback_2(mthis, __arg_0, __arg_1);
-
-  static type_Getter(mthis) native "Response_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static url_Getter(mthis) native "Response_url_Getter";
-  url_Getter_(mthis) => url_Getter(mthis);
+  url_Getter_(mthis) => mthis["url"];
 
 }
 
 class BlinkSQLError {
   static final instance = new BlinkSQLError();
 
-  static code_Getter(mthis) native "SQLError_code_Getter";
-  code_Getter_(mthis) => code_Getter(mthis);
+  code_Getter_(mthis) => mthis["code"];
 
-  static message_Getter(mthis) native "SQLError_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
 }
 
 class BlinkSQLResultSet {
   static final instance = new BlinkSQLResultSet();
 
-  static insertId_Getter(mthis) native "SQLResultSet_insertId_Getter";
-  insertId_Getter_(mthis) => insertId_Getter(mthis);
+  insertId_Getter_(mthis) => mthis["insertId"];
 
-  static rowsAffected_Getter(mthis) native "SQLResultSet_rowsAffected_Getter";
-  rowsAffected_Getter_(mthis) => rowsAffected_Getter(mthis);
+  rowsAffected_Getter_(mthis) => mthis["rowsAffected"];
 
-  static rows_Getter(mthis) native "SQLResultSet_rows_Getter";
-  rows_Getter_(mthis) => rows_Getter(mthis);
+  rows_Getter_(mthis) => mthis["rows"];
 
 }
 
 class BlinkSQLResultSetRowList {
   static final instance = new BlinkSQLResultSetRowList();
 
-  static item_Callback_0(mthis) native "SQLResultSetRowList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "SQLResultSetRowList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "SQLResultSetRowList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SQLResultSetRowList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "SQLResultSetRowList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkSQLTransaction {
   static final instance = new BlinkSQLTransaction();
 
-  static executeSql_Callback_0(mthis) native "SQLTransaction_executeSql_Callback";
-  executeSql_Callback_0_(mthis) => executeSql_Callback_0(mthis);
+  executeSql_Callback_0_(mthis) => mthis.callMethod("executeSql", []);
 
-  static executeSql_Callback_1(mthis, __arg_0) native "SQLTransaction_executeSql_Callback";
-  executeSql_Callback_1_(mthis, __arg_0) => executeSql_Callback_1(mthis, __arg_0);
+  executeSql_Callback_1_(mthis, __arg_0) => mthis.callMethod("executeSql", [__arg_0]);
 
-  static executeSql_Callback_2(mthis, __arg_0, __arg_1) native "SQLTransaction_executeSql_Callback";
-  executeSql_Callback_2_(mthis, __arg_0, __arg_1) => executeSql_Callback_2(mthis, __arg_0, __arg_1);
+  executeSql_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("executeSql", [__arg_0, __arg_1]);
 
-  static executeSql_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SQLTransaction_executeSql_Callback";
-  executeSql_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => executeSql_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  executeSql_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("executeSql", [__arg_0, __arg_1, __arg_2]);
 
-  static executeSql_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SQLTransaction_executeSql_Callback";
-  executeSql_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => executeSql_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static executeSql_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SQLTransaction_executeSql_Callback";
-  executeSql_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => executeSql_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static executeSql_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SQLTransaction_executeSql_Callback";
-  executeSql_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => executeSql_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  executeSql_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("executeSql", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkSVGAElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGAElement();
 
-  static href_Getter(mthis) native "SVGAElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static target_Getter(mthis) native "SVGAElement_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
 }
 
@@ -19207,20 +10516,15 @@
 class BlinkSVGAltGlyphElement extends BlinkSVGTextPositioningElement {
   static final instance = new BlinkSVGAltGlyphElement();
 
-  static format_Getter(mthis) native "SVGAltGlyphElement_format_Getter";
-  format_Getter_(mthis) => format_Getter(mthis);
+  format_Getter_(mthis) => mthis["format"];
 
-  static format_Setter(mthis, __arg_0) native "SVGAltGlyphElement_format_Setter";
-  format_Setter_(mthis, __arg_0) => format_Setter(mthis, __arg_0);
+  format_Setter_(mthis, __arg_0) => mthis["format"] = __arg_0;
 
-  static glyphRef_Getter(mthis) native "SVGAltGlyphElement_glyphRef_Getter";
-  glyphRef_Getter_(mthis) => glyphRef_Getter(mthis);
+  glyphRef_Getter_(mthis) => mthis["glyphRef"];
 
-  static glyphRef_Setter(mthis, __arg_0) native "SVGAltGlyphElement_glyphRef_Setter";
-  glyphRef_Setter_(mthis, __arg_0) => glyphRef_Setter(mthis, __arg_0);
+  glyphRef_Setter_(mthis, __arg_0) => mthis["glyphRef"] = __arg_0;
 
-  static href_Getter(mthis) native "SVGAltGlyphElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
 }
 
@@ -19232,53 +10536,29 @@
 class BlinkSVGAngle {
   static final instance = new BlinkSVGAngle();
 
-  static convertToSpecifiedUnits_Callback_0(mthis) native "SVGAngle_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_0_(mthis) => convertToSpecifiedUnits_Callback_0(mthis);
+  convertToSpecifiedUnits_Callback_0_(mthis) => mthis.callMethod("convertToSpecifiedUnits", []);
 
-  static convertToSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGAngle_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => convertToSpecifiedUnits_Callback_1(mthis, __arg_0);
+  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => mthis.callMethod("convertToSpecifiedUnits", [__arg_0]);
 
-  static convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGAngle_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+  newValueSpecifiedUnits_Callback_0_(mthis) => mthis.callMethod("newValueSpecifiedUnits", []);
 
-  static convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAngle_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => mthis.callMethod("newValueSpecifiedUnits", [__arg_0]);
 
-  static newValueSpecifiedUnits_Callback_0(mthis) native "SVGAngle_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_0_(mthis) => newValueSpecifiedUnits_Callback_0(mthis);
+  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("newValueSpecifiedUnits", [__arg_0, __arg_1]);
 
-  static newValueSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGAngle_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => newValueSpecifiedUnits_Callback_1(mthis, __arg_0);
+  unitType_Getter_(mthis) => mthis["unitType"];
 
-  static newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGAngle_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+  valueAsString_Getter_(mthis) => mthis["valueAsString"];
 
-  static newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAngle_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  valueAsString_Setter_(mthis, __arg_0) => mthis["valueAsString"] = __arg_0;
 
-  static newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGAngle_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  valueInSpecifiedUnits_Getter_(mthis) => mthis["valueInSpecifiedUnits"];
 
-  static unitType_Getter(mthis) native "SVGAngle_unitType_Getter";
-  unitType_Getter_(mthis) => unitType_Getter(mthis);
+  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => mthis["valueInSpecifiedUnits"] = __arg_0;
 
-  static valueAsString_Getter(mthis) native "SVGAngle_valueAsString_Getter";
-  valueAsString_Getter_(mthis) => valueAsString_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static valueAsString_Setter(mthis, __arg_0) native "SVGAngle_valueAsString_Setter";
-  valueAsString_Setter_(mthis, __arg_0) => valueAsString_Setter(mthis, __arg_0);
-
-  static valueInSpecifiedUnits_Getter(mthis) native "SVGAngle_valueInSpecifiedUnits_Getter";
-  valueInSpecifiedUnits_Getter_(mthis) => valueInSpecifiedUnits_Getter(mthis);
-
-  static valueInSpecifiedUnits_Setter(mthis, __arg_0) native "SVGAngle_valueInSpecifiedUnits_Setter";
-  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => valueInSpecifiedUnits_Setter(mthis, __arg_0);
-
-  static value_Getter(mthis) native "SVGAngle_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "SVGAngle_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
@@ -19300,346 +10580,223 @@
 class BlinkSVGAnimatedAngle {
   static final instance = new BlinkSVGAnimatedAngle();
 
-  static animVal_Getter(mthis) native "SVGAnimatedAngle_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedAngle_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
 }
 
 class BlinkSVGAnimatedBoolean {
   static final instance = new BlinkSVGAnimatedBoolean();
 
-  static animVal_Getter(mthis) native "SVGAnimatedBoolean_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedBoolean_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
-  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedBoolean_baseVal_Setter";
-  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
 
 }
 
 class BlinkSVGAnimatedEnumeration {
   static final instance = new BlinkSVGAnimatedEnumeration();
 
-  static animVal_Getter(mthis) native "SVGAnimatedEnumeration_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedEnumeration_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
-  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedEnumeration_baseVal_Setter";
-  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
 
 }
 
 class BlinkSVGAnimatedInteger {
   static final instance = new BlinkSVGAnimatedInteger();
 
-  static animVal_Getter(mthis) native "SVGAnimatedInteger_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedInteger_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
-  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedInteger_baseVal_Setter";
-  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
 
 }
 
 class BlinkSVGAnimatedLength {
   static final instance = new BlinkSVGAnimatedLength();
 
-  static animVal_Getter(mthis) native "SVGAnimatedLength_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedLength_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
 }
 
 class BlinkSVGAnimatedLengthList {
   static final instance = new BlinkSVGAnimatedLengthList();
 
-  static animVal_Getter(mthis) native "SVGAnimatedLengthList_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedLengthList_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
 }
 
 class BlinkSVGAnimatedNumber {
   static final instance = new BlinkSVGAnimatedNumber();
 
-  static animVal_Getter(mthis) native "SVGAnimatedNumber_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedNumber_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
-  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedNumber_baseVal_Setter";
-  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
 
 }
 
 class BlinkSVGAnimatedNumberList {
   static final instance = new BlinkSVGAnimatedNumberList();
 
-  static animVal_Getter(mthis) native "SVGAnimatedNumberList_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedNumberList_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
 }
 
 class BlinkSVGAnimatedPreserveAspectRatio {
   static final instance = new BlinkSVGAnimatedPreserveAspectRatio();
 
-  static animVal_Getter(mthis) native "SVGAnimatedPreserveAspectRatio_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedPreserveAspectRatio_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
 }
 
 class BlinkSVGAnimatedRect {
   static final instance = new BlinkSVGAnimatedRect();
 
-  static animVal_Getter(mthis) native "SVGAnimatedRect_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedRect_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
 }
 
 class BlinkSVGAnimatedString {
   static final instance = new BlinkSVGAnimatedString();
 
-  static animVal_Getter(mthis) native "SVGAnimatedString_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedString_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
-  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedString_baseVal_Setter";
-  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+  baseVal_Setter_(mthis, __arg_0) => mthis["baseVal"] = __arg_0;
 
 }
 
 class BlinkSVGAnimatedTransformList {
   static final instance = new BlinkSVGAnimatedTransformList();
 
-  static animVal_Getter(mthis) native "SVGAnimatedTransformList_animVal_Getter";
-  animVal_Getter_(mthis) => animVal_Getter(mthis);
+  animVal_Getter_(mthis) => mthis["animVal"];
 
-  static baseVal_Getter(mthis) native "SVGAnimatedTransformList_baseVal_Getter";
-  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+  baseVal_Getter_(mthis) => mthis["baseVal"];
 
 }
 
 class BlinkSVGAnimationElement extends BlinkSVGElement {
   static final instance = new BlinkSVGAnimationElement();
 
-  static beginElementAt_Callback_0(mthis) native "SVGAnimationElement_beginElementAt_Callback";
-  beginElementAt_Callback_0_(mthis) => beginElementAt_Callback_0(mthis);
+  beginElementAt_Callback_0_(mthis) => mthis.callMethod("beginElementAt", []);
 
-  static beginElementAt_Callback_1(mthis, __arg_0) native "SVGAnimationElement_beginElementAt_Callback";
-  beginElementAt_Callback_1_(mthis, __arg_0) => beginElementAt_Callback_1(mthis, __arg_0);
+  beginElementAt_Callback_1_(mthis, __arg_0) => mthis.callMethod("beginElementAt", [__arg_0]);
 
-  static beginElementAt_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_beginElementAt_Callback";
-  beginElementAt_Callback_2_(mthis, __arg_0, __arg_1) => beginElementAt_Callback_2(mthis, __arg_0, __arg_1);
+  beginElement_Callback_0_(mthis) => mthis.callMethod("beginElement", []);
 
-  static beginElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAnimationElement_beginElementAt_Callback";
-  beginElementAt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => beginElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  endElementAt_Callback_0_(mthis) => mthis.callMethod("endElementAt", []);
 
-  static beginElement_Callback_0(mthis) native "SVGAnimationElement_beginElement_Callback";
-  beginElement_Callback_0_(mthis) => beginElement_Callback_0(mthis);
+  endElementAt_Callback_1_(mthis, __arg_0) => mthis.callMethod("endElementAt", [__arg_0]);
 
-  static beginElement_Callback_1(mthis, __arg_0) native "SVGAnimationElement_beginElement_Callback";
-  beginElement_Callback_1_(mthis, __arg_0) => beginElement_Callback_1(mthis, __arg_0);
+  endElement_Callback_0_(mthis) => mthis.callMethod("endElement", []);
 
-  static beginElement_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_beginElement_Callback";
-  beginElement_Callback_2_(mthis, __arg_0, __arg_1) => beginElement_Callback_2(mthis, __arg_0, __arg_1);
+  getCurrentTime_Callback_0_(mthis) => mthis.callMethod("getCurrentTime", []);
 
-  static endElementAt_Callback_0(mthis) native "SVGAnimationElement_endElementAt_Callback";
-  endElementAt_Callback_0_(mthis) => endElementAt_Callback_0(mthis);
+  getSimpleDuration_Callback_0_(mthis) => mthis.callMethod("getSimpleDuration", []);
 
-  static endElementAt_Callback_1(mthis, __arg_0) native "SVGAnimationElement_endElementAt_Callback";
-  endElementAt_Callback_1_(mthis, __arg_0) => endElementAt_Callback_1(mthis, __arg_0);
+  getStartTime_Callback_0_(mthis) => mthis.callMethod("getStartTime", []);
 
-  static endElementAt_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_endElementAt_Callback";
-  endElementAt_Callback_2_(mthis, __arg_0, __arg_1) => endElementAt_Callback_2(mthis, __arg_0, __arg_1);
+  hasExtension_Callback_0_(mthis) => mthis.callMethod("hasExtension", []);
 
-  static endElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAnimationElement_endElementAt_Callback";
-  endElementAt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => endElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  hasExtension_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasExtension", [__arg_0]);
 
-  static endElement_Callback_0(mthis) native "SVGAnimationElement_endElement_Callback";
-  endElement_Callback_0_(mthis) => endElement_Callback_0(mthis);
+  onbegin_Getter_(mthis) => mthis["onbegin"];
 
-  static endElement_Callback_1(mthis, __arg_0) native "SVGAnimationElement_endElement_Callback";
-  endElement_Callback_1_(mthis, __arg_0) => endElement_Callback_1(mthis, __arg_0);
+  onbegin_Setter_(mthis, __arg_0) => mthis["onbegin"] = __arg_0;
 
-  static endElement_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_endElement_Callback";
-  endElement_Callback_2_(mthis, __arg_0, __arg_1) => endElement_Callback_2(mthis, __arg_0, __arg_1);
+  onend_Getter_(mthis) => mthis["onend"];
 
-  static getCurrentTime_Callback_0(mthis) native "SVGAnimationElement_getCurrentTime_Callback";
-  getCurrentTime_Callback_0_(mthis) => getCurrentTime_Callback_0(mthis);
+  onend_Setter_(mthis, __arg_0) => mthis["onend"] = __arg_0;
 
-  static getCurrentTime_Callback_1(mthis, __arg_0) native "SVGAnimationElement_getCurrentTime_Callback";
-  getCurrentTime_Callback_1_(mthis, __arg_0) => getCurrentTime_Callback_1(mthis, __arg_0);
+  onrepeat_Getter_(mthis) => mthis["onrepeat"];
 
-  static getCurrentTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_getCurrentTime_Callback";
-  getCurrentTime_Callback_2_(mthis, __arg_0, __arg_1) => getCurrentTime_Callback_2(mthis, __arg_0, __arg_1);
+  onrepeat_Setter_(mthis, __arg_0) => mthis["onrepeat"] = __arg_0;
 
-  static getSimpleDuration_Callback_0(mthis) native "SVGAnimationElement_getSimpleDuration_Callback";
-  getSimpleDuration_Callback_0_(mthis) => getSimpleDuration_Callback_0(mthis);
+  requiredExtensions_Getter_(mthis) => mthis["requiredExtensions"];
 
-  static getSimpleDuration_Callback_1(mthis, __arg_0) native "SVGAnimationElement_getSimpleDuration_Callback";
-  getSimpleDuration_Callback_1_(mthis, __arg_0) => getSimpleDuration_Callback_1(mthis, __arg_0);
+  requiredFeatures_Getter_(mthis) => mthis["requiredFeatures"];
 
-  static getSimpleDuration_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_getSimpleDuration_Callback";
-  getSimpleDuration_Callback_2_(mthis, __arg_0, __arg_1) => getSimpleDuration_Callback_2(mthis, __arg_0, __arg_1);
+  systemLanguage_Getter_(mthis) => mthis["systemLanguage"];
 
-  static getStartTime_Callback_0(mthis) native "SVGAnimationElement_getStartTime_Callback";
-  getStartTime_Callback_0_(mthis) => getStartTime_Callback_0(mthis);
-
-  static getStartTime_Callback_1(mthis, __arg_0) native "SVGAnimationElement_getStartTime_Callback";
-  getStartTime_Callback_1_(mthis, __arg_0) => getStartTime_Callback_1(mthis, __arg_0);
-
-  static getStartTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_getStartTime_Callback";
-  getStartTime_Callback_2_(mthis, __arg_0, __arg_1) => getStartTime_Callback_2(mthis, __arg_0, __arg_1);
-
-  static hasExtension_Callback_0(mthis) native "SVGAnimationElement_hasExtension_Callback";
-  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
-
-  static hasExtension_Callback_1(mthis, __arg_0) native "SVGAnimationElement_hasExtension_Callback";
-  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
-
-  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_hasExtension_Callback";
-  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
-
-  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAnimationElement_hasExtension_Callback";
-  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static onbegin_Getter(mthis) native "SVGAnimationElement_onbegin_Getter";
-  onbegin_Getter_(mthis) => onbegin_Getter(mthis);
-
-  static onbegin_Setter(mthis, __arg_0) native "SVGAnimationElement_onbegin_Setter";
-  onbegin_Setter_(mthis, __arg_0) => onbegin_Setter(mthis, __arg_0);
-
-  static onend_Getter(mthis) native "SVGAnimationElement_onend_Getter";
-  onend_Getter_(mthis) => onend_Getter(mthis);
-
-  static onend_Setter(mthis, __arg_0) native "SVGAnimationElement_onend_Setter";
-  onend_Setter_(mthis, __arg_0) => onend_Setter(mthis, __arg_0);
-
-  static onrepeat_Getter(mthis) native "SVGAnimationElement_onrepeat_Getter";
-  onrepeat_Getter_(mthis) => onrepeat_Getter(mthis);
-
-  static onrepeat_Setter(mthis, __arg_0) native "SVGAnimationElement_onrepeat_Setter";
-  onrepeat_Setter_(mthis, __arg_0) => onrepeat_Setter(mthis, __arg_0);
-
-  static requiredExtensions_Getter(mthis) native "SVGAnimationElement_requiredExtensions_Getter";
-  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
-
-  static requiredFeatures_Getter(mthis) native "SVGAnimationElement_requiredFeatures_Getter";
-  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
-
-  static systemLanguage_Getter(mthis) native "SVGAnimationElement_systemLanguage_Getter";
-  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
-
-  static targetElement_Getter(mthis) native "SVGAnimationElement_targetElement_Getter";
-  targetElement_Getter_(mthis) => targetElement_Getter(mthis);
+  targetElement_Getter_(mthis) => mthis["targetElement"];
 
 }
 
 class BlinkSVGCircleElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGCircleElement();
 
-  static cx_Getter(mthis) native "SVGCircleElement_cx_Getter";
-  cx_Getter_(mthis) => cx_Getter(mthis);
+  cx_Getter_(mthis) => mthis["cx"];
 
-  static cy_Getter(mthis) native "SVGCircleElement_cy_Getter";
-  cy_Getter_(mthis) => cy_Getter(mthis);
+  cy_Getter_(mthis) => mthis["cy"];
 
-  static r_Getter(mthis) native "SVGCircleElement_r_Getter";
-  r_Getter_(mthis) => r_Getter(mthis);
+  r_Getter_(mthis) => mthis["r"];
 
 }
 
 class BlinkSVGClipPathElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGClipPathElement();
 
-  static clipPathUnits_Getter(mthis) native "SVGClipPathElement_clipPathUnits_Getter";
-  clipPathUnits_Getter_(mthis) => clipPathUnits_Getter(mthis);
+  clipPathUnits_Getter_(mthis) => mthis["clipPathUnits"];
 
 }
 
 class BlinkSVGComponentTransferFunctionElement extends BlinkSVGElement {
   static final instance = new BlinkSVGComponentTransferFunctionElement();
 
-  static amplitude_Getter(mthis) native "SVGComponentTransferFunctionElement_amplitude_Getter";
-  amplitude_Getter_(mthis) => amplitude_Getter(mthis);
+  amplitude_Getter_(mthis) => mthis["amplitude"];
 
-  static exponent_Getter(mthis) native "SVGComponentTransferFunctionElement_exponent_Getter";
-  exponent_Getter_(mthis) => exponent_Getter(mthis);
+  exponent_Getter_(mthis) => mthis["exponent"];
 
-  static intercept_Getter(mthis) native "SVGComponentTransferFunctionElement_intercept_Getter";
-  intercept_Getter_(mthis) => intercept_Getter(mthis);
+  intercept_Getter_(mthis) => mthis["intercept"];
 
-  static offset_Getter(mthis) native "SVGComponentTransferFunctionElement_offset_Getter";
-  offset_Getter_(mthis) => offset_Getter(mthis);
+  offset_Getter_(mthis) => mthis["offset"];
 
-  static slope_Getter(mthis) native "SVGComponentTransferFunctionElement_slope_Getter";
-  slope_Getter_(mthis) => slope_Getter(mthis);
+  slope_Getter_(mthis) => mthis["slope"];
 
-  static tableValues_Getter(mthis) native "SVGComponentTransferFunctionElement_tableValues_Getter";
-  tableValues_Getter_(mthis) => tableValues_Getter(mthis);
+  tableValues_Getter_(mthis) => mthis["tableValues"];
 
-  static type_Getter(mthis) native "SVGComponentTransferFunctionElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkSVGCursorElement extends BlinkSVGElement {
   static final instance = new BlinkSVGCursorElement();
 
-  static hasExtension_Callback_0(mthis) native "SVGCursorElement_hasExtension_Callback";
-  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+  hasExtension_Callback_0_(mthis) => mthis.callMethod("hasExtension", []);
 
-  static hasExtension_Callback_1(mthis, __arg_0) native "SVGCursorElement_hasExtension_Callback";
-  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+  hasExtension_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasExtension", [__arg_0]);
 
-  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGCursorElement_hasExtension_Callback";
-  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+  href_Getter_(mthis) => mthis["href"];
 
-  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGCursorElement_hasExtension_Callback";
-  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  requiredExtensions_Getter_(mthis) => mthis["requiredExtensions"];
 
-  static href_Getter(mthis) native "SVGCursorElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  requiredFeatures_Getter_(mthis) => mthis["requiredFeatures"];
 
-  static requiredExtensions_Getter(mthis) native "SVGCursorElement_requiredExtensions_Getter";
-  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
+  systemLanguage_Getter_(mthis) => mthis["systemLanguage"];
 
-  static requiredFeatures_Getter(mthis) native "SVGCursorElement_requiredFeatures_Getter";
-  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static systemLanguage_Getter(mthis) native "SVGCursorElement_systemLanguage_Getter";
-  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
-
-  static x_Getter(mthis) native "SVGCursorElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "SVGCursorElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
@@ -19661,753 +10818,518 @@
 class BlinkSVGElement extends BlinkElement {
   static final instance = new BlinkSVGElement();
 
-  static className_Getter(mthis) native "SVGElement_className_Getter";
-  className_Getter_(mthis) => className_Getter(mthis);
+  className_Getter_(mthis) => mthis["className"];
 
-  static onabort_Getter(mthis) native "SVGElement_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static onabort_Setter(mthis, __arg_0) native "SVGElement_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static onautocomplete_Getter(mthis) native "SVGElement_onautocomplete_Getter";
-  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+  onautocomplete_Getter_(mthis) => mthis["onautocomplete"];
 
-  static onautocomplete_Setter(mthis, __arg_0) native "SVGElement_onautocomplete_Setter";
-  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
 
-  static onautocompleteerror_Getter(mthis) native "SVGElement_onautocompleteerror_Getter";
-  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+  onautocompleteerror_Getter_(mthis) => mthis["onautocompleteerror"];
 
-  static onautocompleteerror_Setter(mthis, __arg_0) native "SVGElement_onautocompleteerror_Setter";
-  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
 
-  static onblur_Getter(mthis) native "SVGElement_onblur_Getter";
-  onblur_Getter_(mthis) => onblur_Getter(mthis);
+  onblur_Getter_(mthis) => mthis["onblur"];
 
-  static onblur_Setter(mthis, __arg_0) native "SVGElement_onblur_Setter";
-  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
 
-  static oncancel_Getter(mthis) native "SVGElement_oncancel_Getter";
-  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+  oncancel_Getter_(mthis) => mthis["oncancel"];
 
-  static oncancel_Setter(mthis, __arg_0) native "SVGElement_oncancel_Setter";
-  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
 
-  static oncanplay_Getter(mthis) native "SVGElement_oncanplay_Getter";
-  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+  oncanplay_Getter_(mthis) => mthis["oncanplay"];
 
-  static oncanplay_Setter(mthis, __arg_0) native "SVGElement_oncanplay_Setter";
-  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
 
-  static oncanplaythrough_Getter(mthis) native "SVGElement_oncanplaythrough_Getter";
-  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+  oncanplaythrough_Getter_(mthis) => mthis["oncanplaythrough"];
 
-  static oncanplaythrough_Setter(mthis, __arg_0) native "SVGElement_oncanplaythrough_Setter";
-  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
 
-  static onchange_Getter(mthis) native "SVGElement_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static onchange_Setter(mthis, __arg_0) native "SVGElement_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static onclick_Getter(mthis) native "SVGElement_onclick_Getter";
-  onclick_Getter_(mthis) => onclick_Getter(mthis);
+  onclick_Getter_(mthis) => mthis["onclick"];
 
-  static onclick_Setter(mthis, __arg_0) native "SVGElement_onclick_Setter";
-  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
 
-  static onclose_Getter(mthis) native "SVGElement_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static onclose_Setter(mthis, __arg_0) native "SVGElement_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static oncontextmenu_Getter(mthis) native "SVGElement_oncontextmenu_Getter";
-  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+  oncontextmenu_Getter_(mthis) => mthis["oncontextmenu"];
 
-  static oncontextmenu_Setter(mthis, __arg_0) native "SVGElement_oncontextmenu_Setter";
-  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
 
-  static oncuechange_Getter(mthis) native "SVGElement_oncuechange_Getter";
-  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+  oncuechange_Getter_(mthis) => mthis["oncuechange"];
 
-  static oncuechange_Setter(mthis, __arg_0) native "SVGElement_oncuechange_Setter";
-  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
 
-  static ondblclick_Getter(mthis) native "SVGElement_ondblclick_Getter";
-  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+  ondblclick_Getter_(mthis) => mthis["ondblclick"];
 
-  static ondblclick_Setter(mthis, __arg_0) native "SVGElement_ondblclick_Setter";
-  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
 
-  static ondrag_Getter(mthis) native "SVGElement_ondrag_Getter";
-  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+  ondrag_Getter_(mthis) => mthis["ondrag"];
 
-  static ondrag_Setter(mthis, __arg_0) native "SVGElement_ondrag_Setter";
-  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
 
-  static ondragend_Getter(mthis) native "SVGElement_ondragend_Getter";
-  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+  ondragend_Getter_(mthis) => mthis["ondragend"];
 
-  static ondragend_Setter(mthis, __arg_0) native "SVGElement_ondragend_Setter";
-  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
 
-  static ondragenter_Getter(mthis) native "SVGElement_ondragenter_Getter";
-  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+  ondragenter_Getter_(mthis) => mthis["ondragenter"];
 
-  static ondragenter_Setter(mthis, __arg_0) native "SVGElement_ondragenter_Setter";
-  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
+  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
 
-  static ondragleave_Getter(mthis) native "SVGElement_ondragleave_Getter";
-  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
+  ondragleave_Getter_(mthis) => mthis["ondragleave"];
 
-  static ondragleave_Setter(mthis, __arg_0) native "SVGElement_ondragleave_Setter";
-  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
+  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
 
-  static ondragover_Getter(mthis) native "SVGElement_ondragover_Getter";
-  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
+  ondragover_Getter_(mthis) => mthis["ondragover"];
 
-  static ondragover_Setter(mthis, __arg_0) native "SVGElement_ondragover_Setter";
-  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
+  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
 
-  static ondragstart_Getter(mthis) native "SVGElement_ondragstart_Getter";
-  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
+  ondragstart_Getter_(mthis) => mthis["ondragstart"];
 
-  static ondragstart_Setter(mthis, __arg_0) native "SVGElement_ondragstart_Setter";
-  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
+  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
 
-  static ondrop_Getter(mthis) native "SVGElement_ondrop_Getter";
-  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
+  ondrop_Getter_(mthis) => mthis["ondrop"];
 
-  static ondrop_Setter(mthis, __arg_0) native "SVGElement_ondrop_Setter";
-  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
+  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
 
-  static ondurationchange_Getter(mthis) native "SVGElement_ondurationchange_Getter";
-  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
+  ondurationchange_Getter_(mthis) => mthis["ondurationchange"];
 
-  static ondurationchange_Setter(mthis, __arg_0) native "SVGElement_ondurationchange_Setter";
-  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
+  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
 
-  static onemptied_Getter(mthis) native "SVGElement_onemptied_Getter";
-  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
+  onemptied_Getter_(mthis) => mthis["onemptied"];
 
-  static onemptied_Setter(mthis, __arg_0) native "SVGElement_onemptied_Setter";
-  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
+  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
 
-  static onended_Getter(mthis) native "SVGElement_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static onended_Setter(mthis, __arg_0) native "SVGElement_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static onerror_Getter(mthis) native "SVGElement_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onerror_Setter(mthis, __arg_0) native "SVGElement_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onfocus_Getter(mthis) native "SVGElement_onfocus_Getter";
-  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+  onfocus_Getter_(mthis) => mthis["onfocus"];
 
-  static onfocus_Setter(mthis, __arg_0) native "SVGElement_onfocus_Setter";
-  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
 
-  static oninput_Getter(mthis) native "SVGElement_oninput_Getter";
-  oninput_Getter_(mthis) => oninput_Getter(mthis);
+  oninput_Getter_(mthis) => mthis["oninput"];
 
-  static oninput_Setter(mthis, __arg_0) native "SVGElement_oninput_Setter";
-  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
+  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
 
-  static oninvalid_Getter(mthis) native "SVGElement_oninvalid_Getter";
-  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
+  oninvalid_Getter_(mthis) => mthis["oninvalid"];
 
-  static oninvalid_Setter(mthis, __arg_0) native "SVGElement_oninvalid_Setter";
-  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
+  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
 
-  static onkeydown_Getter(mthis) native "SVGElement_onkeydown_Getter";
-  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
+  onkeydown_Getter_(mthis) => mthis["onkeydown"];
 
-  static onkeydown_Setter(mthis, __arg_0) native "SVGElement_onkeydown_Setter";
-  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
+  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
 
-  static onkeypress_Getter(mthis) native "SVGElement_onkeypress_Getter";
-  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
+  onkeypress_Getter_(mthis) => mthis["onkeypress"];
 
-  static onkeypress_Setter(mthis, __arg_0) native "SVGElement_onkeypress_Setter";
-  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
+  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
 
-  static onkeyup_Getter(mthis) native "SVGElement_onkeyup_Getter";
-  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
+  onkeyup_Getter_(mthis) => mthis["onkeyup"];
 
-  static onkeyup_Setter(mthis, __arg_0) native "SVGElement_onkeyup_Setter";
-  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
+  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
 
-  static onload_Getter(mthis) native "SVGElement_onload_Getter";
-  onload_Getter_(mthis) => onload_Getter(mthis);
+  onload_Getter_(mthis) => mthis["onload"];
 
-  static onload_Setter(mthis, __arg_0) native "SVGElement_onload_Setter";
-  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
 
-  static onloadeddata_Getter(mthis) native "SVGElement_onloadeddata_Getter";
-  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
+  onloadeddata_Getter_(mthis) => mthis["onloadeddata"];
 
-  static onloadeddata_Setter(mthis, __arg_0) native "SVGElement_onloadeddata_Setter";
-  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
+  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
 
-  static onloadedmetadata_Getter(mthis) native "SVGElement_onloadedmetadata_Getter";
-  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
+  onloadedmetadata_Getter_(mthis) => mthis["onloadedmetadata"];
 
-  static onloadedmetadata_Setter(mthis, __arg_0) native "SVGElement_onloadedmetadata_Setter";
-  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
+  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
 
-  static onloadstart_Getter(mthis) native "SVGElement_onloadstart_Getter";
-  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+  onloadstart_Getter_(mthis) => mthis["onloadstart"];
 
-  static onloadstart_Setter(mthis, __arg_0) native "SVGElement_onloadstart_Setter";
-  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
 
-  static onmousedown_Getter(mthis) native "SVGElement_onmousedown_Getter";
-  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
+  onmousedown_Getter_(mthis) => mthis["onmousedown"];
 
-  static onmousedown_Setter(mthis, __arg_0) native "SVGElement_onmousedown_Setter";
-  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
+  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
 
-  static onmouseenter_Getter(mthis) native "SVGElement_onmouseenter_Getter";
-  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
+  onmouseenter_Getter_(mthis) => mthis["onmouseenter"];
 
-  static onmouseenter_Setter(mthis, __arg_0) native "SVGElement_onmouseenter_Setter";
-  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
+  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
 
-  static onmouseleave_Getter(mthis) native "SVGElement_onmouseleave_Getter";
-  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
+  onmouseleave_Getter_(mthis) => mthis["onmouseleave"];
 
-  static onmouseleave_Setter(mthis, __arg_0) native "SVGElement_onmouseleave_Setter";
-  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
+  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
 
-  static onmousemove_Getter(mthis) native "SVGElement_onmousemove_Getter";
-  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
+  onmousemove_Getter_(mthis) => mthis["onmousemove"];
 
-  static onmousemove_Setter(mthis, __arg_0) native "SVGElement_onmousemove_Setter";
-  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
+  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
 
-  static onmouseout_Getter(mthis) native "SVGElement_onmouseout_Getter";
-  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
+  onmouseout_Getter_(mthis) => mthis["onmouseout"];
 
-  static onmouseout_Setter(mthis, __arg_0) native "SVGElement_onmouseout_Setter";
-  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
+  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
 
-  static onmouseover_Getter(mthis) native "SVGElement_onmouseover_Getter";
-  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
+  onmouseover_Getter_(mthis) => mthis["onmouseover"];
 
-  static onmouseover_Setter(mthis, __arg_0) native "SVGElement_onmouseover_Setter";
-  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
+  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
 
-  static onmouseup_Getter(mthis) native "SVGElement_onmouseup_Getter";
-  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
+  onmouseup_Getter_(mthis) => mthis["onmouseup"];
 
-  static onmouseup_Setter(mthis, __arg_0) native "SVGElement_onmouseup_Setter";
-  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
+  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
 
-  static onmousewheel_Getter(mthis) native "SVGElement_onmousewheel_Getter";
-  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
+  onmousewheel_Getter_(mthis) => mthis["onmousewheel"];
 
-  static onmousewheel_Setter(mthis, __arg_0) native "SVGElement_onmousewheel_Setter";
-  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
+  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
 
-  static onpause_Getter(mthis) native "SVGElement_onpause_Getter";
-  onpause_Getter_(mthis) => onpause_Getter(mthis);
+  onpause_Getter_(mthis) => mthis["onpause"];
 
-  static onpause_Setter(mthis, __arg_0) native "SVGElement_onpause_Setter";
-  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
 
-  static onplay_Getter(mthis) native "SVGElement_onplay_Getter";
-  onplay_Getter_(mthis) => onplay_Getter(mthis);
+  onplay_Getter_(mthis) => mthis["onplay"];
 
-  static onplay_Setter(mthis, __arg_0) native "SVGElement_onplay_Setter";
-  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
+  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
 
-  static onplaying_Getter(mthis) native "SVGElement_onplaying_Getter";
-  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
+  onplaying_Getter_(mthis) => mthis["onplaying"];
 
-  static onplaying_Setter(mthis, __arg_0) native "SVGElement_onplaying_Setter";
-  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
+  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
 
-  static onprogress_Getter(mthis) native "SVGElement_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onprogress_Setter(mthis, __arg_0) native "SVGElement_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static onratechange_Getter(mthis) native "SVGElement_onratechange_Getter";
-  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
+  onratechange_Getter_(mthis) => mthis["onratechange"];
 
-  static onratechange_Setter(mthis, __arg_0) native "SVGElement_onratechange_Setter";
-  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
+  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
 
-  static onreset_Getter(mthis) native "SVGElement_onreset_Getter";
-  onreset_Getter_(mthis) => onreset_Getter(mthis);
+  onreset_Getter_(mthis) => mthis["onreset"];
 
-  static onreset_Setter(mthis, __arg_0) native "SVGElement_onreset_Setter";
-  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
+  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
 
-  static onresize_Getter(mthis) native "SVGElement_onresize_Getter";
-  onresize_Getter_(mthis) => onresize_Getter(mthis);
+  onresize_Getter_(mthis) => mthis["onresize"];
 
-  static onresize_Setter(mthis, __arg_0) native "SVGElement_onresize_Setter";
-  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
 
-  static onscroll_Getter(mthis) native "SVGElement_onscroll_Getter";
-  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+  onscroll_Getter_(mthis) => mthis["onscroll"];
 
-  static onscroll_Setter(mthis, __arg_0) native "SVGElement_onscroll_Setter";
-  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
 
-  static onseeked_Getter(mthis) native "SVGElement_onseeked_Getter";
-  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
+  onseeked_Getter_(mthis) => mthis["onseeked"];
 
-  static onseeked_Setter(mthis, __arg_0) native "SVGElement_onseeked_Setter";
-  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
+  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
 
-  static onseeking_Getter(mthis) native "SVGElement_onseeking_Getter";
-  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
+  onseeking_Getter_(mthis) => mthis["onseeking"];
 
-  static onseeking_Setter(mthis, __arg_0) native "SVGElement_onseeking_Setter";
-  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
+  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
 
-  static onselect_Getter(mthis) native "SVGElement_onselect_Getter";
-  onselect_Getter_(mthis) => onselect_Getter(mthis);
+  onselect_Getter_(mthis) => mthis["onselect"];
 
-  static onselect_Setter(mthis, __arg_0) native "SVGElement_onselect_Setter";
-  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
+  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
 
-  static onshow_Getter(mthis) native "SVGElement_onshow_Getter";
-  onshow_Getter_(mthis) => onshow_Getter(mthis);
+  onshow_Getter_(mthis) => mthis["onshow"];
 
-  static onshow_Setter(mthis, __arg_0) native "SVGElement_onshow_Setter";
-  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
 
-  static onstalled_Getter(mthis) native "SVGElement_onstalled_Getter";
-  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
+  onstalled_Getter_(mthis) => mthis["onstalled"];
 
-  static onstalled_Setter(mthis, __arg_0) native "SVGElement_onstalled_Setter";
-  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
+  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
 
-  static onsubmit_Getter(mthis) native "SVGElement_onsubmit_Getter";
-  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
+  onsubmit_Getter_(mthis) => mthis["onsubmit"];
 
-  static onsubmit_Setter(mthis, __arg_0) native "SVGElement_onsubmit_Setter";
-  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
+  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
 
-  static onsuspend_Getter(mthis) native "SVGElement_onsuspend_Getter";
-  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
+  onsuspend_Getter_(mthis) => mthis["onsuspend"];
 
-  static onsuspend_Setter(mthis, __arg_0) native "SVGElement_onsuspend_Setter";
-  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
+  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
 
-  static ontimeupdate_Getter(mthis) native "SVGElement_ontimeupdate_Getter";
-  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
+  ontimeupdate_Getter_(mthis) => mthis["ontimeupdate"];
 
-  static ontimeupdate_Setter(mthis, __arg_0) native "SVGElement_ontimeupdate_Setter";
-  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
+  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
 
-  static ontoggle_Getter(mthis) native "SVGElement_ontoggle_Getter";
-  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
+  ontoggle_Getter_(mthis) => mthis["ontoggle"];
 
-  static ontoggle_Setter(mthis, __arg_0) native "SVGElement_ontoggle_Setter";
-  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
+  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
 
-  static onvolumechange_Getter(mthis) native "SVGElement_onvolumechange_Getter";
-  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+  onvolumechange_Getter_(mthis) => mthis["onvolumechange"];
 
-  static onvolumechange_Setter(mthis, __arg_0) native "SVGElement_onvolumechange_Setter";
-  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
 
-  static onwaiting_Getter(mthis) native "SVGElement_onwaiting_Getter";
-  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+  onwaiting_Getter_(mthis) => mthis["onwaiting"];
 
-  static onwaiting_Setter(mthis, __arg_0) native "SVGElement_onwaiting_Setter";
-  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
 
-  static ownerSVGElement_Getter(mthis) native "SVGElement_ownerSVGElement_Getter";
-  ownerSVGElement_Getter_(mthis) => ownerSVGElement_Getter(mthis);
+  ownerSVGElement_Getter_(mthis) => mthis["ownerSVGElement"];
 
-  static style_Getter(mthis) native "SVGElement_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
-  static tabIndex_Getter(mthis) native "SVGElement_tabIndex_Getter";
-  tabIndex_Getter_(mthis) => tabIndex_Getter(mthis);
+  tabIndex_Getter_(mthis) => mthis["tabIndex"];
 
-  static tabIndex_Setter(mthis, __arg_0) native "SVGElement_tabIndex_Setter";
-  tabIndex_Setter_(mthis, __arg_0) => tabIndex_Setter(mthis, __arg_0);
+  tabIndex_Setter_(mthis, __arg_0) => mthis["tabIndex"] = __arg_0;
 
-  static viewportElement_Getter(mthis) native "SVGElement_viewportElement_Getter";
-  viewportElement_Getter_(mthis) => viewportElement_Getter(mthis);
+  viewportElement_Getter_(mthis) => mthis["viewportElement"];
 
-  static xmlbase_Getter(mthis) native "SVGElement_xmlbase_Getter";
-  xmlbase_Getter_(mthis) => xmlbase_Getter(mthis);
+  xmlbase_Getter_(mthis) => mthis["xmlbase"];
 
-  static xmlbase_Setter(mthis, __arg_0) native "SVGElement_xmlbase_Setter";
-  xmlbase_Setter_(mthis, __arg_0) => xmlbase_Setter(mthis, __arg_0);
+  xmlbase_Setter_(mthis, __arg_0) => mthis["xmlbase"] = __arg_0;
 
-  static xmllang_Getter(mthis) native "SVGElement_xmllang_Getter";
-  xmllang_Getter_(mthis) => xmllang_Getter(mthis);
+  xmllang_Getter_(mthis) => mthis["xmllang"];
 
-  static xmllang_Setter(mthis, __arg_0) native "SVGElement_xmllang_Setter";
-  xmllang_Setter_(mthis, __arg_0) => xmllang_Setter(mthis, __arg_0);
+  xmllang_Setter_(mthis, __arg_0) => mthis["xmllang"] = __arg_0;
 
-  static xmlspace_Getter(mthis) native "SVGElement_xmlspace_Getter";
-  xmlspace_Getter_(mthis) => xmlspace_Getter(mthis);
+  xmlspace_Getter_(mthis) => mthis["xmlspace"];
 
-  static xmlspace_Setter(mthis, __arg_0) native "SVGElement_xmlspace_Setter";
-  xmlspace_Setter_(mthis, __arg_0) => xmlspace_Setter(mthis, __arg_0);
+  xmlspace_Setter_(mthis, __arg_0) => mthis["xmlspace"] = __arg_0;
 
 }
 
 class BlinkSVGEllipseElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGEllipseElement();
 
-  static cx_Getter(mthis) native "SVGEllipseElement_cx_Getter";
-  cx_Getter_(mthis) => cx_Getter(mthis);
+  cx_Getter_(mthis) => mthis["cx"];
 
-  static cy_Getter(mthis) native "SVGEllipseElement_cy_Getter";
-  cy_Getter_(mthis) => cy_Getter(mthis);
+  cy_Getter_(mthis) => mthis["cy"];
 
-  static rx_Getter(mthis) native "SVGEllipseElement_rx_Getter";
-  rx_Getter_(mthis) => rx_Getter(mthis);
+  rx_Getter_(mthis) => mthis["rx"];
 
-  static ry_Getter(mthis) native "SVGEllipseElement_ry_Getter";
-  ry_Getter_(mthis) => ry_Getter(mthis);
+  ry_Getter_(mthis) => mthis["ry"];
 
 }
 
 class BlinkSVGFEBlendElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEBlendElement();
 
-  static height_Getter(mthis) native "SVGFEBlendElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEBlendElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static in2_Getter(mthis) native "SVGFEBlendElement_in2_Getter";
-  in2_Getter_(mthis) => in2_Getter(mthis);
+  in2_Getter_(mthis) => mthis["in2"];
 
-  static mode_Getter(mthis) native "SVGFEBlendElement_mode_Getter";
-  mode_Getter_(mthis) => mode_Getter(mthis);
+  mode_Getter_(mthis) => mthis["mode"];
 
-  static result_Getter(mthis) native "SVGFEBlendElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFEBlendElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEBlendElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEBlendElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEColorMatrixElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEColorMatrixElement();
 
-  static height_Getter(mthis) native "SVGFEColorMatrixElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEColorMatrixElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static result_Getter(mthis) native "SVGFEColorMatrixElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static type_Getter(mthis) native "SVGFEColorMatrixElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static values_Getter(mthis) native "SVGFEColorMatrixElement_values_Getter";
-  values_Getter_(mthis) => values_Getter(mthis);
+  values_Getter_(mthis) => mthis["values"];
 
-  static width_Getter(mthis) native "SVGFEColorMatrixElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEColorMatrixElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEColorMatrixElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEComponentTransferElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEComponentTransferElement();
 
-  static height_Getter(mthis) native "SVGFEComponentTransferElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEComponentTransferElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static result_Getter(mthis) native "SVGFEComponentTransferElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFEComponentTransferElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEComponentTransferElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEComponentTransferElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFECompositeElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFECompositeElement();
 
-  static height_Getter(mthis) native "SVGFECompositeElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFECompositeElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static in2_Getter(mthis) native "SVGFECompositeElement_in2_Getter";
-  in2_Getter_(mthis) => in2_Getter(mthis);
+  in2_Getter_(mthis) => mthis["in2"];
 
-  static k1_Getter(mthis) native "SVGFECompositeElement_k1_Getter";
-  k1_Getter_(mthis) => k1_Getter(mthis);
+  k1_Getter_(mthis) => mthis["k1"];
 
-  static k2_Getter(mthis) native "SVGFECompositeElement_k2_Getter";
-  k2_Getter_(mthis) => k2_Getter(mthis);
+  k2_Getter_(mthis) => mthis["k2"];
 
-  static k3_Getter(mthis) native "SVGFECompositeElement_k3_Getter";
-  k3_Getter_(mthis) => k3_Getter(mthis);
+  k3_Getter_(mthis) => mthis["k3"];
 
-  static k4_Getter(mthis) native "SVGFECompositeElement_k4_Getter";
-  k4_Getter_(mthis) => k4_Getter(mthis);
+  k4_Getter_(mthis) => mthis["k4"];
 
-  static operator_Getter(mthis) native "SVGFECompositeElement_operator_Getter";
-  operator_Getter_(mthis) => operator_Getter(mthis);
+  operator_Getter_(mthis) => mthis["operator"];
 
-  static result_Getter(mthis) native "SVGFECompositeElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFECompositeElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFECompositeElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFECompositeElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEConvolveMatrixElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEConvolveMatrixElement();
 
-  static bias_Getter(mthis) native "SVGFEConvolveMatrixElement_bias_Getter";
-  bias_Getter_(mthis) => bias_Getter(mthis);
+  bias_Getter_(mthis) => mthis["bias"];
 
-  static divisor_Getter(mthis) native "SVGFEConvolveMatrixElement_divisor_Getter";
-  divisor_Getter_(mthis) => divisor_Getter(mthis);
+  divisor_Getter_(mthis) => mthis["divisor"];
 
-  static edgeMode_Getter(mthis) native "SVGFEConvolveMatrixElement_edgeMode_Getter";
-  edgeMode_Getter_(mthis) => edgeMode_Getter(mthis);
+  edgeMode_Getter_(mthis) => mthis["edgeMode"];
 
-  static height_Getter(mthis) native "SVGFEConvolveMatrixElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEConvolveMatrixElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static kernelMatrix_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelMatrix_Getter";
-  kernelMatrix_Getter_(mthis) => kernelMatrix_Getter(mthis);
+  kernelMatrix_Getter_(mthis) => mthis["kernelMatrix"];
 
-  static kernelUnitLengthX_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelUnitLengthX_Getter";
-  kernelUnitLengthX_Getter_(mthis) => kernelUnitLengthX_Getter(mthis);
+  kernelUnitLengthX_Getter_(mthis) => mthis["kernelUnitLengthX"];
 
-  static kernelUnitLengthY_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelUnitLengthY_Getter";
-  kernelUnitLengthY_Getter_(mthis) => kernelUnitLengthY_Getter(mthis);
+  kernelUnitLengthY_Getter_(mthis) => mthis["kernelUnitLengthY"];
 
-  static orderX_Getter(mthis) native "SVGFEConvolveMatrixElement_orderX_Getter";
-  orderX_Getter_(mthis) => orderX_Getter(mthis);
+  orderX_Getter_(mthis) => mthis["orderX"];
 
-  static orderY_Getter(mthis) native "SVGFEConvolveMatrixElement_orderY_Getter";
-  orderY_Getter_(mthis) => orderY_Getter(mthis);
+  orderY_Getter_(mthis) => mthis["orderY"];
 
-  static preserveAlpha_Getter(mthis) native "SVGFEConvolveMatrixElement_preserveAlpha_Getter";
-  preserveAlpha_Getter_(mthis) => preserveAlpha_Getter(mthis);
+  preserveAlpha_Getter_(mthis) => mthis["preserveAlpha"];
 
-  static result_Getter(mthis) native "SVGFEConvolveMatrixElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static targetX_Getter(mthis) native "SVGFEConvolveMatrixElement_targetX_Getter";
-  targetX_Getter_(mthis) => targetX_Getter(mthis);
+  targetX_Getter_(mthis) => mthis["targetX"];
 
-  static targetY_Getter(mthis) native "SVGFEConvolveMatrixElement_targetY_Getter";
-  targetY_Getter_(mthis) => targetY_Getter(mthis);
+  targetY_Getter_(mthis) => mthis["targetY"];
 
-  static width_Getter(mthis) native "SVGFEConvolveMatrixElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEConvolveMatrixElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEConvolveMatrixElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEDiffuseLightingElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDiffuseLightingElement();
 
-  static diffuseConstant_Getter(mthis) native "SVGFEDiffuseLightingElement_diffuseConstant_Getter";
-  diffuseConstant_Getter_(mthis) => diffuseConstant_Getter(mthis);
+  diffuseConstant_Getter_(mthis) => mthis["diffuseConstant"];
 
-  static height_Getter(mthis) native "SVGFEDiffuseLightingElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEDiffuseLightingElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static kernelUnitLengthX_Getter(mthis) native "SVGFEDiffuseLightingElement_kernelUnitLengthX_Getter";
-  kernelUnitLengthX_Getter_(mthis) => kernelUnitLengthX_Getter(mthis);
+  kernelUnitLengthX_Getter_(mthis) => mthis["kernelUnitLengthX"];
 
-  static kernelUnitLengthY_Getter(mthis) native "SVGFEDiffuseLightingElement_kernelUnitLengthY_Getter";
-  kernelUnitLengthY_Getter_(mthis) => kernelUnitLengthY_Getter(mthis);
+  kernelUnitLengthY_Getter_(mthis) => mthis["kernelUnitLengthY"];
 
-  static result_Getter(mthis) native "SVGFEDiffuseLightingElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static surfaceScale_Getter(mthis) native "SVGFEDiffuseLightingElement_surfaceScale_Getter";
-  surfaceScale_Getter_(mthis) => surfaceScale_Getter(mthis);
+  surfaceScale_Getter_(mthis) => mthis["surfaceScale"];
 
-  static width_Getter(mthis) native "SVGFEDiffuseLightingElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEDiffuseLightingElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEDiffuseLightingElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEDisplacementMapElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDisplacementMapElement();
 
-  static height_Getter(mthis) native "SVGFEDisplacementMapElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEDisplacementMapElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static in2_Getter(mthis) native "SVGFEDisplacementMapElement_in2_Getter";
-  in2_Getter_(mthis) => in2_Getter(mthis);
+  in2_Getter_(mthis) => mthis["in2"];
 
-  static result_Getter(mthis) native "SVGFEDisplacementMapElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static scale_Getter(mthis) native "SVGFEDisplacementMapElement_scale_Getter";
-  scale_Getter_(mthis) => scale_Getter(mthis);
+  scale_Getter_(mthis) => mthis["scale"];
 
-  static width_Getter(mthis) native "SVGFEDisplacementMapElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static xChannelSelector_Getter(mthis) native "SVGFEDisplacementMapElement_xChannelSelector_Getter";
-  xChannelSelector_Getter_(mthis) => xChannelSelector_Getter(mthis);
+  xChannelSelector_Getter_(mthis) => mthis["xChannelSelector"];
 
-  static x_Getter(mthis) native "SVGFEDisplacementMapElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static yChannelSelector_Getter(mthis) native "SVGFEDisplacementMapElement_yChannelSelector_Getter";
-  yChannelSelector_Getter_(mthis) => yChannelSelector_Getter(mthis);
+  yChannelSelector_Getter_(mthis) => mthis["yChannelSelector"];
 
-  static y_Getter(mthis) native "SVGFEDisplacementMapElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEDistantLightElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDistantLightElement();
 
-  static azimuth_Getter(mthis) native "SVGFEDistantLightElement_azimuth_Getter";
-  azimuth_Getter_(mthis) => azimuth_Getter(mthis);
+  azimuth_Getter_(mthis) => mthis["azimuth"];
 
-  static elevation_Getter(mthis) native "SVGFEDistantLightElement_elevation_Getter";
-  elevation_Getter_(mthis) => elevation_Getter(mthis);
+  elevation_Getter_(mthis) => mthis["elevation"];
 
 }
 
 class BlinkSVGFEDropShadowElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEDropShadowElement();
 
-  static dx_Getter(mthis) native "SVGFEDropShadowElement_dx_Getter";
-  dx_Getter_(mthis) => dx_Getter(mthis);
+  dx_Getter_(mthis) => mthis["dx"];
 
-  static dy_Getter(mthis) native "SVGFEDropShadowElement_dy_Getter";
-  dy_Getter_(mthis) => dy_Getter(mthis);
+  dy_Getter_(mthis) => mthis["dy"];
 
-  static height_Getter(mthis) native "SVGFEDropShadowElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEDropShadowElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static result_Getter(mthis) native "SVGFEDropShadowElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static setStdDeviation_Callback_0(mthis) native "SVGFEDropShadowElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_0_(mthis) => setStdDeviation_Callback_0(mthis);
+  setStdDeviation_Callback_0_(mthis) => mthis.callMethod("setStdDeviation", []);
 
-  static setStdDeviation_Callback_1(mthis, __arg_0) native "SVGFEDropShadowElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_1_(mthis, __arg_0) => setStdDeviation_Callback_1(mthis, __arg_0);
+  setStdDeviation_Callback_1_(mthis, __arg_0) => mthis.callMethod("setStdDeviation", [__arg_0]);
 
-  static setStdDeviation_Callback_2(mthis, __arg_0, __arg_1) native "SVGFEDropShadowElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => setStdDeviation_Callback_2(mthis, __arg_0, __arg_1);
+  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setStdDeviation", [__arg_0, __arg_1]);
 
-  static setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGFEDropShadowElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stdDeviationX_Getter_(mthis) => mthis["stdDeviationX"];
 
-  static setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGFEDropShadowElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  stdDeviationY_Getter_(mthis) => mthis["stdDeviationY"];
 
-  static stdDeviationX_Getter(mthis) native "SVGFEDropShadowElement_stdDeviationX_Getter";
-  stdDeviationX_Getter_(mthis) => stdDeviationX_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static stdDeviationY_Getter(mthis) native "SVGFEDropShadowElement_stdDeviationY_Getter";
-  stdDeviationY_Getter_(mthis) => stdDeviationY_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Getter(mthis) native "SVGFEDropShadowElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static x_Getter(mthis) native "SVGFEDropShadowElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "SVGFEDropShadowElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEFloodElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEFloodElement();
 
-  static height_Getter(mthis) native "SVGFEFloodElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static result_Getter(mthis) native "SVGFEFloodElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFEFloodElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEFloodElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEFloodElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
@@ -20434,342 +11356,240 @@
 class BlinkSVGFEGaussianBlurElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEGaussianBlurElement();
 
-  static height_Getter(mthis) native "SVGFEGaussianBlurElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEGaussianBlurElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static result_Getter(mthis) native "SVGFEGaussianBlurElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static setStdDeviation_Callback_0(mthis) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_0_(mthis) => setStdDeviation_Callback_0(mthis);
+  setStdDeviation_Callback_0_(mthis) => mthis.callMethod("setStdDeviation", []);
 
-  static setStdDeviation_Callback_1(mthis, __arg_0) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_1_(mthis, __arg_0) => setStdDeviation_Callback_1(mthis, __arg_0);
+  setStdDeviation_Callback_1_(mthis, __arg_0) => mthis.callMethod("setStdDeviation", [__arg_0]);
 
-  static setStdDeviation_Callback_2(mthis, __arg_0, __arg_1) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => setStdDeviation_Callback_2(mthis, __arg_0, __arg_1);
+  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setStdDeviation", [__arg_0, __arg_1]);
 
-  static setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stdDeviationX_Getter_(mthis) => mthis["stdDeviationX"];
 
-  static setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
-  setStdDeviation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  stdDeviationY_Getter_(mthis) => mthis["stdDeviationY"];
 
-  static stdDeviationX_Getter(mthis) native "SVGFEGaussianBlurElement_stdDeviationX_Getter";
-  stdDeviationX_Getter_(mthis) => stdDeviationX_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static stdDeviationY_Getter(mthis) native "SVGFEGaussianBlurElement_stdDeviationY_Getter";
-  stdDeviationY_Getter_(mthis) => stdDeviationY_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Getter(mthis) native "SVGFEGaussianBlurElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static x_Getter(mthis) native "SVGFEGaussianBlurElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "SVGFEGaussianBlurElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEImageElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEImageElement();
 
-  static height_Getter(mthis) native "SVGFEImageElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static href_Getter(mthis) native "SVGFEImageElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static preserveAspectRatio_Getter(mthis) native "SVGFEImageElement_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static result_Getter(mthis) native "SVGFEImageElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFEImageElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEImageElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEImageElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEMergeElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEMergeElement();
 
-  static height_Getter(mthis) native "SVGFEMergeElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static result_Getter(mthis) native "SVGFEMergeElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFEMergeElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEMergeElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEMergeElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEMergeNodeElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEMergeNodeElement();
 
-  static in1_Getter(mthis) native "SVGFEMergeNodeElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
 }
 
 class BlinkSVGFEMorphologyElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEMorphologyElement();
 
-  static height_Getter(mthis) native "SVGFEMorphologyElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEMorphologyElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static operator_Getter(mthis) native "SVGFEMorphologyElement_operator_Getter";
-  operator_Getter_(mthis) => operator_Getter(mthis);
+  operator_Getter_(mthis) => mthis["operator"];
 
-  static radiusX_Getter(mthis) native "SVGFEMorphologyElement_radiusX_Getter";
-  radiusX_Getter_(mthis) => radiusX_Getter(mthis);
+  radiusX_Getter_(mthis) => mthis["radiusX"];
 
-  static radiusY_Getter(mthis) native "SVGFEMorphologyElement_radiusY_Getter";
-  radiusY_Getter_(mthis) => radiusY_Getter(mthis);
+  radiusY_Getter_(mthis) => mthis["radiusY"];
 
-  static result_Getter(mthis) native "SVGFEMorphologyElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFEMorphologyElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEMorphologyElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEMorphologyElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEOffsetElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEOffsetElement();
 
-  static dx_Getter(mthis) native "SVGFEOffsetElement_dx_Getter";
-  dx_Getter_(mthis) => dx_Getter(mthis);
+  dx_Getter_(mthis) => mthis["dx"];
 
-  static dy_Getter(mthis) native "SVGFEOffsetElement_dy_Getter";
-  dy_Getter_(mthis) => dy_Getter(mthis);
+  dy_Getter_(mthis) => mthis["dy"];
 
-  static height_Getter(mthis) native "SVGFEOffsetElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFEOffsetElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static result_Getter(mthis) native "SVGFEOffsetElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFEOffsetElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFEOffsetElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEOffsetElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFEPointLightElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFEPointLightElement();
 
-  static x_Getter(mthis) native "SVGFEPointLightElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFEPointLightElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static z_Getter(mthis) native "SVGFEPointLightElement_z_Getter";
-  z_Getter_(mthis) => z_Getter(mthis);
+  z_Getter_(mthis) => mthis["z"];
 
 }
 
 class BlinkSVGFESpecularLightingElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFESpecularLightingElement();
 
-  static height_Getter(mthis) native "SVGFESpecularLightingElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFESpecularLightingElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static result_Getter(mthis) native "SVGFESpecularLightingElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static specularConstant_Getter(mthis) native "SVGFESpecularLightingElement_specularConstant_Getter";
-  specularConstant_Getter_(mthis) => specularConstant_Getter(mthis);
+  specularConstant_Getter_(mthis) => mthis["specularConstant"];
 
-  static specularExponent_Getter(mthis) native "SVGFESpecularLightingElement_specularExponent_Getter";
-  specularExponent_Getter_(mthis) => specularExponent_Getter(mthis);
+  specularExponent_Getter_(mthis) => mthis["specularExponent"];
 
-  static surfaceScale_Getter(mthis) native "SVGFESpecularLightingElement_surfaceScale_Getter";
-  surfaceScale_Getter_(mthis) => surfaceScale_Getter(mthis);
+  surfaceScale_Getter_(mthis) => mthis["surfaceScale"];
 
-  static width_Getter(mthis) native "SVGFESpecularLightingElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFESpecularLightingElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFESpecularLightingElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFESpotLightElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFESpotLightElement();
 
-  static limitingConeAngle_Getter(mthis) native "SVGFESpotLightElement_limitingConeAngle_Getter";
-  limitingConeAngle_Getter_(mthis) => limitingConeAngle_Getter(mthis);
+  limitingConeAngle_Getter_(mthis) => mthis["limitingConeAngle"];
 
-  static pointsAtX_Getter(mthis) native "SVGFESpotLightElement_pointsAtX_Getter";
-  pointsAtX_Getter_(mthis) => pointsAtX_Getter(mthis);
+  pointsAtX_Getter_(mthis) => mthis["pointsAtX"];
 
-  static pointsAtY_Getter(mthis) native "SVGFESpotLightElement_pointsAtY_Getter";
-  pointsAtY_Getter_(mthis) => pointsAtY_Getter(mthis);
+  pointsAtY_Getter_(mthis) => mthis["pointsAtY"];
 
-  static pointsAtZ_Getter(mthis) native "SVGFESpotLightElement_pointsAtZ_Getter";
-  pointsAtZ_Getter_(mthis) => pointsAtZ_Getter(mthis);
+  pointsAtZ_Getter_(mthis) => mthis["pointsAtZ"];
 
-  static specularExponent_Getter(mthis) native "SVGFESpotLightElement_specularExponent_Getter";
-  specularExponent_Getter_(mthis) => specularExponent_Getter(mthis);
+  specularExponent_Getter_(mthis) => mthis["specularExponent"];
 
-  static x_Getter(mthis) native "SVGFESpotLightElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFESpotLightElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static z_Getter(mthis) native "SVGFESpotLightElement_z_Getter";
-  z_Getter_(mthis) => z_Getter(mthis);
+  z_Getter_(mthis) => mthis["z"];
 
 }
 
 class BlinkSVGFETileElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFETileElement();
 
-  static height_Getter(mthis) native "SVGFETileElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static in1_Getter(mthis) native "SVGFETileElement_in1_Getter";
-  in1_Getter_(mthis) => in1_Getter(mthis);
+  in1_Getter_(mthis) => mthis["in1"];
 
-  static result_Getter(mthis) native "SVGFETileElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static width_Getter(mthis) native "SVGFETileElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFETileElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFETileElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFETurbulenceElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFETurbulenceElement();
 
-  static baseFrequencyX_Getter(mthis) native "SVGFETurbulenceElement_baseFrequencyX_Getter";
-  baseFrequencyX_Getter_(mthis) => baseFrequencyX_Getter(mthis);
+  baseFrequencyX_Getter_(mthis) => mthis["baseFrequencyX"];
 
-  static baseFrequencyY_Getter(mthis) native "SVGFETurbulenceElement_baseFrequencyY_Getter";
-  baseFrequencyY_Getter_(mthis) => baseFrequencyY_Getter(mthis);
+  baseFrequencyY_Getter_(mthis) => mthis["baseFrequencyY"];
 
-  static height_Getter(mthis) native "SVGFETurbulenceElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static numOctaves_Getter(mthis) native "SVGFETurbulenceElement_numOctaves_Getter";
-  numOctaves_Getter_(mthis) => numOctaves_Getter(mthis);
+  numOctaves_Getter_(mthis) => mthis["numOctaves"];
 
-  static result_Getter(mthis) native "SVGFETurbulenceElement_result_Getter";
-  result_Getter_(mthis) => result_Getter(mthis);
+  result_Getter_(mthis) => mthis["result"];
 
-  static seed_Getter(mthis) native "SVGFETurbulenceElement_seed_Getter";
-  seed_Getter_(mthis) => seed_Getter(mthis);
+  seed_Getter_(mthis) => mthis["seed"];
 
-  static stitchTiles_Getter(mthis) native "SVGFETurbulenceElement_stitchTiles_Getter";
-  stitchTiles_Getter_(mthis) => stitchTiles_Getter(mthis);
+  stitchTiles_Getter_(mthis) => mthis["stitchTiles"];
 
-  static type_Getter(mthis) native "SVGFETurbulenceElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static width_Getter(mthis) native "SVGFETurbulenceElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGFETurbulenceElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGFETurbulenceElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGFilterElement extends BlinkSVGElement {
   static final instance = new BlinkSVGFilterElement();
 
-  static filterResX_Getter(mthis) native "SVGFilterElement_filterResX_Getter";
-  filterResX_Getter_(mthis) => filterResX_Getter(mthis);
+  filterResX_Getter_(mthis) => mthis["filterResX"];
 
-  static filterResY_Getter(mthis) native "SVGFilterElement_filterResY_Getter";
-  filterResY_Getter_(mthis) => filterResY_Getter(mthis);
+  filterResY_Getter_(mthis) => mthis["filterResY"];
 
-  static filterUnits_Getter(mthis) native "SVGFilterElement_filterUnits_Getter";
-  filterUnits_Getter_(mthis) => filterUnits_Getter(mthis);
+  filterUnits_Getter_(mthis) => mthis["filterUnits"];
 
-  static height_Getter(mthis) native "SVGFilterElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static href_Getter(mthis) native "SVGFilterElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static primitiveUnits_Getter(mthis) native "SVGFilterElement_primitiveUnits_Getter";
-  primitiveUnits_Getter_(mthis) => primitiveUnits_Getter(mthis);
+  primitiveUnits_Getter_(mthis) => mthis["primitiveUnits"];
 
-  static setFilterRes_Callback_0(mthis) native "SVGFilterElement_setFilterRes_Callback";
-  setFilterRes_Callback_0_(mthis) => setFilterRes_Callback_0(mthis);
+  setFilterRes_Callback_0_(mthis) => mthis.callMethod("setFilterRes", []);
 
-  static setFilterRes_Callback_1(mthis, __arg_0) native "SVGFilterElement_setFilterRes_Callback";
-  setFilterRes_Callback_1_(mthis, __arg_0) => setFilterRes_Callback_1(mthis, __arg_0);
+  setFilterRes_Callback_1_(mthis, __arg_0) => mthis.callMethod("setFilterRes", [__arg_0]);
 
-  static setFilterRes_Callback_2(mthis, __arg_0, __arg_1) native "SVGFilterElement_setFilterRes_Callback";
-  setFilterRes_Callback_2_(mthis, __arg_0, __arg_1) => setFilterRes_Callback_2(mthis, __arg_0, __arg_1);
+  setFilterRes_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setFilterRes", [__arg_0, __arg_1]);
 
-  static setFilterRes_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGFilterElement_setFilterRes_Callback";
-  setFilterRes_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setFilterRes_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  width_Getter_(mthis) => mthis["width"];
 
-  static setFilterRes_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGFilterElement_setFilterRes_Callback";
-  setFilterRes_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setFilterRes_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Getter(mthis) native "SVGFilterElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static x_Getter(mthis) native "SVGFilterElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "SVGFilterElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
@@ -20806,17 +11626,13 @@
 class BlinkSVGForeignObjectElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGForeignObjectElement();
 
-  static height_Getter(mthis) native "SVGForeignObjectElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static width_Getter(mthis) native "SVGForeignObjectElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGForeignObjectElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGForeignObjectElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
@@ -20828,29 +11644,13 @@
 class BlinkSVGGeometryElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGGeometryElement();
 
-  static isPointInFill_Callback_0(mthis) native "SVGGeometryElement_isPointInFill_Callback";
-  isPointInFill_Callback_0_(mthis) => isPointInFill_Callback_0(mthis);
+  isPointInFill_Callback_0_(mthis) => mthis.callMethod("isPointInFill", []);
 
-  static isPointInFill_Callback_1(mthis, __arg_0) native "SVGGeometryElement_isPointInFill_Callback";
-  isPointInFill_Callback_1_(mthis, __arg_0) => isPointInFill_Callback_1(mthis, __arg_0);
+  isPointInFill_Callback_1_(mthis, __arg_0) => mthis.callMethod("isPointInFill", [__arg_0]);
 
-  static isPointInFill_Callback_2(mthis, __arg_0, __arg_1) native "SVGGeometryElement_isPointInFill_Callback";
-  isPointInFill_Callback_2_(mthis, __arg_0, __arg_1) => isPointInFill_Callback_2(mthis, __arg_0, __arg_1);
+  isPointInStroke_Callback_0_(mthis) => mthis.callMethod("isPointInStroke", []);
 
-  static isPointInFill_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGeometryElement_isPointInFill_Callback";
-  isPointInFill_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInFill_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isPointInStroke_Callback_0(mthis) native "SVGGeometryElement_isPointInStroke_Callback";
-  isPointInStroke_Callback_0_(mthis) => isPointInStroke_Callback_0(mthis);
-
-  static isPointInStroke_Callback_1(mthis, __arg_0) native "SVGGeometryElement_isPointInStroke_Callback";
-  isPointInStroke_Callback_1_(mthis, __arg_0) => isPointInStroke_Callback_1(mthis, __arg_0);
-
-  static isPointInStroke_Callback_2(mthis, __arg_0, __arg_1) native "SVGGeometryElement_isPointInStroke_Callback";
-  isPointInStroke_Callback_2_(mthis, __arg_0, __arg_1) => isPointInStroke_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGeometryElement_isPointInStroke_Callback";
-  isPointInStroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isPointInStroke_Callback_1_(mthis, __arg_0) => mthis.callMethod("isPointInStroke", [__arg_0]);
 
 }
 
@@ -20862,135 +11662,75 @@
 class BlinkSVGGlyphRefElement extends BlinkSVGElement {
   static final instance = new BlinkSVGGlyphRefElement();
 
-  static dx_Getter(mthis) native "SVGGlyphRefElement_dx_Getter";
-  dx_Getter_(mthis) => dx_Getter(mthis);
+  dx_Getter_(mthis) => mthis["dx"];
 
-  static dx_Setter(mthis, __arg_0) native "SVGGlyphRefElement_dx_Setter";
-  dx_Setter_(mthis, __arg_0) => dx_Setter(mthis, __arg_0);
+  dx_Setter_(mthis, __arg_0) => mthis["dx"] = __arg_0;
 
-  static dy_Getter(mthis) native "SVGGlyphRefElement_dy_Getter";
-  dy_Getter_(mthis) => dy_Getter(mthis);
+  dy_Getter_(mthis) => mthis["dy"];
 
-  static dy_Setter(mthis, __arg_0) native "SVGGlyphRefElement_dy_Setter";
-  dy_Setter_(mthis, __arg_0) => dy_Setter(mthis, __arg_0);
+  dy_Setter_(mthis, __arg_0) => mthis["dy"] = __arg_0;
 
-  static format_Getter(mthis) native "SVGGlyphRefElement_format_Getter";
-  format_Getter_(mthis) => format_Getter(mthis);
+  format_Getter_(mthis) => mthis["format"];
 
-  static format_Setter(mthis, __arg_0) native "SVGGlyphRefElement_format_Setter";
-  format_Setter_(mthis, __arg_0) => format_Setter(mthis, __arg_0);
+  format_Setter_(mthis, __arg_0) => mthis["format"] = __arg_0;
 
-  static glyphRef_Getter(mthis) native "SVGGlyphRefElement_glyphRef_Getter";
-  glyphRef_Getter_(mthis) => glyphRef_Getter(mthis);
+  glyphRef_Getter_(mthis) => mthis["glyphRef"];
 
-  static glyphRef_Setter(mthis, __arg_0) native "SVGGlyphRefElement_glyphRef_Setter";
-  glyphRef_Setter_(mthis, __arg_0) => glyphRef_Setter(mthis, __arg_0);
+  glyphRef_Setter_(mthis, __arg_0) => mthis["glyphRef"] = __arg_0;
 
-  static href_Getter(mthis) native "SVGGlyphRefElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static x_Getter(mthis) native "SVGGlyphRefElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGGlyphRefElement_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGGlyphRefElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGGlyphRefElement_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGGradientElement extends BlinkSVGElement {
   static final instance = new BlinkSVGGradientElement();
 
-  static gradientTransform_Getter(mthis) native "SVGGradientElement_gradientTransform_Getter";
-  gradientTransform_Getter_(mthis) => gradientTransform_Getter(mthis);
+  gradientTransform_Getter_(mthis) => mthis["gradientTransform"];
 
-  static gradientUnits_Getter(mthis) native "SVGGradientElement_gradientUnits_Getter";
-  gradientUnits_Getter_(mthis) => gradientUnits_Getter(mthis);
+  gradientUnits_Getter_(mthis) => mthis["gradientUnits"];
 
-  static href_Getter(mthis) native "SVGGradientElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static spreadMethod_Getter(mthis) native "SVGGradientElement_spreadMethod_Getter";
-  spreadMethod_Getter_(mthis) => spreadMethod_Getter(mthis);
+  spreadMethod_Getter_(mthis) => mthis["spreadMethod"];
 
 }
 
 class BlinkSVGGraphicsElement extends BlinkSVGElement {
   static final instance = new BlinkSVGGraphicsElement();
 
-  static farthestViewportElement_Getter(mthis) native "SVGGraphicsElement_farthestViewportElement_Getter";
-  farthestViewportElement_Getter_(mthis) => farthestViewportElement_Getter(mthis);
+  farthestViewportElement_Getter_(mthis) => mthis["farthestViewportElement"];
 
-  static getBBox_Callback_0(mthis) native "SVGGraphicsElement_getBBox_Callback";
-  getBBox_Callback_0_(mthis) => getBBox_Callback_0(mthis);
+  getBBox_Callback_0_(mthis) => mthis.callMethod("getBBox", []);
 
-  static getBBox_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getBBox_Callback";
-  getBBox_Callback_1_(mthis, __arg_0) => getBBox_Callback_1(mthis, __arg_0);
+  getCTM_Callback_0_(mthis) => mthis.callMethod("getCTM", []);
 
-  static getBBox_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getBBox_Callback";
-  getBBox_Callback_2_(mthis, __arg_0, __arg_1) => getBBox_Callback_2(mthis, __arg_0, __arg_1);
+  getScreenCTM_Callback_0_(mthis) => mthis.callMethod("getScreenCTM", []);
 
-  static getCTM_Callback_0(mthis) native "SVGGraphicsElement_getCTM_Callback";
-  getCTM_Callback_0_(mthis) => getCTM_Callback_0(mthis);
+  getTransformToElement_Callback_0_(mthis) => mthis.callMethod("getTransformToElement", []);
 
-  static getCTM_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getCTM_Callback";
-  getCTM_Callback_1_(mthis, __arg_0) => getCTM_Callback_1(mthis, __arg_0);
+  getTransformToElement_Callback_1_(mthis, __arg_0) => mthis.callMethod("getTransformToElement", [__arg_0]);
 
-  static getCTM_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getCTM_Callback";
-  getCTM_Callback_2_(mthis, __arg_0, __arg_1) => getCTM_Callback_2(mthis, __arg_0, __arg_1);
+  hasExtension_Callback_0_(mthis) => mthis.callMethod("hasExtension", []);
 
-  static getScreenCTM_Callback_0(mthis) native "SVGGraphicsElement_getScreenCTM_Callback";
-  getScreenCTM_Callback_0_(mthis) => getScreenCTM_Callback_0(mthis);
+  hasExtension_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasExtension", [__arg_0]);
 
-  static getScreenCTM_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getScreenCTM_Callback";
-  getScreenCTM_Callback_1_(mthis, __arg_0) => getScreenCTM_Callback_1(mthis, __arg_0);
+  nearestViewportElement_Getter_(mthis) => mthis["nearestViewportElement"];
 
-  static getScreenCTM_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getScreenCTM_Callback";
-  getScreenCTM_Callback_2_(mthis, __arg_0, __arg_1) => getScreenCTM_Callback_2(mthis, __arg_0, __arg_1);
+  requiredExtensions_Getter_(mthis) => mthis["requiredExtensions"];
 
-  static getTransformToElement_Callback_0(mthis) native "SVGGraphicsElement_getTransformToElement_Callback";
-  getTransformToElement_Callback_0_(mthis) => getTransformToElement_Callback_0(mthis);
+  requiredFeatures_Getter_(mthis) => mthis["requiredFeatures"];
 
-  static getTransformToElement_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getTransformToElement_Callback";
-  getTransformToElement_Callback_1_(mthis, __arg_0) => getTransformToElement_Callback_1(mthis, __arg_0);
+  systemLanguage_Getter_(mthis) => mthis["systemLanguage"];
 
-  static getTransformToElement_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getTransformToElement_Callback";
-  getTransformToElement_Callback_2_(mthis, __arg_0, __arg_1) => getTransformToElement_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getTransformToElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGraphicsElement_getTransformToElement_Callback";
-  getTransformToElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTransformToElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static hasExtension_Callback_0(mthis) native "SVGGraphicsElement_hasExtension_Callback";
-  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
-
-  static hasExtension_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_hasExtension_Callback";
-  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
-
-  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_hasExtension_Callback";
-  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
-
-  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGraphicsElement_hasExtension_Callback";
-  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static nearestViewportElement_Getter(mthis) native "SVGGraphicsElement_nearestViewportElement_Getter";
-  nearestViewportElement_Getter_(mthis) => nearestViewportElement_Getter(mthis);
-
-  static requiredExtensions_Getter(mthis) native "SVGGraphicsElement_requiredExtensions_Getter";
-  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
-
-  static requiredFeatures_Getter(mthis) native "SVGGraphicsElement_requiredFeatures_Getter";
-  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
-
-  static systemLanguage_Getter(mthis) native "SVGGraphicsElement_systemLanguage_Getter";
-  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
-
-  static transform_Getter(mthis) native "SVGGraphicsElement_transform_Getter";
-  transform_Getter_(mthis) => transform_Getter(mthis);
+  transform_Getter_(mthis) => mthis["transform"];
 
 }
 
@@ -21002,492 +11742,251 @@
 class BlinkSVGImageElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGImageElement();
 
-  static height_Getter(mthis) native "SVGImageElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static href_Getter(mthis) native "SVGImageElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static preserveAspectRatio_Getter(mthis) native "SVGImageElement_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static width_Getter(mthis) native "SVGImageElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGImageElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGImageElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGLength {
   static final instance = new BlinkSVGLength();
 
-  static convertToSpecifiedUnits_Callback_0(mthis) native "SVGLength_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_0_(mthis) => convertToSpecifiedUnits_Callback_0(mthis);
+  convertToSpecifiedUnits_Callback_0_(mthis) => mthis.callMethod("convertToSpecifiedUnits", []);
 
-  static convertToSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGLength_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => convertToSpecifiedUnits_Callback_1(mthis, __arg_0);
+  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => mthis.callMethod("convertToSpecifiedUnits", [__arg_0]);
 
-  static convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGLength_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+  newValueSpecifiedUnits_Callback_0_(mthis) => mthis.callMethod("newValueSpecifiedUnits", []);
 
-  static convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLength_convertToSpecifiedUnits_Callback";
-  convertToSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => mthis.callMethod("newValueSpecifiedUnits", [__arg_0]);
 
-  static newValueSpecifiedUnits_Callback_0(mthis) native "SVGLength_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_0_(mthis) => newValueSpecifiedUnits_Callback_0(mthis);
+  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("newValueSpecifiedUnits", [__arg_0, __arg_1]);
 
-  static newValueSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGLength_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => newValueSpecifiedUnits_Callback_1(mthis, __arg_0);
+  unitType_Getter_(mthis) => mthis["unitType"];
 
-  static newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGLength_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+  valueAsString_Getter_(mthis) => mthis["valueAsString"];
 
-  static newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLength_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  valueAsString_Setter_(mthis, __arg_0) => mthis["valueAsString"] = __arg_0;
 
-  static newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGLength_newValueSpecifiedUnits_Callback";
-  newValueSpecifiedUnits_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  valueInSpecifiedUnits_Getter_(mthis) => mthis["valueInSpecifiedUnits"];
 
-  static unitType_Getter(mthis) native "SVGLength_unitType_Getter";
-  unitType_Getter_(mthis) => unitType_Getter(mthis);
+  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => mthis["valueInSpecifiedUnits"] = __arg_0;
 
-  static valueAsString_Getter(mthis) native "SVGLength_valueAsString_Getter";
-  valueAsString_Getter_(mthis) => valueAsString_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static valueAsString_Setter(mthis, __arg_0) native "SVGLength_valueAsString_Setter";
-  valueAsString_Setter_(mthis, __arg_0) => valueAsString_Setter(mthis, __arg_0);
-
-  static valueInSpecifiedUnits_Getter(mthis) native "SVGLength_valueInSpecifiedUnits_Getter";
-  valueInSpecifiedUnits_Getter_(mthis) => valueInSpecifiedUnits_Getter(mthis);
-
-  static valueInSpecifiedUnits_Setter(mthis, __arg_0) native "SVGLength_valueInSpecifiedUnits_Setter";
-  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => valueInSpecifiedUnits_Setter(mthis, __arg_0);
-
-  static value_Getter(mthis) native "SVGLength_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
-
-  static value_Setter(mthis, __arg_0) native "SVGLength_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkSVGLengthList {
   static final instance = new BlinkSVGLengthList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SVGLengthList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static appendItem_Callback_0(mthis) native "SVGLengthList_appendItem_Callback";
-  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+  appendItem_Callback_0_(mthis) => mthis.callMethod("appendItem", []);
 
-  static appendItem_Callback_1(mthis, __arg_0) native "SVGLengthList_appendItem_Callback";
-  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+  appendItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendItem", [__arg_0]);
 
-  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_appendItem_Callback";
-  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_appendItem_Callback";
-  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getItem_Callback_0_(mthis) => mthis.callMethod("getItem", []);
 
-  static clear_Callback_0(mthis) native "SVGLengthList_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  getItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getItem", [__arg_0]);
 
-  static clear_Callback_1(mthis, __arg_0) native "SVGLengthList_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  initialize_Callback_0_(mthis) => mthis.callMethod("initialize", []);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  initialize_Callback_1_(mthis, __arg_0) => mthis.callMethod("initialize", [__arg_0]);
 
-  static getItem_Callback_0(mthis) native "SVGLengthList_getItem_Callback";
-  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+  insertItemBefore_Callback_0_(mthis) => mthis.callMethod("insertItemBefore", []);
 
-  static getItem_Callback_1(mthis, __arg_0) native "SVGLengthList_getItem_Callback";
-  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertItemBefore", [__arg_0]);
 
-  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_getItem_Callback";
-  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertItemBefore", [__arg_0, __arg_1]);
 
-  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_getItem_Callback";
-  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  length_Getter_(mthis) => mthis["length"];
 
-  static initialize_Callback_0(mthis) native "SVGLengthList_initialize_Callback";
-  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+  numberOfItems_Getter_(mthis) => mthis["numberOfItems"];
 
-  static initialize_Callback_1(mthis, __arg_0) native "SVGLengthList_initialize_Callback";
-  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+  removeItem_Callback_0_(mthis) => mthis.callMethod("removeItem", []);
 
-  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_initialize_Callback";
-  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+  removeItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeItem", [__arg_0]);
 
-  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_initialize_Callback";
-  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceItem_Callback_0_(mthis) => mthis.callMethod("replaceItem", []);
 
-  static insertItemBefore_Callback_0(mthis) native "SVGLengthList_insertItemBefore_Callback";
-  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+  replaceItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceItem", [__arg_0]);
 
-  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGLengthList_insertItemBefore_Callback";
-  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
-
-  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_insertItemBefore_Callback";
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_insertItemBefore_Callback";
-  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGLengthList_insertItemBefore_Callback";
-  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static length_Getter(mthis) native "SVGLengthList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static numberOfItems_Getter(mthis) native "SVGLengthList_numberOfItems_Getter";
-  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
-
-  static removeItem_Callback_0(mthis) native "SVGLengthList_removeItem_Callback";
-  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
-
-  static removeItem_Callback_1(mthis, __arg_0) native "SVGLengthList_removeItem_Callback";
-  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
-
-  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_removeItem_Callback";
-  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_removeItem_Callback";
-  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_0(mthis) native "SVGLengthList_replaceItem_Callback";
-  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
-
-  static replaceItem_Callback_1(mthis, __arg_0) native "SVGLengthList_replaceItem_Callback";
-  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
-
-  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_replaceItem_Callback";
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_replaceItem_Callback";
-  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGLengthList_replaceItem_Callback";
-  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGLineElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGLineElement();
 
-  static x1_Getter(mthis) native "SVGLineElement_x1_Getter";
-  x1_Getter_(mthis) => x1_Getter(mthis);
+  x1_Getter_(mthis) => mthis["x1"];
 
-  static x2_Getter(mthis) native "SVGLineElement_x2_Getter";
-  x2_Getter_(mthis) => x2_Getter(mthis);
+  x2_Getter_(mthis) => mthis["x2"];
 
-  static y1_Getter(mthis) native "SVGLineElement_y1_Getter";
-  y1_Getter_(mthis) => y1_Getter(mthis);
+  y1_Getter_(mthis) => mthis["y1"];
 
-  static y2_Getter(mthis) native "SVGLineElement_y2_Getter";
-  y2_Getter_(mthis) => y2_Getter(mthis);
+  y2_Getter_(mthis) => mthis["y2"];
 
 }
 
 class BlinkSVGLinearGradientElement extends BlinkSVGGradientElement {
   static final instance = new BlinkSVGLinearGradientElement();
 
-  static x1_Getter(mthis) native "SVGLinearGradientElement_x1_Getter";
-  x1_Getter_(mthis) => x1_Getter(mthis);
+  x1_Getter_(mthis) => mthis["x1"];
 
-  static x2_Getter(mthis) native "SVGLinearGradientElement_x2_Getter";
-  x2_Getter_(mthis) => x2_Getter(mthis);
+  x2_Getter_(mthis) => mthis["x2"];
 
-  static y1_Getter(mthis) native "SVGLinearGradientElement_y1_Getter";
-  y1_Getter_(mthis) => y1_Getter(mthis);
+  y1_Getter_(mthis) => mthis["y1"];
 
-  static y2_Getter(mthis) native "SVGLinearGradientElement_y2_Getter";
-  y2_Getter_(mthis) => y2_Getter(mthis);
+  y2_Getter_(mthis) => mthis["y2"];
 
 }
 
 class BlinkSVGMPathElement extends BlinkSVGElement {
   static final instance = new BlinkSVGMPathElement();
 
-  static href_Getter(mthis) native "SVGMPathElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
 }
 
 class BlinkSVGMarkerElement extends BlinkSVGElement {
   static final instance = new BlinkSVGMarkerElement();
 
-  static markerHeight_Getter(mthis) native "SVGMarkerElement_markerHeight_Getter";
-  markerHeight_Getter_(mthis) => markerHeight_Getter(mthis);
+  markerHeight_Getter_(mthis) => mthis["markerHeight"];
 
-  static markerUnits_Getter(mthis) native "SVGMarkerElement_markerUnits_Getter";
-  markerUnits_Getter_(mthis) => markerUnits_Getter(mthis);
+  markerUnits_Getter_(mthis) => mthis["markerUnits"];
 
-  static markerWidth_Getter(mthis) native "SVGMarkerElement_markerWidth_Getter";
-  markerWidth_Getter_(mthis) => markerWidth_Getter(mthis);
+  markerWidth_Getter_(mthis) => mthis["markerWidth"];
 
-  static orientAngle_Getter(mthis) native "SVGMarkerElement_orientAngle_Getter";
-  orientAngle_Getter_(mthis) => orientAngle_Getter(mthis);
+  orientAngle_Getter_(mthis) => mthis["orientAngle"];
 
-  static orientType_Getter(mthis) native "SVGMarkerElement_orientType_Getter";
-  orientType_Getter_(mthis) => orientType_Getter(mthis);
+  orientType_Getter_(mthis) => mthis["orientType"];
 
-  static preserveAspectRatio_Getter(mthis) native "SVGMarkerElement_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static refX_Getter(mthis) native "SVGMarkerElement_refX_Getter";
-  refX_Getter_(mthis) => refX_Getter(mthis);
+  refX_Getter_(mthis) => mthis["refX"];
 
-  static refY_Getter(mthis) native "SVGMarkerElement_refY_Getter";
-  refY_Getter_(mthis) => refY_Getter(mthis);
+  refY_Getter_(mthis) => mthis["refY"];
 
-  static setOrientToAngle_Callback_0(mthis) native "SVGMarkerElement_setOrientToAngle_Callback";
-  setOrientToAngle_Callback_0_(mthis) => setOrientToAngle_Callback_0(mthis);
+  setOrientToAngle_Callback_0_(mthis) => mthis.callMethod("setOrientToAngle", []);
 
-  static setOrientToAngle_Callback_1(mthis, __arg_0) native "SVGMarkerElement_setOrientToAngle_Callback";
-  setOrientToAngle_Callback_1_(mthis, __arg_0) => setOrientToAngle_Callback_1(mthis, __arg_0);
+  setOrientToAngle_Callback_1_(mthis, __arg_0) => mthis.callMethod("setOrientToAngle", [__arg_0]);
 
-  static setOrientToAngle_Callback_2(mthis, __arg_0, __arg_1) native "SVGMarkerElement_setOrientToAngle_Callback";
-  setOrientToAngle_Callback_2_(mthis, __arg_0, __arg_1) => setOrientToAngle_Callback_2(mthis, __arg_0, __arg_1);
+  setOrientToAuto_Callback_0_(mthis) => mthis.callMethod("setOrientToAuto", []);
 
-  static setOrientToAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMarkerElement_setOrientToAngle_Callback";
-  setOrientToAngle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setOrientToAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setOrientToAuto_Callback_0(mthis) native "SVGMarkerElement_setOrientToAuto_Callback";
-  setOrientToAuto_Callback_0_(mthis) => setOrientToAuto_Callback_0(mthis);
-
-  static setOrientToAuto_Callback_1(mthis, __arg_0) native "SVGMarkerElement_setOrientToAuto_Callback";
-  setOrientToAuto_Callback_1_(mthis, __arg_0) => setOrientToAuto_Callback_1(mthis, __arg_0);
-
-  static setOrientToAuto_Callback_2(mthis, __arg_0, __arg_1) native "SVGMarkerElement_setOrientToAuto_Callback";
-  setOrientToAuto_Callback_2_(mthis, __arg_0, __arg_1) => setOrientToAuto_Callback_2(mthis, __arg_0, __arg_1);
-
-  static viewBox_Getter(mthis) native "SVGMarkerElement_viewBox_Getter";
-  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+  viewBox_Getter_(mthis) => mthis["viewBox"];
 
 }
 
 class BlinkSVGMaskElement extends BlinkSVGElement {
   static final instance = new BlinkSVGMaskElement();
 
-  static hasExtension_Callback_0(mthis) native "SVGMaskElement_hasExtension_Callback";
-  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+  hasExtension_Callback_0_(mthis) => mthis.callMethod("hasExtension", []);
 
-  static hasExtension_Callback_1(mthis, __arg_0) native "SVGMaskElement_hasExtension_Callback";
-  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+  hasExtension_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasExtension", [__arg_0]);
 
-  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGMaskElement_hasExtension_Callback";
-  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+  height_Getter_(mthis) => mthis["height"];
 
-  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMaskElement_hasExtension_Callback";
-  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  maskContentUnits_Getter_(mthis) => mthis["maskContentUnits"];
 
-  static height_Getter(mthis) native "SVGMaskElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  maskUnits_Getter_(mthis) => mthis["maskUnits"];
 
-  static maskContentUnits_Getter(mthis) native "SVGMaskElement_maskContentUnits_Getter";
-  maskContentUnits_Getter_(mthis) => maskContentUnits_Getter(mthis);
+  requiredExtensions_Getter_(mthis) => mthis["requiredExtensions"];
 
-  static maskUnits_Getter(mthis) native "SVGMaskElement_maskUnits_Getter";
-  maskUnits_Getter_(mthis) => maskUnits_Getter(mthis);
+  requiredFeatures_Getter_(mthis) => mthis["requiredFeatures"];
 
-  static requiredExtensions_Getter(mthis) native "SVGMaskElement_requiredExtensions_Getter";
-  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
+  systemLanguage_Getter_(mthis) => mthis["systemLanguage"];
 
-  static requiredFeatures_Getter(mthis) native "SVGMaskElement_requiredFeatures_Getter";
-  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static systemLanguage_Getter(mthis) native "SVGMaskElement_systemLanguage_Getter";
-  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Getter(mthis) native "SVGMaskElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static x_Getter(mthis) native "SVGMaskElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "SVGMaskElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGMatrix {
   static final instance = new BlinkSVGMatrix();
 
-  static a_Getter(mthis) native "SVGMatrix_a_Getter";
-  a_Getter_(mthis) => a_Getter(mthis);
+  a_Getter_(mthis) => mthis["a"];
 
-  static a_Setter(mthis, __arg_0) native "SVGMatrix_a_Setter";
-  a_Setter_(mthis, __arg_0) => a_Setter(mthis, __arg_0);
+  a_Setter_(mthis, __arg_0) => mthis["a"] = __arg_0;
 
-  static b_Getter(mthis) native "SVGMatrix_b_Getter";
-  b_Getter_(mthis) => b_Getter(mthis);
+  b_Getter_(mthis) => mthis["b"];
 
-  static b_Setter(mthis, __arg_0) native "SVGMatrix_b_Setter";
-  b_Setter_(mthis, __arg_0) => b_Setter(mthis, __arg_0);
+  b_Setter_(mthis, __arg_0) => mthis["b"] = __arg_0;
 
-  static c_Getter(mthis) native "SVGMatrix_c_Getter";
-  c_Getter_(mthis) => c_Getter(mthis);
+  c_Getter_(mthis) => mthis["c"];
 
-  static c_Setter(mthis, __arg_0) native "SVGMatrix_c_Setter";
-  c_Setter_(mthis, __arg_0) => c_Setter(mthis, __arg_0);
+  c_Setter_(mthis, __arg_0) => mthis["c"] = __arg_0;
 
-  static d_Getter(mthis) native "SVGMatrix_d_Getter";
-  d_Getter_(mthis) => d_Getter(mthis);
+  d_Getter_(mthis) => mthis["d"];
 
-  static d_Setter(mthis, __arg_0) native "SVGMatrix_d_Setter";
-  d_Setter_(mthis, __arg_0) => d_Setter(mthis, __arg_0);
+  d_Setter_(mthis, __arg_0) => mthis["d"] = __arg_0;
 
-  static e_Getter(mthis) native "SVGMatrix_e_Getter";
-  e_Getter_(mthis) => e_Getter(mthis);
+  e_Getter_(mthis) => mthis["e"];
 
-  static e_Setter(mthis, __arg_0) native "SVGMatrix_e_Setter";
-  e_Setter_(mthis, __arg_0) => e_Setter(mthis, __arg_0);
+  e_Setter_(mthis, __arg_0) => mthis["e"] = __arg_0;
 
-  static f_Getter(mthis) native "SVGMatrix_f_Getter";
-  f_Getter_(mthis) => f_Getter(mthis);
+  f_Getter_(mthis) => mthis["f"];
 
-  static f_Setter(mthis, __arg_0) native "SVGMatrix_f_Setter";
-  f_Setter_(mthis, __arg_0) => f_Setter(mthis, __arg_0);
+  f_Setter_(mthis, __arg_0) => mthis["f"] = __arg_0;
 
-  static flipX_Callback_0(mthis) native "SVGMatrix_flipX_Callback";
-  flipX_Callback_0_(mthis) => flipX_Callback_0(mthis);
+  flipX_Callback_0_(mthis) => mthis.callMethod("flipX", []);
 
-  static flipX_Callback_1(mthis, __arg_0) native "SVGMatrix_flipX_Callback";
-  flipX_Callback_1_(mthis, __arg_0) => flipX_Callback_1(mthis, __arg_0);
+  flipY_Callback_0_(mthis) => mthis.callMethod("flipY", []);
 
-  static flipX_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_flipX_Callback";
-  flipX_Callback_2_(mthis, __arg_0, __arg_1) => flipX_Callback_2(mthis, __arg_0, __arg_1);
+  inverse_Callback_0_(mthis) => mthis.callMethod("inverse", []);
 
-  static flipY_Callback_0(mthis) native "SVGMatrix_flipY_Callback";
-  flipY_Callback_0_(mthis) => flipY_Callback_0(mthis);
+  multiply_Callback_0_(mthis) => mthis.callMethod("multiply", []);
 
-  static flipY_Callback_1(mthis, __arg_0) native "SVGMatrix_flipY_Callback";
-  flipY_Callback_1_(mthis, __arg_0) => flipY_Callback_1(mthis, __arg_0);
+  multiply_Callback_1_(mthis, __arg_0) => mthis.callMethod("multiply", [__arg_0]);
 
-  static flipY_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_flipY_Callback";
-  flipY_Callback_2_(mthis, __arg_0, __arg_1) => flipY_Callback_2(mthis, __arg_0, __arg_1);
+  rotateFromVector_Callback_0_(mthis) => mthis.callMethod("rotateFromVector", []);
 
-  static inverse_Callback_0(mthis) native "SVGMatrix_inverse_Callback";
-  inverse_Callback_0_(mthis) => inverse_Callback_0(mthis);
+  rotateFromVector_Callback_1_(mthis, __arg_0) => mthis.callMethod("rotateFromVector", [__arg_0]);
 
-  static inverse_Callback_1(mthis, __arg_0) native "SVGMatrix_inverse_Callback";
-  inverse_Callback_1_(mthis, __arg_0) => inverse_Callback_1(mthis, __arg_0);
+  rotateFromVector_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("rotateFromVector", [__arg_0, __arg_1]);
 
-  static inverse_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_inverse_Callback";
-  inverse_Callback_2_(mthis, __arg_0, __arg_1) => inverse_Callback_2(mthis, __arg_0, __arg_1);
+  rotate_Callback_0_(mthis) => mthis.callMethod("rotate", []);
 
-  static multiply_Callback_0(mthis) native "SVGMatrix_multiply_Callback";
-  multiply_Callback_0_(mthis) => multiply_Callback_0(mthis);
+  rotate_Callback_1_(mthis, __arg_0) => mthis.callMethod("rotate", [__arg_0]);
 
-  static multiply_Callback_1(mthis, __arg_0) native "SVGMatrix_multiply_Callback";
-  multiply_Callback_1_(mthis, __arg_0) => multiply_Callback_1(mthis, __arg_0);
+  scaleNonUniform_Callback_0_(mthis) => mthis.callMethod("scaleNonUniform", []);
 
-  static multiply_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_multiply_Callback";
-  multiply_Callback_2_(mthis, __arg_0, __arg_1) => multiply_Callback_2(mthis, __arg_0, __arg_1);
+  scaleNonUniform_Callback_1_(mthis, __arg_0) => mthis.callMethod("scaleNonUniform", [__arg_0]);
 
-  static multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_multiply_Callback";
-  multiply_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scaleNonUniform", [__arg_0, __arg_1]);
 
-  static rotateFromVector_Callback_0(mthis) native "SVGMatrix_rotateFromVector_Callback";
-  rotateFromVector_Callback_0_(mthis) => rotateFromVector_Callback_0(mthis);
+  scale_Callback_0_(mthis) => mthis.callMethod("scale", []);
 
-  static rotateFromVector_Callback_1(mthis, __arg_0) native "SVGMatrix_rotateFromVector_Callback";
-  rotateFromVector_Callback_1_(mthis, __arg_0) => rotateFromVector_Callback_1(mthis, __arg_0);
+  scale_Callback_1_(mthis, __arg_0) => mthis.callMethod("scale", [__arg_0]);
 
-  static rotateFromVector_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_rotateFromVector_Callback";
-  rotateFromVector_Callback_2_(mthis, __arg_0, __arg_1) => rotateFromVector_Callback_2(mthis, __arg_0, __arg_1);
+  skewX_Callback_0_(mthis) => mthis.callMethod("skewX", []);
 
-  static rotateFromVector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_rotateFromVector_Callback";
-  rotateFromVector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotateFromVector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  skewX_Callback_1_(mthis, __arg_0) => mthis.callMethod("skewX", [__arg_0]);
 
-  static rotateFromVector_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGMatrix_rotateFromVector_Callback";
-  rotateFromVector_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rotateFromVector_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  skewY_Callback_0_(mthis) => mthis.callMethod("skewY", []);
 
-  static rotate_Callback_0(mthis) native "SVGMatrix_rotate_Callback";
-  rotate_Callback_0_(mthis) => rotate_Callback_0(mthis);
+  skewY_Callback_1_(mthis, __arg_0) => mthis.callMethod("skewY", [__arg_0]);
 
-  static rotate_Callback_1(mthis, __arg_0) native "SVGMatrix_rotate_Callback";
-  rotate_Callback_1_(mthis, __arg_0) => rotate_Callback_1(mthis, __arg_0);
+  translate_Callback_0_(mthis) => mthis.callMethod("translate", []);
 
-  static rotate_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_rotate_Callback";
-  rotate_Callback_2_(mthis, __arg_0, __arg_1) => rotate_Callback_2(mthis, __arg_0, __arg_1);
+  translate_Callback_1_(mthis, __arg_0) => mthis.callMethod("translate", [__arg_0]);
 
-  static rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_rotate_Callback";
-  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static scaleNonUniform_Callback_0(mthis) native "SVGMatrix_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_0_(mthis) => scaleNonUniform_Callback_0(mthis);
-
-  static scaleNonUniform_Callback_1(mthis, __arg_0) native "SVGMatrix_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_1_(mthis, __arg_0) => scaleNonUniform_Callback_1(mthis, __arg_0);
-
-  static scaleNonUniform_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => scaleNonUniform_Callback_2(mthis, __arg_0, __arg_1);
-
-  static scaleNonUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scaleNonUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static scaleNonUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGMatrix_scaleNonUniform_Callback";
-  scaleNonUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scaleNonUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static scale_Callback_0(mthis) native "SVGMatrix_scale_Callback";
-  scale_Callback_0_(mthis) => scale_Callback_0(mthis);
-
-  static scale_Callback_1(mthis, __arg_0) native "SVGMatrix_scale_Callback";
-  scale_Callback_1_(mthis, __arg_0) => scale_Callback_1(mthis, __arg_0);
-
-  static scale_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_scale_Callback";
-  scale_Callback_2_(mthis, __arg_0, __arg_1) => scale_Callback_2(mthis, __arg_0, __arg_1);
-
-  static scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_scale_Callback";
-  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static skewX_Callback_0(mthis) native "SVGMatrix_skewX_Callback";
-  skewX_Callback_0_(mthis) => skewX_Callback_0(mthis);
-
-  static skewX_Callback_1(mthis, __arg_0) native "SVGMatrix_skewX_Callback";
-  skewX_Callback_1_(mthis, __arg_0) => skewX_Callback_1(mthis, __arg_0);
-
-  static skewX_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_skewX_Callback";
-  skewX_Callback_2_(mthis, __arg_0, __arg_1) => skewX_Callback_2(mthis, __arg_0, __arg_1);
-
-  static skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_skewX_Callback";
-  skewX_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static skewY_Callback_0(mthis) native "SVGMatrix_skewY_Callback";
-  skewY_Callback_0_(mthis) => skewY_Callback_0(mthis);
-
-  static skewY_Callback_1(mthis, __arg_0) native "SVGMatrix_skewY_Callback";
-  skewY_Callback_1_(mthis, __arg_0) => skewY_Callback_1(mthis, __arg_0);
-
-  static skewY_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_skewY_Callback";
-  skewY_Callback_2_(mthis, __arg_0, __arg_1) => skewY_Callback_2(mthis, __arg_0, __arg_1);
-
-  static skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_skewY_Callback";
-  skewY_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static translate_Callback_0(mthis) native "SVGMatrix_translate_Callback";
-  translate_Callback_0_(mthis) => translate_Callback_0(mthis);
-
-  static translate_Callback_1(mthis, __arg_0) native "SVGMatrix_translate_Callback";
-  translate_Callback_1_(mthis, __arg_0) => translate_Callback_1(mthis, __arg_0);
-
-  static translate_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_translate_Callback";
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => translate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_translate_Callback";
-  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGMatrix_translate_Callback";
-  translate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("translate", [__arg_0, __arg_1]);
 
 }
 
@@ -21504,540 +12003,254 @@
 class BlinkSVGNumber {
   static final instance = new BlinkSVGNumber();
 
-  static value_Getter(mthis) native "SVGNumber_value_Getter";
-  value_Getter_(mthis) => value_Getter(mthis);
+  value_Getter_(mthis) => mthis["value"];
 
-  static value_Setter(mthis, __arg_0) native "SVGNumber_value_Setter";
-  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+  value_Setter_(mthis, __arg_0) => mthis["value"] = __arg_0;
 
 }
 
 class BlinkSVGNumberList {
   static final instance = new BlinkSVGNumberList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SVGNumberList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static appendItem_Callback_0(mthis) native "SVGNumberList_appendItem_Callback";
-  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+  appendItem_Callback_0_(mthis) => mthis.callMethod("appendItem", []);
 
-  static appendItem_Callback_1(mthis, __arg_0) native "SVGNumberList_appendItem_Callback";
-  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+  appendItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendItem", [__arg_0]);
 
-  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_appendItem_Callback";
-  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_appendItem_Callback";
-  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getItem_Callback_0_(mthis) => mthis.callMethod("getItem", []);
 
-  static clear_Callback_0(mthis) native "SVGNumberList_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  getItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getItem", [__arg_0]);
 
-  static clear_Callback_1(mthis, __arg_0) native "SVGNumberList_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  initialize_Callback_0_(mthis) => mthis.callMethod("initialize", []);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  initialize_Callback_1_(mthis, __arg_0) => mthis.callMethod("initialize", [__arg_0]);
 
-  static getItem_Callback_0(mthis) native "SVGNumberList_getItem_Callback";
-  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+  insertItemBefore_Callback_0_(mthis) => mthis.callMethod("insertItemBefore", []);
 
-  static getItem_Callback_1(mthis, __arg_0) native "SVGNumberList_getItem_Callback";
-  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertItemBefore", [__arg_0]);
 
-  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_getItem_Callback";
-  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertItemBefore", [__arg_0, __arg_1]);
 
-  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_getItem_Callback";
-  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  length_Getter_(mthis) => mthis["length"];
 
-  static initialize_Callback_0(mthis) native "SVGNumberList_initialize_Callback";
-  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+  numberOfItems_Getter_(mthis) => mthis["numberOfItems"];
 
-  static initialize_Callback_1(mthis, __arg_0) native "SVGNumberList_initialize_Callback";
-  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+  removeItem_Callback_0_(mthis) => mthis.callMethod("removeItem", []);
 
-  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_initialize_Callback";
-  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+  removeItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeItem", [__arg_0]);
 
-  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_initialize_Callback";
-  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceItem_Callback_0_(mthis) => mthis.callMethod("replaceItem", []);
 
-  static insertItemBefore_Callback_0(mthis) native "SVGNumberList_insertItemBefore_Callback";
-  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+  replaceItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceItem", [__arg_0]);
 
-  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGNumberList_insertItemBefore_Callback";
-  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
-
-  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_insertItemBefore_Callback";
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_insertItemBefore_Callback";
-  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGNumberList_insertItemBefore_Callback";
-  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static length_Getter(mthis) native "SVGNumberList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static numberOfItems_Getter(mthis) native "SVGNumberList_numberOfItems_Getter";
-  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
-
-  static removeItem_Callback_0(mthis) native "SVGNumberList_removeItem_Callback";
-  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
-
-  static removeItem_Callback_1(mthis, __arg_0) native "SVGNumberList_removeItem_Callback";
-  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
-
-  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_removeItem_Callback";
-  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_removeItem_Callback";
-  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_0(mthis) native "SVGNumberList_replaceItem_Callback";
-  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
-
-  static replaceItem_Callback_1(mthis, __arg_0) native "SVGNumberList_replaceItem_Callback";
-  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
-
-  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_replaceItem_Callback";
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_replaceItem_Callback";
-  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGNumberList_replaceItem_Callback";
-  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGPathElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGPathElement();
 
-  static animatedNormalizedPathSegList_Getter(mthis) native "SVGPathElement_animatedNormalizedPathSegList_Getter";
-  animatedNormalizedPathSegList_Getter_(mthis) => animatedNormalizedPathSegList_Getter(mthis);
+  animatedNormalizedPathSegList_Getter_(mthis) => mthis["animatedNormalizedPathSegList"];
 
-  static animatedPathSegList_Getter(mthis) native "SVGPathElement_animatedPathSegList_Getter";
-  animatedPathSegList_Getter_(mthis) => animatedPathSegList_Getter(mthis);
+  animatedPathSegList_Getter_(mthis) => mthis["animatedPathSegList"];
 
-  static createSVGPathSegArcAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
-  createSVGPathSegArcAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegArcAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegArcAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("createSVGPathSegArcAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createSVGPathSegArcAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
-  createSVGPathSegArcAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegArcAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegArcAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("createSVGPathSegArcAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static createSVGPathSegArcAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
-  createSVGPathSegArcAbs_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegArcAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  createSVGPathSegArcAbs_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("createSVGPathSegArcAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static createSVGPathSegArcAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
-  createSVGPathSegArcAbs_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegArcAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  createSVGPathSegArcRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("createSVGPathSegArcRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createSVGPathSegArcAbs_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
-  createSVGPathSegArcAbs_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => createSVGPathSegArcAbs_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  createSVGPathSegArcRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("createSVGPathSegArcRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static createSVGPathSegArcRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegArcRel_Callback";
-  createSVGPathSegArcRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegArcRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegArcRel_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("createSVGPathSegArcRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static createSVGPathSegArcRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegArcRel_Callback";
-  createSVGPathSegArcRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegArcRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegClosePath_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegClosePath", []);
 
-  static createSVGPathSegArcRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegArcRel_Callback";
-  createSVGPathSegArcRel_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegArcRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  createSVGPathSegCurvetoCubicAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createSVGPathSegArcRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegArcRel_Callback";
-  createSVGPathSegArcRel_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegArcRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  createSVGPathSegCurvetoCubicAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createSVGPathSegArcRel_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "SVGPathElement_createSVGPathSegArcRel_Callback";
-  createSVGPathSegArcRel_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => createSVGPathSegArcRel_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  createSVGPathSegCurvetoCubicAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("createSVGPathSegCurvetoCubicAbs", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static createSVGPathSegClosePath_Callback_0(mthis) native "SVGPathElement_createSVGPathSegClosePath_Callback";
-  createSVGPathSegClosePath_Callback_0_(mthis) => createSVGPathSegClosePath_Callback_0(mthis);
+  createSVGPathSegCurvetoCubicRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createSVGPathSegClosePath_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegClosePath_Callback";
-  createSVGPathSegClosePath_Callback_1_(mthis, __arg_0) => createSVGPathSegClosePath_Callback_1(mthis, __arg_0);
+  createSVGPathSegCurvetoCubicRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createSVGPathSegClosePath_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegClosePath_Callback";
-  createSVGPathSegClosePath_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegClosePath_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGPathSegCurvetoCubicRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("createSVGPathSegCurvetoCubicRel", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static createSVGPathSegCurvetoCubicAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
-  createSVGPathSegCurvetoCubicAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoCubicAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
-  createSVGPathSegCurvetoCubicAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1, __arg_2]);
 
-  static createSVGPathSegCurvetoCubicAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
-  createSVGPathSegCurvetoCubicAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createSVGPathSegCurvetoCubicSmoothAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createSVGPathSegCurvetoCubicAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
-  createSVGPathSegCurvetoCubicAbs_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegCurvetoCubicAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoCubicAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
-  createSVGPathSegCurvetoCubicAbs_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegCurvetoCubicAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1, __arg_2]);
 
-  static createSVGPathSegCurvetoCubicRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
-  createSVGPathSegCurvetoCubicRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createSVGPathSegCurvetoCubicSmoothRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createSVGPathSegCurvetoCubicRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
-  createSVGPathSegCurvetoCubicRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegCurvetoQuadraticAbs_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoCubicRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
-  createSVGPathSegCurvetoCubicRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegCurvetoQuadraticAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1, __arg_2]);
 
-  static createSVGPathSegCurvetoCubicRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
-  createSVGPathSegCurvetoCubicRel_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegCurvetoCubicRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  createSVGPathSegCurvetoQuadraticAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createSVGPathSegCurvetoQuadraticAbs", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createSVGPathSegCurvetoCubicRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
-  createSVGPathSegCurvetoCubicRel_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegCurvetoCubicRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  createSVGPathSegCurvetoQuadraticRel_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGPathSegCurvetoQuadraticRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1, __arg_2]);
 
-  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createSVGPathSegCurvetoQuadraticRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createSVGPathSegCurvetoQuadraticRel", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegCurvetoQuadraticSmoothAbs", []);
 
-  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegCurvetoQuadraticSmoothAbs", [__arg_0]);
 
-  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
-  createSVGPathSegCurvetoCubicSmoothAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegCurvetoQuadraticSmoothAbs", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoCubicSmoothRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoCubicSmoothRel_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegCurvetoQuadraticSmoothRel", []);
 
-  static createSVGPathSegCurvetoCubicSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoCubicSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegCurvetoQuadraticSmoothRel", [__arg_0]);
 
-  static createSVGPathSegCurvetoCubicSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegCurvetoQuadraticSmoothRel", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoCubicSmoothRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicSmoothRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegLinetoAbs_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegLinetoAbs", []);
 
-  static createSVGPathSegCurvetoCubicSmoothRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
-  createSVGPathSegCurvetoCubicSmoothRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicSmoothRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegLinetoAbs_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegLinetoAbs", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
-  createSVGPathSegCurvetoQuadraticAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticAbs_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGPathSegLinetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegLinetoAbs", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoQuadraticAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
-  createSVGPathSegCurvetoQuadraticAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createSVGPathSegLinetoHorizontalAbs_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegLinetoHorizontalAbs", []);
 
-  static createSVGPathSegCurvetoQuadraticAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
-  createSVGPathSegCurvetoQuadraticAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGPathSegLinetoHorizontalAbs_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegLinetoHorizontalAbs", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
-  createSVGPathSegCurvetoQuadraticAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoQuadraticAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegLinetoHorizontalRel_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegLinetoHorizontalRel", []);
 
-  static createSVGPathSegCurvetoQuadraticAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
-  createSVGPathSegCurvetoQuadraticAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoQuadraticAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegLinetoHorizontalRel_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegLinetoHorizontalRel", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
-  createSVGPathSegCurvetoQuadraticRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticRel_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGPathSegLinetoRel_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegLinetoRel", []);
 
-  static createSVGPathSegCurvetoQuadraticRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
-  createSVGPathSegCurvetoQuadraticRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createSVGPathSegLinetoRel_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegLinetoRel", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
-  createSVGPathSegCurvetoQuadraticRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGPathSegLinetoRel_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegLinetoRel", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoQuadraticRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
-  createSVGPathSegCurvetoQuadraticRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoQuadraticRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  createSVGPathSegLinetoVerticalAbs_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegLinetoVerticalAbs", []);
 
-  static createSVGPathSegCurvetoQuadraticRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
-  createSVGPathSegCurvetoQuadraticRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoQuadraticRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  createSVGPathSegLinetoVerticalAbs_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegLinetoVerticalAbs", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0_(mthis) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0(mthis);
+  createSVGPathSegLinetoVerticalRel_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegLinetoVerticalRel", []);
 
-  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1(mthis, __arg_0);
+  createSVGPathSegLinetoVerticalRel_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegLinetoVerticalRel", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGPathSegMovetoAbs_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegMovetoAbs", []);
 
-  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createSVGPathSegMovetoAbs_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegMovetoAbs", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGPathSegMovetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegMovetoAbs", [__arg_0, __arg_1]);
 
-  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0_(mthis) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0(mthis);
+  createSVGPathSegMovetoRel_Callback_0_(mthis) => mthis.callMethod("createSVGPathSegMovetoRel", []);
 
-  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1_(mthis, __arg_0) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1(mthis, __arg_0);
+  createSVGPathSegMovetoRel_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGPathSegMovetoRel", [__arg_0]);
 
-  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
-  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static createSVGPathSegLinetoAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
-  createSVGPathSegLinetoAbs_Callback_0_(mthis) => createSVGPathSegLinetoAbs_Callback_0(mthis);
-
-  static createSVGPathSegLinetoAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
-  createSVGPathSegLinetoAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoAbs_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegLinetoAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
-  createSVGPathSegLinetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoAbs_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegLinetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
-  createSVGPathSegLinetoAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegLinetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
-  createSVGPathSegLinetoAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegLinetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static createSVGPathSegLinetoHorizontalAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
-  createSVGPathSegLinetoHorizontalAbs_Callback_0_(mthis) => createSVGPathSegLinetoHorizontalAbs_Callback_0(mthis);
-
-  static createSVGPathSegLinetoHorizontalAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
-  createSVGPathSegLinetoHorizontalAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoHorizontalAbs_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegLinetoHorizontalAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
-  createSVGPathSegLinetoHorizontalAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoHorizontalAbs_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegLinetoHorizontalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
-  createSVGPathSegLinetoHorizontalAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoHorizontalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegLinetoHorizontalRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
-  createSVGPathSegLinetoHorizontalRel_Callback_0_(mthis) => createSVGPathSegLinetoHorizontalRel_Callback_0(mthis);
-
-  static createSVGPathSegLinetoHorizontalRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
-  createSVGPathSegLinetoHorizontalRel_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoHorizontalRel_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegLinetoHorizontalRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
-  createSVGPathSegLinetoHorizontalRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoHorizontalRel_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegLinetoHorizontalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
-  createSVGPathSegLinetoHorizontalRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoHorizontalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegLinetoRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
-  createSVGPathSegLinetoRel_Callback_0_(mthis) => createSVGPathSegLinetoRel_Callback_0(mthis);
-
-  static createSVGPathSegLinetoRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
-  createSVGPathSegLinetoRel_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoRel_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegLinetoRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
-  createSVGPathSegLinetoRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoRel_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegLinetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
-  createSVGPathSegLinetoRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegLinetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
-  createSVGPathSegLinetoRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegLinetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static createSVGPathSegLinetoVerticalAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
-  createSVGPathSegLinetoVerticalAbs_Callback_0_(mthis) => createSVGPathSegLinetoVerticalAbs_Callback_0(mthis);
-
-  static createSVGPathSegLinetoVerticalAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
-  createSVGPathSegLinetoVerticalAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoVerticalAbs_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegLinetoVerticalAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
-  createSVGPathSegLinetoVerticalAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoVerticalAbs_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegLinetoVerticalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
-  createSVGPathSegLinetoVerticalAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoVerticalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegLinetoVerticalRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
-  createSVGPathSegLinetoVerticalRel_Callback_0_(mthis) => createSVGPathSegLinetoVerticalRel_Callback_0(mthis);
-
-  static createSVGPathSegLinetoVerticalRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
-  createSVGPathSegLinetoVerticalRel_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoVerticalRel_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegLinetoVerticalRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
-  createSVGPathSegLinetoVerticalRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoVerticalRel_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegLinetoVerticalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
-  createSVGPathSegLinetoVerticalRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoVerticalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegMovetoAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
-  createSVGPathSegMovetoAbs_Callback_0_(mthis) => createSVGPathSegMovetoAbs_Callback_0(mthis);
-
-  static createSVGPathSegMovetoAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
-  createSVGPathSegMovetoAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegMovetoAbs_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegMovetoAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
-  createSVGPathSegMovetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegMovetoAbs_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegMovetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
-  createSVGPathSegMovetoAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegMovetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegMovetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
-  createSVGPathSegMovetoAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegMovetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static createSVGPathSegMovetoRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
-  createSVGPathSegMovetoRel_Callback_0_(mthis) => createSVGPathSegMovetoRel_Callback_0(mthis);
-
-  static createSVGPathSegMovetoRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
-  createSVGPathSegMovetoRel_Callback_1_(mthis, __arg_0) => createSVGPathSegMovetoRel_Callback_1(mthis, __arg_0);
-
-  static createSVGPathSegMovetoRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
-  createSVGPathSegMovetoRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegMovetoRel_Callback_2(mthis, __arg_0, __arg_1);
-
-  static createSVGPathSegMovetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
-  createSVGPathSegMovetoRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegMovetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static createSVGPathSegMovetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
-  createSVGPathSegMovetoRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegMovetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getPathSegAtLength_Callback_0(mthis) native "SVGPathElement_getPathSegAtLength_Callback";
-  getPathSegAtLength_Callback_0_(mthis) => getPathSegAtLength_Callback_0(mthis);
-
-  static getPathSegAtLength_Callback_1(mthis, __arg_0) native "SVGPathElement_getPathSegAtLength_Callback";
-  getPathSegAtLength_Callback_1_(mthis, __arg_0) => getPathSegAtLength_Callback_1(mthis, __arg_0);
-
-  static getPathSegAtLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_getPathSegAtLength_Callback";
-  getPathSegAtLength_Callback_2_(mthis, __arg_0, __arg_1) => getPathSegAtLength_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getPathSegAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_getPathSegAtLength_Callback";
-  getPathSegAtLength_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPathSegAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getPointAtLength_Callback_0(mthis) native "SVGPathElement_getPointAtLength_Callback";
-  getPointAtLength_Callback_0_(mthis) => getPointAtLength_Callback_0(mthis);
-
-  static getPointAtLength_Callback_1(mthis, __arg_0) native "SVGPathElement_getPointAtLength_Callback";
-  getPointAtLength_Callback_1_(mthis, __arg_0) => getPointAtLength_Callback_1(mthis, __arg_0);
+  createSVGPathSegMovetoRel_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createSVGPathSegMovetoRel", [__arg_0, __arg_1]);
 
-  static getPointAtLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_getPointAtLength_Callback";
-  getPointAtLength_Callback_2_(mthis, __arg_0, __arg_1) => getPointAtLength_Callback_2(mthis, __arg_0, __arg_1);
+  getPathSegAtLength_Callback_0_(mthis) => mthis.callMethod("getPathSegAtLength", []);
 
-  static getPointAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_getPointAtLength_Callback";
-  getPointAtLength_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPointAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getPathSegAtLength_Callback_1_(mthis, __arg_0) => mthis.callMethod("getPathSegAtLength", [__arg_0]);
 
-  static getTotalLength_Callback_0(mthis) native "SVGPathElement_getTotalLength_Callback";
-  getTotalLength_Callback_0_(mthis) => getTotalLength_Callback_0(mthis);
+  getPointAtLength_Callback_0_(mthis) => mthis.callMethod("getPointAtLength", []);
 
-  static getTotalLength_Callback_1(mthis, __arg_0) native "SVGPathElement_getTotalLength_Callback";
-  getTotalLength_Callback_1_(mthis, __arg_0) => getTotalLength_Callback_1(mthis, __arg_0);
+  getPointAtLength_Callback_1_(mthis, __arg_0) => mthis.callMethod("getPointAtLength", [__arg_0]);
 
-  static getTotalLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_getTotalLength_Callback";
-  getTotalLength_Callback_2_(mthis, __arg_0, __arg_1) => getTotalLength_Callback_2(mthis, __arg_0, __arg_1);
+  getTotalLength_Callback_0_(mthis) => mthis.callMethod("getTotalLength", []);
 
-  static normalizedPathSegList_Getter(mthis) native "SVGPathElement_normalizedPathSegList_Getter";
-  normalizedPathSegList_Getter_(mthis) => normalizedPathSegList_Getter(mthis);
+  normalizedPathSegList_Getter_(mthis) => mthis["normalizedPathSegList"];
 
-  static pathLength_Getter(mthis) native "SVGPathElement_pathLength_Getter";
-  pathLength_Getter_(mthis) => pathLength_Getter(mthis);
+  pathLength_Getter_(mthis) => mthis["pathLength"];
 
-  static pathSegList_Getter(mthis) native "SVGPathElement_pathSegList_Getter";
-  pathSegList_Getter_(mthis) => pathSegList_Getter(mthis);
+  pathSegList_Getter_(mthis) => mthis["pathSegList"];
 
 }
 
 class BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSeg();
 
-  static pathSegTypeAsLetter_Getter(mthis) native "SVGPathSeg_pathSegTypeAsLetter_Getter";
-  pathSegTypeAsLetter_Getter_(mthis) => pathSegTypeAsLetter_Getter(mthis);
+  pathSegTypeAsLetter_Getter_(mthis) => mthis["pathSegTypeAsLetter"];
 
-  static pathSegType_Getter(mthis) native "SVGPathSeg_pathSegType_Getter";
-  pathSegType_Getter_(mthis) => pathSegType_Getter(mthis);
+  pathSegType_Getter_(mthis) => mthis["pathSegType"];
 
 }
 
 class BlinkSVGPathSegArcAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegArcAbs();
 
-  static angle_Getter(mthis) native "SVGPathSegArcAbs_angle_Getter";
-  angle_Getter_(mthis) => angle_Getter(mthis);
+  angle_Getter_(mthis) => mthis["angle"];
 
-  static angle_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_angle_Setter";
-  angle_Setter_(mthis, __arg_0) => angle_Setter(mthis, __arg_0);
+  angle_Setter_(mthis, __arg_0) => mthis["angle"] = __arg_0;
 
-  static largeArcFlag_Getter(mthis) native "SVGPathSegArcAbs_largeArcFlag_Getter";
-  largeArcFlag_Getter_(mthis) => largeArcFlag_Getter(mthis);
+  largeArcFlag_Getter_(mthis) => mthis["largeArcFlag"];
 
-  static largeArcFlag_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_largeArcFlag_Setter";
-  largeArcFlag_Setter_(mthis, __arg_0) => largeArcFlag_Setter(mthis, __arg_0);
+  largeArcFlag_Setter_(mthis, __arg_0) => mthis["largeArcFlag"] = __arg_0;
 
-  static r1_Getter(mthis) native "SVGPathSegArcAbs_r1_Getter";
-  r1_Getter_(mthis) => r1_Getter(mthis);
+  r1_Getter_(mthis) => mthis["r1"];
 
-  static r1_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_r1_Setter";
-  r1_Setter_(mthis, __arg_0) => r1_Setter(mthis, __arg_0);
+  r1_Setter_(mthis, __arg_0) => mthis["r1"] = __arg_0;
 
-  static r2_Getter(mthis) native "SVGPathSegArcAbs_r2_Getter";
-  r2_Getter_(mthis) => r2_Getter(mthis);
+  r2_Getter_(mthis) => mthis["r2"];
 
-  static r2_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_r2_Setter";
-  r2_Setter_(mthis, __arg_0) => r2_Setter(mthis, __arg_0);
+  r2_Setter_(mthis, __arg_0) => mthis["r2"] = __arg_0;
 
-  static sweepFlag_Getter(mthis) native "SVGPathSegArcAbs_sweepFlag_Getter";
-  sweepFlag_Getter_(mthis) => sweepFlag_Getter(mthis);
+  sweepFlag_Getter_(mthis) => mthis["sweepFlag"];
 
-  static sweepFlag_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_sweepFlag_Setter";
-  sweepFlag_Setter_(mthis, __arg_0) => sweepFlag_Setter(mthis, __arg_0);
+  sweepFlag_Setter_(mthis, __arg_0) => mthis["sweepFlag"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegArcAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegArcAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegArcRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegArcRel();
 
-  static angle_Getter(mthis) native "SVGPathSegArcRel_angle_Getter";
-  angle_Getter_(mthis) => angle_Getter(mthis);
+  angle_Getter_(mthis) => mthis["angle"];
 
-  static angle_Setter(mthis, __arg_0) native "SVGPathSegArcRel_angle_Setter";
-  angle_Setter_(mthis, __arg_0) => angle_Setter(mthis, __arg_0);
+  angle_Setter_(mthis, __arg_0) => mthis["angle"] = __arg_0;
 
-  static largeArcFlag_Getter(mthis) native "SVGPathSegArcRel_largeArcFlag_Getter";
-  largeArcFlag_Getter_(mthis) => largeArcFlag_Getter(mthis);
+  largeArcFlag_Getter_(mthis) => mthis["largeArcFlag"];
 
-  static largeArcFlag_Setter(mthis, __arg_0) native "SVGPathSegArcRel_largeArcFlag_Setter";
-  largeArcFlag_Setter_(mthis, __arg_0) => largeArcFlag_Setter(mthis, __arg_0);
+  largeArcFlag_Setter_(mthis, __arg_0) => mthis["largeArcFlag"] = __arg_0;
 
-  static r1_Getter(mthis) native "SVGPathSegArcRel_r1_Getter";
-  r1_Getter_(mthis) => r1_Getter(mthis);
+  r1_Getter_(mthis) => mthis["r1"];
 
-  static r1_Setter(mthis, __arg_0) native "SVGPathSegArcRel_r1_Setter";
-  r1_Setter_(mthis, __arg_0) => r1_Setter(mthis, __arg_0);
+  r1_Setter_(mthis, __arg_0) => mthis["r1"] = __arg_0;
 
-  static r2_Getter(mthis) native "SVGPathSegArcRel_r2_Getter";
-  r2_Getter_(mthis) => r2_Getter(mthis);
+  r2_Getter_(mthis) => mthis["r2"];
 
-  static r2_Setter(mthis, __arg_0) native "SVGPathSegArcRel_r2_Setter";
-  r2_Setter_(mthis, __arg_0) => r2_Setter(mthis, __arg_0);
+  r2_Setter_(mthis, __arg_0) => mthis["r2"] = __arg_0;
 
-  static sweepFlag_Getter(mthis) native "SVGPathSegArcRel_sweepFlag_Getter";
-  sweepFlag_Getter_(mthis) => sweepFlag_Getter(mthis);
+  sweepFlag_Getter_(mthis) => mthis["sweepFlag"];
 
-  static sweepFlag_Setter(mthis, __arg_0) native "SVGPathSegArcRel_sweepFlag_Setter";
-  sweepFlag_Setter_(mthis, __arg_0) => sweepFlag_Setter(mthis, __arg_0);
+  sweepFlag_Setter_(mthis, __arg_0) => mthis["sweepFlag"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegArcRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegArcRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegArcRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegArcRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
@@ -22049,751 +12262,480 @@
 class BlinkSVGPathSegCurvetoCubicAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicAbs();
 
-  static x1_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x1_Getter";
-  x1_Getter_(mthis) => x1_Getter(mthis);
+  x1_Getter_(mthis) => mthis["x1"];
 
-  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_x1_Setter";
-  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
+  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
 
-  static x2_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x2_Getter";
-  x2_Getter_(mthis) => x2_Getter(mthis);
+  x2_Getter_(mthis) => mthis["x2"];
 
-  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_x2_Setter";
-  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
+  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y1_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y1_Getter";
-  y1_Getter_(mthis) => y1_Getter(mthis);
+  y1_Getter_(mthis) => mthis["y1"];
 
-  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_y1_Setter";
-  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
+  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
 
-  static y2_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y2_Getter";
-  y2_Getter_(mthis) => y2_Getter(mthis);
+  y2_Getter_(mthis) => mthis["y2"];
 
-  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_y2_Setter";
-  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegCurvetoCubicRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicRel();
 
-  static x1_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x1_Getter";
-  x1_Getter_(mthis) => x1_Getter(mthis);
+  x1_Getter_(mthis) => mthis["x1"];
 
-  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_x1_Setter";
-  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
+  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
 
-  static x2_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x2_Getter";
-  x2_Getter_(mthis) => x2_Getter(mthis);
+  x2_Getter_(mthis) => mthis["x2"];
 
-  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_x2_Setter";
-  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
+  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y1_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y1_Getter";
-  y1_Getter_(mthis) => y1_Getter(mthis);
+  y1_Getter_(mthis) => mthis["y1"];
 
-  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_y1_Setter";
-  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
+  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
 
-  static y2_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y2_Getter";
-  y2_Getter_(mthis) => y2_Getter(mthis);
+  y2_Getter_(mthis) => mthis["y2"];
 
-  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_y2_Setter";
-  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegCurvetoCubicSmoothAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicSmoothAbs();
 
-  static x2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Getter";
-  x2_Getter_(mthis) => x2_Getter(mthis);
+  x2_Getter_(mthis) => mthis["x2"];
 
-  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Setter";
-  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
+  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Getter";
-  y2_Getter_(mthis) => y2_Getter(mthis);
+  y2_Getter_(mthis) => mthis["y2"];
 
-  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Setter";
-  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegCurvetoCubicSmoothRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoCubicSmoothRel();
 
-  static x2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_x2_Getter";
-  x2_Getter_(mthis) => x2_Getter(mthis);
+  x2_Getter_(mthis) => mthis["x2"];
 
-  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_x2_Setter";
-  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
+  x2_Setter_(mthis, __arg_0) => mthis["x2"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_y2_Getter";
-  y2_Getter_(mthis) => y2_Getter(mthis);
+  y2_Getter_(mthis) => mthis["y2"];
 
-  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_y2_Setter";
-  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+  y2_Setter_(mthis, __arg_0) => mthis["y2"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticAbs();
 
-  static x1_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_x1_Getter";
-  x1_Getter_(mthis) => x1_Getter(mthis);
+  x1_Getter_(mthis) => mthis["x1"];
 
-  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_x1_Setter";
-  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
+  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y1_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_y1_Getter";
-  y1_Getter_(mthis) => y1_Getter(mthis);
+  y1_Getter_(mthis) => mthis["y1"];
 
-  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_y1_Setter";
-  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
+  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticRel();
 
-  static x1_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_x1_Getter";
-  x1_Getter_(mthis) => x1_Getter(mthis);
+  x1_Getter_(mthis) => mthis["x1"];
 
-  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_x1_Setter";
-  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
+  x1_Setter_(mthis, __arg_0) => mthis["x1"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y1_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_y1_Getter";
-  y1_Getter_(mthis) => y1_Getter(mthis);
+  y1_Getter_(mthis) => mthis["y1"];
 
-  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_y1_Setter";
-  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
+  y1_Setter_(mthis, __arg_0) => mthis["y1"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticSmoothAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticSmoothAbs();
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegCurvetoQuadraticSmoothRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegCurvetoQuadraticSmoothRel();
 
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegLinetoAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoAbs();
 
-  static x_Getter(mthis) native "SVGPathSegLinetoAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegLinetoAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegLinetoHorizontalAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoHorizontalAbs();
 
-  static x_Getter(mthis) native "SVGPathSegLinetoHorizontalAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoHorizontalAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegLinetoHorizontalRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoHorizontalRel();
 
-  static x_Getter(mthis) native "SVGPathSegLinetoHorizontalRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoHorizontalRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegLinetoRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoRel();
 
-  static x_Getter(mthis) native "SVGPathSegLinetoRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegLinetoRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegLinetoVerticalAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoVerticalAbs();
 
-  static y_Getter(mthis) native "SVGPathSegLinetoVerticalAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoVerticalAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegLinetoVerticalRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegLinetoVerticalRel();
 
-  static y_Getter(mthis) native "SVGPathSegLinetoVerticalRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoVerticalRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegList {
   static final instance = new BlinkSVGPathSegList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SVGPathSegList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static appendItem_Callback_0(mthis) native "SVGPathSegList_appendItem_Callback";
-  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+  appendItem_Callback_0_(mthis) => mthis.callMethod("appendItem", []);
 
-  static appendItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_appendItem_Callback";
-  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+  appendItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendItem", [__arg_0]);
 
-  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_appendItem_Callback";
-  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_appendItem_Callback";
-  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getItem_Callback_0_(mthis) => mthis.callMethod("getItem", []);
 
-  static clear_Callback_0(mthis) native "SVGPathSegList_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  getItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getItem", [__arg_0]);
 
-  static clear_Callback_1(mthis, __arg_0) native "SVGPathSegList_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  initialize_Callback_0_(mthis) => mthis.callMethod("initialize", []);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  initialize_Callback_1_(mthis, __arg_0) => mthis.callMethod("initialize", [__arg_0]);
 
-  static getItem_Callback_0(mthis) native "SVGPathSegList_getItem_Callback";
-  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+  insertItemBefore_Callback_0_(mthis) => mthis.callMethod("insertItemBefore", []);
 
-  static getItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_getItem_Callback";
-  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertItemBefore", [__arg_0]);
 
-  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_getItem_Callback";
-  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertItemBefore", [__arg_0, __arg_1]);
 
-  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_getItem_Callback";
-  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  length_Getter_(mthis) => mthis["length"];
 
-  static initialize_Callback_0(mthis) native "SVGPathSegList_initialize_Callback";
-  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+  numberOfItems_Getter_(mthis) => mthis["numberOfItems"];
 
-  static initialize_Callback_1(mthis, __arg_0) native "SVGPathSegList_initialize_Callback";
-  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+  removeItem_Callback_0_(mthis) => mthis.callMethod("removeItem", []);
 
-  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_initialize_Callback";
-  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+  removeItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeItem", [__arg_0]);
 
-  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_initialize_Callback";
-  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceItem_Callback_0_(mthis) => mthis.callMethod("replaceItem", []);
 
-  static insertItemBefore_Callback_0(mthis) native "SVGPathSegList_insertItemBefore_Callback";
-  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+  replaceItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceItem", [__arg_0]);
 
-  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGPathSegList_insertItemBefore_Callback";
-  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
-
-  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_insertItemBefore_Callback";
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_insertItemBefore_Callback";
-  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathSegList_insertItemBefore_Callback";
-  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static length_Getter(mthis) native "SVGPathSegList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static numberOfItems_Getter(mthis) native "SVGPathSegList_numberOfItems_Getter";
-  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
-
-  static removeItem_Callback_0(mthis) native "SVGPathSegList_removeItem_Callback";
-  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
-
-  static removeItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_removeItem_Callback";
-  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
-
-  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_removeItem_Callback";
-  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_removeItem_Callback";
-  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_0(mthis) native "SVGPathSegList_replaceItem_Callback";
-  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
-
-  static replaceItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_replaceItem_Callback";
-  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
-
-  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_replaceItem_Callback";
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_replaceItem_Callback";
-  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathSegList_replaceItem_Callback";
-  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGPathSegMovetoAbs extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegMovetoAbs();
 
-  static x_Getter(mthis) native "SVGPathSegMovetoAbs_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegMovetoAbs_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegMovetoAbs_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegMovetoAbs_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPathSegMovetoRel extends BlinkSVGPathSeg {
   static final instance = new BlinkSVGPathSegMovetoRel();
 
-  static x_Getter(mthis) native "SVGPathSegMovetoRel_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPathSegMovetoRel_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGPathSegMovetoRel_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGPathSegMovetoRel_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPatternElement extends BlinkSVGElement {
   static final instance = new BlinkSVGPatternElement();
 
-  static hasExtension_Callback_0(mthis) native "SVGPatternElement_hasExtension_Callback";
-  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+  hasExtension_Callback_0_(mthis) => mthis.callMethod("hasExtension", []);
 
-  static hasExtension_Callback_1(mthis, __arg_0) native "SVGPatternElement_hasExtension_Callback";
-  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+  hasExtension_Callback_1_(mthis, __arg_0) => mthis.callMethod("hasExtension", [__arg_0]);
 
-  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGPatternElement_hasExtension_Callback";
-  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+  height_Getter_(mthis) => mthis["height"];
 
-  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPatternElement_hasExtension_Callback";
-  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  href_Getter_(mthis) => mthis["href"];
 
-  static height_Getter(mthis) native "SVGPatternElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  patternContentUnits_Getter_(mthis) => mthis["patternContentUnits"];
 
-  static href_Getter(mthis) native "SVGPatternElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  patternTransform_Getter_(mthis) => mthis["patternTransform"];
 
-  static patternContentUnits_Getter(mthis) native "SVGPatternElement_patternContentUnits_Getter";
-  patternContentUnits_Getter_(mthis) => patternContentUnits_Getter(mthis);
+  patternUnits_Getter_(mthis) => mthis["patternUnits"];
 
-  static patternTransform_Getter(mthis) native "SVGPatternElement_patternTransform_Getter";
-  patternTransform_Getter_(mthis) => patternTransform_Getter(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static patternUnits_Getter(mthis) native "SVGPatternElement_patternUnits_Getter";
-  patternUnits_Getter_(mthis) => patternUnits_Getter(mthis);
+  requiredExtensions_Getter_(mthis) => mthis["requiredExtensions"];
 
-  static preserveAspectRatio_Getter(mthis) native "SVGPatternElement_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+  requiredFeatures_Getter_(mthis) => mthis["requiredFeatures"];
 
-  static requiredExtensions_Getter(mthis) native "SVGPatternElement_requiredExtensions_Getter";
-  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
+  systemLanguage_Getter_(mthis) => mthis["systemLanguage"];
 
-  static requiredFeatures_Getter(mthis) native "SVGPatternElement_requiredFeatures_Getter";
-  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
+  viewBox_Getter_(mthis) => mthis["viewBox"];
 
-  static systemLanguage_Getter(mthis) native "SVGPatternElement_systemLanguage_Getter";
-  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static viewBox_Getter(mthis) native "SVGPatternElement_viewBox_Getter";
-  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static width_Getter(mthis) native "SVGPatternElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static x_Getter(mthis) native "SVGPatternElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
-
-  static y_Getter(mthis) native "SVGPatternElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
 class BlinkSVGPoint {
   static final instance = new BlinkSVGPoint();
 
-  static matrixTransform_Callback_0(mthis) native "SVGPoint_matrixTransform_Callback";
-  matrixTransform_Callback_0_(mthis) => matrixTransform_Callback_0(mthis);
+  matrixTransform_Callback_0_(mthis) => mthis.callMethod("matrixTransform", []);
 
-  static matrixTransform_Callback_1(mthis, __arg_0) native "SVGPoint_matrixTransform_Callback";
-  matrixTransform_Callback_1_(mthis, __arg_0) => matrixTransform_Callback_1(mthis, __arg_0);
+  matrixTransform_Callback_1_(mthis, __arg_0) => mthis.callMethod("matrixTransform", [__arg_0]);
 
-  static matrixTransform_Callback_2(mthis, __arg_0, __arg_1) native "SVGPoint_matrixTransform_Callback";
-  matrixTransform_Callback_2_(mthis, __arg_0, __arg_1) => matrixTransform_Callback_2(mthis, __arg_0, __arg_1);
+  x_Getter_(mthis) => mthis["x"];
 
-  static matrixTransform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPoint_matrixTransform_Callback";
-  matrixTransform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matrixTransform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGPoint_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static x_Setter(mthis, __arg_0) native "SVGPoint_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
-
-  static y_Getter(mthis) native "SVGPoint_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
-
-  static y_Setter(mthis, __arg_0) native "SVGPoint_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGPointList {
   static final instance = new BlinkSVGPointList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SVGPointList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static appendItem_Callback_0(mthis) native "SVGPointList_appendItem_Callback";
-  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+  appendItem_Callback_0_(mthis) => mthis.callMethod("appendItem", []);
 
-  static appendItem_Callback_1(mthis, __arg_0) native "SVGPointList_appendItem_Callback";
-  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+  appendItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendItem", [__arg_0]);
 
-  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_appendItem_Callback";
-  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_appendItem_Callback";
-  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getItem_Callback_0_(mthis) => mthis.callMethod("getItem", []);
 
-  static clear_Callback_0(mthis) native "SVGPointList_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  getItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getItem", [__arg_0]);
 
-  static clear_Callback_1(mthis, __arg_0) native "SVGPointList_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  initialize_Callback_0_(mthis) => mthis.callMethod("initialize", []);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  initialize_Callback_1_(mthis, __arg_0) => mthis.callMethod("initialize", [__arg_0]);
 
-  static getItem_Callback_0(mthis) native "SVGPointList_getItem_Callback";
-  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+  insertItemBefore_Callback_0_(mthis) => mthis.callMethod("insertItemBefore", []);
 
-  static getItem_Callback_1(mthis, __arg_0) native "SVGPointList_getItem_Callback";
-  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertItemBefore", [__arg_0]);
 
-  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_getItem_Callback";
-  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertItemBefore", [__arg_0, __arg_1]);
 
-  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_getItem_Callback";
-  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  length_Getter_(mthis) => mthis["length"];
 
-  static initialize_Callback_0(mthis) native "SVGPointList_initialize_Callback";
-  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+  numberOfItems_Getter_(mthis) => mthis["numberOfItems"];
 
-  static initialize_Callback_1(mthis, __arg_0) native "SVGPointList_initialize_Callback";
-  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+  removeItem_Callback_0_(mthis) => mthis.callMethod("removeItem", []);
 
-  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_initialize_Callback";
-  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+  removeItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeItem", [__arg_0]);
 
-  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_initialize_Callback";
-  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceItem_Callback_0_(mthis) => mthis.callMethod("replaceItem", []);
 
-  static insertItemBefore_Callback_0(mthis) native "SVGPointList_insertItemBefore_Callback";
-  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+  replaceItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceItem", [__arg_0]);
 
-  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGPointList_insertItemBefore_Callback";
-  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
-
-  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_insertItemBefore_Callback";
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_insertItemBefore_Callback";
-  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPointList_insertItemBefore_Callback";
-  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static length_Getter(mthis) native "SVGPointList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static numberOfItems_Getter(mthis) native "SVGPointList_numberOfItems_Getter";
-  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
-
-  static removeItem_Callback_0(mthis) native "SVGPointList_removeItem_Callback";
-  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
-
-  static removeItem_Callback_1(mthis, __arg_0) native "SVGPointList_removeItem_Callback";
-  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
-
-  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_removeItem_Callback";
-  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_removeItem_Callback";
-  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_0(mthis) native "SVGPointList_replaceItem_Callback";
-  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
-
-  static replaceItem_Callback_1(mthis, __arg_0) native "SVGPointList_replaceItem_Callback";
-  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
-
-  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_replaceItem_Callback";
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_replaceItem_Callback";
-  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPointList_replaceItem_Callback";
-  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGPolygonElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGPolygonElement();
 
-  static animatedPoints_Getter(mthis) native "SVGPolygonElement_animatedPoints_Getter";
-  animatedPoints_Getter_(mthis) => animatedPoints_Getter(mthis);
+  animatedPoints_Getter_(mthis) => mthis["animatedPoints"];
 
-  static points_Getter(mthis) native "SVGPolygonElement_points_Getter";
-  points_Getter_(mthis) => points_Getter(mthis);
+  points_Getter_(mthis) => mthis["points"];
 
 }
 
 class BlinkSVGPolylineElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGPolylineElement();
 
-  static animatedPoints_Getter(mthis) native "SVGPolylineElement_animatedPoints_Getter";
-  animatedPoints_Getter_(mthis) => animatedPoints_Getter(mthis);
+  animatedPoints_Getter_(mthis) => mthis["animatedPoints"];
 
-  static points_Getter(mthis) native "SVGPolylineElement_points_Getter";
-  points_Getter_(mthis) => points_Getter(mthis);
+  points_Getter_(mthis) => mthis["points"];
 
 }
 
 class BlinkSVGPreserveAspectRatio {
   static final instance = new BlinkSVGPreserveAspectRatio();
 
-  static align_Getter(mthis) native "SVGPreserveAspectRatio_align_Getter";
-  align_Getter_(mthis) => align_Getter(mthis);
+  align_Getter_(mthis) => mthis["align"];
 
-  static align_Setter(mthis, __arg_0) native "SVGPreserveAspectRatio_align_Setter";
-  align_Setter_(mthis, __arg_0) => align_Setter(mthis, __arg_0);
+  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
 
-  static meetOrSlice_Getter(mthis) native "SVGPreserveAspectRatio_meetOrSlice_Getter";
-  meetOrSlice_Getter_(mthis) => meetOrSlice_Getter(mthis);
+  meetOrSlice_Getter_(mthis) => mthis["meetOrSlice"];
 
-  static meetOrSlice_Setter(mthis, __arg_0) native "SVGPreserveAspectRatio_meetOrSlice_Setter";
-  meetOrSlice_Setter_(mthis, __arg_0) => meetOrSlice_Setter(mthis, __arg_0);
+  meetOrSlice_Setter_(mthis, __arg_0) => mthis["meetOrSlice"] = __arg_0;
 
 }
 
 class BlinkSVGRadialGradientElement extends BlinkSVGGradientElement {
   static final instance = new BlinkSVGRadialGradientElement();
 
-  static cx_Getter(mthis) native "SVGRadialGradientElement_cx_Getter";
-  cx_Getter_(mthis) => cx_Getter(mthis);
+  cx_Getter_(mthis) => mthis["cx"];
 
-  static cy_Getter(mthis) native "SVGRadialGradientElement_cy_Getter";
-  cy_Getter_(mthis) => cy_Getter(mthis);
+  cy_Getter_(mthis) => mthis["cy"];
 
-  static fr_Getter(mthis) native "SVGRadialGradientElement_fr_Getter";
-  fr_Getter_(mthis) => fr_Getter(mthis);
+  fr_Getter_(mthis) => mthis["fr"];
 
-  static fx_Getter(mthis) native "SVGRadialGradientElement_fx_Getter";
-  fx_Getter_(mthis) => fx_Getter(mthis);
+  fx_Getter_(mthis) => mthis["fx"];
 
-  static fy_Getter(mthis) native "SVGRadialGradientElement_fy_Getter";
-  fy_Getter_(mthis) => fy_Getter(mthis);
+  fy_Getter_(mthis) => mthis["fy"];
 
-  static r_Getter(mthis) native "SVGRadialGradientElement_r_Getter";
-  r_Getter_(mthis) => r_Getter(mthis);
+  r_Getter_(mthis) => mthis["r"];
 
 }
 
 class BlinkSVGRect {
   static final instance = new BlinkSVGRect();
 
-  static height_Getter(mthis) native "SVGRect_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static height_Setter(mthis, __arg_0) native "SVGRect_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static width_Getter(mthis) native "SVGRect_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static width_Setter(mthis, __arg_0) native "SVGRect_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
-  static x_Getter(mthis) native "SVGRect_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static x_Setter(mthis, __arg_0) native "SVGRect_x_Setter";
-  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+  x_Setter_(mthis, __arg_0) => mthis["x"] = __arg_0;
 
-  static y_Getter(mthis) native "SVGRect_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static y_Setter(mthis, __arg_0) native "SVGRect_y_Setter";
-  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+  y_Setter_(mthis, __arg_0) => mthis["y"] = __arg_0;
 
 }
 
 class BlinkSVGRectElement extends BlinkSVGGeometryElement {
   static final instance = new BlinkSVGRectElement();
 
-  static height_Getter(mthis) native "SVGRectElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static rx_Getter(mthis) native "SVGRectElement_rx_Getter";
-  rx_Getter_(mthis) => rx_Getter(mthis);
+  rx_Getter_(mthis) => mthis["rx"];
 
-  static ry_Getter(mthis) native "SVGRectElement_ry_Getter";
-  ry_Getter_(mthis) => ry_Getter(mthis);
+  ry_Getter_(mthis) => mthis["ry"];
 
-  static width_Getter(mthis) native "SVGRectElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGRectElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGRectElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
@@ -22805,319 +12747,124 @@
 class BlinkSVGSVGElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGSVGElement();
 
-  static animationsPaused_Callback_0(mthis) native "SVGSVGElement_animationsPaused_Callback";
-  animationsPaused_Callback_0_(mthis) => animationsPaused_Callback_0(mthis);
+  animationsPaused_Callback_0_(mthis) => mthis.callMethod("animationsPaused", []);
 
-  static animationsPaused_Callback_1(mthis, __arg_0) native "SVGSVGElement_animationsPaused_Callback";
-  animationsPaused_Callback_1_(mthis, __arg_0) => animationsPaused_Callback_1(mthis, __arg_0);
+  checkEnclosure_Callback_0_(mthis) => mthis.callMethod("checkEnclosure", []);
 
-  static animationsPaused_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_animationsPaused_Callback";
-  animationsPaused_Callback_2_(mthis, __arg_0, __arg_1) => animationsPaused_Callback_2(mthis, __arg_0, __arg_1);
+  checkEnclosure_Callback_1_(mthis, __arg_0) => mthis.callMethod("checkEnclosure", [__arg_0]);
 
-  static checkEnclosure_Callback_0(mthis) native "SVGSVGElement_checkEnclosure_Callback";
-  checkEnclosure_Callback_0_(mthis) => checkEnclosure_Callback_0(mthis);
+  checkEnclosure_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("checkEnclosure", [__arg_0, __arg_1]);
 
-  static checkEnclosure_Callback_1(mthis, __arg_0) native "SVGSVGElement_checkEnclosure_Callback";
-  checkEnclosure_Callback_1_(mthis, __arg_0) => checkEnclosure_Callback_1(mthis, __arg_0);
+  checkIntersection_Callback_0_(mthis) => mthis.callMethod("checkIntersection", []);
 
-  static checkEnclosure_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_checkEnclosure_Callback";
-  checkEnclosure_Callback_2_(mthis, __arg_0, __arg_1) => checkEnclosure_Callback_2(mthis, __arg_0, __arg_1);
+  checkIntersection_Callback_1_(mthis, __arg_0) => mthis.callMethod("checkIntersection", [__arg_0]);
 
-  static checkEnclosure_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_checkEnclosure_Callback";
-  checkEnclosure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => checkEnclosure_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  checkIntersection_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("checkIntersection", [__arg_0, __arg_1]);
 
-  static checkEnclosure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_checkEnclosure_Callback";
-  checkEnclosure_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => checkEnclosure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGAngle_Callback_0_(mthis) => mthis.callMethod("createSVGAngle", []);
 
-  static checkIntersection_Callback_0(mthis) native "SVGSVGElement_checkIntersection_Callback";
-  checkIntersection_Callback_0_(mthis) => checkIntersection_Callback_0(mthis);
+  createSVGLength_Callback_0_(mthis) => mthis.callMethod("createSVGLength", []);
 
-  static checkIntersection_Callback_1(mthis, __arg_0) native "SVGSVGElement_checkIntersection_Callback";
-  checkIntersection_Callback_1_(mthis, __arg_0) => checkIntersection_Callback_1(mthis, __arg_0);
+  createSVGMatrix_Callback_0_(mthis) => mthis.callMethod("createSVGMatrix", []);
 
-  static checkIntersection_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_checkIntersection_Callback";
-  checkIntersection_Callback_2_(mthis, __arg_0, __arg_1) => checkIntersection_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGNumber_Callback_0_(mthis) => mthis.callMethod("createSVGNumber", []);
 
-  static checkIntersection_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_checkIntersection_Callback";
-  checkIntersection_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => checkIntersection_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createSVGPoint_Callback_0_(mthis) => mthis.callMethod("createSVGPoint", []);
 
-  static checkIntersection_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_checkIntersection_Callback";
-  checkIntersection_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => checkIntersection_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createSVGRect_Callback_0_(mthis) => mthis.callMethod("createSVGRect", []);
 
-  static createSVGAngle_Callback_0(mthis) native "SVGSVGElement_createSVGAngle_Callback";
-  createSVGAngle_Callback_0_(mthis) => createSVGAngle_Callback_0(mthis);
+  createSVGTransformFromMatrix_Callback_0_(mthis) => mthis.callMethod("createSVGTransformFromMatrix", []);
 
-  static createSVGAngle_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGAngle_Callback";
-  createSVGAngle_Callback_1_(mthis, __arg_0) => createSVGAngle_Callback_1(mthis, __arg_0);
+  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGTransformFromMatrix", [__arg_0]);
 
-  static createSVGAngle_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGAngle_Callback";
-  createSVGAngle_Callback_2_(mthis, __arg_0, __arg_1) => createSVGAngle_Callback_2(mthis, __arg_0, __arg_1);
+  createSVGTransform_Callback_0_(mthis) => mthis.callMethod("createSVGTransform", []);
 
-  static createSVGLength_Callback_0(mthis) native "SVGSVGElement_createSVGLength_Callback";
-  createSVGLength_Callback_0_(mthis) => createSVGLength_Callback_0(mthis);
+  currentScale_Getter_(mthis) => mthis["currentScale"];
 
-  static createSVGLength_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGLength_Callback";
-  createSVGLength_Callback_1_(mthis, __arg_0) => createSVGLength_Callback_1(mthis, __arg_0);
+  currentScale_Setter_(mthis, __arg_0) => mthis["currentScale"] = __arg_0;
 
-  static createSVGLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGLength_Callback";
-  createSVGLength_Callback_2_(mthis, __arg_0, __arg_1) => createSVGLength_Callback_2(mthis, __arg_0, __arg_1);
+  currentTranslate_Getter_(mthis) => mthis["currentTranslate"];
 
-  static createSVGMatrix_Callback_0(mthis) native "SVGSVGElement_createSVGMatrix_Callback";
-  createSVGMatrix_Callback_0_(mthis) => createSVGMatrix_Callback_0(mthis);
+  currentView_Getter_(mthis) => mthis["currentView"];
 
-  static createSVGMatrix_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGMatrix_Callback";
-  createSVGMatrix_Callback_1_(mthis, __arg_0) => createSVGMatrix_Callback_1(mthis, __arg_0);
+  deselectAll_Callback_0_(mthis) => mthis.callMethod("deselectAll", []);
 
-  static createSVGMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGMatrix_Callback";
-  createSVGMatrix_Callback_2_(mthis, __arg_0, __arg_1) => createSVGMatrix_Callback_2(mthis, __arg_0, __arg_1);
+  forceRedraw_Callback_0_(mthis) => mthis.callMethod("forceRedraw", []);
 
-  static createSVGNumber_Callback_0(mthis) native "SVGSVGElement_createSVGNumber_Callback";
-  createSVGNumber_Callback_0_(mthis) => createSVGNumber_Callback_0(mthis);
+  getCurrentTime_Callback_0_(mthis) => mthis.callMethod("getCurrentTime", []);
 
-  static createSVGNumber_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGNumber_Callback";
-  createSVGNumber_Callback_1_(mthis, __arg_0) => createSVGNumber_Callback_1(mthis, __arg_0);
+  getElementById_Callback_0_(mthis) => mthis.callMethod("getElementById", []);
 
-  static createSVGNumber_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGNumber_Callback";
-  createSVGNumber_Callback_2_(mthis, __arg_0, __arg_1) => createSVGNumber_Callback_2(mthis, __arg_0, __arg_1);
+  getElementById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementById", [__arg_0]);
 
-  static createSVGPoint_Callback_0(mthis) native "SVGSVGElement_createSVGPoint_Callback";
-  createSVGPoint_Callback_0_(mthis) => createSVGPoint_Callback_0(mthis);
+  getEnclosureList_Callback_0_(mthis) => mthis.callMethod("getEnclosureList", []);
 
-  static createSVGPoint_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGPoint_Callback";
-  createSVGPoint_Callback_1_(mthis, __arg_0) => createSVGPoint_Callback_1(mthis, __arg_0);
+  getEnclosureList_Callback_1_(mthis, __arg_0) => mthis.callMethod("getEnclosureList", [__arg_0]);
 
-  static createSVGPoint_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGPoint_Callback";
-  createSVGPoint_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPoint_Callback_2(mthis, __arg_0, __arg_1);
+  getEnclosureList_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getEnclosureList", [__arg_0, __arg_1]);
 
-  static createSVGRect_Callback_0(mthis) native "SVGSVGElement_createSVGRect_Callback";
-  createSVGRect_Callback_0_(mthis) => createSVGRect_Callback_0(mthis);
+  getIntersectionList_Callback_0_(mthis) => mthis.callMethod("getIntersectionList", []);
 
-  static createSVGRect_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGRect_Callback";
-  createSVGRect_Callback_1_(mthis, __arg_0) => createSVGRect_Callback_1(mthis, __arg_0);
+  getIntersectionList_Callback_1_(mthis, __arg_0) => mthis.callMethod("getIntersectionList", [__arg_0]);
 
-  static createSVGRect_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGRect_Callback";
-  createSVGRect_Callback_2_(mthis, __arg_0, __arg_1) => createSVGRect_Callback_2(mthis, __arg_0, __arg_1);
+  getIntersectionList_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getIntersectionList", [__arg_0, __arg_1]);
 
-  static createSVGTransformFromMatrix_Callback_0(mthis) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_0_(mthis) => createSVGTransformFromMatrix_Callback_0(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static createSVGTransformFromMatrix_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => createSVGTransformFromMatrix_Callback_1(mthis, __arg_0);
+  pauseAnimations_Callback_0_(mthis) => mthis.callMethod("pauseAnimations", []);
 
-  static createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_2_(mthis, __arg_0, __arg_1) => createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1);
+  pixelUnitToMillimeterX_Getter_(mthis) => mthis["pixelUnitToMillimeterX"];
 
-  static createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  pixelUnitToMillimeterY_Getter_(mthis) => mthis["pixelUnitToMillimeterY"];
 
-  static createSVGTransform_Callback_0(mthis) native "SVGSVGElement_createSVGTransform_Callback";
-  createSVGTransform_Callback_0_(mthis) => createSVGTransform_Callback_0(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static createSVGTransform_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGTransform_Callback";
-  createSVGTransform_Callback_1_(mthis, __arg_0) => createSVGTransform_Callback_1(mthis, __arg_0);
+  screenPixelToMillimeterX_Getter_(mthis) => mthis["screenPixelToMillimeterX"];
 
-  static createSVGTransform_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGTransform_Callback";
-  createSVGTransform_Callback_2_(mthis, __arg_0, __arg_1) => createSVGTransform_Callback_2(mthis, __arg_0, __arg_1);
+  screenPixelToMillimeterY_Getter_(mthis) => mthis["screenPixelToMillimeterY"];
 
-  static currentScale_Getter(mthis) native "SVGSVGElement_currentScale_Getter";
-  currentScale_Getter_(mthis) => currentScale_Getter(mthis);
+  setCurrentTime_Callback_0_(mthis) => mthis.callMethod("setCurrentTime", []);
 
-  static currentScale_Setter(mthis, __arg_0) native "SVGSVGElement_currentScale_Setter";
-  currentScale_Setter_(mthis, __arg_0) => currentScale_Setter(mthis, __arg_0);
+  setCurrentTime_Callback_1_(mthis, __arg_0) => mthis.callMethod("setCurrentTime", [__arg_0]);
 
-  static currentTranslate_Getter(mthis) native "SVGSVGElement_currentTranslate_Getter";
-  currentTranslate_Getter_(mthis) => currentTranslate_Getter(mthis);
+  suspendRedraw_Callback_0_(mthis) => mthis.callMethod("suspendRedraw", []);
 
-  static currentView_Getter(mthis) native "SVGSVGElement_currentView_Getter";
-  currentView_Getter_(mthis) => currentView_Getter(mthis);
+  suspendRedraw_Callback_1_(mthis, __arg_0) => mthis.callMethod("suspendRedraw", [__arg_0]);
 
-  static deselectAll_Callback_0(mthis) native "SVGSVGElement_deselectAll_Callback";
-  deselectAll_Callback_0_(mthis) => deselectAll_Callback_0(mthis);
+  unpauseAnimations_Callback_0_(mthis) => mthis.callMethod("unpauseAnimations", []);
 
-  static deselectAll_Callback_1(mthis, __arg_0) native "SVGSVGElement_deselectAll_Callback";
-  deselectAll_Callback_1_(mthis, __arg_0) => deselectAll_Callback_1(mthis, __arg_0);
+  unsuspendRedrawAll_Callback_0_(mthis) => mthis.callMethod("unsuspendRedrawAll", []);
 
-  static deselectAll_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_deselectAll_Callback";
-  deselectAll_Callback_2_(mthis, __arg_0, __arg_1) => deselectAll_Callback_2(mthis, __arg_0, __arg_1);
+  unsuspendRedraw_Callback_0_(mthis) => mthis.callMethod("unsuspendRedraw", []);
 
-  static forceRedraw_Callback_0(mthis) native "SVGSVGElement_forceRedraw_Callback";
-  forceRedraw_Callback_0_(mthis) => forceRedraw_Callback_0(mthis);
+  unsuspendRedraw_Callback_1_(mthis, __arg_0) => mthis.callMethod("unsuspendRedraw", [__arg_0]);
 
-  static forceRedraw_Callback_1(mthis, __arg_0) native "SVGSVGElement_forceRedraw_Callback";
-  forceRedraw_Callback_1_(mthis, __arg_0) => forceRedraw_Callback_1(mthis, __arg_0);
+  useCurrentView_Getter_(mthis) => mthis["useCurrentView"];
 
-  static forceRedraw_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_forceRedraw_Callback";
-  forceRedraw_Callback_2_(mthis, __arg_0, __arg_1) => forceRedraw_Callback_2(mthis, __arg_0, __arg_1);
+  viewBox_Getter_(mthis) => mthis["viewBox"];
 
-  static getCurrentTime_Callback_0(mthis) native "SVGSVGElement_getCurrentTime_Callback";
-  getCurrentTime_Callback_0_(mthis) => getCurrentTime_Callback_0(mthis);
+  viewport_Getter_(mthis) => mthis["viewport"];
 
-  static getCurrentTime_Callback_1(mthis, __arg_0) native "SVGSVGElement_getCurrentTime_Callback";
-  getCurrentTime_Callback_1_(mthis, __arg_0) => getCurrentTime_Callback_1(mthis, __arg_0);
-
-  static getCurrentTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getCurrentTime_Callback";
-  getCurrentTime_Callback_2_(mthis, __arg_0, __arg_1) => getCurrentTime_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getElementById_Callback_0(mthis) native "SVGSVGElement_getElementById_Callback";
-  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
-
-  static getElementById_Callback_1(mthis, __arg_0) native "SVGSVGElement_getElementById_Callback";
-  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
-
-  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getElementById_Callback";
-  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_getElementById_Callback";
-  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getEnclosureList_Callback_0(mthis) native "SVGSVGElement_getEnclosureList_Callback";
-  getEnclosureList_Callback_0_(mthis) => getEnclosureList_Callback_0(mthis);
-
-  static getEnclosureList_Callback_1(mthis, __arg_0) native "SVGSVGElement_getEnclosureList_Callback";
-  getEnclosureList_Callback_1_(mthis, __arg_0) => getEnclosureList_Callback_1(mthis, __arg_0);
-
-  static getEnclosureList_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getEnclosureList_Callback";
-  getEnclosureList_Callback_2_(mthis, __arg_0, __arg_1) => getEnclosureList_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getEnclosureList_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_getEnclosureList_Callback";
-  getEnclosureList_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEnclosureList_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getEnclosureList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_getEnclosureList_Callback";
-  getEnclosureList_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getEnclosureList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getIntersectionList_Callback_0(mthis) native "SVGSVGElement_getIntersectionList_Callback";
-  getIntersectionList_Callback_0_(mthis) => getIntersectionList_Callback_0(mthis);
-
-  static getIntersectionList_Callback_1(mthis, __arg_0) native "SVGSVGElement_getIntersectionList_Callback";
-  getIntersectionList_Callback_1_(mthis, __arg_0) => getIntersectionList_Callback_1(mthis, __arg_0);
-
-  static getIntersectionList_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getIntersectionList_Callback";
-  getIntersectionList_Callback_2_(mthis, __arg_0, __arg_1) => getIntersectionList_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getIntersectionList_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_getIntersectionList_Callback";
-  getIntersectionList_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getIntersectionList_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getIntersectionList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_getIntersectionList_Callback";
-  getIntersectionList_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getIntersectionList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static height_Getter(mthis) native "SVGSVGElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
-
-  static pauseAnimations_Callback_0(mthis) native "SVGSVGElement_pauseAnimations_Callback";
-  pauseAnimations_Callback_0_(mthis) => pauseAnimations_Callback_0(mthis);
-
-  static pauseAnimations_Callback_1(mthis, __arg_0) native "SVGSVGElement_pauseAnimations_Callback";
-  pauseAnimations_Callback_1_(mthis, __arg_0) => pauseAnimations_Callback_1(mthis, __arg_0);
-
-  static pauseAnimations_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_pauseAnimations_Callback";
-  pauseAnimations_Callback_2_(mthis, __arg_0, __arg_1) => pauseAnimations_Callback_2(mthis, __arg_0, __arg_1);
-
-  static pixelUnitToMillimeterX_Getter(mthis) native "SVGSVGElement_pixelUnitToMillimeterX_Getter";
-  pixelUnitToMillimeterX_Getter_(mthis) => pixelUnitToMillimeterX_Getter(mthis);
-
-  static pixelUnitToMillimeterY_Getter(mthis) native "SVGSVGElement_pixelUnitToMillimeterY_Getter";
-  pixelUnitToMillimeterY_Getter_(mthis) => pixelUnitToMillimeterY_Getter(mthis);
-
-  static preserveAspectRatio_Getter(mthis) native "SVGSVGElement_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
-
-  static screenPixelToMillimeterX_Getter(mthis) native "SVGSVGElement_screenPixelToMillimeterX_Getter";
-  screenPixelToMillimeterX_Getter_(mthis) => screenPixelToMillimeterX_Getter(mthis);
-
-  static screenPixelToMillimeterY_Getter(mthis) native "SVGSVGElement_screenPixelToMillimeterY_Getter";
-  screenPixelToMillimeterY_Getter_(mthis) => screenPixelToMillimeterY_Getter(mthis);
-
-  static setCurrentTime_Callback_0(mthis) native "SVGSVGElement_setCurrentTime_Callback";
-  setCurrentTime_Callback_0_(mthis) => setCurrentTime_Callback_0(mthis);
-
-  static setCurrentTime_Callback_1(mthis, __arg_0) native "SVGSVGElement_setCurrentTime_Callback";
-  setCurrentTime_Callback_1_(mthis, __arg_0) => setCurrentTime_Callback_1(mthis, __arg_0);
-
-  static setCurrentTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_setCurrentTime_Callback";
-  setCurrentTime_Callback_2_(mthis, __arg_0, __arg_1) => setCurrentTime_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setCurrentTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_setCurrentTime_Callback";
-  setCurrentTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCurrentTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static suspendRedraw_Callback_0(mthis) native "SVGSVGElement_suspendRedraw_Callback";
-  suspendRedraw_Callback_0_(mthis) => suspendRedraw_Callback_0(mthis);
-
-  static suspendRedraw_Callback_1(mthis, __arg_0) native "SVGSVGElement_suspendRedraw_Callback";
-  suspendRedraw_Callback_1_(mthis, __arg_0) => suspendRedraw_Callback_1(mthis, __arg_0);
-
-  static suspendRedraw_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_suspendRedraw_Callback";
-  suspendRedraw_Callback_2_(mthis, __arg_0, __arg_1) => suspendRedraw_Callback_2(mthis, __arg_0, __arg_1);
-
-  static suspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_suspendRedraw_Callback";
-  suspendRedraw_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => suspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static unpauseAnimations_Callback_0(mthis) native "SVGSVGElement_unpauseAnimations_Callback";
-  unpauseAnimations_Callback_0_(mthis) => unpauseAnimations_Callback_0(mthis);
-
-  static unpauseAnimations_Callback_1(mthis, __arg_0) native "SVGSVGElement_unpauseAnimations_Callback";
-  unpauseAnimations_Callback_1_(mthis, __arg_0) => unpauseAnimations_Callback_1(mthis, __arg_0);
-
-  static unpauseAnimations_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_unpauseAnimations_Callback";
-  unpauseAnimations_Callback_2_(mthis, __arg_0, __arg_1) => unpauseAnimations_Callback_2(mthis, __arg_0, __arg_1);
-
-  static unsuspendRedrawAll_Callback_0(mthis) native "SVGSVGElement_unsuspendRedrawAll_Callback";
-  unsuspendRedrawAll_Callback_0_(mthis) => unsuspendRedrawAll_Callback_0(mthis);
-
-  static unsuspendRedrawAll_Callback_1(mthis, __arg_0) native "SVGSVGElement_unsuspendRedrawAll_Callback";
-  unsuspendRedrawAll_Callback_1_(mthis, __arg_0) => unsuspendRedrawAll_Callback_1(mthis, __arg_0);
-
-  static unsuspendRedrawAll_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_unsuspendRedrawAll_Callback";
-  unsuspendRedrawAll_Callback_2_(mthis, __arg_0, __arg_1) => unsuspendRedrawAll_Callback_2(mthis, __arg_0, __arg_1);
-
-  static unsuspendRedraw_Callback_0(mthis) native "SVGSVGElement_unsuspendRedraw_Callback";
-  unsuspendRedraw_Callback_0_(mthis) => unsuspendRedraw_Callback_0(mthis);
-
-  static unsuspendRedraw_Callback_1(mthis, __arg_0) native "SVGSVGElement_unsuspendRedraw_Callback";
-  unsuspendRedraw_Callback_1_(mthis, __arg_0) => unsuspendRedraw_Callback_1(mthis, __arg_0);
-
-  static unsuspendRedraw_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_unsuspendRedraw_Callback";
-  unsuspendRedraw_Callback_2_(mthis, __arg_0, __arg_1) => unsuspendRedraw_Callback_2(mthis, __arg_0, __arg_1);
-
-  static unsuspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_unsuspendRedraw_Callback";
-  unsuspendRedraw_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unsuspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static useCurrentView_Getter(mthis) native "SVGSVGElement_useCurrentView_Getter";
-  useCurrentView_Getter_(mthis) => useCurrentView_Getter(mthis);
-
-  static viewBox_Getter(mthis) native "SVGSVGElement_viewBox_Getter";
-  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
-
-  static viewport_Getter(mthis) native "SVGSVGElement_viewport_Getter";
-  viewport_Getter_(mthis) => viewport_Getter(mthis);
-
-  static width_Getter(mthis) native "SVGSVGElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGSVGElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGSVGElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
-  static zoomAndPan_Getter(mthis) native "SVGSVGElement_zoomAndPan_Getter";
-  zoomAndPan_Getter_(mthis) => zoomAndPan_Getter(mthis);
+  zoomAndPan_Getter_(mthis) => mthis["zoomAndPan"];
 
-  static zoomAndPan_Setter(mthis, __arg_0) native "SVGSVGElement_zoomAndPan_Setter";
-  zoomAndPan_Setter_(mthis, __arg_0) => zoomAndPan_Setter(mthis, __arg_0);
+  zoomAndPan_Setter_(mthis, __arg_0) => mthis["zoomAndPan"] = __arg_0;
 
 }
 
 class BlinkSVGScriptElement extends BlinkSVGElement {
   static final instance = new BlinkSVGScriptElement();
 
-  static href_Getter(mthis) native "SVGScriptElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static type_Getter(mthis) native "SVGScriptElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "SVGScriptElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
@@ -23129,144 +12876,73 @@
 class BlinkSVGStopElement extends BlinkSVGElement {
   static final instance = new BlinkSVGStopElement();
 
-  static offset_Getter(mthis) native "SVGStopElement_offset_Getter";
-  offset_Getter_(mthis) => offset_Getter(mthis);
+  offset_Getter_(mthis) => mthis["offset"];
 
 }
 
 class BlinkSVGStringList {
   static final instance = new BlinkSVGStringList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SVGStringList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static appendItem_Callback_0(mthis) native "SVGStringList_appendItem_Callback";
-  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+  appendItem_Callback_0_(mthis) => mthis.callMethod("appendItem", []);
 
-  static appendItem_Callback_1(mthis, __arg_0) native "SVGStringList_appendItem_Callback";
-  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+  appendItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendItem", [__arg_0]);
 
-  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_appendItem_Callback";
-  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_appendItem_Callback";
-  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getItem_Callback_0_(mthis) => mthis.callMethod("getItem", []);
 
-  static clear_Callback_0(mthis) native "SVGStringList_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  getItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getItem", [__arg_0]);
 
-  static clear_Callback_1(mthis, __arg_0) native "SVGStringList_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  initialize_Callback_0_(mthis) => mthis.callMethod("initialize", []);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  initialize_Callback_1_(mthis, __arg_0) => mthis.callMethod("initialize", [__arg_0]);
 
-  static getItem_Callback_0(mthis) native "SVGStringList_getItem_Callback";
-  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+  insertItemBefore_Callback_0_(mthis) => mthis.callMethod("insertItemBefore", []);
 
-  static getItem_Callback_1(mthis, __arg_0) native "SVGStringList_getItem_Callback";
-  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertItemBefore", [__arg_0]);
 
-  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_getItem_Callback";
-  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertItemBefore", [__arg_0, __arg_1]);
 
-  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_getItem_Callback";
-  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  length_Getter_(mthis) => mthis["length"];
 
-  static initialize_Callback_0(mthis) native "SVGStringList_initialize_Callback";
-  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+  numberOfItems_Getter_(mthis) => mthis["numberOfItems"];
 
-  static initialize_Callback_1(mthis, __arg_0) native "SVGStringList_initialize_Callback";
-  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+  removeItem_Callback_0_(mthis) => mthis.callMethod("removeItem", []);
 
-  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_initialize_Callback";
-  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+  removeItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeItem", [__arg_0]);
 
-  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_initialize_Callback";
-  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceItem_Callback_0_(mthis) => mthis.callMethod("replaceItem", []);
 
-  static insertItemBefore_Callback_0(mthis) native "SVGStringList_insertItemBefore_Callback";
-  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+  replaceItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceItem", [__arg_0]);
 
-  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGStringList_insertItemBefore_Callback";
-  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
-
-  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_insertItemBefore_Callback";
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_insertItemBefore_Callback";
-  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGStringList_insertItemBefore_Callback";
-  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static length_Getter(mthis) native "SVGStringList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static numberOfItems_Getter(mthis) native "SVGStringList_numberOfItems_Getter";
-  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
-
-  static removeItem_Callback_0(mthis) native "SVGStringList_removeItem_Callback";
-  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
-
-  static removeItem_Callback_1(mthis, __arg_0) native "SVGStringList_removeItem_Callback";
-  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
-
-  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_removeItem_Callback";
-  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_removeItem_Callback";
-  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_0(mthis) native "SVGStringList_replaceItem_Callback";
-  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
-
-  static replaceItem_Callback_1(mthis, __arg_0) native "SVGStringList_replaceItem_Callback";
-  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
-
-  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_replaceItem_Callback";
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_replaceItem_Callback";
-  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGStringList_replaceItem_Callback";
-  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkSVGStyleElement extends BlinkSVGElement {
   static final instance = new BlinkSVGStyleElement();
 
-  static disabled_Getter(mthis) native "SVGStyleElement_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static disabled_Setter(mthis, __arg_0) native "SVGStyleElement_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static media_Getter(mthis) native "SVGStyleElement_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
-  static media_Setter(mthis, __arg_0) native "SVGStyleElement_media_Setter";
-  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
+  media_Setter_(mthis, __arg_0) => mthis["media"] = __arg_0;
 
-  static sheet_Getter(mthis) native "SVGStyleElement_sheet_Getter";
-  sheet_Getter_(mthis) => sheet_Getter(mthis);
+  sheet_Getter_(mthis) => mthis["sheet"];
 
-  static title_Getter(mthis) native "SVGStyleElement_title_Getter";
-  title_Getter_(mthis) => title_Getter(mthis);
+  title_Getter_(mthis) => mthis["title"];
 
-  static title_Setter(mthis, __arg_0) native "SVGStyleElement_title_Setter";
-  title_Setter_(mthis, __arg_0) => title_Setter(mthis, __arg_0);
+  title_Setter_(mthis, __arg_0) => mthis["title"] = __arg_0;
 
-  static type_Getter(mthis) native "SVGStyleElement_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static type_Setter(mthis, __arg_0) native "SVGStyleElement_type_Setter";
-  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+  type_Setter_(mthis, __arg_0) => mthis["type"] = __arg_0;
 
 }
 
@@ -23278,11 +12954,9 @@
 class BlinkSVGSymbolElement extends BlinkSVGElement {
   static final instance = new BlinkSVGSymbolElement();
 
-  static preserveAspectRatio_Getter(mthis) native "SVGSymbolElement_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static viewBox_Getter(mthis) native "SVGSymbolElement_viewBox_Getter";
-  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+  viewBox_Getter_(mthis) => mthis["viewBox"];
 
 }
 
@@ -23294,119 +12968,45 @@
 class BlinkSVGTextContentElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGTextContentElement();
 
-  static getCharNumAtPosition_Callback_0(mthis) native "SVGTextContentElement_getCharNumAtPosition_Callback";
-  getCharNumAtPosition_Callback_0_(mthis) => getCharNumAtPosition_Callback_0(mthis);
+  getCharNumAtPosition_Callback_0_(mthis) => mthis.callMethod("getCharNumAtPosition", []);
 
-  static getCharNumAtPosition_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getCharNumAtPosition_Callback";
-  getCharNumAtPosition_Callback_1_(mthis, __arg_0) => getCharNumAtPosition_Callback_1(mthis, __arg_0);
+  getCharNumAtPosition_Callback_1_(mthis, __arg_0) => mthis.callMethod("getCharNumAtPosition", [__arg_0]);
 
-  static getCharNumAtPosition_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getCharNumAtPosition_Callback";
-  getCharNumAtPosition_Callback_2_(mthis, __arg_0, __arg_1) => getCharNumAtPosition_Callback_2(mthis, __arg_0, __arg_1);
+  getComputedTextLength_Callback_0_(mthis) => mthis.callMethod("getComputedTextLength", []);
 
-  static getCharNumAtPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getCharNumAtPosition_Callback";
-  getCharNumAtPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCharNumAtPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getEndPositionOfChar_Callback_0_(mthis) => mthis.callMethod("getEndPositionOfChar", []);
 
-  static getComputedTextLength_Callback_0(mthis) native "SVGTextContentElement_getComputedTextLength_Callback";
-  getComputedTextLength_Callback_0_(mthis) => getComputedTextLength_Callback_0(mthis);
+  getEndPositionOfChar_Callback_1_(mthis, __arg_0) => mthis.callMethod("getEndPositionOfChar", [__arg_0]);
 
-  static getComputedTextLength_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getComputedTextLength_Callback";
-  getComputedTextLength_Callback_1_(mthis, __arg_0) => getComputedTextLength_Callback_1(mthis, __arg_0);
+  getExtentOfChar_Callback_0_(mthis) => mthis.callMethod("getExtentOfChar", []);
 
-  static getComputedTextLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getComputedTextLength_Callback";
-  getComputedTextLength_Callback_2_(mthis, __arg_0, __arg_1) => getComputedTextLength_Callback_2(mthis, __arg_0, __arg_1);
+  getExtentOfChar_Callback_1_(mthis, __arg_0) => mthis.callMethod("getExtentOfChar", [__arg_0]);
 
-  static getEndPositionOfChar_Callback_0(mthis) native "SVGTextContentElement_getEndPositionOfChar_Callback";
-  getEndPositionOfChar_Callback_0_(mthis) => getEndPositionOfChar_Callback_0(mthis);
+  getNumberOfChars_Callback_0_(mthis) => mthis.callMethod("getNumberOfChars", []);
 
-  static getEndPositionOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getEndPositionOfChar_Callback";
-  getEndPositionOfChar_Callback_1_(mthis, __arg_0) => getEndPositionOfChar_Callback_1(mthis, __arg_0);
+  getRotationOfChar_Callback_0_(mthis) => mthis.callMethod("getRotationOfChar", []);
 
-  static getEndPositionOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getEndPositionOfChar_Callback";
-  getEndPositionOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getEndPositionOfChar_Callback_2(mthis, __arg_0, __arg_1);
+  getRotationOfChar_Callback_1_(mthis, __arg_0) => mthis.callMethod("getRotationOfChar", [__arg_0]);
 
-  static getEndPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getEndPositionOfChar_Callback";
-  getEndPositionOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEndPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getStartPositionOfChar_Callback_0_(mthis) => mthis.callMethod("getStartPositionOfChar", []);
 
-  static getExtentOfChar_Callback_0(mthis) native "SVGTextContentElement_getExtentOfChar_Callback";
-  getExtentOfChar_Callback_0_(mthis) => getExtentOfChar_Callback_0(mthis);
+  getStartPositionOfChar_Callback_1_(mthis, __arg_0) => mthis.callMethod("getStartPositionOfChar", [__arg_0]);
 
-  static getExtentOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getExtentOfChar_Callback";
-  getExtentOfChar_Callback_1_(mthis, __arg_0) => getExtentOfChar_Callback_1(mthis, __arg_0);
+  getSubStringLength_Callback_0_(mthis) => mthis.callMethod("getSubStringLength", []);
 
-  static getExtentOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getExtentOfChar_Callback";
-  getExtentOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getExtentOfChar_Callback_2(mthis, __arg_0, __arg_1);
+  getSubStringLength_Callback_1_(mthis, __arg_0) => mthis.callMethod("getSubStringLength", [__arg_0]);
 
-  static getExtentOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getExtentOfChar_Callback";
-  getExtentOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getExtentOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getSubStringLength_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getSubStringLength", [__arg_0, __arg_1]);
 
-  static getNumberOfChars_Callback_0(mthis) native "SVGTextContentElement_getNumberOfChars_Callback";
-  getNumberOfChars_Callback_0_(mthis) => getNumberOfChars_Callback_0(mthis);
+  lengthAdjust_Getter_(mthis) => mthis["lengthAdjust"];
 
-  static getNumberOfChars_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getNumberOfChars_Callback";
-  getNumberOfChars_Callback_1_(mthis, __arg_0) => getNumberOfChars_Callback_1(mthis, __arg_0);
+  selectSubString_Callback_0_(mthis) => mthis.callMethod("selectSubString", []);
 
-  static getNumberOfChars_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getNumberOfChars_Callback";
-  getNumberOfChars_Callback_2_(mthis, __arg_0, __arg_1) => getNumberOfChars_Callback_2(mthis, __arg_0, __arg_1);
+  selectSubString_Callback_1_(mthis, __arg_0) => mthis.callMethod("selectSubString", [__arg_0]);
 
-  static getRotationOfChar_Callback_0(mthis) native "SVGTextContentElement_getRotationOfChar_Callback";
-  getRotationOfChar_Callback_0_(mthis) => getRotationOfChar_Callback_0(mthis);
+  selectSubString_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("selectSubString", [__arg_0, __arg_1]);
 
-  static getRotationOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getRotationOfChar_Callback";
-  getRotationOfChar_Callback_1_(mthis, __arg_0) => getRotationOfChar_Callback_1(mthis, __arg_0);
-
-  static getRotationOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getRotationOfChar_Callback";
-  getRotationOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getRotationOfChar_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getRotationOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getRotationOfChar_Callback";
-  getRotationOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRotationOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getStartPositionOfChar_Callback_0(mthis) native "SVGTextContentElement_getStartPositionOfChar_Callback";
-  getStartPositionOfChar_Callback_0_(mthis) => getStartPositionOfChar_Callback_0(mthis);
-
-  static getStartPositionOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getStartPositionOfChar_Callback";
-  getStartPositionOfChar_Callback_1_(mthis, __arg_0) => getStartPositionOfChar_Callback_1(mthis, __arg_0);
-
-  static getStartPositionOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getStartPositionOfChar_Callback";
-  getStartPositionOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getStartPositionOfChar_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getStartPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getStartPositionOfChar_Callback";
-  getStartPositionOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getStartPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getSubStringLength_Callback_0(mthis) native "SVGTextContentElement_getSubStringLength_Callback";
-  getSubStringLength_Callback_0_(mthis) => getSubStringLength_Callback_0(mthis);
-
-  static getSubStringLength_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getSubStringLength_Callback";
-  getSubStringLength_Callback_1_(mthis, __arg_0) => getSubStringLength_Callback_1(mthis, __arg_0);
-
-  static getSubStringLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getSubStringLength_Callback";
-  getSubStringLength_Callback_2_(mthis, __arg_0, __arg_1) => getSubStringLength_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getSubStringLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getSubStringLength_Callback";
-  getSubStringLength_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getSubStringLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getSubStringLength_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTextContentElement_getSubStringLength_Callback";
-  getSubStringLength_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getSubStringLength_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static lengthAdjust_Getter(mthis) native "SVGTextContentElement_lengthAdjust_Getter";
-  lengthAdjust_Getter_(mthis) => lengthAdjust_Getter(mthis);
-
-  static selectSubString_Callback_0(mthis) native "SVGTextContentElement_selectSubString_Callback";
-  selectSubString_Callback_0_(mthis) => selectSubString_Callback_0(mthis);
-
-  static selectSubString_Callback_1(mthis, __arg_0) native "SVGTextContentElement_selectSubString_Callback";
-  selectSubString_Callback_1_(mthis, __arg_0) => selectSubString_Callback_1(mthis, __arg_0);
-
-  static selectSubString_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_selectSubString_Callback";
-  selectSubString_Callback_2_(mthis, __arg_0, __arg_1) => selectSubString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static selectSubString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_selectSubString_Callback";
-  selectSubString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectSubString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static selectSubString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTextContentElement_selectSubString_Callback";
-  selectSubString_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => selectSubString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static textLength_Getter(mthis) native "SVGTextContentElement_textLength_Getter";
-  textLength_Getter_(mthis) => textLength_Getter(mthis);
+  textLength_Getter_(mthis) => mthis["textLength"];
 
 }
 
@@ -23418,37 +13018,28 @@
 class BlinkSVGTextPathElement extends BlinkSVGTextContentElement {
   static final instance = new BlinkSVGTextPathElement();
 
-  static href_Getter(mthis) native "SVGTextPathElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static method_Getter(mthis) native "SVGTextPathElement_method_Getter";
-  method_Getter_(mthis) => method_Getter(mthis);
+  method_Getter_(mthis) => mthis["method"];
 
-  static spacing_Getter(mthis) native "SVGTextPathElement_spacing_Getter";
-  spacing_Getter_(mthis) => spacing_Getter(mthis);
+  spacing_Getter_(mthis) => mthis["spacing"];
 
-  static startOffset_Getter(mthis) native "SVGTextPathElement_startOffset_Getter";
-  startOffset_Getter_(mthis) => startOffset_Getter(mthis);
+  startOffset_Getter_(mthis) => mthis["startOffset"];
 
 }
 
 class BlinkSVGTextPositioningElement extends BlinkSVGTextContentElement {
   static final instance = new BlinkSVGTextPositioningElement();
 
-  static dx_Getter(mthis) native "SVGTextPositioningElement_dx_Getter";
-  dx_Getter_(mthis) => dx_Getter(mthis);
+  dx_Getter_(mthis) => mthis["dx"];
 
-  static dy_Getter(mthis) native "SVGTextPositioningElement_dy_Getter";
-  dy_Getter_(mthis) => dy_Getter(mthis);
+  dy_Getter_(mthis) => mthis["dy"];
 
-  static rotate_Getter(mthis) native "SVGTextPositioningElement_rotate_Getter";
-  rotate_Getter_(mthis) => rotate_Getter(mthis);
+  rotate_Getter_(mthis) => mthis["rotate"];
 
-  static x_Getter(mthis) native "SVGTextPositioningElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGTextPositioningElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
@@ -23460,220 +13051,90 @@
 class BlinkSVGTransform {
   static final instance = new BlinkSVGTransform();
 
-  static angle_Getter(mthis) native "SVGTransform_angle_Getter";
-  angle_Getter_(mthis) => angle_Getter(mthis);
+  angle_Getter_(mthis) => mthis["angle"];
 
-  static matrix_Getter(mthis) native "SVGTransform_matrix_Getter";
-  matrix_Getter_(mthis) => matrix_Getter(mthis);
+  matrix_Getter_(mthis) => mthis["matrix"];
 
-  static setMatrix_Callback_0(mthis) native "SVGTransform_setMatrix_Callback";
-  setMatrix_Callback_0_(mthis) => setMatrix_Callback_0(mthis);
+  setMatrix_Callback_0_(mthis) => mthis.callMethod("setMatrix", []);
 
-  static setMatrix_Callback_1(mthis, __arg_0) native "SVGTransform_setMatrix_Callback";
-  setMatrix_Callback_1_(mthis, __arg_0) => setMatrix_Callback_1(mthis, __arg_0);
+  setMatrix_Callback_1_(mthis, __arg_0) => mthis.callMethod("setMatrix", [__arg_0]);
 
-  static setMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setMatrix_Callback";
-  setMatrix_Callback_2_(mthis, __arg_0, __arg_1) => setMatrix_Callback_2(mthis, __arg_0, __arg_1);
+  setRotate_Callback_1_(mthis, __arg_0) => mthis.callMethod("setRotate", [__arg_0]);
 
-  static setMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setMatrix_Callback";
-  setMatrix_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setRotate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setRotate", [__arg_0, __arg_1]);
 
-  static setRotate_Callback_1(mthis, __arg_0) native "SVGTransform_setRotate_Callback";
-  setRotate_Callback_1_(mthis, __arg_0) => setRotate_Callback_1(mthis, __arg_0);
+  setRotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setRotate", [__arg_0, __arg_1, __arg_2]);
 
-  static setRotate_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setRotate_Callback";
-  setRotate_Callback_2_(mthis, __arg_0, __arg_1) => setRotate_Callback_2(mthis, __arg_0, __arg_1);
+  setScale_Callback_0_(mthis) => mthis.callMethod("setScale", []);
 
-  static setRotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setRotate_Callback";
-  setRotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setScale_Callback_1_(mthis, __arg_0) => mthis.callMethod("setScale", [__arg_0]);
 
-  static setRotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransform_setRotate_Callback";
-  setRotate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setScale_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setScale", [__arg_0, __arg_1]);
 
-  static setRotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGTransform_setRotate_Callback";
-  setRotate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setSkewX_Callback_0_(mthis) => mthis.callMethod("setSkewX", []);
 
-  static setScale_Callback_0(mthis) native "SVGTransform_setScale_Callback";
-  setScale_Callback_0_(mthis) => setScale_Callback_0(mthis);
+  setSkewX_Callback_1_(mthis, __arg_0) => mthis.callMethod("setSkewX", [__arg_0]);
 
-  static setScale_Callback_1(mthis, __arg_0) native "SVGTransform_setScale_Callback";
-  setScale_Callback_1_(mthis, __arg_0) => setScale_Callback_1(mthis, __arg_0);
+  setSkewY_Callback_0_(mthis) => mthis.callMethod("setSkewY", []);
 
-  static setScale_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setScale_Callback";
-  setScale_Callback_2_(mthis, __arg_0, __arg_1) => setScale_Callback_2(mthis, __arg_0, __arg_1);
+  setSkewY_Callback_1_(mthis, __arg_0) => mthis.callMethod("setSkewY", [__arg_0]);
 
-  static setScale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setScale_Callback";
-  setScale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setScale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setTranslate_Callback_0_(mthis) => mthis.callMethod("setTranslate", []);
 
-  static setScale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransform_setScale_Callback";
-  setScale_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setScale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setTranslate_Callback_1_(mthis, __arg_0) => mthis.callMethod("setTranslate", [__arg_0]);
 
-  static setSkewX_Callback_0(mthis) native "SVGTransform_setSkewX_Callback";
-  setSkewX_Callback_0_(mthis) => setSkewX_Callback_0(mthis);
+  setTranslate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setTranslate", [__arg_0, __arg_1]);
 
-  static setSkewX_Callback_1(mthis, __arg_0) native "SVGTransform_setSkewX_Callback";
-  setSkewX_Callback_1_(mthis, __arg_0) => setSkewX_Callback_1(mthis, __arg_0);
-
-  static setSkewX_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setSkewX_Callback";
-  setSkewX_Callback_2_(mthis, __arg_0, __arg_1) => setSkewX_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setSkewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setSkewX_Callback";
-  setSkewX_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSkewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setSkewY_Callback_0(mthis) native "SVGTransform_setSkewY_Callback";
-  setSkewY_Callback_0_(mthis) => setSkewY_Callback_0(mthis);
-
-  static setSkewY_Callback_1(mthis, __arg_0) native "SVGTransform_setSkewY_Callback";
-  setSkewY_Callback_1_(mthis, __arg_0) => setSkewY_Callback_1(mthis, __arg_0);
-
-  static setSkewY_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setSkewY_Callback";
-  setSkewY_Callback_2_(mthis, __arg_0, __arg_1) => setSkewY_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setSkewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setSkewY_Callback";
-  setSkewY_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSkewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setTranslate_Callback_0(mthis) native "SVGTransform_setTranslate_Callback";
-  setTranslate_Callback_0_(mthis) => setTranslate_Callback_0(mthis);
-
-  static setTranslate_Callback_1(mthis, __arg_0) native "SVGTransform_setTranslate_Callback";
-  setTranslate_Callback_1_(mthis, __arg_0) => setTranslate_Callback_1(mthis, __arg_0);
-
-  static setTranslate_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setTranslate_Callback";
-  setTranslate_Callback_2_(mthis, __arg_0, __arg_1) => setTranslate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setTranslate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setTranslate_Callback";
-  setTranslate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTranslate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setTranslate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransform_setTranslate_Callback";
-  setTranslate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTranslate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static type_Getter(mthis) native "SVGTransform_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkSVGTransformList {
   static final instance = new BlinkSVGTransformList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SVGTransformList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static appendItem_Callback_0(mthis) native "SVGTransformList_appendItem_Callback";
-  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+  appendItem_Callback_0_(mthis) => mthis.callMethod("appendItem", []);
 
-  static appendItem_Callback_1(mthis, __arg_0) native "SVGTransformList_appendItem_Callback";
-  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+  appendItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendItem", [__arg_0]);
 
-  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_appendItem_Callback";
-  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_appendItem_Callback";
-  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  consolidate_Callback_0_(mthis) => mthis.callMethod("consolidate", []);
 
-  static clear_Callback_0(mthis) native "SVGTransformList_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  createSVGTransformFromMatrix_Callback_0_(mthis) => mthis.callMethod("createSVGTransformFromMatrix", []);
 
-  static clear_Callback_1(mthis, __arg_0) native "SVGTransformList_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => mthis.callMethod("createSVGTransformFromMatrix", [__arg_0]);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  getItem_Callback_0_(mthis) => mthis.callMethod("getItem", []);
 
-  static consolidate_Callback_0(mthis) native "SVGTransformList_consolidate_Callback";
-  consolidate_Callback_0_(mthis) => consolidate_Callback_0(mthis);
+  getItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getItem", [__arg_0]);
 
-  static consolidate_Callback_1(mthis, __arg_0) native "SVGTransformList_consolidate_Callback";
-  consolidate_Callback_1_(mthis, __arg_0) => consolidate_Callback_1(mthis, __arg_0);
+  initialize_Callback_0_(mthis) => mthis.callMethod("initialize", []);
 
-  static consolidate_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_consolidate_Callback";
-  consolidate_Callback_2_(mthis, __arg_0, __arg_1) => consolidate_Callback_2(mthis, __arg_0, __arg_1);
+  initialize_Callback_1_(mthis, __arg_0) => mthis.callMethod("initialize", [__arg_0]);
 
-  static createSVGTransformFromMatrix_Callback_0(mthis) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_0_(mthis) => createSVGTransformFromMatrix_Callback_0(mthis);
+  insertItemBefore_Callback_0_(mthis) => mthis.callMethod("insertItemBefore", []);
 
-  static createSVGTransformFromMatrix_Callback_1(mthis, __arg_0) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => createSVGTransformFromMatrix_Callback_1(mthis, __arg_0);
+  insertItemBefore_Callback_1_(mthis, __arg_0) => mthis.callMethod("insertItemBefore", [__arg_0]);
 
-  static createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_2_(mthis, __arg_0, __arg_1) => createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1);
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("insertItemBefore", [__arg_0, __arg_1]);
 
-  static createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
-  createSVGTransformFromMatrix_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  length_Getter_(mthis) => mthis["length"];
 
-  static getItem_Callback_0(mthis) native "SVGTransformList_getItem_Callback";
-  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+  numberOfItems_Getter_(mthis) => mthis["numberOfItems"];
 
-  static getItem_Callback_1(mthis, __arg_0) native "SVGTransformList_getItem_Callback";
-  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+  removeItem_Callback_0_(mthis) => mthis.callMethod("removeItem", []);
 
-  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_getItem_Callback";
-  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+  removeItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeItem", [__arg_0]);
 
-  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_getItem_Callback";
-  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  replaceItem_Callback_0_(mthis) => mthis.callMethod("replaceItem", []);
 
-  static initialize_Callback_0(mthis) native "SVGTransformList_initialize_Callback";
-  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+  replaceItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceItem", [__arg_0]);
 
-  static initialize_Callback_1(mthis, __arg_0) native "SVGTransformList_initialize_Callback";
-  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
-
-  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_initialize_Callback";
-  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
-
-  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_initialize_Callback";
-  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertItemBefore_Callback_0(mthis) native "SVGTransformList_insertItemBefore_Callback";
-  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
-
-  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGTransformList_insertItemBefore_Callback";
-  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
-
-  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_insertItemBefore_Callback";
-  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
-
-  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_insertItemBefore_Callback";
-  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransformList_insertItemBefore_Callback";
-  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static length_Getter(mthis) native "SVGTransformList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static numberOfItems_Getter(mthis) native "SVGTransformList_numberOfItems_Getter";
-  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
-
-  static removeItem_Callback_0(mthis) native "SVGTransformList_removeItem_Callback";
-  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
-
-  static removeItem_Callback_1(mthis, __arg_0) native "SVGTransformList_removeItem_Callback";
-  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
-
-  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_removeItem_Callback";
-  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_removeItem_Callback";
-  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_0(mthis) native "SVGTransformList_replaceItem_Callback";
-  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
-
-  static replaceItem_Callback_1(mthis, __arg_0) native "SVGTransformList_replaceItem_Callback";
-  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
-
-  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_replaceItem_Callback";
-  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_replaceItem_Callback";
-  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransformList_replaceItem_Callback";
-  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("replaceItem", [__arg_0, __arg_1]);
 
 }
 
@@ -23685,20 +13146,15 @@
 class BlinkSVGUseElement extends BlinkSVGGraphicsElement {
   static final instance = new BlinkSVGUseElement();
 
-  static height_Getter(mthis) native "SVGUseElement_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static href_Getter(mthis) native "SVGUseElement_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static width_Getter(mthis) native "SVGUseElement_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static x_Getter(mthis) native "SVGUseElement_x_Getter";
-  x_Getter_(mthis) => x_Getter(mthis);
+  x_Getter_(mthis) => mthis["x"];
 
-  static y_Getter(mthis) native "SVGUseElement_y_Getter";
-  y_Getter_(mthis) => y_Getter(mthis);
+  y_Getter_(mthis) => mthis["y"];
 
 }
 
@@ -23710,3126 +13166,1743 @@
 class BlinkSVGViewElement extends BlinkSVGElement {
   static final instance = new BlinkSVGViewElement();
 
-  static preserveAspectRatio_Getter(mthis) native "SVGViewElement_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static viewBox_Getter(mthis) native "SVGViewElement_viewBox_Getter";
-  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+  viewBox_Getter_(mthis) => mthis["viewBox"];
 
-  static viewTarget_Getter(mthis) native "SVGViewElement_viewTarget_Getter";
-  viewTarget_Getter_(mthis) => viewTarget_Getter(mthis);
+  viewTarget_Getter_(mthis) => mthis["viewTarget"];
 
-  static zoomAndPan_Getter(mthis) native "SVGViewElement_zoomAndPan_Getter";
-  zoomAndPan_Getter_(mthis) => zoomAndPan_Getter(mthis);
+  zoomAndPan_Getter_(mthis) => mthis["zoomAndPan"];
 
-  static zoomAndPan_Setter(mthis, __arg_0) native "SVGViewElement_zoomAndPan_Setter";
-  zoomAndPan_Setter_(mthis, __arg_0) => zoomAndPan_Setter(mthis, __arg_0);
+  zoomAndPan_Setter_(mthis, __arg_0) => mthis["zoomAndPan"] = __arg_0;
 
 }
 
 class BlinkSVGViewSpec {
   static final instance = new BlinkSVGViewSpec();
 
-  static preserveAspectRatioString_Getter(mthis) native "SVGViewSpec_preserveAspectRatioString_Getter";
-  preserveAspectRatioString_Getter_(mthis) => preserveAspectRatioString_Getter(mthis);
+  preserveAspectRatioString_Getter_(mthis) => mthis["preserveAspectRatioString"];
 
-  static preserveAspectRatio_Getter(mthis) native "SVGViewSpec_preserveAspectRatio_Getter";
-  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+  preserveAspectRatio_Getter_(mthis) => mthis["preserveAspectRatio"];
 
-  static transformString_Getter(mthis) native "SVGViewSpec_transformString_Getter";
-  transformString_Getter_(mthis) => transformString_Getter(mthis);
+  transformString_Getter_(mthis) => mthis["transformString"];
 
-  static transform_Getter(mthis) native "SVGViewSpec_transform_Getter";
-  transform_Getter_(mthis) => transform_Getter(mthis);
+  transform_Getter_(mthis) => mthis["transform"];
 
-  static viewBoxString_Getter(mthis) native "SVGViewSpec_viewBoxString_Getter";
-  viewBoxString_Getter_(mthis) => viewBoxString_Getter(mthis);
+  viewBoxString_Getter_(mthis) => mthis["viewBoxString"];
 
-  static viewBox_Getter(mthis) native "SVGViewSpec_viewBox_Getter";
-  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+  viewBox_Getter_(mthis) => mthis["viewBox"];
 
-  static viewTargetString_Getter(mthis) native "SVGViewSpec_viewTargetString_Getter";
-  viewTargetString_Getter_(mthis) => viewTargetString_Getter(mthis);
+  viewTargetString_Getter_(mthis) => mthis["viewTargetString"];
 
-  static viewTarget_Getter(mthis) native "SVGViewSpec_viewTarget_Getter";
-  viewTarget_Getter_(mthis) => viewTarget_Getter(mthis);
+  viewTarget_Getter_(mthis) => mthis["viewTarget"];
 
-  static zoomAndPan_Getter(mthis) native "SVGViewSpec_zoomAndPan_Getter";
-  zoomAndPan_Getter_(mthis) => zoomAndPan_Getter(mthis);
+  zoomAndPan_Getter_(mthis) => mthis["zoomAndPan"];
 
-  static zoomAndPan_Setter(mthis, __arg_0) native "SVGViewSpec_zoomAndPan_Setter";
-  zoomAndPan_Setter_(mthis, __arg_0) => zoomAndPan_Setter(mthis, __arg_0);
+  zoomAndPan_Setter_(mthis, __arg_0) => mthis["zoomAndPan"] = __arg_0;
 
 }
 
 class BlinkSVGZoomEvent extends BlinkUIEvent {
   static final instance = new BlinkSVGZoomEvent();
 
-  static newScale_Getter(mthis) native "SVGZoomEvent_newScale_Getter";
-  newScale_Getter_(mthis) => newScale_Getter(mthis);
+  newScale_Getter_(mthis) => mthis["newScale"];
 
-  static newTranslate_Getter(mthis) native "SVGZoomEvent_newTranslate_Getter";
-  newTranslate_Getter_(mthis) => newTranslate_Getter(mthis);
+  newTranslate_Getter_(mthis) => mthis["newTranslate"];
 
-  static previousScale_Getter(mthis) native "SVGZoomEvent_previousScale_Getter";
-  previousScale_Getter_(mthis) => previousScale_Getter(mthis);
+  previousScale_Getter_(mthis) => mthis["previousScale"];
 
-  static previousTranslate_Getter(mthis) native "SVGZoomEvent_previousTranslate_Getter";
-  previousTranslate_Getter_(mthis) => previousTranslate_Getter(mthis);
+  previousTranslate_Getter_(mthis) => mthis["previousTranslate"];
 
-  static zoomRectScreen_Getter(mthis) native "SVGZoomEvent_zoomRectScreen_Getter";
-  zoomRectScreen_Getter_(mthis) => zoomRectScreen_Getter(mthis);
+  zoomRectScreen_Getter_(mthis) => mthis["zoomRectScreen"];
 
 }
 
 class BlinkScreen {
   static final instance = new BlinkScreen();
 
-  static availHeight_Getter(mthis) native "Screen_availHeight_Getter";
-  availHeight_Getter_(mthis) => availHeight_Getter(mthis);
+  availHeight_Getter_(mthis) => mthis["availHeight"];
 
-  static availLeft_Getter(mthis) native "Screen_availLeft_Getter";
-  availLeft_Getter_(mthis) => availLeft_Getter(mthis);
+  availLeft_Getter_(mthis) => mthis["availLeft"];
 
-  static availTop_Getter(mthis) native "Screen_availTop_Getter";
-  availTop_Getter_(mthis) => availTop_Getter(mthis);
+  availTop_Getter_(mthis) => mthis["availTop"];
 
-  static availWidth_Getter(mthis) native "Screen_availWidth_Getter";
-  availWidth_Getter_(mthis) => availWidth_Getter(mthis);
+  availWidth_Getter_(mthis) => mthis["availWidth"];
 
-  static colorDepth_Getter(mthis) native "Screen_colorDepth_Getter";
-  colorDepth_Getter_(mthis) => colorDepth_Getter(mthis);
+  colorDepth_Getter_(mthis) => mthis["colorDepth"];
 
-  static height_Getter(mthis) native "Screen_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  height_Getter_(mthis) => mthis["height"];
 
-  static orientation_Getter(mthis) native "Screen_orientation_Getter";
-  orientation_Getter_(mthis) => orientation_Getter(mthis);
+  orientation_Getter_(mthis) => mthis["orientation"];
 
-  static pixelDepth_Getter(mthis) native "Screen_pixelDepth_Getter";
-  pixelDepth_Getter_(mthis) => pixelDepth_Getter(mthis);
+  pixelDepth_Getter_(mthis) => mthis["pixelDepth"];
 
-  static width_Getter(mthis) native "Screen_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
 }
 
 class BlinkScreenOrientation extends BlinkEventTarget {
   static final instance = new BlinkScreenOrientation();
 
-  static angle_Getter(mthis) native "ScreenOrientation_angle_Getter";
-  angle_Getter_(mthis) => angle_Getter(mthis);
+  angle_Getter_(mthis) => mthis["angle"];
 
-  static lock_Callback_0(mthis) native "ScreenOrientation_lock_Callback";
-  lock_Callback_0_(mthis) => lock_Callback_0(mthis);
+  lock_Callback_0_(mthis) => mthis.callMethod("lock", []);
 
-  static lock_Callback_1(mthis, __arg_0) native "ScreenOrientation_lock_Callback";
-  lock_Callback_1_(mthis, __arg_0) => lock_Callback_1(mthis, __arg_0);
+  lock_Callback_1_(mthis, __arg_0) => mthis.callMethod("lock", [__arg_0]);
 
-  static lock_Callback_2(mthis, __arg_0, __arg_1) native "ScreenOrientation_lock_Callback";
-  lock_Callback_2_(mthis, __arg_0, __arg_1) => lock_Callback_2(mthis, __arg_0, __arg_1);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static lock_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ScreenOrientation_lock_Callback";
-  lock_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lock_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static onchange_Getter(mthis) native "ScreenOrientation_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
-  static onchange_Setter(mthis, __arg_0) native "ScreenOrientation_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
-
-  static type_Getter(mthis) native "ScreenOrientation_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
-
-  static unlock_Callback_0(mthis) native "ScreenOrientation_unlock_Callback";
-  unlock_Callback_0_(mthis) => unlock_Callback_0(mthis);
-
-  static unlock_Callback_1(mthis, __arg_0) native "ScreenOrientation_unlock_Callback";
-  unlock_Callback_1_(mthis, __arg_0) => unlock_Callback_1(mthis, __arg_0);
-
-  static unlock_Callback_2(mthis, __arg_0, __arg_1) native "ScreenOrientation_unlock_Callback";
-  unlock_Callback_2_(mthis, __arg_0, __arg_1) => unlock_Callback_2(mthis, __arg_0, __arg_1);
+  unlock_Callback_0_(mthis) => mthis.callMethod("unlock", []);
 
 }
 
 class BlinkScriptProcessorNode extends BlinkAudioNode {
   static final instance = new BlinkScriptProcessorNode();
 
-  static bufferSize_Getter(mthis) native "ScriptProcessorNode_bufferSize_Getter";
-  bufferSize_Getter_(mthis) => bufferSize_Getter(mthis);
+  bufferSize_Getter_(mthis) => mthis["bufferSize"];
 
-  static onaudioprocess_Getter(mthis) native "ScriptProcessorNode_onaudioprocess_Getter";
-  onaudioprocess_Getter_(mthis) => onaudioprocess_Getter(mthis);
+  onaudioprocess_Getter_(mthis) => mthis["onaudioprocess"];
 
-  static onaudioprocess_Setter(mthis, __arg_0) native "ScriptProcessorNode_onaudioprocess_Setter";
-  onaudioprocess_Setter_(mthis, __arg_0) => onaudioprocess_Setter(mthis, __arg_0);
+  onaudioprocess_Setter_(mthis, __arg_0) => mthis["onaudioprocess"] = __arg_0;
 
-  static setEventListener_Callback_0(mthis) native "ScriptProcessorNode_setEventListener_Callback";
-  setEventListener_Callback_0_(mthis) => setEventListener_Callback_0(mthis);
+  setEventListener_Callback_0_(mthis) => mthis.callMethod("setEventListener", []);
 
-  static setEventListener_Callback_1(mthis, __arg_0) native "ScriptProcessorNode_setEventListener_Callback";
-  setEventListener_Callback_1_(mthis, __arg_0) => setEventListener_Callback_1(mthis, __arg_0);
-
-  static setEventListener_Callback_2(mthis, __arg_0, __arg_1) native "ScriptProcessorNode_setEventListener_Callback";
-  setEventListener_Callback_2_(mthis, __arg_0, __arg_1) => setEventListener_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ScriptProcessorNode_setEventListener_Callback";
-  setEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setEventListener_Callback_1_(mthis, __arg_0) => mthis.callMethod("setEventListener", [__arg_0]);
 
 }
 
 class BlinkSecurityPolicyViolationEvent extends BlinkEvent {
   static final instance = new BlinkSecurityPolicyViolationEvent();
 
-  static blockedURI_Getter(mthis) native "SecurityPolicyViolationEvent_blockedURI_Getter";
-  blockedURI_Getter_(mthis) => blockedURI_Getter(mthis);
+  blockedURI_Getter_(mthis) => mthis["blockedURI"];
 
-  static columnNumber_Getter(mthis) native "SecurityPolicyViolationEvent_columnNumber_Getter";
-  columnNumber_Getter_(mthis) => columnNumber_Getter(mthis);
+  columnNumber_Getter_(mthis) => mthis["columnNumber"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "SecurityPolicyViolationEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["SecurityPolicyViolationEvent"], [__arg_0, __arg_1]);
 
-  static documentURI_Getter(mthis) native "SecurityPolicyViolationEvent_documentURI_Getter";
-  documentURI_Getter_(mthis) => documentURI_Getter(mthis);
+  documentURI_Getter_(mthis) => mthis["documentURI"];
 
-  static effectiveDirective_Getter(mthis) native "SecurityPolicyViolationEvent_effectiveDirective_Getter";
-  effectiveDirective_Getter_(mthis) => effectiveDirective_Getter(mthis);
+  effectiveDirective_Getter_(mthis) => mthis["effectiveDirective"];
 
-  static lineNumber_Getter(mthis) native "SecurityPolicyViolationEvent_lineNumber_Getter";
-  lineNumber_Getter_(mthis) => lineNumber_Getter(mthis);
+  lineNumber_Getter_(mthis) => mthis["lineNumber"];
 
-  static originalPolicy_Getter(mthis) native "SecurityPolicyViolationEvent_originalPolicy_Getter";
-  originalPolicy_Getter_(mthis) => originalPolicy_Getter(mthis);
+  originalPolicy_Getter_(mthis) => mthis["originalPolicy"];
 
-  static referrer_Getter(mthis) native "SecurityPolicyViolationEvent_referrer_Getter";
-  referrer_Getter_(mthis) => referrer_Getter(mthis);
+  referrer_Getter_(mthis) => mthis["referrer"];
 
-  static sourceFile_Getter(mthis) native "SecurityPolicyViolationEvent_sourceFile_Getter";
-  sourceFile_Getter_(mthis) => sourceFile_Getter(mthis);
+  sourceFile_Getter_(mthis) => mthis["sourceFile"];
 
-  static statusCode_Getter(mthis) native "SecurityPolicyViolationEvent_statusCode_Getter";
-  statusCode_Getter_(mthis) => statusCode_Getter(mthis);
+  statusCode_Getter_(mthis) => mthis["statusCode"];
 
-  static violatedDirective_Getter(mthis) native "SecurityPolicyViolationEvent_violatedDirective_Getter";
-  violatedDirective_Getter_(mthis) => violatedDirective_Getter(mthis);
+  violatedDirective_Getter_(mthis) => mthis["violatedDirective"];
 
 }
 
 class BlinkSelection {
   static final instance = new BlinkSelection();
 
-  static addRange_Callback_0(mthis) native "Selection_addRange_Callback";
-  addRange_Callback_0_(mthis) => addRange_Callback_0(mthis);
+  addRange_Callback_0_(mthis) => mthis.callMethod("addRange", []);
 
-  static addRange_Callback_1(mthis, __arg_0) native "Selection_addRange_Callback";
-  addRange_Callback_1_(mthis, __arg_0) => addRange_Callback_1(mthis, __arg_0);
+  addRange_Callback_1_(mthis, __arg_0) => mthis.callMethod("addRange", [__arg_0]);
 
-  static addRange_Callback_2(mthis, __arg_0, __arg_1) native "Selection_addRange_Callback";
-  addRange_Callback_2_(mthis, __arg_0, __arg_1) => addRange_Callback_2(mthis, __arg_0, __arg_1);
+  anchorNode_Getter_(mthis) => mthis["anchorNode"];
 
-  static addRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_addRange_Callback";
-  addRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  anchorOffset_Getter_(mthis) => mthis["anchorOffset"];
 
-  static anchorNode_Getter(mthis) native "Selection_anchorNode_Getter";
-  anchorNode_Getter_(mthis) => anchorNode_Getter(mthis);
+  baseNode_Getter_(mthis) => mthis["baseNode"];
 
-  static anchorOffset_Getter(mthis) native "Selection_anchorOffset_Getter";
-  anchorOffset_Getter_(mthis) => anchorOffset_Getter(mthis);
+  baseOffset_Getter_(mthis) => mthis["baseOffset"];
 
-  static baseNode_Getter(mthis) native "Selection_baseNode_Getter";
-  baseNode_Getter_(mthis) => baseNode_Getter(mthis);
+  collapseToEnd_Callback_0_(mthis) => mthis.callMethod("collapseToEnd", []);
 
-  static baseOffset_Getter(mthis) native "Selection_baseOffset_Getter";
-  baseOffset_Getter_(mthis) => baseOffset_Getter(mthis);
+  collapseToStart_Callback_0_(mthis) => mthis.callMethod("collapseToStart", []);
 
-  static collapseToEnd_Callback_0(mthis) native "Selection_collapseToEnd_Callback";
-  collapseToEnd_Callback_0_(mthis) => collapseToEnd_Callback_0(mthis);
+  collapse_Callback_0_(mthis) => mthis.callMethod("collapse", []);
 
-  static collapseToEnd_Callback_1(mthis, __arg_0) native "Selection_collapseToEnd_Callback";
-  collapseToEnd_Callback_1_(mthis, __arg_0) => collapseToEnd_Callback_1(mthis, __arg_0);
+  collapse_Callback_1_(mthis, __arg_0) => mthis.callMethod("collapse", [__arg_0]);
 
-  static collapseToEnd_Callback_2(mthis, __arg_0, __arg_1) native "Selection_collapseToEnd_Callback";
-  collapseToEnd_Callback_2_(mthis, __arg_0, __arg_1) => collapseToEnd_Callback_2(mthis, __arg_0, __arg_1);
+  collapse_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("collapse", [__arg_0, __arg_1]);
 
-  static collapseToStart_Callback_0(mthis) native "Selection_collapseToStart_Callback";
-  collapseToStart_Callback_0_(mthis) => collapseToStart_Callback_0(mthis);
+  containsNode_Callback_0_(mthis) => mthis.callMethod("containsNode", []);
 
-  static collapseToStart_Callback_1(mthis, __arg_0) native "Selection_collapseToStart_Callback";
-  collapseToStart_Callback_1_(mthis, __arg_0) => collapseToStart_Callback_1(mthis, __arg_0);
+  containsNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("containsNode", [__arg_0]);
 
-  static collapseToStart_Callback_2(mthis, __arg_0, __arg_1) native "Selection_collapseToStart_Callback";
-  collapseToStart_Callback_2_(mthis, __arg_0, __arg_1) => collapseToStart_Callback_2(mthis, __arg_0, __arg_1);
+  containsNode_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("containsNode", [__arg_0, __arg_1]);
 
-  static collapse_Callback_0(mthis) native "Selection_collapse_Callback";
-  collapse_Callback_0_(mthis) => collapse_Callback_0(mthis);
+  deleteFromDocument_Callback_0_(mthis) => mthis.callMethod("deleteFromDocument", []);
 
-  static collapse_Callback_1(mthis, __arg_0) native "Selection_collapse_Callback";
-  collapse_Callback_1_(mthis, __arg_0) => collapse_Callback_1(mthis, __arg_0);
+  empty_Callback_0_(mthis) => mthis.callMethod("empty", []);
 
-  static collapse_Callback_2(mthis, __arg_0, __arg_1) native "Selection_collapse_Callback";
-  collapse_Callback_2_(mthis, __arg_0, __arg_1) => collapse_Callback_2(mthis, __arg_0, __arg_1);
+  extend_Callback_0_(mthis) => mthis.callMethod("extend", []);
 
-  static collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_collapse_Callback";
-  collapse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  extend_Callback_1_(mthis, __arg_0) => mthis.callMethod("extend", [__arg_0]);
 
-  static collapse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_collapse_Callback";
-  collapse_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => collapse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  extend_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("extend", [__arg_0, __arg_1]);
 
-  static containsNode_Callback_0(mthis) native "Selection_containsNode_Callback";
-  containsNode_Callback_0_(mthis) => containsNode_Callback_0(mthis);
+  extentNode_Getter_(mthis) => mthis["extentNode"];
 
-  static containsNode_Callback_1(mthis, __arg_0) native "Selection_containsNode_Callback";
-  containsNode_Callback_1_(mthis, __arg_0) => containsNode_Callback_1(mthis, __arg_0);
+  extentOffset_Getter_(mthis) => mthis["extentOffset"];
 
-  static containsNode_Callback_2(mthis, __arg_0, __arg_1) native "Selection_containsNode_Callback";
-  containsNode_Callback_2_(mthis, __arg_0, __arg_1) => containsNode_Callback_2(mthis, __arg_0, __arg_1);
+  focusNode_Getter_(mthis) => mthis["focusNode"];
 
-  static containsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_containsNode_Callback";
-  containsNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => containsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  focusOffset_Getter_(mthis) => mthis["focusOffset"];
 
-  static containsNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_containsNode_Callback";
-  containsNode_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => containsNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getRangeAt_Callback_0_(mthis) => mthis.callMethod("getRangeAt", []);
 
-  static deleteFromDocument_Callback_0(mthis) native "Selection_deleteFromDocument_Callback";
-  deleteFromDocument_Callback_0_(mthis) => deleteFromDocument_Callback_0(mthis);
+  getRangeAt_Callback_1_(mthis, __arg_0) => mthis.callMethod("getRangeAt", [__arg_0]);
 
-  static deleteFromDocument_Callback_1(mthis, __arg_0) native "Selection_deleteFromDocument_Callback";
-  deleteFromDocument_Callback_1_(mthis, __arg_0) => deleteFromDocument_Callback_1(mthis, __arg_0);
+  isCollapsed_Getter_(mthis) => mthis["isCollapsed"];
 
-  static deleteFromDocument_Callback_2(mthis, __arg_0, __arg_1) native "Selection_deleteFromDocument_Callback";
-  deleteFromDocument_Callback_2_(mthis, __arg_0, __arg_1) => deleteFromDocument_Callback_2(mthis, __arg_0, __arg_1);
+  modify_Callback_0_(mthis) => mthis.callMethod("modify", []);
 
-  static empty_Callback_0(mthis) native "Selection_empty_Callback";
-  empty_Callback_0_(mthis) => empty_Callback_0(mthis);
+  modify_Callback_1_(mthis, __arg_0) => mthis.callMethod("modify", [__arg_0]);
 
-  static empty_Callback_1(mthis, __arg_0) native "Selection_empty_Callback";
-  empty_Callback_1_(mthis, __arg_0) => empty_Callback_1(mthis, __arg_0);
+  modify_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("modify", [__arg_0, __arg_1]);
 
-  static empty_Callback_2(mthis, __arg_0, __arg_1) native "Selection_empty_Callback";
-  empty_Callback_2_(mthis, __arg_0, __arg_1) => empty_Callback_2(mthis, __arg_0, __arg_1);
+  modify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("modify", [__arg_0, __arg_1, __arg_2]);
 
-  static extend_Callback_0(mthis) native "Selection_extend_Callback";
-  extend_Callback_0_(mthis) => extend_Callback_0(mthis);
+  rangeCount_Getter_(mthis) => mthis["rangeCount"];
 
-  static extend_Callback_1(mthis, __arg_0) native "Selection_extend_Callback";
-  extend_Callback_1_(mthis, __arg_0) => extend_Callback_1(mthis, __arg_0);
+  removeAllRanges_Callback_0_(mthis) => mthis.callMethod("removeAllRanges", []);
 
-  static extend_Callback_2(mthis, __arg_0, __arg_1) native "Selection_extend_Callback";
-  extend_Callback_2_(mthis, __arg_0, __arg_1) => extend_Callback_2(mthis, __arg_0, __arg_1);
+  selectAllChildren_Callback_0_(mthis) => mthis.callMethod("selectAllChildren", []);
 
-  static extend_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_extend_Callback";
-  extend_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => extend_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  selectAllChildren_Callback_1_(mthis, __arg_0) => mthis.callMethod("selectAllChildren", [__arg_0]);
 
-  static extend_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_extend_Callback";
-  extend_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => extend_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setBaseAndExtent_Callback_0_(mthis) => mthis.callMethod("setBaseAndExtent", []);
 
-  static extentNode_Getter(mthis) native "Selection_extentNode_Getter";
-  extentNode_Getter_(mthis) => extentNode_Getter(mthis);
-
-  static extentOffset_Getter(mthis) native "Selection_extentOffset_Getter";
-  extentOffset_Getter_(mthis) => extentOffset_Getter(mthis);
-
-  static focusNode_Getter(mthis) native "Selection_focusNode_Getter";
-  focusNode_Getter_(mthis) => focusNode_Getter(mthis);
-
-  static focusOffset_Getter(mthis) native "Selection_focusOffset_Getter";
-  focusOffset_Getter_(mthis) => focusOffset_Getter(mthis);
-
-  static getRangeAt_Callback_0(mthis) native "Selection_getRangeAt_Callback";
-  getRangeAt_Callback_0_(mthis) => getRangeAt_Callback_0(mthis);
-
-  static getRangeAt_Callback_1(mthis, __arg_0) native "Selection_getRangeAt_Callback";
-  getRangeAt_Callback_1_(mthis, __arg_0) => getRangeAt_Callback_1(mthis, __arg_0);
-
-  static getRangeAt_Callback_2(mthis, __arg_0, __arg_1) native "Selection_getRangeAt_Callback";
-  getRangeAt_Callback_2_(mthis, __arg_0, __arg_1) => getRangeAt_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getRangeAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_getRangeAt_Callback";
-  getRangeAt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRangeAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isCollapsed_Getter(mthis) native "Selection_isCollapsed_Getter";
-  isCollapsed_Getter_(mthis) => isCollapsed_Getter(mthis);
-
-  static modify_Callback_0(mthis) native "Selection_modify_Callback";
-  modify_Callback_0_(mthis) => modify_Callback_0(mthis);
-
-  static modify_Callback_1(mthis, __arg_0) native "Selection_modify_Callback";
-  modify_Callback_1_(mthis, __arg_0) => modify_Callback_1(mthis, __arg_0);
-
-  static modify_Callback_2(mthis, __arg_0, __arg_1) native "Selection_modify_Callback";
-  modify_Callback_2_(mthis, __arg_0, __arg_1) => modify_Callback_2(mthis, __arg_0, __arg_1);
-
-  static modify_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_modify_Callback";
-  modify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => modify_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static modify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_modify_Callback";
-  modify_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => modify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static modify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Selection_modify_Callback";
-  modify_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => modify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static rangeCount_Getter(mthis) native "Selection_rangeCount_Getter";
-  rangeCount_Getter_(mthis) => rangeCount_Getter(mthis);
-
-  static removeAllRanges_Callback_0(mthis) native "Selection_removeAllRanges_Callback";
-  removeAllRanges_Callback_0_(mthis) => removeAllRanges_Callback_0(mthis);
-
-  static removeAllRanges_Callback_1(mthis, __arg_0) native "Selection_removeAllRanges_Callback";
-  removeAllRanges_Callback_1_(mthis, __arg_0) => removeAllRanges_Callback_1(mthis, __arg_0);
-
-  static removeAllRanges_Callback_2(mthis, __arg_0, __arg_1) native "Selection_removeAllRanges_Callback";
-  removeAllRanges_Callback_2_(mthis, __arg_0, __arg_1) => removeAllRanges_Callback_2(mthis, __arg_0, __arg_1);
-
-  static selectAllChildren_Callback_0(mthis) native "Selection_selectAllChildren_Callback";
-  selectAllChildren_Callback_0_(mthis) => selectAllChildren_Callback_0(mthis);
-
-  static selectAllChildren_Callback_1(mthis, __arg_0) native "Selection_selectAllChildren_Callback";
-  selectAllChildren_Callback_1_(mthis, __arg_0) => selectAllChildren_Callback_1(mthis, __arg_0);
-
-  static selectAllChildren_Callback_2(mthis, __arg_0, __arg_1) native "Selection_selectAllChildren_Callback";
-  selectAllChildren_Callback_2_(mthis, __arg_0, __arg_1) => selectAllChildren_Callback_2(mthis, __arg_0, __arg_1);
-
-  static selectAllChildren_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_selectAllChildren_Callback";
-  selectAllChildren_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectAllChildren_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setBaseAndExtent_Callback_0(mthis) native "Selection_setBaseAndExtent_Callback";
-  setBaseAndExtent_Callback_0_(mthis) => setBaseAndExtent_Callback_0(mthis);
-
-  static setBaseAndExtent_Callback_1(mthis, __arg_0) native "Selection_setBaseAndExtent_Callback";
-  setBaseAndExtent_Callback_1_(mthis, __arg_0) => setBaseAndExtent_Callback_1(mthis, __arg_0);
-
-  static setBaseAndExtent_Callback_2(mthis, __arg_0, __arg_1) native "Selection_setBaseAndExtent_Callback";
-  setBaseAndExtent_Callback_2_(mthis, __arg_0, __arg_1) => setBaseAndExtent_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setBaseAndExtent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_setBaseAndExtent_Callback";
-  setBaseAndExtent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setBaseAndExtent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setBaseAndExtent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_setBaseAndExtent_Callback";
-  setBaseAndExtent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setBaseAndExtent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setBaseAndExtent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Selection_setBaseAndExtent_Callback";
-  setBaseAndExtent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setBaseAndExtent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setBaseAndExtent_Callback_1_(mthis, __arg_0) => mthis.callMethod("setBaseAndExtent", [__arg_0]);
 
-  static setBaseAndExtent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Selection_setBaseAndExtent_Callback";
-  setBaseAndExtent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setBaseAndExtent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  setBaseAndExtent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setBaseAndExtent", [__arg_0, __arg_1]);
 
-  static setPosition_Callback_0(mthis) native "Selection_setPosition_Callback";
-  setPosition_Callback_0_(mthis) => setPosition_Callback_0(mthis);
+  setBaseAndExtent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setBaseAndExtent", [__arg_0, __arg_1, __arg_2]);
 
-  static setPosition_Callback_1(mthis, __arg_0) native "Selection_setPosition_Callback";
-  setPosition_Callback_1_(mthis, __arg_0) => setPosition_Callback_1(mthis, __arg_0);
+  setBaseAndExtent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("setBaseAndExtent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static setPosition_Callback_2(mthis, __arg_0, __arg_1) native "Selection_setPosition_Callback";
-  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => setPosition_Callback_2(mthis, __arg_0, __arg_1);
+  setPosition_Callback_0_(mthis) => mthis.callMethod("setPosition", []);
 
-  static setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_setPosition_Callback";
-  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setPosition_Callback_1_(mthis, __arg_0) => mthis.callMethod("setPosition", [__arg_0]);
 
-  static setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_setPosition_Callback";
-  setPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setPosition", [__arg_0, __arg_1]);
 
-  static type_Getter(mthis) native "Selection_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkServiceWorker extends BlinkEventTarget {
   static final instance = new BlinkServiceWorker();
 
-  static onerror_Getter(mthis) native "ServiceWorker_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onerror_Setter(mthis, __arg_0) native "ServiceWorker_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onstatechange_Getter(mthis) native "ServiceWorker_onstatechange_Getter";
-  onstatechange_Getter_(mthis) => onstatechange_Getter(mthis);
+  onstatechange_Getter_(mthis) => mthis["onstatechange"];
 
-  static onstatechange_Setter(mthis, __arg_0) native "ServiceWorker_onstatechange_Setter";
-  onstatechange_Setter_(mthis, __arg_0) => onstatechange_Setter(mthis, __arg_0);
+  onstatechange_Setter_(mthis, __arg_0) => mthis["onstatechange"] = __arg_0;
 
-  static postMessage_Callback_0(mthis) native "ServiceWorker_postMessage_Callback";
-  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+  postMessage_Callback_0_(mthis) => mthis.callMethod("postMessage", []);
 
-  static postMessage_Callback_1(mthis, __arg_0) native "ServiceWorker_postMessage_Callback";
-  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+  postMessage_Callback_1_(mthis, __arg_0) => mthis.callMethod("postMessage", [__arg_0]);
 
-  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorker_postMessage_Callback";
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("postMessage", [__arg_0, __arg_1]);
 
-  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorker_postMessage_Callback";
-  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scriptURL_Getter_(mthis) => mthis["scriptURL"];
 
-  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorker_postMessage_Callback";
-  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  state_Getter_(mthis) => mthis["state"];
 
-  static scriptURL_Getter(mthis) native "ServiceWorker_scriptURL_Getter";
-  scriptURL_Getter_(mthis) => scriptURL_Getter(mthis);
-
-  static state_Getter(mthis) native "ServiceWorker_state_Getter";
-  state_Getter_(mthis) => state_Getter(mthis);
-
-  static terminate_Callback_0(mthis) native "ServiceWorker_terminate_Callback";
-  terminate_Callback_0_(mthis) => terminate_Callback_0(mthis);
-
-  static terminate_Callback_1(mthis, __arg_0) native "ServiceWorker_terminate_Callback";
-  terminate_Callback_1_(mthis, __arg_0) => terminate_Callback_1(mthis, __arg_0);
-
-  static terminate_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorker_terminate_Callback";
-  terminate_Callback_2_(mthis, __arg_0, __arg_1) => terminate_Callback_2(mthis, __arg_0, __arg_1);
+  terminate_Callback_0_(mthis) => mthis.callMethod("terminate", []);
 
 }
 
 class BlinkServiceWorkerClient {
   static final instance = new BlinkServiceWorkerClient();
 
-  static id_Getter(mthis) native "ServiceWorkerClient_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static postMessage_Callback_0(mthis) native "ServiceWorkerClient_postMessage_Callback";
-  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+  postMessage_Callback_0_(mthis) => mthis.callMethod("postMessage", []);
 
-  static postMessage_Callback_1(mthis, __arg_0) native "ServiceWorkerClient_postMessage_Callback";
-  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+  postMessage_Callback_1_(mthis, __arg_0) => mthis.callMethod("postMessage", [__arg_0]);
 
-  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerClient_postMessage_Callback";
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
-
-  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerClient_postMessage_Callback";
-  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorkerClient_postMessage_Callback";
-  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("postMessage", [__arg_0, __arg_1]);
 
 }
 
 class BlinkServiceWorkerClients {
   static final instance = new BlinkServiceWorkerClients();
 
-  static getAll_Callback_0(mthis) native "ServiceWorkerClients_getAll_Callback";
-  getAll_Callback_0_(mthis) => getAll_Callback_0(mthis);
+  getAll_Callback_0_(mthis) => mthis.callMethod("getAll", []);
 
-  static getAll_Callback_1(mthis, __arg_0) native "ServiceWorkerClients_getAll_Callback";
-  getAll_Callback_1_(mthis, __arg_0) => getAll_Callback_1(mthis, __arg_0);
-
-  static getAll_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerClients_getAll_Callback";
-  getAll_Callback_2_(mthis, __arg_0, __arg_1) => getAll_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerClients_getAll_Callback";
-  getAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getAll_Callback_1_(mthis, __arg_0) => mthis.callMethod("getAll", [__arg_0]);
 
 }
 
 class BlinkServiceWorkerContainer {
   static final instance = new BlinkServiceWorkerContainer();
 
-  static controller_Getter(mthis) native "ServiceWorkerContainer_controller_Getter";
-  controller_Getter_(mthis) => controller_Getter(mthis);
+  controller_Getter_(mthis) => mthis["controller"];
 
-  static getRegistration_Callback_0(mthis) native "ServiceWorkerContainer_getRegistration_Callback";
-  getRegistration_Callback_0_(mthis) => getRegistration_Callback_0(mthis);
+  getRegistration_Callback_0_(mthis) => mthis.callMethod("getRegistration", []);
 
-  static getRegistration_Callback_1(mthis, __arg_0) native "ServiceWorkerContainer_getRegistration_Callback";
-  getRegistration_Callback_1_(mthis, __arg_0) => getRegistration_Callback_1(mthis, __arg_0);
+  getRegistration_Callback_1_(mthis, __arg_0) => mthis.callMethod("getRegistration", [__arg_0]);
 
-  static getRegistration_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerContainer_getRegistration_Callback";
-  getRegistration_Callback_2_(mthis, __arg_0, __arg_1) => getRegistration_Callback_2(mthis, __arg_0, __arg_1);
+  ready_Getter_(mthis) => mthis["ready"];
 
-  static getRegistration_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerContainer_getRegistration_Callback";
-  getRegistration_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRegistration_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  register_Callback_0_(mthis) => mthis.callMethod("register", []);
 
-  static ready_Getter(mthis) native "ServiceWorkerContainer_ready_Getter";
-  ready_Getter_(mthis) => ready_Getter(mthis);
+  register_Callback_1_(mthis, __arg_0) => mthis.callMethod("register", [__arg_0]);
 
-  static register_Callback_0(mthis) native "ServiceWorkerContainer_register_Callback";
-  register_Callback_0_(mthis) => register_Callback_0(mthis);
-
-  static register_Callback_1(mthis, __arg_0) native "ServiceWorkerContainer_register_Callback";
-  register_Callback_1_(mthis, __arg_0) => register_Callback_1(mthis, __arg_0);
-
-  static register_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerContainer_register_Callback";
-  register_Callback_2_(mthis, __arg_0, __arg_1) => register_Callback_2(mthis, __arg_0, __arg_1);
-
-  static register_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerContainer_register_Callback";
-  register_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => register_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static register_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorkerContainer_register_Callback";
-  register_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => register_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  register_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("register", [__arg_0, __arg_1]);
 
 }
 
 class BlinkServiceWorkerGlobalScope extends BlinkWorkerGlobalScope {
   static final instance = new BlinkServiceWorkerGlobalScope();
 
-  static caches_Getter(mthis) native "ServiceWorkerGlobalScope_caches_Getter";
-  caches_Getter_(mthis) => caches_Getter(mthis);
+  caches_Getter_(mthis) => mthis["caches"];
 
-  static clients_Getter(mthis) native "ServiceWorkerGlobalScope_clients_Getter";
-  clients_Getter_(mthis) => clients_Getter(mthis);
+  clients_Getter_(mthis) => mthis["clients"];
 
-  static close_Callback_0(mthis) native "ServiceWorkerGlobalScope_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "ServiceWorkerGlobalScope_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  fetch_Callback_0_(mthis) => mthis.callMethod("fetch", []);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerGlobalScope_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  fetch_Callback_1_(mthis, __arg_0) => mthis.callMethod("fetch", [__arg_0]);
 
-  static fetch_Callback_0(mthis) native "ServiceWorkerGlobalScope_fetch_Callback";
-  fetch_Callback_0_(mthis) => fetch_Callback_0(mthis);
+  fetch_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("fetch", [__arg_0, __arg_1]);
 
-  static fetch_Callback_1(mthis, __arg_0) native "ServiceWorkerGlobalScope_fetch_Callback";
-  fetch_Callback_1_(mthis, __arg_0) => fetch_Callback_1(mthis, __arg_0);
+  onactivate_Getter_(mthis) => mthis["onactivate"];
 
-  static fetch_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerGlobalScope_fetch_Callback";
-  fetch_Callback_2_(mthis, __arg_0, __arg_1) => fetch_Callback_2(mthis, __arg_0, __arg_1);
+  onactivate_Setter_(mthis, __arg_0) => mthis["onactivate"] = __arg_0;
 
-  static fetch_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerGlobalScope_fetch_Callback";
-  fetch_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fetch_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onfetch_Getter_(mthis) => mthis["onfetch"];
 
-  static fetch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorkerGlobalScope_fetch_Callback";
-  fetch_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fetch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onfetch_Setter_(mthis, __arg_0) => mthis["onfetch"] = __arg_0;
 
-  static onactivate_Getter(mthis) native "ServiceWorkerGlobalScope_onactivate_Getter";
-  onactivate_Getter_(mthis) => onactivate_Getter(mthis);
+  oninstall_Getter_(mthis) => mthis["oninstall"];
 
-  static onactivate_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onactivate_Setter";
-  onactivate_Setter_(mthis, __arg_0) => onactivate_Setter(mthis, __arg_0);
+  oninstall_Setter_(mthis, __arg_0) => mthis["oninstall"] = __arg_0;
 
-  static onfetch_Getter(mthis) native "ServiceWorkerGlobalScope_onfetch_Getter";
-  onfetch_Getter_(mthis) => onfetch_Getter(mthis);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static onfetch_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onfetch_Setter";
-  onfetch_Setter_(mthis, __arg_0) => onfetch_Setter(mthis, __arg_0);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static oninstall_Getter(mthis) native "ServiceWorkerGlobalScope_oninstall_Getter";
-  oninstall_Getter_(mthis) => oninstall_Getter(mthis);
+  onpush_Getter_(mthis) => mthis["onpush"];
 
-  static oninstall_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_oninstall_Setter";
-  oninstall_Setter_(mthis, __arg_0) => oninstall_Setter(mthis, __arg_0);
+  onpush_Setter_(mthis, __arg_0) => mthis["onpush"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "ServiceWorkerGlobalScope_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  onsync_Getter_(mthis) => mthis["onsync"];
 
-  static onmessage_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  onsync_Setter_(mthis, __arg_0) => mthis["onsync"] = __arg_0;
 
-  static onpush_Getter(mthis) native "ServiceWorkerGlobalScope_onpush_Getter";
-  onpush_Getter_(mthis) => onpush_Getter(mthis);
-
-  static onpush_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onpush_Setter";
-  onpush_Setter_(mthis, __arg_0) => onpush_Setter(mthis, __arg_0);
-
-  static onsync_Getter(mthis) native "ServiceWorkerGlobalScope_onsync_Getter";
-  onsync_Getter_(mthis) => onsync_Getter(mthis);
-
-  static onsync_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onsync_Setter";
-  onsync_Setter_(mthis, __arg_0) => onsync_Setter(mthis, __arg_0);
-
-  static scope_Getter(mthis) native "ServiceWorkerGlobalScope_scope_Getter";
-  scope_Getter_(mthis) => scope_Getter(mthis);
+  scope_Getter_(mthis) => mthis["scope"];
 
 }
 
 class BlinkServiceWorkerRegistration extends BlinkEventTarget {
   static final instance = new BlinkServiceWorkerRegistration();
 
-  static active_Getter(mthis) native "ServiceWorkerRegistration_active_Getter";
-  active_Getter_(mthis) => active_Getter(mthis);
+  active_Getter_(mthis) => mthis["active"];
 
-  static installing_Getter(mthis) native "ServiceWorkerRegistration_installing_Getter";
-  installing_Getter_(mthis) => installing_Getter(mthis);
+  installing_Getter_(mthis) => mthis["installing"];
 
-  static onupdatefound_Getter(mthis) native "ServiceWorkerRegistration_onupdatefound_Getter";
-  onupdatefound_Getter_(mthis) => onupdatefound_Getter(mthis);
+  onupdatefound_Getter_(mthis) => mthis["onupdatefound"];
 
-  static onupdatefound_Setter(mthis, __arg_0) native "ServiceWorkerRegistration_onupdatefound_Setter";
-  onupdatefound_Setter_(mthis, __arg_0) => onupdatefound_Setter(mthis, __arg_0);
+  onupdatefound_Setter_(mthis, __arg_0) => mthis["onupdatefound"] = __arg_0;
 
-  static scope_Getter(mthis) native "ServiceWorkerRegistration_scope_Getter";
-  scope_Getter_(mthis) => scope_Getter(mthis);
+  scope_Getter_(mthis) => mthis["scope"];
 
-  static unregister_Callback_0(mthis) native "ServiceWorkerRegistration_unregister_Callback";
-  unregister_Callback_0_(mthis) => unregister_Callback_0(mthis);
+  unregister_Callback_0_(mthis) => mthis.callMethod("unregister", []);
 
-  static unregister_Callback_1(mthis, __arg_0) native "ServiceWorkerRegistration_unregister_Callback";
-  unregister_Callback_1_(mthis, __arg_0) => unregister_Callback_1(mthis, __arg_0);
-
-  static unregister_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerRegistration_unregister_Callback";
-  unregister_Callback_2_(mthis, __arg_0, __arg_1) => unregister_Callback_2(mthis, __arg_0, __arg_1);
-
-  static waiting_Getter(mthis) native "ServiceWorkerRegistration_waiting_Getter";
-  waiting_Getter_(mthis) => waiting_Getter(mthis);
+  waiting_Getter_(mthis) => mthis["waiting"];
 
 }
 
 class BlinkShadowRoot extends BlinkDocumentFragment {
   static final instance = new BlinkShadowRoot();
 
-  static activeElement_Getter(mthis) native "ShadowRoot_activeElement_Getter";
-  activeElement_Getter_(mthis) => activeElement_Getter(mthis);
+  activeElement_Getter_(mthis) => mthis["activeElement"];
 
-  static cloneNode_Callback_0(mthis) native "ShadowRoot_cloneNode_Callback";
-  cloneNode_Callback_0_(mthis) => cloneNode_Callback_0(mthis);
+  cloneNode_Callback_0_(mthis) => mthis.callMethod("cloneNode", []);
 
-  static cloneNode_Callback_1(mthis, __arg_0) native "ShadowRoot_cloneNode_Callback";
-  cloneNode_Callback_1_(mthis, __arg_0) => cloneNode_Callback_1(mthis, __arg_0);
+  cloneNode_Callback_1_(mthis, __arg_0) => mthis.callMethod("cloneNode", [__arg_0]);
 
-  static cloneNode_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_cloneNode_Callback";
-  cloneNode_Callback_2_(mthis, __arg_0, __arg_1) => cloneNode_Callback_2(mthis, __arg_0, __arg_1);
+  elementFromPoint_Callback_0_(mthis) => mthis.callMethod("elementFromPoint", []);
 
-  static cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_cloneNode_Callback";
-  cloneNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  elementFromPoint_Callback_1_(mthis, __arg_0) => mthis.callMethod("elementFromPoint", [__arg_0]);
 
-  static elementFromPoint_Callback_0(mthis) native "ShadowRoot_elementFromPoint_Callback";
-  elementFromPoint_Callback_0_(mthis) => elementFromPoint_Callback_0(mthis);
+  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("elementFromPoint", [__arg_0, __arg_1]);
 
-  static elementFromPoint_Callback_1(mthis, __arg_0) native "ShadowRoot_elementFromPoint_Callback";
-  elementFromPoint_Callback_1_(mthis, __arg_0) => elementFromPoint_Callback_1(mthis, __arg_0);
+  getElementById_Callback_0_(mthis) => mthis.callMethod("getElementById", []);
 
-  static elementFromPoint_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_elementFromPoint_Callback";
-  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => elementFromPoint_Callback_2(mthis, __arg_0, __arg_1);
+  getElementById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementById", [__arg_0]);
 
-  static elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_elementFromPoint_Callback";
-  elementFromPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getElementsByClassName_Callback_0_(mthis) => mthis.callMethod("getElementsByClassName", []);
 
-  static elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ShadowRoot_elementFromPoint_Callback";
-  elementFromPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementsByClassName", [__arg_0]);
 
-  static getElementById_Callback_0(mthis) native "ShadowRoot_getElementById_Callback";
-  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
+  getElementsByTagName_Callback_0_(mthis) => mthis.callMethod("getElementsByTagName", []);
 
-  static getElementById_Callback_1(mthis, __arg_0) native "ShadowRoot_getElementById_Callback";
-  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => mthis.callMethod("getElementsByTagName", [__arg_0]);
 
-  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getElementById_Callback";
-  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
+  getSelection_Callback_0_(mthis) => mthis.callMethod("getSelection", []);
 
-  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_getElementById_Callback";
-  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  host_Getter_(mthis) => mthis["host"];
 
-  static getElementsByClassName_Callback_0(mthis) native "ShadowRoot_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_0_(mthis) => getElementsByClassName_Callback_0(mthis);
+  innerHTML_Getter_(mthis) => mthis["innerHTML"];
 
-  static getElementsByClassName_Callback_1(mthis, __arg_0) native "ShadowRoot_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_1_(mthis, __arg_0) => getElementsByClassName_Callback_1(mthis, __arg_0);
+  innerHTML_Setter_(mthis, __arg_0) => mthis["innerHTML"] = __arg_0;
 
-  static getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1);
+  olderShadowRoot_Getter_(mthis) => mthis["olderShadowRoot"];
 
-  static getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_getElementsByClassName_Callback";
-  getElementsByClassName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getElementsByTagName_Callback_0(mthis) native "ShadowRoot_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_0_(mthis) => getElementsByTagName_Callback_0(mthis);
-
-  static getElementsByTagName_Callback_1(mthis, __arg_0) native "ShadowRoot_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_1_(mthis, __arg_0) => getElementsByTagName_Callback_1(mthis, __arg_0);
-
-  static getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_getElementsByTagName_Callback";
-  getElementsByTagName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getSelection_Callback_0(mthis) native "ShadowRoot_getSelection_Callback";
-  getSelection_Callback_0_(mthis) => getSelection_Callback_0(mthis);
-
-  static getSelection_Callback_1(mthis, __arg_0) native "ShadowRoot_getSelection_Callback";
-  getSelection_Callback_1_(mthis, __arg_0) => getSelection_Callback_1(mthis, __arg_0);
-
-  static getSelection_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getSelection_Callback";
-  getSelection_Callback_2_(mthis, __arg_0, __arg_1) => getSelection_Callback_2(mthis, __arg_0, __arg_1);
-
-  static host_Getter(mthis) native "ShadowRoot_host_Getter";
-  host_Getter_(mthis) => host_Getter(mthis);
-
-  static innerHTML_Getter(mthis) native "ShadowRoot_innerHTML_Getter";
-  innerHTML_Getter_(mthis) => innerHTML_Getter(mthis);
-
-  static innerHTML_Setter(mthis, __arg_0) native "ShadowRoot_innerHTML_Setter";
-  innerHTML_Setter_(mthis, __arg_0) => innerHTML_Setter(mthis, __arg_0);
-
-  static olderShadowRoot_Getter(mthis) native "ShadowRoot_olderShadowRoot_Getter";
-  olderShadowRoot_Getter_(mthis) => olderShadowRoot_Getter(mthis);
-
-  static styleSheets_Getter(mthis) native "ShadowRoot_styleSheets_Getter";
-  styleSheets_Getter_(mthis) => styleSheets_Getter(mthis);
+  styleSheets_Getter_(mthis) => mthis["styleSheets"];
 
 }
 
 class BlinkSharedWorker extends BlinkEventTarget {
   static final instance = new BlinkSharedWorker();
 
-  static constructorCallback_0() native "SharedWorker_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["SharedWorker"], []);
 
-  static constructorCallback_1(__arg_0) native "SharedWorker_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["SharedWorker"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "SharedWorker_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["SharedWorker"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "SharedWorker_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "SharedWorker_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onerror_Getter(mthis) native "SharedWorker_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  port_Getter_(mthis) => mthis["port"];
 
-  static onerror_Setter(mthis, __arg_0) native "SharedWorker_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
-
-  static port_Getter(mthis) native "SharedWorker_port_Getter";
-  port_Getter_(mthis) => port_Getter(mthis);
-
-  static workerStart_Getter(mthis) native "SharedWorker_workerStart_Getter";
-  workerStart_Getter_(mthis) => workerStart_Getter(mthis);
+  workerStart_Getter_(mthis) => mthis["workerStart"];
 
 }
 
 class BlinkSharedWorkerGlobalScope extends BlinkWorkerGlobalScope {
   static final instance = new BlinkSharedWorkerGlobalScope();
 
-  static name_Getter(mthis) native "SharedWorkerGlobalScope_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static onconnect_Getter(mthis) native "SharedWorkerGlobalScope_onconnect_Getter";
-  onconnect_Getter_(mthis) => onconnect_Getter(mthis);
+  onconnect_Getter_(mthis) => mthis["onconnect"];
 
-  static onconnect_Setter(mthis, __arg_0) native "SharedWorkerGlobalScope_onconnect_Setter";
-  onconnect_Setter_(mthis, __arg_0) => onconnect_Setter(mthis, __arg_0);
+  onconnect_Setter_(mthis, __arg_0) => mthis["onconnect"] = __arg_0;
 
 }
 
 class BlinkSourceBuffer extends BlinkEventTarget {
   static final instance = new BlinkSourceBuffer();
 
-  static abort_Callback_0(mthis) native "SourceBuffer_abort_Callback";
-  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+  abort_Callback_0_(mthis) => mthis.callMethod("abort", []);
 
-  static abort_Callback_1(mthis, __arg_0) native "SourceBuffer_abort_Callback";
-  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+  appendBuffer_Callback_0_(mthis) => mthis.callMethod("appendBuffer", []);
 
-  static abort_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_abort_Callback";
-  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+  appendBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendBuffer", [__arg_0]);
 
-  static appendBuffer_Callback_0(mthis) native "SourceBuffer_appendBuffer_Callback";
-  appendBuffer_Callback_0_(mthis) => appendBuffer_Callback_0(mthis);
+  appendStream_Callback_0_(mthis) => mthis.callMethod("appendStream", []);
 
-  static appendBuffer_Callback_1(mthis, __arg_0) native "SourceBuffer_appendBuffer_Callback";
-  appendBuffer_Callback_1_(mthis, __arg_0) => appendBuffer_Callback_1(mthis, __arg_0);
+  appendStream_Callback_1_(mthis, __arg_0) => mthis.callMethod("appendStream", [__arg_0]);
 
-  static appendBuffer_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_appendBuffer_Callback";
-  appendBuffer_Callback_2_(mthis, __arg_0, __arg_1) => appendBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  appendStream_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("appendStream", [__arg_0, __arg_1]);
 
-  static appendBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBuffer_appendBuffer_Callback";
-  appendBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  appendWindowEnd_Getter_(mthis) => mthis["appendWindowEnd"];
 
-  static appendStream_Callback_0(mthis) native "SourceBuffer_appendStream_Callback";
-  appendStream_Callback_0_(mthis) => appendStream_Callback_0(mthis);
+  appendWindowEnd_Setter_(mthis, __arg_0) => mthis["appendWindowEnd"] = __arg_0;
 
-  static appendStream_Callback_1(mthis, __arg_0) native "SourceBuffer_appendStream_Callback";
-  appendStream_Callback_1_(mthis, __arg_0) => appendStream_Callback_1(mthis, __arg_0);
+  appendWindowStart_Getter_(mthis) => mthis["appendWindowStart"];
 
-  static appendStream_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_appendStream_Callback";
-  appendStream_Callback_2_(mthis, __arg_0, __arg_1) => appendStream_Callback_2(mthis, __arg_0, __arg_1);
+  appendWindowStart_Setter_(mthis, __arg_0) => mthis["appendWindowStart"] = __arg_0;
 
-  static appendStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBuffer_appendStream_Callback";
-  appendStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  buffered_Getter_(mthis) => mthis["buffered"];
 
-  static appendStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SourceBuffer_appendStream_Callback";
-  appendStream_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => appendStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  mode_Getter_(mthis) => mthis["mode"];
 
-  static appendWindowEnd_Getter(mthis) native "SourceBuffer_appendWindowEnd_Getter";
-  appendWindowEnd_Getter_(mthis) => appendWindowEnd_Getter(mthis);
+  mode_Setter_(mthis, __arg_0) => mthis["mode"] = __arg_0;
 
-  static appendWindowEnd_Setter(mthis, __arg_0) native "SourceBuffer_appendWindowEnd_Setter";
-  appendWindowEnd_Setter_(mthis, __arg_0) => appendWindowEnd_Setter(mthis, __arg_0);
+  remove_Callback_0_(mthis) => mthis.callMethod("remove", []);
 
-  static appendWindowStart_Getter(mthis) native "SourceBuffer_appendWindowStart_Getter";
-  appendWindowStart_Getter_(mthis) => appendWindowStart_Getter(mthis);
+  remove_Callback_1_(mthis, __arg_0) => mthis.callMethod("remove", [__arg_0]);
 
-  static appendWindowStart_Setter(mthis, __arg_0) native "SourceBuffer_appendWindowStart_Setter";
-  appendWindowStart_Setter_(mthis, __arg_0) => appendWindowStart_Setter(mthis, __arg_0);
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("remove", [__arg_0, __arg_1]);
 
-  static buffered_Getter(mthis) native "SourceBuffer_buffered_Getter";
-  buffered_Getter_(mthis) => buffered_Getter(mthis);
+  timestampOffset_Getter_(mthis) => mthis["timestampOffset"];
 
-  static mode_Getter(mthis) native "SourceBuffer_mode_Getter";
-  mode_Getter_(mthis) => mode_Getter(mthis);
+  timestampOffset_Setter_(mthis, __arg_0) => mthis["timestampOffset"] = __arg_0;
 
-  static mode_Setter(mthis, __arg_0) native "SourceBuffer_mode_Setter";
-  mode_Setter_(mthis, __arg_0) => mode_Setter(mthis, __arg_0);
-
-  static remove_Callback_0(mthis) native "SourceBuffer_remove_Callback";
-  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
-
-  static remove_Callback_1(mthis, __arg_0) native "SourceBuffer_remove_Callback";
-  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
-
-  static remove_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_remove_Callback";
-  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
-
-  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBuffer_remove_Callback";
-  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SourceBuffer_remove_Callback";
-  remove_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static timestampOffset_Getter(mthis) native "SourceBuffer_timestampOffset_Getter";
-  timestampOffset_Getter_(mthis) => timestampOffset_Getter(mthis);
-
-  static timestampOffset_Setter(mthis, __arg_0) native "SourceBuffer_timestampOffset_Setter";
-  timestampOffset_Setter_(mthis, __arg_0) => timestampOffset_Setter(mthis, __arg_0);
-
-  static updating_Getter(mthis) native "SourceBuffer_updating_Getter";
-  updating_Getter_(mthis) => updating_Getter(mthis);
+  updating_Getter_(mthis) => mthis["updating"];
 
 }
 
 class BlinkSourceBufferList extends BlinkEventTarget {
   static final instance = new BlinkSourceBufferList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SourceBufferList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "SourceBufferList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "SourceBufferList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "SourceBufferList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBufferList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "SourceBufferList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkSourceInfo {
   static final instance = new BlinkSourceInfo();
 
-  static facing_Getter(mthis) native "SourceInfo_facing_Getter";
-  facing_Getter_(mthis) => facing_Getter(mthis);
+  facing_Getter_(mthis) => mthis["facing"];
 
-  static id_Getter(mthis) native "SourceInfo_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static kind_Getter(mthis) native "SourceInfo_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static label_Getter(mthis) native "SourceInfo_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
 }
 
 class BlinkSpeechGrammar {
   static final instance = new BlinkSpeechGrammar();
 
-  static constructorCallback_0() native "SpeechGrammar_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["SpeechGrammar"], []);
 
-  static constructorCallback_1(__arg_0) native "SpeechGrammar_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  src_Getter_(mthis) => mthis["src"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "SpeechGrammar_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  src_Setter_(mthis, __arg_0) => mthis["src"] = __arg_0;
 
-  static src_Getter(mthis) native "SpeechGrammar_src_Getter";
-  src_Getter_(mthis) => src_Getter(mthis);
+  weight_Getter_(mthis) => mthis["weight"];
 
-  static src_Setter(mthis, __arg_0) native "SpeechGrammar_src_Setter";
-  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
-
-  static weight_Getter(mthis) native "SpeechGrammar_weight_Getter";
-  weight_Getter_(mthis) => weight_Getter(mthis);
-
-  static weight_Setter(mthis, __arg_0) native "SpeechGrammar_weight_Setter";
-  weight_Setter_(mthis, __arg_0) => weight_Setter(mthis, __arg_0);
+  weight_Setter_(mthis, __arg_0) => mthis["weight"] = __arg_0;
 
 }
 
 class BlinkSpeechGrammarList {
   static final instance = new BlinkSpeechGrammarList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SpeechGrammarList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static addFromString_Callback_0(mthis) native "SpeechGrammarList_addFromString_Callback";
-  addFromString_Callback_0_(mthis) => addFromString_Callback_0(mthis);
+  addFromString_Callback_0_(mthis) => mthis.callMethod("addFromString", []);
 
-  static addFromString_Callback_1(mthis, __arg_0) native "SpeechGrammarList_addFromString_Callback";
-  addFromString_Callback_1_(mthis, __arg_0) => addFromString_Callback_1(mthis, __arg_0);
+  addFromString_Callback_1_(mthis, __arg_0) => mthis.callMethod("addFromString", [__arg_0]);
 
-  static addFromString_Callback_2(mthis, __arg_0, __arg_1) native "SpeechGrammarList_addFromString_Callback";
-  addFromString_Callback_2_(mthis, __arg_0, __arg_1) => addFromString_Callback_2(mthis, __arg_0, __arg_1);
+  addFromString_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addFromString", [__arg_0, __arg_1]);
 
-  static addFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechGrammarList_addFromString_Callback";
-  addFromString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  addFromUri_Callback_0_(mthis) => mthis.callMethod("addFromUri", []);
 
-  static addFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SpeechGrammarList_addFromString_Callback";
-  addFromString_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  addFromUri_Callback_1_(mthis, __arg_0) => mthis.callMethod("addFromUri", [__arg_0]);
 
-  static addFromUri_Callback_0(mthis) native "SpeechGrammarList_addFromUri_Callback";
-  addFromUri_Callback_0_(mthis) => addFromUri_Callback_0(mthis);
+  addFromUri_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("addFromUri", [__arg_0, __arg_1]);
 
-  static addFromUri_Callback_1(mthis, __arg_0) native "SpeechGrammarList_addFromUri_Callback";
-  addFromUri_Callback_1_(mthis, __arg_0) => addFromUri_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["SpeechGrammarList"], []);
 
-  static addFromUri_Callback_2(mthis, __arg_0, __arg_1) native "SpeechGrammarList_addFromUri_Callback";
-  addFromUri_Callback_2_(mthis, __arg_0, __arg_1) => addFromUri_Callback_2(mthis, __arg_0, __arg_1);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static addFromUri_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechGrammarList_addFromUri_Callback";
-  addFromUri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addFromUri_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static addFromUri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SpeechGrammarList_addFromUri_Callback";
-  addFromUri_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addFromUri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static constructorCallback_0() native "SpeechGrammarList_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
-
-  static constructorCallback_1(__arg_0) native "SpeechGrammarList_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
-
-  static constructorCallback_2(__arg_0, __arg_1) native "SpeechGrammarList_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
-
-  static item_Callback_0(mthis) native "SpeechGrammarList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
-
-  static item_Callback_1(mthis, __arg_0) native "SpeechGrammarList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
-
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "SpeechGrammarList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechGrammarList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "SpeechGrammarList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkSpeechRecognition extends BlinkEventTarget {
   static final instance = new BlinkSpeechRecognition();
 
-  static abort_Callback_0(mthis) native "SpeechRecognition_abort_Callback";
-  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+  abort_Callback_0_(mthis) => mthis.callMethod("abort", []);
 
-  static abort_Callback_1(mthis, __arg_0) native "SpeechRecognition_abort_Callback";
-  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["SpeechRecognition"], []);
 
-  static abort_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognition_abort_Callback";
-  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+  continuous_Getter_(mthis) => mthis["continuous"];
 
-  static constructorCallback_0() native "SpeechRecognition_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  continuous_Setter_(mthis, __arg_0) => mthis["continuous"] = __arg_0;
 
-  static constructorCallback_1(__arg_0) native "SpeechRecognition_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  grammars_Getter_(mthis) => mthis["grammars"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "SpeechRecognition_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  grammars_Setter_(mthis, __arg_0) => mthis["grammars"] = __arg_0;
 
-  static continuous_Getter(mthis) native "SpeechRecognition_continuous_Getter";
-  continuous_Getter_(mthis) => continuous_Getter(mthis);
+  interimResults_Getter_(mthis) => mthis["interimResults"];
 
-  static continuous_Setter(mthis, __arg_0) native "SpeechRecognition_continuous_Setter";
-  continuous_Setter_(mthis, __arg_0) => continuous_Setter(mthis, __arg_0);
+  interimResults_Setter_(mthis, __arg_0) => mthis["interimResults"] = __arg_0;
 
-  static grammars_Getter(mthis) native "SpeechRecognition_grammars_Getter";
-  grammars_Getter_(mthis) => grammars_Getter(mthis);
+  lang_Getter_(mthis) => mthis["lang"];
 
-  static grammars_Setter(mthis, __arg_0) native "SpeechRecognition_grammars_Setter";
-  grammars_Setter_(mthis, __arg_0) => grammars_Setter(mthis, __arg_0);
+  lang_Setter_(mthis, __arg_0) => mthis["lang"] = __arg_0;
 
-  static interimResults_Getter(mthis) native "SpeechRecognition_interimResults_Getter";
-  interimResults_Getter_(mthis) => interimResults_Getter(mthis);
+  maxAlternatives_Getter_(mthis) => mthis["maxAlternatives"];
 
-  static interimResults_Setter(mthis, __arg_0) native "SpeechRecognition_interimResults_Setter";
-  interimResults_Setter_(mthis, __arg_0) => interimResults_Setter(mthis, __arg_0);
+  maxAlternatives_Setter_(mthis, __arg_0) => mthis["maxAlternatives"] = __arg_0;
 
-  static lang_Getter(mthis) native "SpeechRecognition_lang_Getter";
-  lang_Getter_(mthis) => lang_Getter(mthis);
+  onaudioend_Getter_(mthis) => mthis["onaudioend"];
 
-  static lang_Setter(mthis, __arg_0) native "SpeechRecognition_lang_Setter";
-  lang_Setter_(mthis, __arg_0) => lang_Setter(mthis, __arg_0);
+  onaudioend_Setter_(mthis, __arg_0) => mthis["onaudioend"] = __arg_0;
 
-  static maxAlternatives_Getter(mthis) native "SpeechRecognition_maxAlternatives_Getter";
-  maxAlternatives_Getter_(mthis) => maxAlternatives_Getter(mthis);
+  onaudiostart_Getter_(mthis) => mthis["onaudiostart"];
 
-  static maxAlternatives_Setter(mthis, __arg_0) native "SpeechRecognition_maxAlternatives_Setter";
-  maxAlternatives_Setter_(mthis, __arg_0) => maxAlternatives_Setter(mthis, __arg_0);
+  onaudiostart_Setter_(mthis, __arg_0) => mthis["onaudiostart"] = __arg_0;
 
-  static onaudioend_Getter(mthis) native "SpeechRecognition_onaudioend_Getter";
-  onaudioend_Getter_(mthis) => onaudioend_Getter(mthis);
+  onend_Getter_(mthis) => mthis["onend"];
 
-  static onaudioend_Setter(mthis, __arg_0) native "SpeechRecognition_onaudioend_Setter";
-  onaudioend_Setter_(mthis, __arg_0) => onaudioend_Setter(mthis, __arg_0);
+  onend_Setter_(mthis, __arg_0) => mthis["onend"] = __arg_0;
 
-  static onaudiostart_Getter(mthis) native "SpeechRecognition_onaudiostart_Getter";
-  onaudiostart_Getter_(mthis) => onaudiostart_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onaudiostart_Setter(mthis, __arg_0) native "SpeechRecognition_onaudiostart_Setter";
-  onaudiostart_Setter_(mthis, __arg_0) => onaudiostart_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onend_Getter(mthis) native "SpeechRecognition_onend_Getter";
-  onend_Getter_(mthis) => onend_Getter(mthis);
+  onnomatch_Getter_(mthis) => mthis["onnomatch"];
 
-  static onend_Setter(mthis, __arg_0) native "SpeechRecognition_onend_Setter";
-  onend_Setter_(mthis, __arg_0) => onend_Setter(mthis, __arg_0);
+  onnomatch_Setter_(mthis, __arg_0) => mthis["onnomatch"] = __arg_0;
 
-  static onerror_Getter(mthis) native "SpeechRecognition_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onresult_Getter_(mthis) => mthis["onresult"];
 
-  static onerror_Setter(mthis, __arg_0) native "SpeechRecognition_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onresult_Setter_(mthis, __arg_0) => mthis["onresult"] = __arg_0;
 
-  static onnomatch_Getter(mthis) native "SpeechRecognition_onnomatch_Getter";
-  onnomatch_Getter_(mthis) => onnomatch_Getter(mthis);
+  onsoundend_Getter_(mthis) => mthis["onsoundend"];
 
-  static onnomatch_Setter(mthis, __arg_0) native "SpeechRecognition_onnomatch_Setter";
-  onnomatch_Setter_(mthis, __arg_0) => onnomatch_Setter(mthis, __arg_0);
+  onsoundend_Setter_(mthis, __arg_0) => mthis["onsoundend"] = __arg_0;
 
-  static onresult_Getter(mthis) native "SpeechRecognition_onresult_Getter";
-  onresult_Getter_(mthis) => onresult_Getter(mthis);
+  onsoundstart_Getter_(mthis) => mthis["onsoundstart"];
 
-  static onresult_Setter(mthis, __arg_0) native "SpeechRecognition_onresult_Setter";
-  onresult_Setter_(mthis, __arg_0) => onresult_Setter(mthis, __arg_0);
+  onsoundstart_Setter_(mthis, __arg_0) => mthis["onsoundstart"] = __arg_0;
 
-  static onsoundend_Getter(mthis) native "SpeechRecognition_onsoundend_Getter";
-  onsoundend_Getter_(mthis) => onsoundend_Getter(mthis);
+  onspeechend_Getter_(mthis) => mthis["onspeechend"];
 
-  static onsoundend_Setter(mthis, __arg_0) native "SpeechRecognition_onsoundend_Setter";
-  onsoundend_Setter_(mthis, __arg_0) => onsoundend_Setter(mthis, __arg_0);
+  onspeechend_Setter_(mthis, __arg_0) => mthis["onspeechend"] = __arg_0;
 
-  static onsoundstart_Getter(mthis) native "SpeechRecognition_onsoundstart_Getter";
-  onsoundstart_Getter_(mthis) => onsoundstart_Getter(mthis);
+  onspeechstart_Getter_(mthis) => mthis["onspeechstart"];
 
-  static onsoundstart_Setter(mthis, __arg_0) native "SpeechRecognition_onsoundstart_Setter";
-  onsoundstart_Setter_(mthis, __arg_0) => onsoundstart_Setter(mthis, __arg_0);
+  onspeechstart_Setter_(mthis, __arg_0) => mthis["onspeechstart"] = __arg_0;
 
-  static onspeechend_Getter(mthis) native "SpeechRecognition_onspeechend_Getter";
-  onspeechend_Getter_(mthis) => onspeechend_Getter(mthis);
+  onstart_Getter_(mthis) => mthis["onstart"];
 
-  static onspeechend_Setter(mthis, __arg_0) native "SpeechRecognition_onspeechend_Setter";
-  onspeechend_Setter_(mthis, __arg_0) => onspeechend_Setter(mthis, __arg_0);
+  onstart_Setter_(mthis, __arg_0) => mthis["onstart"] = __arg_0;
 
-  static onspeechstart_Getter(mthis) native "SpeechRecognition_onspeechstart_Getter";
-  onspeechstart_Getter_(mthis) => onspeechstart_Getter(mthis);
+  start_Callback_0_(mthis) => mthis.callMethod("start", []);
 
-  static onspeechstart_Setter(mthis, __arg_0) native "SpeechRecognition_onspeechstart_Setter";
-  onspeechstart_Setter_(mthis, __arg_0) => onspeechstart_Setter(mthis, __arg_0);
-
-  static onstart_Getter(mthis) native "SpeechRecognition_onstart_Getter";
-  onstart_Getter_(mthis) => onstart_Getter(mthis);
-
-  static onstart_Setter(mthis, __arg_0) native "SpeechRecognition_onstart_Setter";
-  onstart_Setter_(mthis, __arg_0) => onstart_Setter(mthis, __arg_0);
-
-  static start_Callback_0(mthis) native "SpeechRecognition_start_Callback";
-  start_Callback_0_(mthis) => start_Callback_0(mthis);
-
-  static start_Callback_1(mthis, __arg_0) native "SpeechRecognition_start_Callback";
-  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
-
-  static start_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognition_start_Callback";
-  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stop_Callback_0(mthis) native "SpeechRecognition_stop_Callback";
-  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
-
-  static stop_Callback_1(mthis, __arg_0) native "SpeechRecognition_stop_Callback";
-  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
-
-  static stop_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognition_stop_Callback";
-  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+  stop_Callback_0_(mthis) => mthis.callMethod("stop", []);
 
 }
 
 class BlinkSpeechRecognitionAlternative {
   static final instance = new BlinkSpeechRecognitionAlternative();
 
-  static confidence_Getter(mthis) native "SpeechRecognitionAlternative_confidence_Getter";
-  confidence_Getter_(mthis) => confidence_Getter(mthis);
+  confidence_Getter_(mthis) => mthis["confidence"];
 
-  static transcript_Getter(mthis) native "SpeechRecognitionAlternative_transcript_Getter";
-  transcript_Getter_(mthis) => transcript_Getter(mthis);
+  transcript_Getter_(mthis) => mthis["transcript"];
 
 }
 
 class BlinkSpeechRecognitionError extends BlinkEvent {
   static final instance = new BlinkSpeechRecognitionError();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "SpeechRecognitionError_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["SpeechRecognitionError"], [__arg_0, __arg_1]);
 
-  static error_Getter(mthis) native "SpeechRecognitionError_error_Getter";
-  error_Getter_(mthis) => error_Getter(mthis);
+  error_Getter_(mthis) => mthis["error"];
 
-  static message_Getter(mthis) native "SpeechRecognitionError_message_Getter";
-  message_Getter_(mthis) => message_Getter(mthis);
+  message_Getter_(mthis) => mthis["message"];
 
 }
 
 class BlinkSpeechRecognitionEvent extends BlinkEvent {
   static final instance = new BlinkSpeechRecognitionEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "SpeechRecognitionEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["SpeechRecognitionEvent"], [__arg_0, __arg_1]);
 
-  static emma_Getter(mthis) native "SpeechRecognitionEvent_emma_Getter";
-  emma_Getter_(mthis) => emma_Getter(mthis);
+  emma_Getter_(mthis) => mthis["emma"];
 
-  static interpretation_Getter(mthis) native "SpeechRecognitionEvent_interpretation_Getter";
-  interpretation_Getter_(mthis) => interpretation_Getter(mthis);
+  interpretation_Getter_(mthis) => mthis["interpretation"];
 
-  static resultIndex_Getter(mthis) native "SpeechRecognitionEvent_resultIndex_Getter";
-  resultIndex_Getter_(mthis) => resultIndex_Getter(mthis);
+  resultIndex_Getter_(mthis) => mthis["resultIndex"];
 
-  static results_Getter(mthis) native "SpeechRecognitionEvent_results_Getter";
-  results_Getter_(mthis) => results_Getter(mthis);
+  results_Getter_(mthis) => mthis["results"];
 
 }
 
 class BlinkSpeechRecognitionResult {
   static final instance = new BlinkSpeechRecognitionResult();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SpeechRecognitionResult___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static isFinal_Getter(mthis) native "SpeechRecognitionResult_isFinal_Getter";
-  isFinal_Getter_(mthis) => isFinal_Getter(mthis);
+  isFinal_Getter_(mthis) => mthis["isFinal"];
 
-  static item_Callback_0(mthis) native "SpeechRecognitionResult_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "SpeechRecognitionResult_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognitionResult_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechRecognitionResult_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "SpeechRecognitionResult_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkSpeechRecognitionResultList {
   static final instance = new BlinkSpeechRecognitionResultList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "SpeechRecognitionResultList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "SpeechRecognitionResultList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "SpeechRecognitionResultList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognitionResultList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechRecognitionResultList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "SpeechRecognitionResultList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkSpeechSynthesis extends BlinkEventTarget {
   static final instance = new BlinkSpeechSynthesis();
 
-  static cancel_Callback_0(mthis) native "SpeechSynthesis_cancel_Callback";
-  cancel_Callback_0_(mthis) => cancel_Callback_0(mthis);
+  cancel_Callback_0_(mthis) => mthis.callMethod("cancel", []);
 
-  static cancel_Callback_1(mthis, __arg_0) native "SpeechSynthesis_cancel_Callback";
-  cancel_Callback_1_(mthis, __arg_0) => cancel_Callback_1(mthis, __arg_0);
+  getVoices_Callback_0_(mthis) => mthis.callMethod("getVoices", []);
 
-  static cancel_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_cancel_Callback";
-  cancel_Callback_2_(mthis, __arg_0, __arg_1) => cancel_Callback_2(mthis, __arg_0, __arg_1);
+  onvoiceschanged_Getter_(mthis) => mthis["onvoiceschanged"];
 
-  static getVoices_Callback_0(mthis) native "SpeechSynthesis_getVoices_Callback";
-  getVoices_Callback_0_(mthis) => getVoices_Callback_0(mthis);
+  onvoiceschanged_Setter_(mthis, __arg_0) => mthis["onvoiceschanged"] = __arg_0;
 
-  static getVoices_Callback_1(mthis, __arg_0) native "SpeechSynthesis_getVoices_Callback";
-  getVoices_Callback_1_(mthis, __arg_0) => getVoices_Callback_1(mthis, __arg_0);
+  pause_Callback_0_(mthis) => mthis.callMethod("pause", []);
 
-  static getVoices_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_getVoices_Callback";
-  getVoices_Callback_2_(mthis, __arg_0, __arg_1) => getVoices_Callback_2(mthis, __arg_0, __arg_1);
+  paused_Getter_(mthis) => mthis["paused"];
 
-  static onvoiceschanged_Getter(mthis) native "SpeechSynthesis_onvoiceschanged_Getter";
-  onvoiceschanged_Getter_(mthis) => onvoiceschanged_Getter(mthis);
+  pending_Getter_(mthis) => mthis["pending"];
 
-  static onvoiceschanged_Setter(mthis, __arg_0) native "SpeechSynthesis_onvoiceschanged_Setter";
-  onvoiceschanged_Setter_(mthis, __arg_0) => onvoiceschanged_Setter(mthis, __arg_0);
+  resume_Callback_0_(mthis) => mthis.callMethod("resume", []);
 
-  static pause_Callback_0(mthis) native "SpeechSynthesis_pause_Callback";
-  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
+  speak_Callback_0_(mthis) => mthis.callMethod("speak", []);
 
-  static pause_Callback_1(mthis, __arg_0) native "SpeechSynthesis_pause_Callback";
-  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
+  speak_Callback_1_(mthis, __arg_0) => mthis.callMethod("speak", [__arg_0]);
 
-  static pause_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_pause_Callback";
-  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
-
-  static paused_Getter(mthis) native "SpeechSynthesis_paused_Getter";
-  paused_Getter_(mthis) => paused_Getter(mthis);
-
-  static pending_Getter(mthis) native "SpeechSynthesis_pending_Getter";
-  pending_Getter_(mthis) => pending_Getter(mthis);
-
-  static resume_Callback_0(mthis) native "SpeechSynthesis_resume_Callback";
-  resume_Callback_0_(mthis) => resume_Callback_0(mthis);
-
-  static resume_Callback_1(mthis, __arg_0) native "SpeechSynthesis_resume_Callback";
-  resume_Callback_1_(mthis, __arg_0) => resume_Callback_1(mthis, __arg_0);
-
-  static resume_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_resume_Callback";
-  resume_Callback_2_(mthis, __arg_0, __arg_1) => resume_Callback_2(mthis, __arg_0, __arg_1);
-
-  static speak_Callback_0(mthis) native "SpeechSynthesis_speak_Callback";
-  speak_Callback_0_(mthis) => speak_Callback_0(mthis);
-
-  static speak_Callback_1(mthis, __arg_0) native "SpeechSynthesis_speak_Callback";
-  speak_Callback_1_(mthis, __arg_0) => speak_Callback_1(mthis, __arg_0);
-
-  static speak_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_speak_Callback";
-  speak_Callback_2_(mthis, __arg_0, __arg_1) => speak_Callback_2(mthis, __arg_0, __arg_1);
-
-  static speak_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechSynthesis_speak_Callback";
-  speak_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => speak_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static speaking_Getter(mthis) native "SpeechSynthesis_speaking_Getter";
-  speaking_Getter_(mthis) => speaking_Getter(mthis);
+  speaking_Getter_(mthis) => mthis["speaking"];
 
 }
 
 class BlinkSpeechSynthesisEvent extends BlinkEvent {
   static final instance = new BlinkSpeechSynthesisEvent();
 
-  static charIndex_Getter(mthis) native "SpeechSynthesisEvent_charIndex_Getter";
-  charIndex_Getter_(mthis) => charIndex_Getter(mthis);
+  charIndex_Getter_(mthis) => mthis["charIndex"];
 
-  static elapsedTime_Getter(mthis) native "SpeechSynthesisEvent_elapsedTime_Getter";
-  elapsedTime_Getter_(mthis) => elapsedTime_Getter(mthis);
+  elapsedTime_Getter_(mthis) => mthis["elapsedTime"];
 
-  static name_Getter(mthis) native "SpeechSynthesisEvent_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
 }
 
 class BlinkSpeechSynthesisUtterance extends BlinkEventTarget {
   static final instance = new BlinkSpeechSynthesisUtterance();
 
-  static constructorCallback_0() native "SpeechSynthesisUtterance_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["SpeechSynthesisUtterance"], []);
 
-  static constructorCallback_1(__arg_0) native "SpeechSynthesisUtterance_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["SpeechSynthesisUtterance"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "SpeechSynthesisUtterance_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  lang_Getter_(mthis) => mthis["lang"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "SpeechSynthesisUtterance_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  lang_Setter_(mthis, __arg_0) => mthis["lang"] = __arg_0;
 
-  static lang_Getter(mthis) native "SpeechSynthesisUtterance_lang_Getter";
-  lang_Getter_(mthis) => lang_Getter(mthis);
+  onboundary_Getter_(mthis) => mthis["onboundary"];
 
-  static lang_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_lang_Setter";
-  lang_Setter_(mthis, __arg_0) => lang_Setter(mthis, __arg_0);
+  onboundary_Setter_(mthis, __arg_0) => mthis["onboundary"] = __arg_0;
 
-  static onboundary_Getter(mthis) native "SpeechSynthesisUtterance_onboundary_Getter";
-  onboundary_Getter_(mthis) => onboundary_Getter(mthis);
+  onend_Getter_(mthis) => mthis["onend"];
 
-  static onboundary_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onboundary_Setter";
-  onboundary_Setter_(mthis, __arg_0) => onboundary_Setter(mthis, __arg_0);
+  onend_Setter_(mthis, __arg_0) => mthis["onend"] = __arg_0;
 
-  static onend_Getter(mthis) native "SpeechSynthesisUtterance_onend_Getter";
-  onend_Getter_(mthis) => onend_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onend_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onend_Setter";
-  onend_Setter_(mthis, __arg_0) => onend_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onerror_Getter(mthis) native "SpeechSynthesisUtterance_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onmark_Getter_(mthis) => mthis["onmark"];
 
-  static onerror_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onmark_Setter_(mthis, __arg_0) => mthis["onmark"] = __arg_0;
 
-  static onmark_Getter(mthis) native "SpeechSynthesisUtterance_onmark_Getter";
-  onmark_Getter_(mthis) => onmark_Getter(mthis);
+  onpause_Getter_(mthis) => mthis["onpause"];
 
-  static onmark_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onmark_Setter";
-  onmark_Setter_(mthis, __arg_0) => onmark_Setter(mthis, __arg_0);
+  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
 
-  static onpause_Getter(mthis) native "SpeechSynthesisUtterance_onpause_Getter";
-  onpause_Getter_(mthis) => onpause_Getter(mthis);
+  onresume_Getter_(mthis) => mthis["onresume"];
 
-  static onpause_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onpause_Setter";
-  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+  onresume_Setter_(mthis, __arg_0) => mthis["onresume"] = __arg_0;
 
-  static onresume_Getter(mthis) native "SpeechSynthesisUtterance_onresume_Getter";
-  onresume_Getter_(mthis) => onresume_Getter(mthis);
+  onstart_Getter_(mthis) => mthis["onstart"];
 
-  static onresume_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onresume_Setter";
-  onresume_Setter_(mthis, __arg_0) => onresume_Setter(mthis, __arg_0);
+  onstart_Setter_(mthis, __arg_0) => mthis["onstart"] = __arg_0;
 
-  static onstart_Getter(mthis) native "SpeechSynthesisUtterance_onstart_Getter";
-  onstart_Getter_(mthis) => onstart_Getter(mthis);
+  pitch_Getter_(mthis) => mthis["pitch"];
 
-  static onstart_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onstart_Setter";
-  onstart_Setter_(mthis, __arg_0) => onstart_Setter(mthis, __arg_0);
+  pitch_Setter_(mthis, __arg_0) => mthis["pitch"] = __arg_0;
 
-  static pitch_Getter(mthis) native "SpeechSynthesisUtterance_pitch_Getter";
-  pitch_Getter_(mthis) => pitch_Getter(mthis);
+  rate_Getter_(mthis) => mthis["rate"];
 
-  static pitch_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_pitch_Setter";
-  pitch_Setter_(mthis, __arg_0) => pitch_Setter(mthis, __arg_0);
+  rate_Setter_(mthis, __arg_0) => mthis["rate"] = __arg_0;
 
-  static rate_Getter(mthis) native "SpeechSynthesisUtterance_rate_Getter";
-  rate_Getter_(mthis) => rate_Getter(mthis);
+  text_Getter_(mthis) => mthis["text"];
 
-  static rate_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_rate_Setter";
-  rate_Setter_(mthis, __arg_0) => rate_Setter(mthis, __arg_0);
+  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
 
-  static text_Getter(mthis) native "SpeechSynthesisUtterance_text_Getter";
-  text_Getter_(mthis) => text_Getter(mthis);
+  voice_Getter_(mthis) => mthis["voice"];
 
-  static text_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_text_Setter";
-  text_Setter_(mthis, __arg_0) => text_Setter(mthis, __arg_0);
+  voice_Setter_(mthis, __arg_0) => mthis["voice"] = __arg_0;
 
-  static voice_Getter(mthis) native "SpeechSynthesisUtterance_voice_Getter";
-  voice_Getter_(mthis) => voice_Getter(mthis);
+  volume_Getter_(mthis) => mthis["volume"];
 
-  static voice_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_voice_Setter";
-  voice_Setter_(mthis, __arg_0) => voice_Setter(mthis, __arg_0);
-
-  static volume_Getter(mthis) native "SpeechSynthesisUtterance_volume_Getter";
-  volume_Getter_(mthis) => volume_Getter(mthis);
-
-  static volume_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_volume_Setter";
-  volume_Setter_(mthis, __arg_0) => volume_Setter(mthis, __arg_0);
+  volume_Setter_(mthis, __arg_0) => mthis["volume"] = __arg_0;
 
 }
 
 class BlinkSpeechSynthesisVoice {
   static final instance = new BlinkSpeechSynthesisVoice();
 
-  static default_Getter(mthis) native "SpeechSynthesisVoice_default_Getter";
-  default_Getter_(mthis) => default_Getter(mthis);
+  default_Getter_(mthis) => mthis["default"];
 
-  static lang_Getter(mthis) native "SpeechSynthesisVoice_lang_Getter";
-  lang_Getter_(mthis) => lang_Getter(mthis);
+  lang_Getter_(mthis) => mthis["lang"];
 
-  static localService_Getter(mthis) native "SpeechSynthesisVoice_localService_Getter";
-  localService_Getter_(mthis) => localService_Getter(mthis);
+  localService_Getter_(mthis) => mthis["localService"];
 
-  static name_Getter(mthis) native "SpeechSynthesisVoice_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static voiceURI_Getter(mthis) native "SpeechSynthesisVoice_voiceURI_Getter";
-  voiceURI_Getter_(mthis) => voiceURI_Getter(mthis);
+  voiceURI_Getter_(mthis) => mthis["voiceURI"];
 
 }
 
 class BlinkStorage {
   static final instance = new BlinkStorage();
 
-  static $__delete___Callback_1(mthis, __arg_0) native "Storage___delete___Callback";
-  $__delete___Callback_1_(mthis, __arg_0) => $__delete___Callback_1(mthis, __arg_0);
+  $__delete___Callback_1_(mthis, __arg_0) => mthis.callMethod("__delete__", [__arg_0]);
 
-  static $__getter___Callback_1(mthis, __arg_0) native "Storage___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "Storage___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static clear_Callback_0(mthis) native "Storage_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static clear_Callback_1(mthis, __arg_0) native "Storage_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  getItem_Callback_0_(mthis) => mthis.callMethod("getItem", []);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "Storage_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  getItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("getItem", [__arg_0]);
 
-  static getItem_Callback_0(mthis) native "Storage_getItem_Callback";
-  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+  key_Callback_0_(mthis) => mthis.callMethod("key", []);
 
-  static getItem_Callback_1(mthis, __arg_0) native "Storage_getItem_Callback";
-  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+  key_Callback_1_(mthis, __arg_0) => mthis.callMethod("key", [__arg_0]);
 
-  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "Storage_getItem_Callback";
-  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_getItem_Callback";
-  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeItem_Callback_0_(mthis) => mthis.callMethod("removeItem", []);
 
-  static key_Callback_0(mthis) native "Storage_key_Callback";
-  key_Callback_0_(mthis) => key_Callback_0(mthis);
+  removeItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeItem", [__arg_0]);
 
-  static key_Callback_1(mthis, __arg_0) native "Storage_key_Callback";
-  key_Callback_1_(mthis, __arg_0) => key_Callback_1(mthis, __arg_0);
+  setItem_Callback_0_(mthis) => mthis.callMethod("setItem", []);
 
-  static key_Callback_2(mthis, __arg_0, __arg_1) native "Storage_key_Callback";
-  key_Callback_2_(mthis, __arg_0, __arg_1) => key_Callback_2(mthis, __arg_0, __arg_1);
+  setItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("setItem", [__arg_0]);
 
-  static key_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_key_Callback";
-  key_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => key_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "Storage_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static removeItem_Callback_0(mthis) native "Storage_removeItem_Callback";
-  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
-
-  static removeItem_Callback_1(mthis, __arg_0) native "Storage_removeItem_Callback";
-  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
-
-  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "Storage_removeItem_Callback";
-  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_removeItem_Callback";
-  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setItem_Callback_0(mthis) native "Storage_setItem_Callback";
-  setItem_Callback_0_(mthis) => setItem_Callback_0(mthis);
-
-  static setItem_Callback_1(mthis, __arg_0) native "Storage_setItem_Callback";
-  setItem_Callback_1_(mthis, __arg_0) => setItem_Callback_1(mthis, __arg_0);
-
-  static setItem_Callback_2(mthis, __arg_0, __arg_1) native "Storage_setItem_Callback";
-  setItem_Callback_2_(mthis, __arg_0, __arg_1) => setItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_setItem_Callback";
-  setItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Storage_setItem_Callback";
-  setItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setItem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setItem", [__arg_0, __arg_1]);
 
 }
 
 class BlinkStorageEvent extends BlinkEvent {
   static final instance = new BlinkStorageEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "StorageEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["StorageEvent"], [__arg_0, __arg_1]);
 
-  static initStorageEvent_Callback_0(mthis) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_0_(mthis) => initStorageEvent_Callback_0(mthis);
+  initStorageEvent_Callback_0_(mthis) => mthis.callMethod("initStorageEvent", []);
 
-  static initStorageEvent_Callback_1(mthis, __arg_0) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_1_(mthis, __arg_0) => initStorageEvent_Callback_1(mthis, __arg_0);
+  initStorageEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initStorageEvent", [__arg_0]);
 
-  static initStorageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initStorageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  initStorageEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initStorageEvent", [__arg_0, __arg_1]);
 
-  static initStorageEvent_Callback_2(mthis, __arg_0, __arg_1) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_2_(mthis, __arg_0, __arg_1) => initStorageEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initStorageEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initStorageEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initStorageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initStorageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initStorageEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initStorageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initStorageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initStorageEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initStorageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initStorageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initStorageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initStorageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initStorageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initStorageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static initStorageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initStorageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initStorageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("initStorageEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static initStorageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initStorageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  key_Getter_(mthis) => mthis["key"];
 
-  static initStorageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "StorageEvent_initStorageEvent_Callback";
-  initStorageEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initStorageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  newValue_Getter_(mthis) => mthis["newValue"];
 
-  static key_Getter(mthis) native "StorageEvent_key_Getter";
-  key_Getter_(mthis) => key_Getter(mthis);
+  oldValue_Getter_(mthis) => mthis["oldValue"];
 
-  static newValue_Getter(mthis) native "StorageEvent_newValue_Getter";
-  newValue_Getter_(mthis) => newValue_Getter(mthis);
+  storageArea_Getter_(mthis) => mthis["storageArea"];
 
-  static oldValue_Getter(mthis) native "StorageEvent_oldValue_Getter";
-  oldValue_Getter_(mthis) => oldValue_Getter(mthis);
-
-  static storageArea_Getter(mthis) native "StorageEvent_storageArea_Getter";
-  storageArea_Getter_(mthis) => storageArea_Getter(mthis);
-
-  static url_Getter(mthis) native "StorageEvent_url_Getter";
-  url_Getter_(mthis) => url_Getter(mthis);
+  url_Getter_(mthis) => mthis["url"];
 
 }
 
 class BlinkStorageInfo {
   static final instance = new BlinkStorageInfo();
 
-  static quota_Getter(mthis) native "StorageInfo_quota_Getter";
-  quota_Getter_(mthis) => quota_Getter(mthis);
+  quota_Getter_(mthis) => mthis["quota"];
 
-  static usage_Getter(mthis) native "StorageInfo_usage_Getter";
-  usage_Getter_(mthis) => usage_Getter(mthis);
+  usage_Getter_(mthis) => mthis["usage"];
 
 }
 
 class BlinkStorageQuota {
   static final instance = new BlinkStorageQuota();
 
-  static queryInfo_Callback_0(mthis) native "StorageQuota_queryInfo_Callback";
-  queryInfo_Callback_0_(mthis) => queryInfo_Callback_0(mthis);
+  queryInfo_Callback_0_(mthis) => mthis.callMethod("queryInfo", []);
 
-  static queryInfo_Callback_1(mthis, __arg_0) native "StorageQuota_queryInfo_Callback";
-  queryInfo_Callback_1_(mthis, __arg_0) => queryInfo_Callback_1(mthis, __arg_0);
+  queryInfo_Callback_1_(mthis, __arg_0) => mthis.callMethod("queryInfo", [__arg_0]);
 
-  static queryInfo_Callback_2(mthis, __arg_0, __arg_1) native "StorageQuota_queryInfo_Callback";
-  queryInfo_Callback_2_(mthis, __arg_0, __arg_1) => queryInfo_Callback_2(mthis, __arg_0, __arg_1);
+  requestPersistentQuota_Callback_0_(mthis) => mthis.callMethod("requestPersistentQuota", []);
 
-  static queryInfo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StorageQuota_queryInfo_Callback";
-  queryInfo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryInfo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  requestPersistentQuota_Callback_1_(mthis, __arg_0) => mthis.callMethod("requestPersistentQuota", [__arg_0]);
 
-  static requestPersistentQuota_Callback_0(mthis) native "StorageQuota_requestPersistentQuota_Callback";
-  requestPersistentQuota_Callback_0_(mthis) => requestPersistentQuota_Callback_0(mthis);
-
-  static requestPersistentQuota_Callback_1(mthis, __arg_0) native "StorageQuota_requestPersistentQuota_Callback";
-  requestPersistentQuota_Callback_1_(mthis, __arg_0) => requestPersistentQuota_Callback_1(mthis, __arg_0);
-
-  static requestPersistentQuota_Callback_2(mthis, __arg_0, __arg_1) native "StorageQuota_requestPersistentQuota_Callback";
-  requestPersistentQuota_Callback_2_(mthis, __arg_0, __arg_1) => requestPersistentQuota_Callback_2(mthis, __arg_0, __arg_1);
-
-  static requestPersistentQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StorageQuota_requestPersistentQuota_Callback";
-  requestPersistentQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestPersistentQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static supportedTypes_Getter(mthis) native "StorageQuota_supportedTypes_Getter";
-  supportedTypes_Getter_(mthis) => supportedTypes_Getter(mthis);
+  supportedTypes_Getter_(mthis) => mthis["supportedTypes"];
 
 }
 
 class BlinkStream {
   static final instance = new BlinkStream();
 
-  static type_Getter(mthis) native "Stream_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkStyleMedia {
   static final instance = new BlinkStyleMedia();
 
-  static matchMedium_Callback_0(mthis) native "StyleMedia_matchMedium_Callback";
-  matchMedium_Callback_0_(mthis) => matchMedium_Callback_0(mthis);
+  matchMedium_Callback_0_(mthis) => mthis.callMethod("matchMedium", []);
 
-  static matchMedium_Callback_1(mthis, __arg_0) native "StyleMedia_matchMedium_Callback";
-  matchMedium_Callback_1_(mthis, __arg_0) => matchMedium_Callback_1(mthis, __arg_0);
+  matchMedium_Callback_1_(mthis, __arg_0) => mthis.callMethod("matchMedium", [__arg_0]);
 
-  static matchMedium_Callback_2(mthis, __arg_0, __arg_1) native "StyleMedia_matchMedium_Callback";
-  matchMedium_Callback_2_(mthis, __arg_0, __arg_1) => matchMedium_Callback_2(mthis, __arg_0, __arg_1);
-
-  static matchMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StyleMedia_matchMedium_Callback";
-  matchMedium_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matchMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static type_Getter(mthis) native "StyleMedia_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkStyleSheet {
   static final instance = new BlinkStyleSheet();
 
-  static disabled_Getter(mthis) native "StyleSheet_disabled_Getter";
-  disabled_Getter_(mthis) => disabled_Getter(mthis);
+  disabled_Getter_(mthis) => mthis["disabled"];
 
-  static disabled_Setter(mthis, __arg_0) native "StyleSheet_disabled_Setter";
-  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+  disabled_Setter_(mthis, __arg_0) => mthis["disabled"] = __arg_0;
 
-  static href_Getter(mthis) native "StyleSheet_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static media_Getter(mthis) native "StyleSheet_media_Getter";
-  media_Getter_(mthis) => media_Getter(mthis);
+  media_Getter_(mthis) => mthis["media"];
 
-  static ownerNode_Getter(mthis) native "StyleSheet_ownerNode_Getter";
-  ownerNode_Getter_(mthis) => ownerNode_Getter(mthis);
+  ownerNode_Getter_(mthis) => mthis["ownerNode"];
 
-  static parentStyleSheet_Getter(mthis) native "StyleSheet_parentStyleSheet_Getter";
-  parentStyleSheet_Getter_(mthis) => parentStyleSheet_Getter(mthis);
+  parentStyleSheet_Getter_(mthis) => mthis["parentStyleSheet"];
 
-  static title_Getter(mthis) native "StyleSheet_title_Getter";
-  title_Getter_(mthis) => title_Getter(mthis);
+  title_Getter_(mthis) => mthis["title"];
 
-  static type_Getter(mthis) native "StyleSheet_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
 class BlinkStyleSheetList {
   static final instance = new BlinkStyleSheetList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "StyleSheetList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "StyleSheetList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "StyleSheetList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "StyleSheetList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StyleSheetList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "StyleSheetList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkSubtleCrypto {
   static final instance = new BlinkSubtleCrypto();
 
-  static decrypt_Callback_1(mthis, __arg_0) native "SubtleCrypto_decrypt_Callback";
-  decrypt_Callback_1_(mthis, __arg_0) => decrypt_Callback_1(mthis, __arg_0);
+  decrypt_Callback_1_(mthis, __arg_0) => mthis.callMethod("decrypt", [__arg_0]);
 
-  static decrypt_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_decrypt_Callback";
-  decrypt_Callback_2_(mthis, __arg_0, __arg_1) => decrypt_Callback_2(mthis, __arg_0, __arg_1);
+  decrypt_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("decrypt", [__arg_0, __arg_1]);
 
-  static decrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_decrypt_Callback";
-  decrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => decrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  decrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("decrypt", [__arg_0, __arg_1, __arg_2]);
 
-  static decrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_decrypt_Callback";
-  decrypt_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => decrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  digest_Callback_0_(mthis) => mthis.callMethod("digest", []);
 
-  static decrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_decrypt_Callback";
-  decrypt_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => decrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  digest_Callback_1_(mthis, __arg_0) => mthis.callMethod("digest", [__arg_0]);
 
-  static digest_Callback_0(mthis) native "SubtleCrypto_digest_Callback";
-  digest_Callback_0_(mthis) => digest_Callback_0(mthis);
+  digest_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("digest", [__arg_0, __arg_1]);
 
-  static digest_Callback_1(mthis, __arg_0) native "SubtleCrypto_digest_Callback";
-  digest_Callback_1_(mthis, __arg_0) => digest_Callback_1(mthis, __arg_0);
+  encrypt_Callback_1_(mthis, __arg_0) => mthis.callMethod("encrypt", [__arg_0]);
 
-  static digest_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_digest_Callback";
-  digest_Callback_2_(mthis, __arg_0, __arg_1) => digest_Callback_2(mthis, __arg_0, __arg_1);
+  encrypt_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("encrypt", [__arg_0, __arg_1]);
 
-  static digest_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_digest_Callback";
-  digest_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => digest_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  encrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("encrypt", [__arg_0, __arg_1, __arg_2]);
 
-  static digest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_digest_Callback";
-  digest_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => digest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  exportKey_Callback_0_(mthis) => mthis.callMethod("exportKey", []);
 
-  static encrypt_Callback_1(mthis, __arg_0) native "SubtleCrypto_encrypt_Callback";
-  encrypt_Callback_1_(mthis, __arg_0) => encrypt_Callback_1(mthis, __arg_0);
+  exportKey_Callback_1_(mthis, __arg_0) => mthis.callMethod("exportKey", [__arg_0]);
 
-  static encrypt_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_encrypt_Callback";
-  encrypt_Callback_2_(mthis, __arg_0, __arg_1) => encrypt_Callback_2(mthis, __arg_0, __arg_1);
+  exportKey_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("exportKey", [__arg_0, __arg_1]);
 
-  static encrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_encrypt_Callback";
-  encrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => encrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  generateKey_Callback_1_(mthis, __arg_0) => mthis.callMethod("generateKey", [__arg_0]);
 
-  static encrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_encrypt_Callback";
-  encrypt_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => encrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  generateKey_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("generateKey", [__arg_0, __arg_1]);
 
-  static encrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_encrypt_Callback";
-  encrypt_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => encrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  generateKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("generateKey", [__arg_0, __arg_1, __arg_2]);
 
-  static exportKey_Callback_0(mthis) native "SubtleCrypto_exportKey_Callback";
-  exportKey_Callback_0_(mthis) => exportKey_Callback_0(mthis);
+  importKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("importKey", [__arg_0, __arg_1, __arg_2]);
 
-  static exportKey_Callback_1(mthis, __arg_0) native "SubtleCrypto_exportKey_Callback";
-  exportKey_Callback_1_(mthis, __arg_0) => exportKey_Callback_1(mthis, __arg_0);
+  importKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("importKey", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static exportKey_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_exportKey_Callback";
-  exportKey_Callback_2_(mthis, __arg_0, __arg_1) => exportKey_Callback_2(mthis, __arg_0, __arg_1);
+  importKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("importKey", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static exportKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_exportKey_Callback";
-  exportKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => exportKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  sign_Callback_1_(mthis, __arg_0) => mthis.callMethod("sign", [__arg_0]);
 
-  static exportKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_exportKey_Callback";
-  exportKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => exportKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  sign_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("sign", [__arg_0, __arg_1]);
 
-  static generateKey_Callback_1(mthis, __arg_0) native "SubtleCrypto_generateKey_Callback";
-  generateKey_Callback_1_(mthis, __arg_0) => generateKey_Callback_1(mthis, __arg_0);
+  sign_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("sign", [__arg_0, __arg_1, __arg_2]);
 
-  static generateKey_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_generateKey_Callback";
-  generateKey_Callback_2_(mthis, __arg_0, __arg_1) => generateKey_Callback_2(mthis, __arg_0, __arg_1);
+  unwrapKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("unwrapKey", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static generateKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_generateKey_Callback";
-  generateKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => generateKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  unwrapKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("unwrapKey", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static generateKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_generateKey_Callback";
-  generateKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => generateKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  unwrapKey_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("unwrapKey", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static generateKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_generateKey_Callback";
-  generateKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => generateKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  verify_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("verify", [__arg_0, __arg_1]);
 
-  static importKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_importKey_Callback";
-  importKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  verify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("verify", [__arg_0, __arg_1, __arg_2]);
 
-  static importKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_importKey_Callback";
-  importKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => importKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  verify_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("verify", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static importKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_importKey_Callback";
-  importKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => importKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  wrapKey_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("wrapKey", [__arg_0, __arg_1]);
 
-  static importKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_importKey_Callback";
-  importKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => importKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  wrapKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("wrapKey", [__arg_0, __arg_1, __arg_2]);
 
-  static importKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SubtleCrypto_importKey_Callback";
-  importKey_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => importKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static sign_Callback_1(mthis, __arg_0) native "SubtleCrypto_sign_Callback";
-  sign_Callback_1_(mthis, __arg_0) => sign_Callback_1(mthis, __arg_0);
-
-  static sign_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_sign_Callback";
-  sign_Callback_2_(mthis, __arg_0, __arg_1) => sign_Callback_2(mthis, __arg_0, __arg_1);
-
-  static sign_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_sign_Callback";
-  sign_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sign_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static sign_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_sign_Callback";
-  sign_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => sign_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static sign_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_sign_Callback";
-  sign_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => sign_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static unwrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_unwrapKey_Callback";
-  unwrapKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => unwrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static unwrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_unwrapKey_Callback";
-  unwrapKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => unwrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static unwrapKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SubtleCrypto_unwrapKey_Callback";
-  unwrapKey_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => unwrapKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static unwrapKey_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SubtleCrypto_unwrapKey_Callback";
-  unwrapKey_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => unwrapKey_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static unwrapKey_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "SubtleCrypto_unwrapKey_Callback";
-  unwrapKey_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => unwrapKey_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
-
-  static verify_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_verify_Callback";
-  verify_Callback_2_(mthis, __arg_0, __arg_1) => verify_Callback_2(mthis, __arg_0, __arg_1);
-
-  static verify_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_verify_Callback";
-  verify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => verify_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static verify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_verify_Callback";
-  verify_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => verify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static verify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_verify_Callback";
-  verify_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => verify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static verify_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_verify_Callback";
-  verify_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => verify_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static wrapKey_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_wrapKey_Callback";
-  wrapKey_Callback_2_(mthis, __arg_0, __arg_1) => wrapKey_Callback_2(mthis, __arg_0, __arg_1);
-
-  static wrapKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_wrapKey_Callback";
-  wrapKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => wrapKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static wrapKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_wrapKey_Callback";
-  wrapKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => wrapKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static wrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_wrapKey_Callback";
-  wrapKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => wrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static wrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_wrapKey_Callback";
-  wrapKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => wrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  wrapKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("wrapKey", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
 class BlinkText extends BlinkCharacterData {
   static final instance = new BlinkText();
 
-  static constructorCallback_0() native "Text_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["Text"], []);
 
-  static constructorCallback_1(__arg_0) native "Text_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Text"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Text_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  getDestinationInsertionPoints_Callback_0_(mthis) => mthis.callMethod("getDestinationInsertionPoints", []);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Text_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  replaceWholeText_Callback_0_(mthis) => mthis.callMethod("replaceWholeText", []);
 
-  static getDestinationInsertionPoints_Callback_0(mthis) native "Text_getDestinationInsertionPoints_Callback";
-  getDestinationInsertionPoints_Callback_0_(mthis) => getDestinationInsertionPoints_Callback_0(mthis);
+  replaceWholeText_Callback_1_(mthis, __arg_0) => mthis.callMethod("replaceWholeText", [__arg_0]);
 
-  static getDestinationInsertionPoints_Callback_1(mthis, __arg_0) native "Text_getDestinationInsertionPoints_Callback";
-  getDestinationInsertionPoints_Callback_1_(mthis, __arg_0) => getDestinationInsertionPoints_Callback_1(mthis, __arg_0);
+  splitText_Callback_0_(mthis) => mthis.callMethod("splitText", []);
 
-  static getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1) native "Text_getDestinationInsertionPoints_Callback";
-  getDestinationInsertionPoints_Callback_2_(mthis, __arg_0, __arg_1) => getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1);
+  splitText_Callback_1_(mthis, __arg_0) => mthis.callMethod("splitText", [__arg_0]);
 
-  static replaceWholeText_Callback_0(mthis) native "Text_replaceWholeText_Callback";
-  replaceWholeText_Callback_0_(mthis) => replaceWholeText_Callback_0(mthis);
-
-  static replaceWholeText_Callback_1(mthis, __arg_0) native "Text_replaceWholeText_Callback";
-  replaceWholeText_Callback_1_(mthis, __arg_0) => replaceWholeText_Callback_1(mthis, __arg_0);
-
-  static replaceWholeText_Callback_2(mthis, __arg_0, __arg_1) native "Text_replaceWholeText_Callback";
-  replaceWholeText_Callback_2_(mthis, __arg_0, __arg_1) => replaceWholeText_Callback_2(mthis, __arg_0, __arg_1);
-
-  static replaceWholeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Text_replaceWholeText_Callback";
-  replaceWholeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceWholeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static splitText_Callback_0(mthis) native "Text_splitText_Callback";
-  splitText_Callback_0_(mthis) => splitText_Callback_0(mthis);
-
-  static splitText_Callback_1(mthis, __arg_0) native "Text_splitText_Callback";
-  splitText_Callback_1_(mthis, __arg_0) => splitText_Callback_1(mthis, __arg_0);
-
-  static splitText_Callback_2(mthis, __arg_0, __arg_1) native "Text_splitText_Callback";
-  splitText_Callback_2_(mthis, __arg_0, __arg_1) => splitText_Callback_2(mthis, __arg_0, __arg_1);
-
-  static splitText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Text_splitText_Callback";
-  splitText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => splitText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static wholeText_Getter(mthis) native "Text_wholeText_Getter";
-  wholeText_Getter_(mthis) => wholeText_Getter(mthis);
+  wholeText_Getter_(mthis) => mthis["wholeText"];
 
 }
 
 class BlinkTextDecoder {
   static final instance = new BlinkTextDecoder();
 
-  static constructorCallback_0() native "TextDecoder_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["TextDecoder"], []);
 
-  static constructorCallback_1(__arg_0) native "TextDecoder_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["TextDecoder"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "TextDecoder_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["TextDecoder"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "TextDecoder_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  decode_Callback_0_(mthis) => mthis.callMethod("decode", []);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "TextDecoder_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  decode_Callback_1_(mthis, __arg_0) => mthis.callMethod("decode", [__arg_0]);
 
-  static decode_Callback_0(mthis) native "TextDecoder_decode_Callback";
-  decode_Callback_0_(mthis) => decode_Callback_0(mthis);
+  decode_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("decode", [__arg_0, __arg_1]);
 
-  static decode_Callback_1(mthis, __arg_0) native "TextDecoder_decode_Callback";
-  decode_Callback_1_(mthis, __arg_0) => decode_Callback_1(mthis, __arg_0);
+  encoding_Getter_(mthis) => mthis["encoding"];
 
-  static decode_Callback_2(mthis, __arg_0, __arg_1) native "TextDecoder_decode_Callback";
-  decode_Callback_2_(mthis, __arg_0, __arg_1) => decode_Callback_2(mthis, __arg_0, __arg_1);
+  fatal_Getter_(mthis) => mthis["fatal"];
 
-  static decode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextDecoder_decode_Callback";
-  decode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => decode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static decode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "TextDecoder_decode_Callback";
-  decode_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => decode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static encoding_Getter(mthis) native "TextDecoder_encoding_Getter";
-  encoding_Getter_(mthis) => encoding_Getter(mthis);
-
-  static fatal_Getter(mthis) native "TextDecoder_fatal_Getter";
-  fatal_Getter_(mthis) => fatal_Getter(mthis);
-
-  static ignoreBOM_Getter(mthis) native "TextDecoder_ignoreBOM_Getter";
-  ignoreBOM_Getter_(mthis) => ignoreBOM_Getter(mthis);
+  ignoreBOM_Getter_(mthis) => mthis["ignoreBOM"];
 
 }
 
 class BlinkTextEncoder {
   static final instance = new BlinkTextEncoder();
 
-  static constructorCallback_0() native "TextEncoder_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["TextEncoder"], []);
 
-  static constructorCallback_1(__arg_0) native "TextEncoder_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["TextEncoder"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "TextEncoder_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  encode_Callback_0_(mthis) => mthis.callMethod("encode", []);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "TextEncoder_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  encode_Callback_1_(mthis, __arg_0) => mthis.callMethod("encode", [__arg_0]);
 
-  static encode_Callback_0(mthis) native "TextEncoder_encode_Callback";
-  encode_Callback_0_(mthis) => encode_Callback_0(mthis);
-
-  static encode_Callback_1(mthis, __arg_0) native "TextEncoder_encode_Callback";
-  encode_Callback_1_(mthis, __arg_0) => encode_Callback_1(mthis, __arg_0);
-
-  static encode_Callback_2(mthis, __arg_0, __arg_1) native "TextEncoder_encode_Callback";
-  encode_Callback_2_(mthis, __arg_0, __arg_1) => encode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static encode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextEncoder_encode_Callback";
-  encode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => encode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static encoding_Getter(mthis) native "TextEncoder_encoding_Getter";
-  encoding_Getter_(mthis) => encoding_Getter(mthis);
+  encoding_Getter_(mthis) => mthis["encoding"];
 
 }
 
 class BlinkTextEvent extends BlinkUIEvent {
   static final instance = new BlinkTextEvent();
 
-  static data_Getter(mthis) native "TextEvent_data_Getter";
-  data_Getter_(mthis) => data_Getter(mthis);
+  data_Getter_(mthis) => mthis["data"];
 
-  static initTextEvent_Callback_0(mthis) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_0_(mthis) => initTextEvent_Callback_0(mthis);
+  initTextEvent_Callback_0_(mthis) => mthis.callMethod("initTextEvent", []);
 
-  static initTextEvent_Callback_1(mthis, __arg_0) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_1_(mthis, __arg_0) => initTextEvent_Callback_1(mthis, __arg_0);
+  initTextEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initTextEvent", [__arg_0]);
 
-  static initTextEvent_Callback_2(mthis, __arg_0, __arg_1) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_2_(mthis, __arg_0, __arg_1) => initTextEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initTextEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initTextEvent", [__arg_0, __arg_1]);
 
-  static initTextEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initTextEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initTextEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initTextEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initTextEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initTextEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initTextEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initTextEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initTextEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initTextEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static initTextEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initTextEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static initTextEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "TextEvent_initTextEvent_Callback";
-  initTextEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initTextEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initTextEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initTextEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkTextMetrics {
   static final instance = new BlinkTextMetrics();
 
-  static actualBoundingBoxAscent_Getter(mthis) native "TextMetrics_actualBoundingBoxAscent_Getter";
-  actualBoundingBoxAscent_Getter_(mthis) => actualBoundingBoxAscent_Getter(mthis);
+  actualBoundingBoxAscent_Getter_(mthis) => mthis["actualBoundingBoxAscent"];
 
-  static actualBoundingBoxDescent_Getter(mthis) native "TextMetrics_actualBoundingBoxDescent_Getter";
-  actualBoundingBoxDescent_Getter_(mthis) => actualBoundingBoxDescent_Getter(mthis);
+  actualBoundingBoxDescent_Getter_(mthis) => mthis["actualBoundingBoxDescent"];
 
-  static actualBoundingBoxLeft_Getter(mthis) native "TextMetrics_actualBoundingBoxLeft_Getter";
-  actualBoundingBoxLeft_Getter_(mthis) => actualBoundingBoxLeft_Getter(mthis);
+  actualBoundingBoxLeft_Getter_(mthis) => mthis["actualBoundingBoxLeft"];
 
-  static actualBoundingBoxRight_Getter(mthis) native "TextMetrics_actualBoundingBoxRight_Getter";
-  actualBoundingBoxRight_Getter_(mthis) => actualBoundingBoxRight_Getter(mthis);
+  actualBoundingBoxRight_Getter_(mthis) => mthis["actualBoundingBoxRight"];
 
-  static alphabeticBaseline_Getter(mthis) native "TextMetrics_alphabeticBaseline_Getter";
-  alphabeticBaseline_Getter_(mthis) => alphabeticBaseline_Getter(mthis);
+  alphabeticBaseline_Getter_(mthis) => mthis["alphabeticBaseline"];
 
-  static emHeightAscent_Getter(mthis) native "TextMetrics_emHeightAscent_Getter";
-  emHeightAscent_Getter_(mthis) => emHeightAscent_Getter(mthis);
+  emHeightAscent_Getter_(mthis) => mthis["emHeightAscent"];
 
-  static emHeightDescent_Getter(mthis) native "TextMetrics_emHeightDescent_Getter";
-  emHeightDescent_Getter_(mthis) => emHeightDescent_Getter(mthis);
+  emHeightDescent_Getter_(mthis) => mthis["emHeightDescent"];
 
-  static fontBoundingBoxAscent_Getter(mthis) native "TextMetrics_fontBoundingBoxAscent_Getter";
-  fontBoundingBoxAscent_Getter_(mthis) => fontBoundingBoxAscent_Getter(mthis);
+  fontBoundingBoxAscent_Getter_(mthis) => mthis["fontBoundingBoxAscent"];
 
-  static fontBoundingBoxDescent_Getter(mthis) native "TextMetrics_fontBoundingBoxDescent_Getter";
-  fontBoundingBoxDescent_Getter_(mthis) => fontBoundingBoxDescent_Getter(mthis);
+  fontBoundingBoxDescent_Getter_(mthis) => mthis["fontBoundingBoxDescent"];
 
-  static hangingBaseline_Getter(mthis) native "TextMetrics_hangingBaseline_Getter";
-  hangingBaseline_Getter_(mthis) => hangingBaseline_Getter(mthis);
+  hangingBaseline_Getter_(mthis) => mthis["hangingBaseline"];
 
-  static ideographicBaseline_Getter(mthis) native "TextMetrics_ideographicBaseline_Getter";
-  ideographicBaseline_Getter_(mthis) => ideographicBaseline_Getter(mthis);
+  ideographicBaseline_Getter_(mthis) => mthis["ideographicBaseline"];
 
-  static width_Getter(mthis) native "TextMetrics_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
 }
 
 class BlinkTextTrack extends BlinkEventTarget {
   static final instance = new BlinkTextTrack();
 
-  static activeCues_Getter(mthis) native "TextTrack_activeCues_Getter";
-  activeCues_Getter_(mthis) => activeCues_Getter(mthis);
+  activeCues_Getter_(mthis) => mthis["activeCues"];
 
-  static addCue_Callback_0(mthis) native "TextTrack_addCue_Callback";
-  addCue_Callback_0_(mthis) => addCue_Callback_0(mthis);
+  addCue_Callback_0_(mthis) => mthis.callMethod("addCue", []);
 
-  static addCue_Callback_1(mthis, __arg_0) native "TextTrack_addCue_Callback";
-  addCue_Callback_1_(mthis, __arg_0) => addCue_Callback_1(mthis, __arg_0);
+  addCue_Callback_1_(mthis, __arg_0) => mthis.callMethod("addCue", [__arg_0]);
 
-  static addCue_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_addCue_Callback";
-  addCue_Callback_2_(mthis, __arg_0, __arg_1) => addCue_Callback_2(mthis, __arg_0, __arg_1);
+  addRegion_Callback_0_(mthis) => mthis.callMethod("addRegion", []);
 
-  static addCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_addCue_Callback";
-  addCue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  addRegion_Callback_1_(mthis, __arg_0) => mthis.callMethod("addRegion", [__arg_0]);
 
-  static addRegion_Callback_0(mthis) native "TextTrack_addRegion_Callback";
-  addRegion_Callback_0_(mthis) => addRegion_Callback_0(mthis);
+  cues_Getter_(mthis) => mthis["cues"];
 
-  static addRegion_Callback_1(mthis, __arg_0) native "TextTrack_addRegion_Callback";
-  addRegion_Callback_1_(mthis, __arg_0) => addRegion_Callback_1(mthis, __arg_0);
+  id_Getter_(mthis) => mthis["id"];
 
-  static addRegion_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_addRegion_Callback";
-  addRegion_Callback_2_(mthis, __arg_0, __arg_1) => addRegion_Callback_2(mthis, __arg_0, __arg_1);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static addRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_addRegion_Callback";
-  addRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  label_Getter_(mthis) => mthis["label"];
 
-  static cues_Getter(mthis) native "TextTrack_cues_Getter";
-  cues_Getter_(mthis) => cues_Getter(mthis);
+  language_Getter_(mthis) => mthis["language"];
 
-  static id_Getter(mthis) native "TextTrack_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  mode_Getter_(mthis) => mthis["mode"];
 
-  static kind_Getter(mthis) native "TextTrack_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
+  mode_Setter_(mthis, __arg_0) => mthis["mode"] = __arg_0;
 
-  static label_Getter(mthis) native "TextTrack_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  oncuechange_Getter_(mthis) => mthis["oncuechange"];
 
-  static language_Getter(mthis) native "TextTrack_language_Getter";
-  language_Getter_(mthis) => language_Getter(mthis);
+  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
 
-  static mode_Getter(mthis) native "TextTrack_mode_Getter";
-  mode_Getter_(mthis) => mode_Getter(mthis);
+  regions_Getter_(mthis) => mthis["regions"];
 
-  static mode_Setter(mthis, __arg_0) native "TextTrack_mode_Setter";
-  mode_Setter_(mthis, __arg_0) => mode_Setter(mthis, __arg_0);
+  removeCue_Callback_0_(mthis) => mthis.callMethod("removeCue", []);
 
-  static oncuechange_Getter(mthis) native "TextTrack_oncuechange_Getter";
-  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+  removeCue_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeCue", [__arg_0]);
 
-  static oncuechange_Setter(mthis, __arg_0) native "TextTrack_oncuechange_Setter";
-  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+  removeRegion_Callback_0_(mthis) => mthis.callMethod("removeRegion", []);
 
-  static regions_Getter(mthis) native "TextTrack_regions_Getter";
-  regions_Getter_(mthis) => regions_Getter(mthis);
-
-  static removeCue_Callback_0(mthis) native "TextTrack_removeCue_Callback";
-  removeCue_Callback_0_(mthis) => removeCue_Callback_0(mthis);
-
-  static removeCue_Callback_1(mthis, __arg_0) native "TextTrack_removeCue_Callback";
-  removeCue_Callback_1_(mthis, __arg_0) => removeCue_Callback_1(mthis, __arg_0);
-
-  static removeCue_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_removeCue_Callback";
-  removeCue_Callback_2_(mthis, __arg_0, __arg_1) => removeCue_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_removeCue_Callback";
-  removeCue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeRegion_Callback_0(mthis) native "TextTrack_removeRegion_Callback";
-  removeRegion_Callback_0_(mthis) => removeRegion_Callback_0(mthis);
-
-  static removeRegion_Callback_1(mthis, __arg_0) native "TextTrack_removeRegion_Callback";
-  removeRegion_Callback_1_(mthis, __arg_0) => removeRegion_Callback_1(mthis, __arg_0);
-
-  static removeRegion_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_removeRegion_Callback";
-  removeRegion_Callback_2_(mthis, __arg_0, __arg_1) => removeRegion_Callback_2(mthis, __arg_0, __arg_1);
-
-  static removeRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_removeRegion_Callback";
-  removeRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeRegion_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeRegion", [__arg_0]);
 
 }
 
 class BlinkTextTrackCue extends BlinkEventTarget {
   static final instance = new BlinkTextTrackCue();
 
-  static endTime_Getter(mthis) native "TextTrackCue_endTime_Getter";
-  endTime_Getter_(mthis) => endTime_Getter(mthis);
+  endTime_Getter_(mthis) => mthis["endTime"];
 
-  static endTime_Setter(mthis, __arg_0) native "TextTrackCue_endTime_Setter";
-  endTime_Setter_(mthis, __arg_0) => endTime_Setter(mthis, __arg_0);
+  endTime_Setter_(mthis, __arg_0) => mthis["endTime"] = __arg_0;
 
-  static id_Getter(mthis) native "TextTrackCue_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static id_Setter(mthis, __arg_0) native "TextTrackCue_id_Setter";
-  id_Setter_(mthis, __arg_0) => id_Setter(mthis, __arg_0);
+  id_Setter_(mthis, __arg_0) => mthis["id"] = __arg_0;
 
-  static onenter_Getter(mthis) native "TextTrackCue_onenter_Getter";
-  onenter_Getter_(mthis) => onenter_Getter(mthis);
+  onenter_Getter_(mthis) => mthis["onenter"];
 
-  static onenter_Setter(mthis, __arg_0) native "TextTrackCue_onenter_Setter";
-  onenter_Setter_(mthis, __arg_0) => onenter_Setter(mthis, __arg_0);
+  onenter_Setter_(mthis, __arg_0) => mthis["onenter"] = __arg_0;
 
-  static onexit_Getter(mthis) native "TextTrackCue_onexit_Getter";
-  onexit_Getter_(mthis) => onexit_Getter(mthis);
+  onexit_Getter_(mthis) => mthis["onexit"];
 
-  static onexit_Setter(mthis, __arg_0) native "TextTrackCue_onexit_Setter";
-  onexit_Setter_(mthis, __arg_0) => onexit_Setter(mthis, __arg_0);
+  onexit_Setter_(mthis, __arg_0) => mthis["onexit"] = __arg_0;
 
-  static pauseOnExit_Getter(mthis) native "TextTrackCue_pauseOnExit_Getter";
-  pauseOnExit_Getter_(mthis) => pauseOnExit_Getter(mthis);
+  pauseOnExit_Getter_(mthis) => mthis["pauseOnExit"];
 
-  static pauseOnExit_Setter(mthis, __arg_0) native "TextTrackCue_pauseOnExit_Setter";
-  pauseOnExit_Setter_(mthis, __arg_0) => pauseOnExit_Setter(mthis, __arg_0);
+  pauseOnExit_Setter_(mthis, __arg_0) => mthis["pauseOnExit"] = __arg_0;
 
-  static startTime_Getter(mthis) native "TextTrackCue_startTime_Getter";
-  startTime_Getter_(mthis) => startTime_Getter(mthis);
+  startTime_Getter_(mthis) => mthis["startTime"];
 
-  static startTime_Setter(mthis, __arg_0) native "TextTrackCue_startTime_Setter";
-  startTime_Setter_(mthis, __arg_0) => startTime_Setter(mthis, __arg_0);
+  startTime_Setter_(mthis, __arg_0) => mthis["startTime"] = __arg_0;
 
-  static track_Getter(mthis) native "TextTrackCue_track_Getter";
-  track_Getter_(mthis) => track_Getter(mthis);
+  track_Getter_(mthis) => mthis["track"];
 
 }
 
 class BlinkTextTrackCueList {
   static final instance = new BlinkTextTrackCueList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "TextTrackCueList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static getCueById_Callback_0(mthis) native "TextTrackCueList_getCueById_Callback";
-  getCueById_Callback_0_(mthis) => getCueById_Callback_0(mthis);
+  getCueById_Callback_0_(mthis) => mthis.callMethod("getCueById", []);
 
-  static getCueById_Callback_1(mthis, __arg_0) native "TextTrackCueList_getCueById_Callback";
-  getCueById_Callback_1_(mthis, __arg_0) => getCueById_Callback_1(mthis, __arg_0);
+  getCueById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getCueById", [__arg_0]);
 
-  static getCueById_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackCueList_getCueById_Callback";
-  getCueById_Callback_2_(mthis, __arg_0, __arg_1) => getCueById_Callback_2(mthis, __arg_0, __arg_1);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static getCueById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackCueList_getCueById_Callback";
-  getCueById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCueById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_0(mthis) native "TextTrackCueList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
-
-  static item_Callback_1(mthis, __arg_0) native "TextTrackCueList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
-
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackCueList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackCueList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "TextTrackCueList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkTextTrackList extends BlinkEventTarget {
   static final instance = new BlinkTextTrackList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "TextTrackList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static getTrackById_Callback_0(mthis) native "TextTrackList_getTrackById_Callback";
-  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+  getTrackById_Callback_0_(mthis) => mthis.callMethod("getTrackById", []);
 
-  static getTrackById_Callback_1(mthis, __arg_0) native "TextTrackList_getTrackById_Callback";
-  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+  getTrackById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getTrackById", [__arg_0]);
 
-  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackList_getTrackById_Callback";
-  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackList_getTrackById_Callback";
-  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_0(mthis) native "TextTrackList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
-  static item_Callback_1(mthis, __arg_0) native "TextTrackList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  onaddtrack_Getter_(mthis) => mthis["onaddtrack"];
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
 
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static length_Getter(mthis) native "TextTrackList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static onaddtrack_Getter(mthis) native "TextTrackList_onaddtrack_Getter";
-  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
+  onremovetrack_Getter_(mthis) => mthis["onremovetrack"];
 
-  static onaddtrack_Setter(mthis, __arg_0) native "TextTrackList_onaddtrack_Setter";
-  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
-
-  static onchange_Getter(mthis) native "TextTrackList_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
-
-  static onchange_Setter(mthis, __arg_0) native "TextTrackList_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
-
-  static onremovetrack_Getter(mthis) native "TextTrackList_onremovetrack_Getter";
-  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
-
-  static onremovetrack_Setter(mthis, __arg_0) native "TextTrackList_onremovetrack_Setter";
-  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
+  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
 
 }
 
 class BlinkTimeRanges {
   static final instance = new BlinkTimeRanges();
 
-  static end_Callback_0(mthis) native "TimeRanges_end_Callback";
-  end_Callback_0_(mthis) => end_Callback_0(mthis);
+  end_Callback_0_(mthis) => mthis.callMethod("end", []);
 
-  static end_Callback_1(mthis, __arg_0) native "TimeRanges_end_Callback";
-  end_Callback_1_(mthis, __arg_0) => end_Callback_1(mthis, __arg_0);
+  end_Callback_1_(mthis, __arg_0) => mthis.callMethod("end", [__arg_0]);
 
-  static end_Callback_2(mthis, __arg_0, __arg_1) native "TimeRanges_end_Callback";
-  end_Callback_2_(mthis, __arg_0, __arg_1) => end_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static end_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TimeRanges_end_Callback";
-  end_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => end_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  start_Callback_0_(mthis) => mthis.callMethod("start", []);
 
-  static length_Getter(mthis) native "TimeRanges_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
-
-  static start_Callback_0(mthis) native "TimeRanges_start_Callback";
-  start_Callback_0_(mthis) => start_Callback_0(mthis);
-
-  static start_Callback_1(mthis, __arg_0) native "TimeRanges_start_Callback";
-  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
-
-  static start_Callback_2(mthis, __arg_0, __arg_1) native "TimeRanges_start_Callback";
-  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
-
-  static start_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TimeRanges_start_Callback";
-  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => start_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  start_Callback_1_(mthis, __arg_0) => mthis.callMethod("start", [__arg_0]);
 
 }
 
 class BlinkTiming {
   static final instance = new BlinkTiming();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "Timing___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "Timing___setter___Callback";
-  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("__setter__", [__arg_0, __arg_1]);
 
-  static delay_Getter(mthis) native "Timing_delay_Getter";
-  delay_Getter_(mthis) => delay_Getter(mthis);
+  delay_Getter_(mthis) => mthis["delay"];
 
-  static delay_Setter(mthis, __arg_0) native "Timing_delay_Setter";
-  delay_Setter_(mthis, __arg_0) => delay_Setter(mthis, __arg_0);
+  delay_Setter_(mthis, __arg_0) => mthis["delay"] = __arg_0;
 
-  static direction_Getter(mthis) native "Timing_direction_Getter";
-  direction_Getter_(mthis) => direction_Getter(mthis);
+  direction_Getter_(mthis) => mthis["direction"];
 
-  static direction_Setter(mthis, __arg_0) native "Timing_direction_Setter";
-  direction_Setter_(mthis, __arg_0) => direction_Setter(mthis, __arg_0);
+  direction_Setter_(mthis, __arg_0) => mthis["direction"] = __arg_0;
 
-  static easing_Getter(mthis) native "Timing_easing_Getter";
-  easing_Getter_(mthis) => easing_Getter(mthis);
+  easing_Getter_(mthis) => mthis["easing"];
 
-  static easing_Setter(mthis, __arg_0) native "Timing_easing_Setter";
-  easing_Setter_(mthis, __arg_0) => easing_Setter(mthis, __arg_0);
+  easing_Setter_(mthis, __arg_0) => mthis["easing"] = __arg_0;
 
-  static endDelay_Getter(mthis) native "Timing_endDelay_Getter";
-  endDelay_Getter_(mthis) => endDelay_Getter(mthis);
+  endDelay_Getter_(mthis) => mthis["endDelay"];
 
-  static endDelay_Setter(mthis, __arg_0) native "Timing_endDelay_Setter";
-  endDelay_Setter_(mthis, __arg_0) => endDelay_Setter(mthis, __arg_0);
+  endDelay_Setter_(mthis, __arg_0) => mthis["endDelay"] = __arg_0;
 
-  static fill_Getter(mthis) native "Timing_fill_Getter";
-  fill_Getter_(mthis) => fill_Getter(mthis);
+  fill_Getter_(mthis) => mthis["fill"];
 
-  static fill_Setter(mthis, __arg_0) native "Timing_fill_Setter";
-  fill_Setter_(mthis, __arg_0) => fill_Setter(mthis, __arg_0);
+  fill_Setter_(mthis, __arg_0) => mthis["fill"] = __arg_0;
 
-  static iterationStart_Getter(mthis) native "Timing_iterationStart_Getter";
-  iterationStart_Getter_(mthis) => iterationStart_Getter(mthis);
+  iterationStart_Getter_(mthis) => mthis["iterationStart"];
 
-  static iterationStart_Setter(mthis, __arg_0) native "Timing_iterationStart_Setter";
-  iterationStart_Setter_(mthis, __arg_0) => iterationStart_Setter(mthis, __arg_0);
+  iterationStart_Setter_(mthis, __arg_0) => mthis["iterationStart"] = __arg_0;
 
-  static iterations_Getter(mthis) native "Timing_iterations_Getter";
-  iterations_Getter_(mthis) => iterations_Getter(mthis);
+  iterations_Getter_(mthis) => mthis["iterations"];
 
-  static iterations_Setter(mthis, __arg_0) native "Timing_iterations_Setter";
-  iterations_Setter_(mthis, __arg_0) => iterations_Setter(mthis, __arg_0);
+  iterations_Setter_(mthis, __arg_0) => mthis["iterations"] = __arg_0;
 
-  static playbackRate_Getter(mthis) native "Timing_playbackRate_Getter";
-  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
+  playbackRate_Getter_(mthis) => mthis["playbackRate"];
 
-  static playbackRate_Setter(mthis, __arg_0) native "Timing_playbackRate_Setter";
-  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
+  playbackRate_Setter_(mthis, __arg_0) => mthis["playbackRate"] = __arg_0;
 
 }
 
 class BlinkTouch {
   static final instance = new BlinkTouch();
 
-  static clientX_Getter(mthis) native "Touch_clientX_Getter";
-  clientX_Getter_(mthis) => clientX_Getter(mthis);
+  clientX_Getter_(mthis) => mthis["clientX"];
 
-  static clientY_Getter(mthis) native "Touch_clientY_Getter";
-  clientY_Getter_(mthis) => clientY_Getter(mthis);
+  clientY_Getter_(mthis) => mthis["clientY"];
 
-  static force_Getter(mthis) native "Touch_force_Getter";
-  force_Getter_(mthis) => force_Getter(mthis);
+  force_Getter_(mthis) => mthis["force"];
 
-  static identifier_Getter(mthis) native "Touch_identifier_Getter";
-  identifier_Getter_(mthis) => identifier_Getter(mthis);
+  identifier_Getter_(mthis) => mthis["identifier"];
 
-  static pageX_Getter(mthis) native "Touch_pageX_Getter";
-  pageX_Getter_(mthis) => pageX_Getter(mthis);
+  pageX_Getter_(mthis) => mthis["pageX"];
 
-  static pageY_Getter(mthis) native "Touch_pageY_Getter";
-  pageY_Getter_(mthis) => pageY_Getter(mthis);
+  pageY_Getter_(mthis) => mthis["pageY"];
 
-  static radiusX_Getter(mthis) native "Touch_radiusX_Getter";
-  radiusX_Getter_(mthis) => radiusX_Getter(mthis);
+  radiusX_Getter_(mthis) => mthis["radiusX"];
 
-  static radiusY_Getter(mthis) native "Touch_radiusY_Getter";
-  radiusY_Getter_(mthis) => radiusY_Getter(mthis);
+  radiusY_Getter_(mthis) => mthis["radiusY"];
 
-  static screenX_Getter(mthis) native "Touch_screenX_Getter";
-  screenX_Getter_(mthis) => screenX_Getter(mthis);
+  screenX_Getter_(mthis) => mthis["screenX"];
 
-  static screenY_Getter(mthis) native "Touch_screenY_Getter";
-  screenY_Getter_(mthis) => screenY_Getter(mthis);
+  screenY_Getter_(mthis) => mthis["screenY"];
 
-  static target_Getter(mthis) native "Touch_target_Getter";
-  target_Getter_(mthis) => target_Getter(mthis);
+  target_Getter_(mthis) => mthis["target"];
 
-  static webkitForce_Getter(mthis) native "Touch_webkitForce_Getter";
-  webkitForce_Getter_(mthis) => webkitForce_Getter(mthis);
+  webkitForce_Getter_(mthis) => mthis["webkitForce"];
 
-  static webkitRadiusX_Getter(mthis) native "Touch_webkitRadiusX_Getter";
-  webkitRadiusX_Getter_(mthis) => webkitRadiusX_Getter(mthis);
+  webkitRadiusX_Getter_(mthis) => mthis["webkitRadiusX"];
 
-  static webkitRadiusY_Getter(mthis) native "Touch_webkitRadiusY_Getter";
-  webkitRadiusY_Getter_(mthis) => webkitRadiusY_Getter(mthis);
+  webkitRadiusY_Getter_(mthis) => mthis["webkitRadiusY"];
 
-  static webkitRotationAngle_Getter(mthis) native "Touch_webkitRotationAngle_Getter";
-  webkitRotationAngle_Getter_(mthis) => webkitRotationAngle_Getter(mthis);
+  webkitRotationAngle_Getter_(mthis) => mthis["webkitRotationAngle"];
 
 }
 
 class BlinkTouchEvent extends BlinkUIEvent {
   static final instance = new BlinkTouchEvent();
 
-  static altKey_Getter(mthis) native "TouchEvent_altKey_Getter";
-  altKey_Getter_(mthis) => altKey_Getter(mthis);
+  altKey_Getter_(mthis) => mthis["altKey"];
 
-  static changedTouches_Getter(mthis) native "TouchEvent_changedTouches_Getter";
-  changedTouches_Getter_(mthis) => changedTouches_Getter(mthis);
+  changedTouches_Getter_(mthis) => mthis["changedTouches"];
 
-  static ctrlKey_Getter(mthis) native "TouchEvent_ctrlKey_Getter";
-  ctrlKey_Getter_(mthis) => ctrlKey_Getter(mthis);
+  ctrlKey_Getter_(mthis) => mthis["ctrlKey"];
 
-  static initTouchEvent_Callback_0(mthis) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_0_(mthis) => initTouchEvent_Callback_0(mthis);
+  initTouchEvent_Callback_0_(mthis) => mthis.callMethod("initTouchEvent", []);
 
-  static initTouchEvent_Callback_1(mthis, __arg_0) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_1_(mthis, __arg_0) => initTouchEvent_Callback_1(mthis, __arg_0);
+  initTouchEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initTouchEvent", [__arg_0]);
 
-  static initTouchEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initTouchEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  initTouchEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9]);
 
-  static initTouchEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => initTouchEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+  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) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10]);
 
-  static initTouchEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => initTouchEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+  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) => mthis.callMethod("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]);
 
-  static initTouchEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_13_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) => initTouchEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12);
+  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) => mthis.callMethod("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]);
 
-  static initTouchEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_14_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) => initTouchEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13);
+  initTouchEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1]);
 
-  static initTouchEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_15_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) => initTouchEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14);
+  initTouchEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initTouchEvent_Callback_2(mthis, __arg_0, __arg_1) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_2_(mthis, __arg_0, __arg_1) => initTouchEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initTouchEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initTouchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initTouchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initTouchEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initTouchEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initTouchEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initTouchEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static initTouchEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initTouchEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initTouchEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static initTouchEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initTouchEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  initTouchEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static initTouchEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initTouchEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  initTouchEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => mthis.callMethod("initTouchEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  static initTouchEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initTouchEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  metaKey_Getter_(mthis) => mthis["metaKey"];
 
-  static initTouchEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "TouchEvent_initTouchEvent_Callback";
-  initTouchEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initTouchEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  shiftKey_Getter_(mthis) => mthis["shiftKey"];
 
-  static metaKey_Getter(mthis) native "TouchEvent_metaKey_Getter";
-  metaKey_Getter_(mthis) => metaKey_Getter(mthis);
+  targetTouches_Getter_(mthis) => mthis["targetTouches"];
 
-  static shiftKey_Getter(mthis) native "TouchEvent_shiftKey_Getter";
-  shiftKey_Getter_(mthis) => shiftKey_Getter(mthis);
-
-  static targetTouches_Getter(mthis) native "TouchEvent_targetTouches_Getter";
-  targetTouches_Getter_(mthis) => targetTouches_Getter(mthis);
-
-  static touches_Getter(mthis) native "TouchEvent_touches_Getter";
-  touches_Getter_(mthis) => touches_Getter(mthis);
+  touches_Getter_(mthis) => mthis["touches"];
 
 }
 
 class BlinkTouchList {
   static final instance = new BlinkTouchList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "TouchList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "TouchList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "TouchList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "TouchList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TouchList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "TouchList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkTrackEvent extends BlinkEvent {
   static final instance = new BlinkTrackEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "TrackEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["TrackEvent"], [__arg_0, __arg_1]);
 
-  static track_Getter(mthis) native "TrackEvent_track_Getter";
-  track_Getter_(mthis) => track_Getter(mthis);
+  track_Getter_(mthis) => mthis["track"];
 
 }
 
 class BlinkTransitionEvent extends BlinkEvent {
   static final instance = new BlinkTransitionEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "TransitionEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["TransitionEvent"], [__arg_0, __arg_1]);
 
-  static elapsedTime_Getter(mthis) native "TransitionEvent_elapsedTime_Getter";
-  elapsedTime_Getter_(mthis) => elapsedTime_Getter(mthis);
+  elapsedTime_Getter_(mthis) => mthis["elapsedTime"];
 
-  static propertyName_Getter(mthis) native "TransitionEvent_propertyName_Getter";
-  propertyName_Getter_(mthis) => propertyName_Getter(mthis);
+  propertyName_Getter_(mthis) => mthis["propertyName"];
 
-  static pseudoElement_Getter(mthis) native "TransitionEvent_pseudoElement_Getter";
-  pseudoElement_Getter_(mthis) => pseudoElement_Getter(mthis);
+  pseudoElement_Getter_(mthis) => mthis["pseudoElement"];
 
 }
 
 class BlinkTreeWalker {
   static final instance = new BlinkTreeWalker();
 
-  static currentNode_Getter(mthis) native "TreeWalker_currentNode_Getter";
-  currentNode_Getter_(mthis) => currentNode_Getter(mthis);
+  currentNode_Getter_(mthis) => mthis["currentNode"];
 
-  static currentNode_Setter(mthis, __arg_0) native "TreeWalker_currentNode_Setter";
-  currentNode_Setter_(mthis, __arg_0) => currentNode_Setter(mthis, __arg_0);
+  currentNode_Setter_(mthis, __arg_0) => mthis["currentNode"] = __arg_0;
 
-  static expandEntityReferences_Getter(mthis) native "TreeWalker_expandEntityReferences_Getter";
-  expandEntityReferences_Getter_(mthis) => expandEntityReferences_Getter(mthis);
+  expandEntityReferences_Getter_(mthis) => mthis["expandEntityReferences"];
 
-  static filter_Getter(mthis) native "TreeWalker_filter_Getter";
-  filter_Getter_(mthis) => filter_Getter(mthis);
+  filter_Getter_(mthis) => mthis["filter"];
 
-  static firstChild_Callback_0(mthis) native "TreeWalker_firstChild_Callback";
-  firstChild_Callback_0_(mthis) => firstChild_Callback_0(mthis);
+  firstChild_Callback_0_(mthis) => mthis.callMethod("firstChild", []);
 
-  static firstChild_Callback_1(mthis, __arg_0) native "TreeWalker_firstChild_Callback";
-  firstChild_Callback_1_(mthis, __arg_0) => firstChild_Callback_1(mthis, __arg_0);
+  lastChild_Callback_0_(mthis) => mthis.callMethod("lastChild", []);
 
-  static firstChild_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_firstChild_Callback";
-  firstChild_Callback_2_(mthis, __arg_0, __arg_1) => firstChild_Callback_2(mthis, __arg_0, __arg_1);
+  nextNode_Callback_0_(mthis) => mthis.callMethod("nextNode", []);
 
-  static lastChild_Callback_0(mthis) native "TreeWalker_lastChild_Callback";
-  lastChild_Callback_0_(mthis) => lastChild_Callback_0(mthis);
+  nextSibling_Callback_0_(mthis) => mthis.callMethod("nextSibling", []);
 
-  static lastChild_Callback_1(mthis, __arg_0) native "TreeWalker_lastChild_Callback";
-  lastChild_Callback_1_(mthis, __arg_0) => lastChild_Callback_1(mthis, __arg_0);
+  parentNode_Callback_0_(mthis) => mthis.callMethod("parentNode", []);
 
-  static lastChild_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_lastChild_Callback";
-  lastChild_Callback_2_(mthis, __arg_0, __arg_1) => lastChild_Callback_2(mthis, __arg_0, __arg_1);
+  previousNode_Callback_0_(mthis) => mthis.callMethod("previousNode", []);
 
-  static nextNode_Callback_0(mthis) native "TreeWalker_nextNode_Callback";
-  nextNode_Callback_0_(mthis) => nextNode_Callback_0(mthis);
+  previousSibling_Callback_0_(mthis) => mthis.callMethod("previousSibling", []);
 
-  static nextNode_Callback_1(mthis, __arg_0) native "TreeWalker_nextNode_Callback";
-  nextNode_Callback_1_(mthis, __arg_0) => nextNode_Callback_1(mthis, __arg_0);
+  root_Getter_(mthis) => mthis["root"];
 
-  static nextNode_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_nextNode_Callback";
-  nextNode_Callback_2_(mthis, __arg_0, __arg_1) => nextNode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static nextSibling_Callback_0(mthis) native "TreeWalker_nextSibling_Callback";
-  nextSibling_Callback_0_(mthis) => nextSibling_Callback_0(mthis);
-
-  static nextSibling_Callback_1(mthis, __arg_0) native "TreeWalker_nextSibling_Callback";
-  nextSibling_Callback_1_(mthis, __arg_0) => nextSibling_Callback_1(mthis, __arg_0);
-
-  static nextSibling_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_nextSibling_Callback";
-  nextSibling_Callback_2_(mthis, __arg_0, __arg_1) => nextSibling_Callback_2(mthis, __arg_0, __arg_1);
-
-  static parentNode_Callback_0(mthis) native "TreeWalker_parentNode_Callback";
-  parentNode_Callback_0_(mthis) => parentNode_Callback_0(mthis);
-
-  static parentNode_Callback_1(mthis, __arg_0) native "TreeWalker_parentNode_Callback";
-  parentNode_Callback_1_(mthis, __arg_0) => parentNode_Callback_1(mthis, __arg_0);
-
-  static parentNode_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_parentNode_Callback";
-  parentNode_Callback_2_(mthis, __arg_0, __arg_1) => parentNode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static previousNode_Callback_0(mthis) native "TreeWalker_previousNode_Callback";
-  previousNode_Callback_0_(mthis) => previousNode_Callback_0(mthis);
-
-  static previousNode_Callback_1(mthis, __arg_0) native "TreeWalker_previousNode_Callback";
-  previousNode_Callback_1_(mthis, __arg_0) => previousNode_Callback_1(mthis, __arg_0);
-
-  static previousNode_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_previousNode_Callback";
-  previousNode_Callback_2_(mthis, __arg_0, __arg_1) => previousNode_Callback_2(mthis, __arg_0, __arg_1);
-
-  static previousSibling_Callback_0(mthis) native "TreeWalker_previousSibling_Callback";
-  previousSibling_Callback_0_(mthis) => previousSibling_Callback_0(mthis);
-
-  static previousSibling_Callback_1(mthis, __arg_0) native "TreeWalker_previousSibling_Callback";
-  previousSibling_Callback_1_(mthis, __arg_0) => previousSibling_Callback_1(mthis, __arg_0);
-
-  static previousSibling_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_previousSibling_Callback";
-  previousSibling_Callback_2_(mthis, __arg_0, __arg_1) => previousSibling_Callback_2(mthis, __arg_0, __arg_1);
-
-  static root_Getter(mthis) native "TreeWalker_root_Getter";
-  root_Getter_(mthis) => root_Getter(mthis);
-
-  static whatToShow_Getter(mthis) native "TreeWalker_whatToShow_Getter";
-  whatToShow_Getter_(mthis) => whatToShow_Getter(mthis);
+  whatToShow_Getter_(mthis) => mthis["whatToShow"];
 
 }
 
 class BlinkUIEvent extends BlinkEvent {
   static final instance = new BlinkUIEvent();
 
-  static charCode_Getter(mthis) native "UIEvent_charCode_Getter";
-  charCode_Getter_(mthis) => charCode_Getter(mthis);
+  charCode_Getter_(mthis) => mthis["charCode"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "UIEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["UIEvent"], [__arg_0, __arg_1]);
 
-  static detail_Getter(mthis) native "UIEvent_detail_Getter";
-  detail_Getter_(mthis) => detail_Getter(mthis);
+  detail_Getter_(mthis) => mthis["detail"];
 
-  static initUIEvent_Callback_0(mthis) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_0_(mthis) => initUIEvent_Callback_0(mthis);
+  initUIEvent_Callback_0_(mthis) => mthis.callMethod("initUIEvent", []);
 
-  static initUIEvent_Callback_1(mthis, __arg_0) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_1_(mthis, __arg_0) => initUIEvent_Callback_1(mthis, __arg_0);
+  initUIEvent_Callback_1_(mthis, __arg_0) => mthis.callMethod("initUIEvent", [__arg_0]);
 
-  static initUIEvent_Callback_2(mthis, __arg_0, __arg_1) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_2_(mthis, __arg_0, __arg_1) => initUIEvent_Callback_2(mthis, __arg_0, __arg_1);
+  initUIEvent_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("initUIEvent", [__arg_0, __arg_1]);
 
-  static initUIEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initUIEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  initUIEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("initUIEvent", [__arg_0, __arg_1, __arg_2]);
 
-  static initUIEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initUIEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  initUIEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("initUIEvent", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static initUIEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initUIEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  initUIEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("initUIEvent", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static initUIEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initUIEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  keyCode_Getter_(mthis) => mthis["keyCode"];
 
-  static initUIEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "UIEvent_initUIEvent_Callback";
-  initUIEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initUIEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  layerX_Getter_(mthis) => mthis["layerX"];
 
-  static keyCode_Getter(mthis) native "UIEvent_keyCode_Getter";
-  keyCode_Getter_(mthis) => keyCode_Getter(mthis);
+  layerY_Getter_(mthis) => mthis["layerY"];
 
-  static layerX_Getter(mthis) native "UIEvent_layerX_Getter";
-  layerX_Getter_(mthis) => layerX_Getter(mthis);
+  pageX_Getter_(mthis) => mthis["pageX"];
 
-  static layerY_Getter(mthis) native "UIEvent_layerY_Getter";
-  layerY_Getter_(mthis) => layerY_Getter(mthis);
+  pageY_Getter_(mthis) => mthis["pageY"];
 
-  static pageX_Getter(mthis) native "UIEvent_pageX_Getter";
-  pageX_Getter_(mthis) => pageX_Getter(mthis);
+  view_Getter_(mthis) => mthis["view"];
 
-  static pageY_Getter(mthis) native "UIEvent_pageY_Getter";
-  pageY_Getter_(mthis) => pageY_Getter(mthis);
-
-  static view_Getter(mthis) native "UIEvent_view_Getter";
-  view_Getter_(mthis) => view_Getter(mthis);
-
-  static which_Getter(mthis) native "UIEvent_which_Getter";
-  which_Getter_(mthis) => which_Getter(mthis);
+  which_Getter_(mthis) => mthis["which"];
 
 }
 
 class BlinkURL {
   static final instance = new BlinkURL();
 
-  static constructorCallback_0() native "URL_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["URL"], []);
 
-  static constructorCallback_1(__arg_0) native "URL_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["URL"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "URL_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["URL"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "URL_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  createObjectURL_Callback_0_() => js.context["URL"].callMethod("createObjectURL", []);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "URL_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  createObjectURL_Callback_1_(__arg_0) => js.context["URL"].callMethod("createObjectURL", [__arg_0]);
 
-  static createObjectURL_Callback_0() native "URL_createObjectURL_Callback";
-  createObjectURL_Callback_0_() => createObjectURL_Callback_0();
+  hash_Getter_(mthis) => mthis["hash"];
 
-  static createObjectURL_Callback_1(__arg_0) native "URL_createObjectURL_Callback";
-  createObjectURL_Callback_1_(__arg_0) => createObjectURL_Callback_1(__arg_0);
+  hash_Setter_(mthis, __arg_0) => mthis["hash"] = __arg_0;
 
-  static createObjectURL_Callback_2(__arg_0, __arg_1) native "URL_createObjectURL_Callback";
-  createObjectURL_Callback_2_(__arg_0, __arg_1) => createObjectURL_Callback_2(__arg_0, __arg_1);
+  host_Getter_(mthis) => mthis["host"];
 
-  static createObjectURL_Callback_3(__arg_0, __arg_1, __arg_2) native "URL_createObjectURL_Callback";
-  createObjectURL_Callback_3_(__arg_0, __arg_1, __arg_2) => createObjectURL_Callback_3(__arg_0, __arg_1, __arg_2);
+  host_Setter_(mthis, __arg_0) => mthis["host"] = __arg_0;
 
-  static hash_Getter(mthis) native "URL_hash_Getter";
-  hash_Getter_(mthis) => hash_Getter(mthis);
+  hostname_Getter_(mthis) => mthis["hostname"];
 
-  static hash_Setter(mthis, __arg_0) native "URL_hash_Setter";
-  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
+  hostname_Setter_(mthis, __arg_0) => mthis["hostname"] = __arg_0;
 
-  static host_Getter(mthis) native "URL_host_Getter";
-  host_Getter_(mthis) => host_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static host_Setter(mthis, __arg_0) native "URL_host_Setter";
-  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
+  href_Setter_(mthis, __arg_0) => mthis["href"] = __arg_0;
 
-  static hostname_Getter(mthis) native "URL_hostname_Getter";
-  hostname_Getter_(mthis) => hostname_Getter(mthis);
+  origin_Getter_(mthis) => mthis["origin"];
 
-  static hostname_Setter(mthis, __arg_0) native "URL_hostname_Setter";
-  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
+  password_Getter_(mthis) => mthis["password"];
 
-  static href_Getter(mthis) native "URL_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  password_Setter_(mthis, __arg_0) => mthis["password"] = __arg_0;
 
-  static href_Setter(mthis, __arg_0) native "URL_href_Setter";
-  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
+  pathname_Getter_(mthis) => mthis["pathname"];
 
-  static origin_Getter(mthis) native "URL_origin_Getter";
-  origin_Getter_(mthis) => origin_Getter(mthis);
+  pathname_Setter_(mthis, __arg_0) => mthis["pathname"] = __arg_0;
 
-  static password_Getter(mthis) native "URL_password_Getter";
-  password_Getter_(mthis) => password_Getter(mthis);
+  port_Getter_(mthis) => mthis["port"];
 
-  static password_Setter(mthis, __arg_0) native "URL_password_Setter";
-  password_Setter_(mthis, __arg_0) => password_Setter(mthis, __arg_0);
+  port_Setter_(mthis, __arg_0) => mthis["port"] = __arg_0;
 
-  static pathname_Getter(mthis) native "URL_pathname_Getter";
-  pathname_Getter_(mthis) => pathname_Getter(mthis);
+  protocol_Getter_(mthis) => mthis["protocol"];
 
-  static pathname_Setter(mthis, __arg_0) native "URL_pathname_Setter";
-  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
+  protocol_Setter_(mthis, __arg_0) => mthis["protocol"] = __arg_0;
 
-  static port_Getter(mthis) native "URL_port_Getter";
-  port_Getter_(mthis) => port_Getter(mthis);
+  revokeObjectURL_Callback_0_() => js.context["URL"].callMethod("revokeObjectURL", []);
 
-  static port_Setter(mthis, __arg_0) native "URL_port_Setter";
-  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
+  revokeObjectURL_Callback_1_(__arg_0) => js.context["URL"].callMethod("revokeObjectURL", [__arg_0]);
 
-  static protocol_Getter(mthis) native "URL_protocol_Getter";
-  protocol_Getter_(mthis) => protocol_Getter(mthis);
+  search_Getter_(mthis) => mthis["search"];
 
-  static protocol_Setter(mthis, __arg_0) native "URL_protocol_Setter";
-  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
+  search_Setter_(mthis, __arg_0) => mthis["search"] = __arg_0;
 
-  static revokeObjectURL_Callback_0() native "URL_revokeObjectURL_Callback";
-  revokeObjectURL_Callback_0_() => revokeObjectURL_Callback_0();
+  toString_Callback_0_(mthis) => mthis.callMethod("toString", []);
 
-  static revokeObjectURL_Callback_1(__arg_0) native "URL_revokeObjectURL_Callback";
-  revokeObjectURL_Callback_1_(__arg_0) => revokeObjectURL_Callback_1(__arg_0);
+  username_Getter_(mthis) => mthis["username"];
 
-  static revokeObjectURL_Callback_2(__arg_0, __arg_1) native "URL_revokeObjectURL_Callback";
-  revokeObjectURL_Callback_2_(__arg_0, __arg_1) => revokeObjectURL_Callback_2(__arg_0, __arg_1);
-
-  static revokeObjectURL_Callback_3(__arg_0, __arg_1, __arg_2) native "URL_revokeObjectURL_Callback";
-  revokeObjectURL_Callback_3_(__arg_0, __arg_1, __arg_2) => revokeObjectURL_Callback_3(__arg_0, __arg_1, __arg_2);
-
-  static search_Getter(mthis) native "URL_search_Getter";
-  search_Getter_(mthis) => search_Getter(mthis);
-
-  static search_Setter(mthis, __arg_0) native "URL_search_Setter";
-  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
-
-  static toString_Callback_0(mthis) native "URL_toString_Callback";
-  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
-
-  static toString_Callback_1(mthis, __arg_0) native "URL_toString_Callback";
-  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
-
-  static toString_Callback_2(mthis, __arg_0, __arg_1) native "URL_toString_Callback";
-  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static username_Getter(mthis) native "URL_username_Getter";
-  username_Getter_(mthis) => username_Getter(mthis);
-
-  static username_Setter(mthis, __arg_0) native "URL_username_Setter";
-  username_Setter_(mthis, __arg_0) => username_Setter(mthis, __arg_0);
+  username_Setter_(mthis, __arg_0) => mthis["username"] = __arg_0;
 
 }
 
 class BlinkVTTCue extends BlinkTextTrackCue {
   static final instance = new BlinkVTTCue();
 
-  static align_Getter(mthis) native "VTTCue_align_Getter";
-  align_Getter_(mthis) => align_Getter(mthis);
+  align_Getter_(mthis) => mthis["align"];
 
-  static align_Setter(mthis, __arg_0) native "VTTCue_align_Setter";
-  align_Setter_(mthis, __arg_0) => align_Setter(mthis, __arg_0);
+  align_Setter_(mthis, __arg_0) => mthis["align"] = __arg_0;
 
-  static constructorCallback_1(__arg_0) native "VTTCue_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["VTTCue"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "VTTCue_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["VTTCue"], [__arg_0, __arg_1]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "VTTCue_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => new js.JsObject(js.context["VTTCue"], [__arg_0, __arg_1, __arg_2]);
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "VTTCue_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  getCueAsHTML_Callback_0_(mthis) => mthis.callMethod("getCueAsHTML", []);
 
-  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "VTTCue_constructorCallback";
-  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  line_Getter_(mthis) => mthis["line"];
 
-  static getCueAsHTML_Callback_0(mthis) native "VTTCue_getCueAsHTML_Callback";
-  getCueAsHTML_Callback_0_(mthis) => getCueAsHTML_Callback_0(mthis);
+  line_Setter_(mthis, __arg_0) => mthis["line"] = __arg_0;
 
-  static getCueAsHTML_Callback_1(mthis, __arg_0) native "VTTCue_getCueAsHTML_Callback";
-  getCueAsHTML_Callback_1_(mthis, __arg_0) => getCueAsHTML_Callback_1(mthis, __arg_0);
+  position_Getter_(mthis) => mthis["position"];
 
-  static getCueAsHTML_Callback_2(mthis, __arg_0, __arg_1) native "VTTCue_getCueAsHTML_Callback";
-  getCueAsHTML_Callback_2_(mthis, __arg_0, __arg_1) => getCueAsHTML_Callback_2(mthis, __arg_0, __arg_1);
+  position_Setter_(mthis, __arg_0) => mthis["position"] = __arg_0;
 
-  static line_Getter(mthis) native "VTTCue_line_Getter";
-  line_Getter_(mthis) => line_Getter(mthis);
+  regionId_Getter_(mthis) => mthis["regionId"];
 
-  static line_Setter(mthis, __arg_0) native "VTTCue_line_Setter";
-  line_Setter_(mthis, __arg_0) => line_Setter(mthis, __arg_0);
+  regionId_Setter_(mthis, __arg_0) => mthis["regionId"] = __arg_0;
 
-  static position_Getter(mthis) native "VTTCue_position_Getter";
-  position_Getter_(mthis) => position_Getter(mthis);
+  size_Getter_(mthis) => mthis["size"];
 
-  static position_Setter(mthis, __arg_0) native "VTTCue_position_Setter";
-  position_Setter_(mthis, __arg_0) => position_Setter(mthis, __arg_0);
+  size_Setter_(mthis, __arg_0) => mthis["size"] = __arg_0;
 
-  static regionId_Getter(mthis) native "VTTCue_regionId_Getter";
-  regionId_Getter_(mthis) => regionId_Getter(mthis);
+  snapToLines_Getter_(mthis) => mthis["snapToLines"];
 
-  static regionId_Setter(mthis, __arg_0) native "VTTCue_regionId_Setter";
-  regionId_Setter_(mthis, __arg_0) => regionId_Setter(mthis, __arg_0);
+  snapToLines_Setter_(mthis, __arg_0) => mthis["snapToLines"] = __arg_0;
 
-  static size_Getter(mthis) native "VTTCue_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
+  text_Getter_(mthis) => mthis["text"];
 
-  static size_Setter(mthis, __arg_0) native "VTTCue_size_Setter";
-  size_Setter_(mthis, __arg_0) => size_Setter(mthis, __arg_0);
+  text_Setter_(mthis, __arg_0) => mthis["text"] = __arg_0;
 
-  static snapToLines_Getter(mthis) native "VTTCue_snapToLines_Getter";
-  snapToLines_Getter_(mthis) => snapToLines_Getter(mthis);
+  vertical_Getter_(mthis) => mthis["vertical"];
 
-  static snapToLines_Setter(mthis, __arg_0) native "VTTCue_snapToLines_Setter";
-  snapToLines_Setter_(mthis, __arg_0) => snapToLines_Setter(mthis, __arg_0);
-
-  static text_Getter(mthis) native "VTTCue_text_Getter";
-  text_Getter_(mthis) => text_Getter(mthis);
-
-  static text_Setter(mthis, __arg_0) native "VTTCue_text_Setter";
-  text_Setter_(mthis, __arg_0) => text_Setter(mthis, __arg_0);
-
-  static vertical_Getter(mthis) native "VTTCue_vertical_Getter";
-  vertical_Getter_(mthis) => vertical_Getter(mthis);
-
-  static vertical_Setter(mthis, __arg_0) native "VTTCue_vertical_Setter";
-  vertical_Setter_(mthis, __arg_0) => vertical_Setter(mthis, __arg_0);
+  vertical_Setter_(mthis, __arg_0) => mthis["vertical"] = __arg_0;
 
 }
 
 class BlinkVTTRegion {
   static final instance = new BlinkVTTRegion();
 
-  static constructorCallback_0() native "VTTRegion_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["VTTRegion"], []);
 
-  static constructorCallback_1(__arg_0) native "VTTRegion_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  height_Getter_(mthis) => mthis["height"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "VTTRegion_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  height_Setter_(mthis, __arg_0) => mthis["height"] = __arg_0;
 
-  static height_Getter(mthis) native "VTTRegion_height_Getter";
-  height_Getter_(mthis) => height_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static height_Setter(mthis, __arg_0) native "VTTRegion_height_Setter";
-  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+  id_Setter_(mthis, __arg_0) => mthis["id"] = __arg_0;
 
-  static id_Getter(mthis) native "VTTRegion_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  regionAnchorX_Getter_(mthis) => mthis["regionAnchorX"];
 
-  static id_Setter(mthis, __arg_0) native "VTTRegion_id_Setter";
-  id_Setter_(mthis, __arg_0) => id_Setter(mthis, __arg_0);
+  regionAnchorX_Setter_(mthis, __arg_0) => mthis["regionAnchorX"] = __arg_0;
 
-  static regionAnchorX_Getter(mthis) native "VTTRegion_regionAnchorX_Getter";
-  regionAnchorX_Getter_(mthis) => regionAnchorX_Getter(mthis);
+  regionAnchorY_Getter_(mthis) => mthis["regionAnchorY"];
 
-  static regionAnchorX_Setter(mthis, __arg_0) native "VTTRegion_regionAnchorX_Setter";
-  regionAnchorX_Setter_(mthis, __arg_0) => regionAnchorX_Setter(mthis, __arg_0);
+  regionAnchorY_Setter_(mthis, __arg_0) => mthis["regionAnchorY"] = __arg_0;
 
-  static regionAnchorY_Getter(mthis) native "VTTRegion_regionAnchorY_Getter";
-  regionAnchorY_Getter_(mthis) => regionAnchorY_Getter(mthis);
+  scroll_Getter_(mthis) => mthis["scroll"];
 
-  static regionAnchorY_Setter(mthis, __arg_0) native "VTTRegion_regionAnchorY_Setter";
-  regionAnchorY_Setter_(mthis, __arg_0) => regionAnchorY_Setter(mthis, __arg_0);
+  scroll_Setter_(mthis, __arg_0) => mthis["scroll"] = __arg_0;
 
-  static scroll_Getter(mthis) native "VTTRegion_scroll_Getter";
-  scroll_Getter_(mthis) => scroll_Getter(mthis);
+  track_Getter_(mthis) => mthis["track"];
 
-  static scroll_Setter(mthis, __arg_0) native "VTTRegion_scroll_Setter";
-  scroll_Setter_(mthis, __arg_0) => scroll_Setter(mthis, __arg_0);
+  viewportAnchorX_Getter_(mthis) => mthis["viewportAnchorX"];
 
-  static track_Getter(mthis) native "VTTRegion_track_Getter";
-  track_Getter_(mthis) => track_Getter(mthis);
+  viewportAnchorX_Setter_(mthis, __arg_0) => mthis["viewportAnchorX"] = __arg_0;
 
-  static viewportAnchorX_Getter(mthis) native "VTTRegion_viewportAnchorX_Getter";
-  viewportAnchorX_Getter_(mthis) => viewportAnchorX_Getter(mthis);
+  viewportAnchorY_Getter_(mthis) => mthis["viewportAnchorY"];
 
-  static viewportAnchorX_Setter(mthis, __arg_0) native "VTTRegion_viewportAnchorX_Setter";
-  viewportAnchorX_Setter_(mthis, __arg_0) => viewportAnchorX_Setter(mthis, __arg_0);
+  viewportAnchorY_Setter_(mthis, __arg_0) => mthis["viewportAnchorY"] = __arg_0;
 
-  static viewportAnchorY_Getter(mthis) native "VTTRegion_viewportAnchorY_Getter";
-  viewportAnchorY_Getter_(mthis) => viewportAnchorY_Getter(mthis);
+  width_Getter_(mthis) => mthis["width"];
 
-  static viewportAnchorY_Setter(mthis, __arg_0) native "VTTRegion_viewportAnchorY_Setter";
-  viewportAnchorY_Setter_(mthis, __arg_0) => viewportAnchorY_Setter(mthis, __arg_0);
-
-  static width_Getter(mthis) native "VTTRegion_width_Getter";
-  width_Getter_(mthis) => width_Getter(mthis);
-
-  static width_Setter(mthis, __arg_0) native "VTTRegion_width_Setter";
-  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+  width_Setter_(mthis, __arg_0) => mthis["width"] = __arg_0;
 
 }
 
 class BlinkVTTRegionList {
   static final instance = new BlinkVTTRegionList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "VTTRegionList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static getRegionById_Callback_0(mthis) native "VTTRegionList_getRegionById_Callback";
-  getRegionById_Callback_0_(mthis) => getRegionById_Callback_0(mthis);
+  getRegionById_Callback_0_(mthis) => mthis.callMethod("getRegionById", []);
 
-  static getRegionById_Callback_1(mthis, __arg_0) native "VTTRegionList_getRegionById_Callback";
-  getRegionById_Callback_1_(mthis, __arg_0) => getRegionById_Callback_1(mthis, __arg_0);
+  getRegionById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getRegionById", [__arg_0]);
 
-  static getRegionById_Callback_2(mthis, __arg_0, __arg_1) native "VTTRegionList_getRegionById_Callback";
-  getRegionById_Callback_2_(mthis, __arg_0, __arg_1) => getRegionById_Callback_2(mthis, __arg_0, __arg_1);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static getRegionById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "VTTRegionList_getRegionById_Callback";
-  getRegionById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRegionById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_0(mthis) native "VTTRegionList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
-
-  static item_Callback_1(mthis, __arg_0) native "VTTRegionList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
-
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "VTTRegionList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "VTTRegionList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "VTTRegionList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkValidityState {
   static final instance = new BlinkValidityState();
 
-  static badInput_Getter(mthis) native "ValidityState_badInput_Getter";
-  badInput_Getter_(mthis) => badInput_Getter(mthis);
+  badInput_Getter_(mthis) => mthis["badInput"];
 
-  static customError_Getter(mthis) native "ValidityState_customError_Getter";
-  customError_Getter_(mthis) => customError_Getter(mthis);
+  customError_Getter_(mthis) => mthis["customError"];
 
-  static patternMismatch_Getter(mthis) native "ValidityState_patternMismatch_Getter";
-  patternMismatch_Getter_(mthis) => patternMismatch_Getter(mthis);
+  patternMismatch_Getter_(mthis) => mthis["patternMismatch"];
 
-  static rangeOverflow_Getter(mthis) native "ValidityState_rangeOverflow_Getter";
-  rangeOverflow_Getter_(mthis) => rangeOverflow_Getter(mthis);
+  rangeOverflow_Getter_(mthis) => mthis["rangeOverflow"];
 
-  static rangeUnderflow_Getter(mthis) native "ValidityState_rangeUnderflow_Getter";
-  rangeUnderflow_Getter_(mthis) => rangeUnderflow_Getter(mthis);
+  rangeUnderflow_Getter_(mthis) => mthis["rangeUnderflow"];
 
-  static stepMismatch_Getter(mthis) native "ValidityState_stepMismatch_Getter";
-  stepMismatch_Getter_(mthis) => stepMismatch_Getter(mthis);
+  stepMismatch_Getter_(mthis) => mthis["stepMismatch"];
 
-  static tooLong_Getter(mthis) native "ValidityState_tooLong_Getter";
-  tooLong_Getter_(mthis) => tooLong_Getter(mthis);
+  tooLong_Getter_(mthis) => mthis["tooLong"];
 
-  static typeMismatch_Getter(mthis) native "ValidityState_typeMismatch_Getter";
-  typeMismatch_Getter_(mthis) => typeMismatch_Getter(mthis);
+  typeMismatch_Getter_(mthis) => mthis["typeMismatch"];
 
-  static valid_Getter(mthis) native "ValidityState_valid_Getter";
-  valid_Getter_(mthis) => valid_Getter(mthis);
+  valid_Getter_(mthis) => mthis["valid"];
 
-  static valueMissing_Getter(mthis) native "ValidityState_valueMissing_Getter";
-  valueMissing_Getter_(mthis) => valueMissing_Getter(mthis);
+  valueMissing_Getter_(mthis) => mthis["valueMissing"];
 
 }
 
 class BlinkVideoPlaybackQuality {
   static final instance = new BlinkVideoPlaybackQuality();
 
-  static corruptedVideoFrames_Getter(mthis) native "VideoPlaybackQuality_corruptedVideoFrames_Getter";
-  corruptedVideoFrames_Getter_(mthis) => corruptedVideoFrames_Getter(mthis);
+  corruptedVideoFrames_Getter_(mthis) => mthis["corruptedVideoFrames"];
 
-  static creationTime_Getter(mthis) native "VideoPlaybackQuality_creationTime_Getter";
-  creationTime_Getter_(mthis) => creationTime_Getter(mthis);
+  creationTime_Getter_(mthis) => mthis["creationTime"];
 
-  static droppedVideoFrames_Getter(mthis) native "VideoPlaybackQuality_droppedVideoFrames_Getter";
-  droppedVideoFrames_Getter_(mthis) => droppedVideoFrames_Getter(mthis);
+  droppedVideoFrames_Getter_(mthis) => mthis["droppedVideoFrames"];
 
-  static totalVideoFrames_Getter(mthis) native "VideoPlaybackQuality_totalVideoFrames_Getter";
-  totalVideoFrames_Getter_(mthis) => totalVideoFrames_Getter(mthis);
+  totalVideoFrames_Getter_(mthis) => mthis["totalVideoFrames"];
 
 }
 
 class BlinkVideoTrack {
   static final instance = new BlinkVideoTrack();
 
-  static id_Getter(mthis) native "VideoTrack_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static kind_Getter(mthis) native "VideoTrack_kind_Getter";
-  kind_Getter_(mthis) => kind_Getter(mthis);
+  kind_Getter_(mthis) => mthis["kind"];
 
-  static label_Getter(mthis) native "VideoTrack_label_Getter";
-  label_Getter_(mthis) => label_Getter(mthis);
+  label_Getter_(mthis) => mthis["label"];
 
-  static language_Getter(mthis) native "VideoTrack_language_Getter";
-  language_Getter_(mthis) => language_Getter(mthis);
+  language_Getter_(mthis) => mthis["language"];
 
-  static selected_Getter(mthis) native "VideoTrack_selected_Getter";
-  selected_Getter_(mthis) => selected_Getter(mthis);
+  selected_Getter_(mthis) => mthis["selected"];
 
-  static selected_Setter(mthis, __arg_0) native "VideoTrack_selected_Setter";
-  selected_Setter_(mthis, __arg_0) => selected_Setter(mthis, __arg_0);
+  selected_Setter_(mthis, __arg_0) => mthis["selected"] = __arg_0;
 
 }
 
 class BlinkVideoTrackList extends BlinkEventTarget {
   static final instance = new BlinkVideoTrackList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "VideoTrackList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static getTrackById_Callback_0(mthis) native "VideoTrackList_getTrackById_Callback";
-  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+  getTrackById_Callback_0_(mthis) => mthis.callMethod("getTrackById", []);
 
-  static getTrackById_Callback_1(mthis, __arg_0) native "VideoTrackList_getTrackById_Callback";
-  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+  getTrackById_Callback_1_(mthis, __arg_0) => mthis.callMethod("getTrackById", [__arg_0]);
 
-  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "VideoTrackList_getTrackById_Callback";
-  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "VideoTrackList_getTrackById_Callback";
-  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onaddtrack_Getter_(mthis) => mthis["onaddtrack"];
 
-  static length_Getter(mthis) native "VideoTrackList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  onaddtrack_Setter_(mthis, __arg_0) => mthis["onaddtrack"] = __arg_0;
 
-  static onaddtrack_Getter(mthis) native "VideoTrackList_onaddtrack_Getter";
-  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static onaddtrack_Setter(mthis, __arg_0) native "VideoTrackList_onaddtrack_Setter";
-  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static onchange_Getter(mthis) native "VideoTrackList_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  onremovetrack_Getter_(mthis) => mthis["onremovetrack"];
 
-  static onchange_Setter(mthis, __arg_0) native "VideoTrackList_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+  onremovetrack_Setter_(mthis, __arg_0) => mthis["onremovetrack"] = __arg_0;
 
-  static onremovetrack_Getter(mthis) native "VideoTrackList_onremovetrack_Getter";
-  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
-
-  static onremovetrack_Setter(mthis, __arg_0) native "VideoTrackList_onremovetrack_Setter";
-  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
-
-  static selectedIndex_Getter(mthis) native "VideoTrackList_selectedIndex_Getter";
-  selectedIndex_Getter_(mthis) => selectedIndex_Getter(mthis);
+  selectedIndex_Getter_(mthis) => mthis["selectedIndex"];
 
 }
 
 class BlinkWaveShaperNode extends BlinkAudioNode {
   static final instance = new BlinkWaveShaperNode();
 
-  static curve_Getter(mthis) native "WaveShaperNode_curve_Getter";
-  curve_Getter_(mthis) => curve_Getter(mthis);
+  curve_Getter_(mthis) => mthis["curve"];
 
-  static curve_Setter(mthis, __arg_0) native "WaveShaperNode_curve_Setter";
-  curve_Setter_(mthis, __arg_0) => curve_Setter(mthis, __arg_0);
+  curve_Setter_(mthis, __arg_0) => mthis["curve"] = __arg_0;
 
-  static oversample_Getter(mthis) native "WaveShaperNode_oversample_Getter";
-  oversample_Getter_(mthis) => oversample_Getter(mthis);
+  oversample_Getter_(mthis) => mthis["oversample"];
 
-  static oversample_Setter(mthis, __arg_0) native "WaveShaperNode_oversample_Setter";
-  oversample_Setter_(mthis, __arg_0) => oversample_Setter(mthis, __arg_0);
+  oversample_Setter_(mthis, __arg_0) => mthis["oversample"] = __arg_0;
 
 }
 
 class BlinkWebGLActiveInfo {
   static final instance = new BlinkWebGLActiveInfo();
 
-  static name_Getter(mthis) native "WebGLActiveInfo_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  name_Getter_(mthis) => mthis["name"];
 
-  static size_Getter(mthis) native "WebGLActiveInfo_size_Getter";
-  size_Getter_(mthis) => size_Getter(mthis);
+  size_Getter_(mthis) => mthis["size"];
 
-  static type_Getter(mthis) native "WebGLActiveInfo_type_Getter";
-  type_Getter_(mthis) => type_Getter(mthis);
+  type_Getter_(mthis) => mthis["type"];
 
 }
 
@@ -26861,58 +14934,42 @@
 class BlinkWebGLContextAttributes {
   static final instance = new BlinkWebGLContextAttributes();
 
-  static alpha_Getter(mthis) native "WebGLContextAttributes_alpha_Getter";
-  alpha_Getter_(mthis) => alpha_Getter(mthis);
+  alpha_Getter_(mthis) => mthis["alpha"];
 
-  static alpha_Setter(mthis, __arg_0) native "WebGLContextAttributes_alpha_Setter";
-  alpha_Setter_(mthis, __arg_0) => alpha_Setter(mthis, __arg_0);
+  alpha_Setter_(mthis, __arg_0) => mthis["alpha"] = __arg_0;
 
-  static antialias_Getter(mthis) native "WebGLContextAttributes_antialias_Getter";
-  antialias_Getter_(mthis) => antialias_Getter(mthis);
+  antialias_Getter_(mthis) => mthis["antialias"];
 
-  static antialias_Setter(mthis, __arg_0) native "WebGLContextAttributes_antialias_Setter";
-  antialias_Setter_(mthis, __arg_0) => antialias_Setter(mthis, __arg_0);
+  antialias_Setter_(mthis, __arg_0) => mthis["antialias"] = __arg_0;
 
-  static depth_Getter(mthis) native "WebGLContextAttributes_depth_Getter";
-  depth_Getter_(mthis) => depth_Getter(mthis);
+  depth_Getter_(mthis) => mthis["depth"];
 
-  static depth_Setter(mthis, __arg_0) native "WebGLContextAttributes_depth_Setter";
-  depth_Setter_(mthis, __arg_0) => depth_Setter(mthis, __arg_0);
+  depth_Setter_(mthis, __arg_0) => mthis["depth"] = __arg_0;
 
-  static failIfMajorPerformanceCaveat_Getter(mthis) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Getter";
-  failIfMajorPerformanceCaveat_Getter_(mthis) => failIfMajorPerformanceCaveat_Getter(mthis);
+  failIfMajorPerformanceCaveat_Getter_(mthis) => mthis["failIfMajorPerformanceCaveat"];
 
-  static failIfMajorPerformanceCaveat_Setter(mthis, __arg_0) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Setter";
-  failIfMajorPerformanceCaveat_Setter_(mthis, __arg_0) => failIfMajorPerformanceCaveat_Setter(mthis, __arg_0);
+  failIfMajorPerformanceCaveat_Setter_(mthis, __arg_0) => mthis["failIfMajorPerformanceCaveat"] = __arg_0;
 
-  static premultipliedAlpha_Getter(mthis) native "WebGLContextAttributes_premultipliedAlpha_Getter";
-  premultipliedAlpha_Getter_(mthis) => premultipliedAlpha_Getter(mthis);
+  premultipliedAlpha_Getter_(mthis) => mthis["premultipliedAlpha"];
 
-  static premultipliedAlpha_Setter(mthis, __arg_0) native "WebGLContextAttributes_premultipliedAlpha_Setter";
-  premultipliedAlpha_Setter_(mthis, __arg_0) => premultipliedAlpha_Setter(mthis, __arg_0);
+  premultipliedAlpha_Setter_(mthis, __arg_0) => mthis["premultipliedAlpha"] = __arg_0;
 
-  static preserveDrawingBuffer_Getter(mthis) native "WebGLContextAttributes_preserveDrawingBuffer_Getter";
-  preserveDrawingBuffer_Getter_(mthis) => preserveDrawingBuffer_Getter(mthis);
+  preserveDrawingBuffer_Getter_(mthis) => mthis["preserveDrawingBuffer"];
 
-  static preserveDrawingBuffer_Setter(mthis, __arg_0) native "WebGLContextAttributes_preserveDrawingBuffer_Setter";
-  preserveDrawingBuffer_Setter_(mthis, __arg_0) => preserveDrawingBuffer_Setter(mthis, __arg_0);
+  preserveDrawingBuffer_Setter_(mthis, __arg_0) => mthis["preserveDrawingBuffer"] = __arg_0;
 
-  static stencil_Getter(mthis) native "WebGLContextAttributes_stencil_Getter";
-  stencil_Getter_(mthis) => stencil_Getter(mthis);
+  stencil_Getter_(mthis) => mthis["stencil"];
 
-  static stencil_Setter(mthis, __arg_0) native "WebGLContextAttributes_stencil_Setter";
-  stencil_Setter_(mthis, __arg_0) => stencil_Setter(mthis, __arg_0);
+  stencil_Setter_(mthis, __arg_0) => mthis["stencil"] = __arg_0;
 
 }
 
 class BlinkWebGLContextEvent extends BlinkEvent {
   static final instance = new BlinkWebGLContextEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "WebGLContextEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["WebGLContextEvent"], [__arg_0, __arg_1]);
 
-  static statusMessage_Getter(mthis) native "WebGLContextEvent_statusMessage_Getter";
-  statusMessage_Getter_(mthis) => statusMessage_Getter(mthis);
+  statusMessage_Getter_(mthis) => mthis["statusMessage"];
 
 }
 
@@ -26924,17 +14981,9 @@
 class BlinkWebGLDebugShaders {
   static final instance = new BlinkWebGLDebugShaders();
 
-  static getTranslatedShaderSource_Callback_0(mthis) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
-  getTranslatedShaderSource_Callback_0_(mthis) => getTranslatedShaderSource_Callback_0(mthis);
+  getTranslatedShaderSource_Callback_0_(mthis) => mthis.callMethod("getTranslatedShaderSource", []);
 
-  static getTranslatedShaderSource_Callback_1(mthis, __arg_0) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
-  getTranslatedShaderSource_Callback_1_(mthis, __arg_0) => getTranslatedShaderSource_Callback_1(mthis, __arg_0);
-
-  static getTranslatedShaderSource_Callback_2(mthis, __arg_0, __arg_1) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
-  getTranslatedShaderSource_Callback_2_(mthis, __arg_0, __arg_1) => getTranslatedShaderSource_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getTranslatedShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
-  getTranslatedShaderSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTranslatedShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getTranslatedShaderSource_Callback_1_(mthis, __arg_0) => mthis.callMethod("getTranslatedShaderSource", [__arg_0]);
 
 }
 
@@ -26946,17 +14995,9 @@
 class BlinkWebGLDrawBuffers {
   static final instance = new BlinkWebGLDrawBuffers();
 
-  static drawBuffersWEBGL_Callback_0(mthis) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
-  drawBuffersWEBGL_Callback_0_(mthis) => drawBuffersWEBGL_Callback_0(mthis);
+  drawBuffersWEBGL_Callback_0_(mthis) => mthis.callMethod("drawBuffersWEBGL", []);
 
-  static drawBuffersWEBGL_Callback_1(mthis, __arg_0) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
-  drawBuffersWEBGL_Callback_1_(mthis, __arg_0) => drawBuffersWEBGL_Callback_1(mthis, __arg_0);
-
-  static drawBuffersWEBGL_Callback_2(mthis, __arg_0, __arg_1) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
-  drawBuffersWEBGL_Callback_2_(mthis, __arg_0, __arg_1) => drawBuffersWEBGL_Callback_2(mthis, __arg_0, __arg_1);
-
-  static drawBuffersWEBGL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
-  drawBuffersWEBGL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawBuffersWEBGL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  drawBuffersWEBGL_Callback_1_(mthis, __arg_0) => mthis.callMethod("drawBuffersWEBGL", [__arg_0]);
 
 }
 
@@ -26968,23 +15009,9 @@
 class BlinkWebGLLoseContext {
   static final instance = new BlinkWebGLLoseContext();
 
-  static loseContext_Callback_0(mthis) native "WebGLLoseContext_loseContext_Callback";
-  loseContext_Callback_0_(mthis) => loseContext_Callback_0(mthis);
+  loseContext_Callback_0_(mthis) => mthis.callMethod("loseContext", []);
 
-  static loseContext_Callback_1(mthis, __arg_0) native "WebGLLoseContext_loseContext_Callback";
-  loseContext_Callback_1_(mthis, __arg_0) => loseContext_Callback_1(mthis, __arg_0);
-
-  static loseContext_Callback_2(mthis, __arg_0, __arg_1) native "WebGLLoseContext_loseContext_Callback";
-  loseContext_Callback_2_(mthis, __arg_0, __arg_1) => loseContext_Callback_2(mthis, __arg_0, __arg_1);
-
-  static restoreContext_Callback_0(mthis) native "WebGLLoseContext_restoreContext_Callback";
-  restoreContext_Callback_0_(mthis) => restoreContext_Callback_0(mthis);
-
-  static restoreContext_Callback_1(mthis, __arg_0) native "WebGLLoseContext_restoreContext_Callback";
-  restoreContext_Callback_1_(mthis, __arg_0) => restoreContext_Callback_1(mthis, __arg_0);
-
-  static restoreContext_Callback_2(mthis, __arg_0, __arg_1) native "WebGLLoseContext_restoreContext_Callback";
-  restoreContext_Callback_2_(mthis, __arg_0, __arg_1) => restoreContext_Callback_2(mthis, __arg_0, __arg_1);
+  restoreContext_Callback_0_(mthis) => mthis.callMethod("restoreContext", []);
 
 }
 
@@ -27001,1880 +15028,711 @@
 class BlinkWebGLRenderingContext {
   static final instance = new BlinkWebGLRenderingContext();
 
-  static activeTexture_Callback_0(mthis) native "WebGLRenderingContext_activeTexture_Callback";
-  activeTexture_Callback_0_(mthis) => activeTexture_Callback_0(mthis);
+  activeTexture_Callback_0_(mthis) => mthis.callMethod("activeTexture", []);
 
-  static activeTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_activeTexture_Callback";
-  activeTexture_Callback_1_(mthis, __arg_0) => activeTexture_Callback_1(mthis, __arg_0);
+  activeTexture_Callback_1_(mthis, __arg_0) => mthis.callMethod("activeTexture", [__arg_0]);
 
-  static activeTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_activeTexture_Callback";
-  activeTexture_Callback_2_(mthis, __arg_0, __arg_1) => activeTexture_Callback_2(mthis, __arg_0, __arg_1);
+  attachShader_Callback_0_(mthis) => mthis.callMethod("attachShader", []);
 
-  static activeTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_activeTexture_Callback";
-  activeTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => activeTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  attachShader_Callback_1_(mthis, __arg_0) => mthis.callMethod("attachShader", [__arg_0]);
 
-  static attachShader_Callback_0(mthis) native "WebGLRenderingContext_attachShader_Callback";
-  attachShader_Callback_0_(mthis) => attachShader_Callback_0(mthis);
+  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("attachShader", [__arg_0, __arg_1]);
 
-  static attachShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_attachShader_Callback";
-  attachShader_Callback_1_(mthis, __arg_0) => attachShader_Callback_1(mthis, __arg_0);
+  bindAttribLocation_Callback_1_(mthis, __arg_0) => mthis.callMethod("bindAttribLocation", [__arg_0]);
 
-  static attachShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_attachShader_Callback";
-  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => attachShader_Callback_2(mthis, __arg_0, __arg_1);
+  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("bindAttribLocation", [__arg_0, __arg_1]);
 
-  static attachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_attachShader_Callback";
-  attachShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => attachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("bindAttribLocation", [__arg_0, __arg_1, __arg_2]);
 
-  static attachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_attachShader_Callback";
-  attachShader_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => attachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  bindBuffer_Callback_0_(mthis) => mthis.callMethod("bindBuffer", []);
 
-  static bindAttribLocation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindAttribLocation_Callback";
-  bindAttribLocation_Callback_1_(mthis, __arg_0) => bindAttribLocation_Callback_1(mthis, __arg_0);
+  bindBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("bindBuffer", [__arg_0]);
 
-  static bindAttribLocation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindAttribLocation_Callback";
-  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => bindAttribLocation_Callback_2(mthis, __arg_0, __arg_1);
+  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("bindBuffer", [__arg_0, __arg_1]);
 
-  static bindAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindAttribLocation_Callback";
-  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  bindFramebuffer_Callback_0_(mthis) => mthis.callMethod("bindFramebuffer", []);
 
-  static bindAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindAttribLocation_Callback";
-  bindAttribLocation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  bindFramebuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("bindFramebuffer", [__arg_0]);
 
-  static bindAttribLocation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_bindAttribLocation_Callback";
-  bindAttribLocation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bindAttribLocation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("bindFramebuffer", [__arg_0, __arg_1]);
 
-  static bindBuffer_Callback_0(mthis) native "WebGLRenderingContext_bindBuffer_Callback";
-  bindBuffer_Callback_0_(mthis) => bindBuffer_Callback_0(mthis);
+  bindRenderbuffer_Callback_0_(mthis) => mthis.callMethod("bindRenderbuffer", []);
 
-  static bindBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindBuffer_Callback";
-  bindBuffer_Callback_1_(mthis, __arg_0) => bindBuffer_Callback_1(mthis, __arg_0);
+  bindRenderbuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("bindRenderbuffer", [__arg_0]);
 
-  static bindBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindBuffer_Callback";
-  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => bindBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("bindRenderbuffer", [__arg_0, __arg_1]);
 
-  static bindBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindBuffer_Callback";
-  bindBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  bindTexture_Callback_0_(mthis) => mthis.callMethod("bindTexture", []);
 
-  static bindBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindBuffer_Callback";
-  bindBuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  bindTexture_Callback_1_(mthis, __arg_0) => mthis.callMethod("bindTexture", [__arg_0]);
 
-  static bindFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_bindFramebuffer_Callback";
-  bindFramebuffer_Callback_0_(mthis) => bindFramebuffer_Callback_0(mthis);
+  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("bindTexture", [__arg_0, __arg_1]);
 
-  static bindFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindFramebuffer_Callback";
-  bindFramebuffer_Callback_1_(mthis, __arg_0) => bindFramebuffer_Callback_1(mthis, __arg_0);
+  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("blendColor", [__arg_0, __arg_1]);
 
-  static bindFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindFramebuffer_Callback";
-  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => bindFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
+  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("blendColor", [__arg_0, __arg_1, __arg_2]);
 
-  static bindFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindFramebuffer_Callback";
-  bindFramebuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("blendColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static bindFramebuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindFramebuffer_Callback";
-  bindFramebuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindFramebuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  blendEquationSeparate_Callback_0_(mthis) => mthis.callMethod("blendEquationSeparate", []);
 
-  static bindRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_bindRenderbuffer_Callback";
-  bindRenderbuffer_Callback_0_(mthis) => bindRenderbuffer_Callback_0(mthis);
+  blendEquationSeparate_Callback_1_(mthis, __arg_0) => mthis.callMethod("blendEquationSeparate", [__arg_0]);
 
-  static bindRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindRenderbuffer_Callback";
-  bindRenderbuffer_Callback_1_(mthis, __arg_0) => bindRenderbuffer_Callback_1(mthis, __arg_0);
+  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("blendEquationSeparate", [__arg_0, __arg_1]);
 
-  static bindRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindRenderbuffer_Callback";
-  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => bindRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+  blendEquation_Callback_0_(mthis) => mthis.callMethod("blendEquation", []);
 
-  static bindRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindRenderbuffer_Callback";
-  bindRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  blendEquation_Callback_1_(mthis, __arg_0) => mthis.callMethod("blendEquation", [__arg_0]);
 
-  static bindRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindRenderbuffer_Callback";
-  bindRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("blendFuncSeparate", [__arg_0, __arg_1]);
 
-  static bindTexture_Callback_0(mthis) native "WebGLRenderingContext_bindTexture_Callback";
-  bindTexture_Callback_0_(mthis) => bindTexture_Callback_0(mthis);
+  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("blendFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  static bindTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindTexture_Callback";
-  bindTexture_Callback_1_(mthis, __arg_0) => bindTexture_Callback_1(mthis, __arg_0);
+  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("blendFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static bindTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindTexture_Callback";
-  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => bindTexture_Callback_2(mthis, __arg_0, __arg_1);
+  blendFunc_Callback_0_(mthis) => mthis.callMethod("blendFunc", []);
 
-  static bindTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindTexture_Callback";
-  bindTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  blendFunc_Callback_1_(mthis, __arg_0) => mthis.callMethod("blendFunc", [__arg_0]);
 
-  static bindTexture_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindTexture_Callback";
-  bindTexture_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindTexture_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("blendFunc", [__arg_0, __arg_1]);
 
-  static blendColor_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendColor_Callback";
-  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => blendColor_Callback_2(mthis, __arg_0, __arg_1);
+  bufferData_Callback_1_(mthis, __arg_0) => mthis.callMethod("bufferData", [__arg_0]);
 
-  static blendColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendColor_Callback";
-  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("bufferData", [__arg_0, __arg_1]);
 
-  static blendColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendColor_Callback";
-  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("bufferData", [__arg_0, __arg_1, __arg_2]);
 
-  static blendColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_blendColor_Callback";
-  blendColor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => blendColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  bufferSubData_Callback_1_(mthis, __arg_0) => mthis.callMethod("bufferSubData", [__arg_0]);
 
-  static blendColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_blendColor_Callback";
-  blendColor_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => blendColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("bufferSubData", [__arg_0, __arg_1]);
 
-  static blendEquationSeparate_Callback_0(mthis) native "WebGLRenderingContext_blendEquationSeparate_Callback";
-  blendEquationSeparate_Callback_0_(mthis) => blendEquationSeparate_Callback_0(mthis);
+  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("bufferSubData", [__arg_0, __arg_1, __arg_2]);
 
-  static blendEquationSeparate_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_blendEquationSeparate_Callback";
-  blendEquationSeparate_Callback_1_(mthis, __arg_0) => blendEquationSeparate_Callback_1(mthis, __arg_0);
+  canvas_Getter_(mthis) => mthis["canvas"];
 
-  static blendEquationSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendEquationSeparate_Callback";
-  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => blendEquationSeparate_Callback_2(mthis, __arg_0, __arg_1);
+  checkFramebufferStatus_Callback_0_(mthis) => mthis.callMethod("checkFramebufferStatus", []);
 
-  static blendEquationSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendEquationSeparate_Callback";
-  blendEquationSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendEquationSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => mthis.callMethod("checkFramebufferStatus", [__arg_0]);
 
-  static blendEquationSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendEquationSeparate_Callback";
-  blendEquationSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendEquationSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("clearColor", [__arg_0, __arg_1]);
 
-  static blendEquation_Callback_0(mthis) native "WebGLRenderingContext_blendEquation_Callback";
-  blendEquation_Callback_0_(mthis) => blendEquation_Callback_0(mthis);
+  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("clearColor", [__arg_0, __arg_1, __arg_2]);
 
-  static blendEquation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_blendEquation_Callback";
-  blendEquation_Callback_1_(mthis, __arg_0) => blendEquation_Callback_1(mthis, __arg_0);
+  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("clearColor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static blendEquation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendEquation_Callback";
-  blendEquation_Callback_2_(mthis, __arg_0, __arg_1) => blendEquation_Callback_2(mthis, __arg_0, __arg_1);
+  clearDepth_Callback_0_(mthis) => mthis.callMethod("clearDepth", []);
 
-  static blendEquation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendEquation_Callback";
-  blendEquation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendEquation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  clearDepth_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearDepth", [__arg_0]);
 
-  static blendFuncSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendFuncSeparate_Callback";
-  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => blendFuncSeparate_Callback_2(mthis, __arg_0, __arg_1);
+  clearStencil_Callback_0_(mthis) => mthis.callMethod("clearStencil", []);
 
-  static blendFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendFuncSeparate_Callback";
-  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  clearStencil_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearStencil", [__arg_0]);
 
-  static blendFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendFuncSeparate_Callback";
-  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  clear_Callback_0_(mthis) => mthis.callMethod("clear", []);
 
-  static blendFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_blendFuncSeparate_Callback";
-  blendFuncSeparate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => blendFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  clear_Callback_1_(mthis, __arg_0) => mthis.callMethod("clear", [__arg_0]);
 
-  static blendFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_blendFuncSeparate_Callback";
-  blendFuncSeparate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => blendFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("colorMask", [__arg_0, __arg_1]);
 
-  static blendFunc_Callback_0(mthis) native "WebGLRenderingContext_blendFunc_Callback";
-  blendFunc_Callback_0_(mthis) => blendFunc_Callback_0(mthis);
+  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("colorMask", [__arg_0, __arg_1, __arg_2]);
 
-  static blendFunc_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_blendFunc_Callback";
-  blendFunc_Callback_1_(mthis, __arg_0) => blendFunc_Callback_1(mthis, __arg_0);
+  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("colorMask", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static blendFunc_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendFunc_Callback";
-  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => blendFunc_Callback_2(mthis, __arg_0, __arg_1);
+  compileShader_Callback_0_(mthis) => mthis.callMethod("compileShader", []);
 
-  static blendFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendFunc_Callback";
-  blendFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  compileShader_Callback_1_(mthis, __arg_0) => mthis.callMethod("compileShader", [__arg_0]);
 
-  static blendFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendFunc_Callback";
-  blendFunc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static bufferData_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bufferData_Callback";
-  bufferData_Callback_1_(mthis, __arg_0) => bufferData_Callback_1(mthis, __arg_0);
+  compressedTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static bufferData_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bufferData_Callback";
-  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => bufferData_Callback_2(mthis, __arg_0, __arg_1);
+  compressedTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("compressedTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static bufferData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bufferData_Callback";
-  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bufferData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  compressedTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static bufferData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bufferData_Callback";
-  bufferData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bufferData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  compressedTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static bufferData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_bufferData_Callback";
-  bufferData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bufferData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  compressedTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("compressedTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static bufferSubData_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bufferSubData_Callback";
-  bufferSubData_Callback_1_(mthis, __arg_0) => bufferSubData_Callback_1(mthis, __arg_0);
+  copyTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static bufferSubData_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bufferSubData_Callback";
-  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => bufferSubData_Callback_2(mthis, __arg_0, __arg_1);
+  copyTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static bufferSubData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bufferSubData_Callback";
-  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bufferSubData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  copyTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("copyTexImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static bufferSubData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bufferSubData_Callback";
-  bufferSubData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bufferSubData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  copyTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static bufferSubData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_bufferSubData_Callback";
-  bufferSubData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bufferSubData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  copyTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static canvas_Getter(mthis) native "WebGLRenderingContext_canvas_Getter";
-  canvas_Getter_(mthis) => canvas_Getter(mthis);
+  copyTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("copyTexSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static checkFramebufferStatus_Callback_0(mthis) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
-  checkFramebufferStatus_Callback_0_(mthis) => checkFramebufferStatus_Callback_0(mthis);
+  createBuffer_Callback_0_(mthis) => mthis.callMethod("createBuffer", []);
 
-  static checkFramebufferStatus_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
-  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => checkFramebufferStatus_Callback_1(mthis, __arg_0);
+  createFramebuffer_Callback_0_(mthis) => mthis.callMethod("createFramebuffer", []);
 
-  static checkFramebufferStatus_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
-  checkFramebufferStatus_Callback_2_(mthis, __arg_0, __arg_1) => checkFramebufferStatus_Callback_2(mthis, __arg_0, __arg_1);
+  createProgram_Callback_0_(mthis) => mthis.callMethod("createProgram", []);
 
-  static checkFramebufferStatus_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
-  checkFramebufferStatus_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => checkFramebufferStatus_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createRenderbuffer_Callback_0_(mthis) => mthis.callMethod("createRenderbuffer", []);
 
-  static clearColor_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clearColor_Callback";
-  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => clearColor_Callback_2(mthis, __arg_0, __arg_1);
+  createShader_Callback_0_(mthis) => mthis.callMethod("createShader", []);
 
-  static clearColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clearColor_Callback";
-  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createShader_Callback_1_(mthis, __arg_0) => mthis.callMethod("createShader", [__arg_0]);
 
-  static clearColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_clearColor_Callback";
-  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => clearColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  createTexture_Callback_0_(mthis) => mthis.callMethod("createTexture", []);
 
-  static clearColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_clearColor_Callback";
-  clearColor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => clearColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  cullFace_Callback_0_(mthis) => mthis.callMethod("cullFace", []);
 
-  static clearColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_clearColor_Callback";
-  clearColor_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => clearColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  cullFace_Callback_1_(mthis, __arg_0) => mthis.callMethod("cullFace", [__arg_0]);
 
-  static clearDepth_Callback_0(mthis) native "WebGLRenderingContext_clearDepth_Callback";
-  clearDepth_Callback_0_(mthis) => clearDepth_Callback_0(mthis);
+  deleteBuffer_Callback_0_(mthis) => mthis.callMethod("deleteBuffer", []);
 
-  static clearDepth_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_clearDepth_Callback";
-  clearDepth_Callback_1_(mthis, __arg_0) => clearDepth_Callback_1(mthis, __arg_0);
+  deleteBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteBuffer", [__arg_0]);
 
-  static clearDepth_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clearDepth_Callback";
-  clearDepth_Callback_2_(mthis, __arg_0, __arg_1) => clearDepth_Callback_2(mthis, __arg_0, __arg_1);
+  deleteFramebuffer_Callback_0_(mthis) => mthis.callMethod("deleteFramebuffer", []);
 
-  static clearDepth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clearDepth_Callback";
-  clearDepth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearDepth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  deleteFramebuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteFramebuffer", [__arg_0]);
 
-  static clearStencil_Callback_0(mthis) native "WebGLRenderingContext_clearStencil_Callback";
-  clearStencil_Callback_0_(mthis) => clearStencil_Callback_0(mthis);
+  deleteProgram_Callback_0_(mthis) => mthis.callMethod("deleteProgram", []);
 
-  static clearStencil_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_clearStencil_Callback";
-  clearStencil_Callback_1_(mthis, __arg_0) => clearStencil_Callback_1(mthis, __arg_0);
+  deleteProgram_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteProgram", [__arg_0]);
 
-  static clearStencil_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clearStencil_Callback";
-  clearStencil_Callback_2_(mthis, __arg_0, __arg_1) => clearStencil_Callback_2(mthis, __arg_0, __arg_1);
+  deleteRenderbuffer_Callback_0_(mthis) => mthis.callMethod("deleteRenderbuffer", []);
 
-  static clearStencil_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clearStencil_Callback";
-  clearStencil_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearStencil_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteRenderbuffer", [__arg_0]);
 
-  static clear_Callback_0(mthis) native "WebGLRenderingContext_clear_Callback";
-  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+  deleteShader_Callback_0_(mthis) => mthis.callMethod("deleteShader", []);
 
-  static clear_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_clear_Callback";
-  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+  deleteShader_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteShader", [__arg_0]);
 
-  static clear_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clear_Callback";
-  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+  deleteTexture_Callback_0_(mthis) => mthis.callMethod("deleteTexture", []);
 
-  static clear_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clear_Callback";
-  clear_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clear_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  deleteTexture_Callback_1_(mthis, __arg_0) => mthis.callMethod("deleteTexture", [__arg_0]);
 
-  static colorMask_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_colorMask_Callback";
-  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => colorMask_Callback_2(mthis, __arg_0, __arg_1);
+  depthFunc_Callback_0_(mthis) => mthis.callMethod("depthFunc", []);
 
-  static colorMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_colorMask_Callback";
-  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => colorMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  depthFunc_Callback_1_(mthis, __arg_0) => mthis.callMethod("depthFunc", [__arg_0]);
 
-  static colorMask_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_colorMask_Callback";
-  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => colorMask_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  depthMask_Callback_0_(mthis) => mthis.callMethod("depthMask", []);
 
-  static colorMask_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_colorMask_Callback";
-  colorMask_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => colorMask_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  depthMask_Callback_1_(mthis, __arg_0) => mthis.callMethod("depthMask", [__arg_0]);
 
-  static colorMask_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_colorMask_Callback";
-  colorMask_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => colorMask_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  depthRange_Callback_0_(mthis) => mthis.callMethod("depthRange", []);
 
-  static compileShader_Callback_0(mthis) native "WebGLRenderingContext_compileShader_Callback";
-  compileShader_Callback_0_(mthis) => compileShader_Callback_0(mthis);
+  depthRange_Callback_1_(mthis, __arg_0) => mthis.callMethod("depthRange", [__arg_0]);
 
-  static compileShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_compileShader_Callback";
-  compileShader_Callback_1_(mthis, __arg_0) => compileShader_Callback_1(mthis, __arg_0);
+  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("depthRange", [__arg_0, __arg_1]);
 
-  static compileShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_compileShader_Callback";
-  compileShader_Callback_2_(mthis, __arg_0, __arg_1) => compileShader_Callback_2(mthis, __arg_0, __arg_1);
+  detachShader_Callback_0_(mthis) => mthis.callMethod("detachShader", []);
 
-  static compileShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_compileShader_Callback";
-  compileShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => compileShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  detachShader_Callback_1_(mthis, __arg_0) => mthis.callMethod("detachShader", [__arg_0]);
 
-  static compressedTexImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_compressedTexImage2D_Callback";
-  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => compressedTexImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("detachShader", [__arg_0, __arg_1]);
 
-  static compressedTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_compressedTexImage2D_Callback";
-  compressedTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => compressedTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  disableVertexAttribArray_Callback_0_(mthis) => mthis.callMethod("disableVertexAttribArray", []);
 
-  static compressedTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_compressedTexImage2D_Callback";
-  compressedTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => compressedTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => mthis.callMethod("disableVertexAttribArray", [__arg_0]);
 
-  static compressedTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_compressedTexImage2D_Callback";
-  compressedTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => compressedTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  disable_Callback_0_(mthis) => mthis.callMethod("disable", []);
 
-  static compressedTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_compressedTexImage2D_Callback";
-  compressedTexImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => compressedTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  disable_Callback_1_(mthis, __arg_0) => mthis.callMethod("disable", [__arg_0]);
 
-  static compressedTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
-  compressedTexSubImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => compressedTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  drawArrays_Callback_1_(mthis, __arg_0) => mthis.callMethod("drawArrays", [__arg_0]);
 
-  static compressedTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
-  compressedTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => compressedTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("drawArrays", [__arg_0, __arg_1]);
 
-  static compressedTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
-  compressedTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => compressedTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("drawArrays", [__arg_0, __arg_1, __arg_2]);
 
-  static compressedTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
-  compressedTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => compressedTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("drawElements", [__arg_0, __arg_1]);
 
-  static compressedTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
-  compressedTexSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => compressedTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("drawElements", [__arg_0, __arg_1, __arg_2]);
 
-  static copyTexImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_copyTexImage2D_Callback";
-  copyTexImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => copyTexImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("drawElements", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static copyTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_copyTexImage2D_Callback";
-  copyTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => copyTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  drawingBufferHeight_Getter_(mthis) => mthis["drawingBufferHeight"];
 
-  static copyTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_copyTexImage2D_Callback";
-  copyTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => copyTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  drawingBufferWidth_Getter_(mthis) => mthis["drawingBufferWidth"];
 
-  static copyTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_copyTexImage2D_Callback";
-  copyTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => copyTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  enableVertexAttribArray_Callback_0_(mthis) => mthis.callMethod("enableVertexAttribArray", []);
 
-  static copyTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_copyTexImage2D_Callback";
-  copyTexImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => copyTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => mthis.callMethod("enableVertexAttribArray", [__arg_0]);
 
-  static copyTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
-  copyTexSubImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => copyTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+  enable_Callback_0_(mthis) => mthis.callMethod("enable", []);
 
-  static copyTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
-  copyTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => copyTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  enable_Callback_1_(mthis, __arg_0) => mthis.callMethod("enable", [__arg_0]);
 
-  static copyTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
-  copyTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => copyTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  finish_Callback_0_(mthis) => mthis.callMethod("finish", []);
 
-  static copyTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
-  copyTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => copyTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  flush_Callback_0_(mthis) => mthis.callMethod("flush", []);
 
-  static copyTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
-  copyTexSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => copyTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("framebufferRenderbuffer", [__arg_0, __arg_1]);
 
-  static createBuffer_Callback_0(mthis) native "WebGLRenderingContext_createBuffer_Callback";
-  createBuffer_Callback_0_(mthis) => createBuffer_Callback_0(mthis);
+  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2]);
 
-  static createBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createBuffer_Callback";
-  createBuffer_Callback_1_(mthis, __arg_0) => createBuffer_Callback_1(mthis, __arg_0);
+  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("framebufferRenderbuffer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createBuffer_Callback";
-  createBuffer_Callback_2_(mthis, __arg_0, __arg_1) => createBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("framebufferTexture2D", [__arg_0, __arg_1, __arg_2]);
 
-  static createFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_createFramebuffer_Callback";
-  createFramebuffer_Callback_0_(mthis) => createFramebuffer_Callback_0(mthis);
+  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createFramebuffer_Callback";
-  createFramebuffer_Callback_1_(mthis, __arg_0) => createFramebuffer_Callback_1(mthis, __arg_0);
+  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("framebufferTexture2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static createFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createFramebuffer_Callback";
-  createFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => createFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
+  frontFace_Callback_0_(mthis) => mthis.callMethod("frontFace", []);
 
-  static createProgram_Callback_0(mthis) native "WebGLRenderingContext_createProgram_Callback";
-  createProgram_Callback_0_(mthis) => createProgram_Callback_0(mthis);
+  frontFace_Callback_1_(mthis, __arg_0) => mthis.callMethod("frontFace", [__arg_0]);
 
-  static createProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createProgram_Callback";
-  createProgram_Callback_1_(mthis, __arg_0) => createProgram_Callback_1(mthis, __arg_0);
+  generateMipmap_Callback_0_(mthis) => mthis.callMethod("generateMipmap", []);
 
-  static createProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createProgram_Callback";
-  createProgram_Callback_2_(mthis, __arg_0, __arg_1) => createProgram_Callback_2(mthis, __arg_0, __arg_1);
+  generateMipmap_Callback_1_(mthis, __arg_0) => mthis.callMethod("generateMipmap", [__arg_0]);
 
-  static createRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_createRenderbuffer_Callback";
-  createRenderbuffer_Callback_0_(mthis) => createRenderbuffer_Callback_0(mthis);
+  getActiveAttrib_Callback_0_(mthis) => mthis.callMethod("getActiveAttrib", []);
 
-  static createRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createRenderbuffer_Callback";
-  createRenderbuffer_Callback_1_(mthis, __arg_0) => createRenderbuffer_Callback_1(mthis, __arg_0);
+  getActiveAttrib_Callback_1_(mthis, __arg_0) => mthis.callMethod("getActiveAttrib", [__arg_0]);
 
-  static createRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createRenderbuffer_Callback";
-  createRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => createRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getActiveAttrib", [__arg_0, __arg_1]);
 
-  static createShader_Callback_0(mthis) native "WebGLRenderingContext_createShader_Callback";
-  createShader_Callback_0_(mthis) => createShader_Callback_0(mthis);
+  getActiveUniform_Callback_0_(mthis) => mthis.callMethod("getActiveUniform", []);
 
-  static createShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createShader_Callback";
-  createShader_Callback_1_(mthis, __arg_0) => createShader_Callback_1(mthis, __arg_0);
+  getActiveUniform_Callback_1_(mthis, __arg_0) => mthis.callMethod("getActiveUniform", [__arg_0]);
 
-  static createShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createShader_Callback";
-  createShader_Callback_2_(mthis, __arg_0, __arg_1) => createShader_Callback_2(mthis, __arg_0, __arg_1);
+  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getActiveUniform", [__arg_0, __arg_1]);
 
-  static createShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_createShader_Callback";
-  createShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getAttachedShaders_Callback_0_(mthis) => mthis.callMethod("getAttachedShaders", []);
 
-  static createTexture_Callback_0(mthis) native "WebGLRenderingContext_createTexture_Callback";
-  createTexture_Callback_0_(mthis) => createTexture_Callback_0(mthis);
+  getAttachedShaders_Callback_1_(mthis, __arg_0) => mthis.callMethod("getAttachedShaders", [__arg_0]);
 
-  static createTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createTexture_Callback";
-  createTexture_Callback_1_(mthis, __arg_0) => createTexture_Callback_1(mthis, __arg_0);
+  getAttribLocation_Callback_0_(mthis) => mthis.callMethod("getAttribLocation", []);
 
-  static createTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createTexture_Callback";
-  createTexture_Callback_2_(mthis, __arg_0, __arg_1) => createTexture_Callback_2(mthis, __arg_0, __arg_1);
+  getAttribLocation_Callback_1_(mthis, __arg_0) => mthis.callMethod("getAttribLocation", [__arg_0]);
 
-  static cullFace_Callback_0(mthis) native "WebGLRenderingContext_cullFace_Callback";
-  cullFace_Callback_0_(mthis) => cullFace_Callback_0(mthis);
+  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getAttribLocation", [__arg_0, __arg_1]);
 
-  static cullFace_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_cullFace_Callback";
-  cullFace_Callback_1_(mthis, __arg_0) => cullFace_Callback_1(mthis, __arg_0);
+  getBufferParameter_Callback_0_(mthis) => mthis.callMethod("getBufferParameter", []);
 
-  static cullFace_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_cullFace_Callback";
-  cullFace_Callback_2_(mthis, __arg_0, __arg_1) => cullFace_Callback_2(mthis, __arg_0, __arg_1);
+  getBufferParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getBufferParameter", [__arg_0]);
 
-  static cullFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_cullFace_Callback";
-  cullFace_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cullFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getBufferParameter", [__arg_0, __arg_1]);
 
-  static deleteBuffer_Callback_0(mthis) native "WebGLRenderingContext_deleteBuffer_Callback";
-  deleteBuffer_Callback_0_(mthis) => deleteBuffer_Callback_0(mthis);
+  getContextAttributes_Callback_0_(mthis) => mthis.callMethod("getContextAttributes", []);
 
-  static deleteBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteBuffer_Callback";
-  deleteBuffer_Callback_1_(mthis, __arg_0) => deleteBuffer_Callback_1(mthis, __arg_0);
+  getError_Callback_0_(mthis) => mthis.callMethod("getError", []);
 
-  static deleteBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteBuffer_Callback";
-  deleteBuffer_Callback_2_(mthis, __arg_0, __arg_1) => deleteBuffer_Callback_2(mthis, __arg_0, __arg_1);
+  getExtension_Callback_0_(mthis) => mthis.callMethod("getExtension", []);
 
-  static deleteBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteBuffer_Callback";
-  deleteBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getExtension_Callback_1_(mthis, __arg_0) => mthis.callMethod("getExtension", [__arg_0]);
 
-  static deleteFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_deleteFramebuffer_Callback";
-  deleteFramebuffer_Callback_0_(mthis) => deleteFramebuffer_Callback_0(mthis);
+  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getFramebufferAttachmentParameter", [__arg_0]);
 
-  static deleteFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteFramebuffer_Callback";
-  deleteFramebuffer_Callback_1_(mthis, __arg_0) => deleteFramebuffer_Callback_1(mthis, __arg_0);
+  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getFramebufferAttachmentParameter", [__arg_0, __arg_1]);
 
-  static deleteFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteFramebuffer_Callback";
-  deleteFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => deleteFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
+  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("getFramebufferAttachmentParameter", [__arg_0, __arg_1, __arg_2]);
 
-  static deleteFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteFramebuffer_Callback";
-  deleteFramebuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getParameter_Callback_0_(mthis) => mthis.callMethod("getParameter", []);
 
-  static deleteProgram_Callback_0(mthis) native "WebGLRenderingContext_deleteProgram_Callback";
-  deleteProgram_Callback_0_(mthis) => deleteProgram_Callback_0(mthis);
+  getParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getParameter", [__arg_0]);
 
-  static deleteProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteProgram_Callback";
-  deleteProgram_Callback_1_(mthis, __arg_0) => deleteProgram_Callback_1(mthis, __arg_0);
+  getProgramInfoLog_Callback_0_(mthis) => mthis.callMethod("getProgramInfoLog", []);
 
-  static deleteProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteProgram_Callback";
-  deleteProgram_Callback_2_(mthis, __arg_0, __arg_1) => deleteProgram_Callback_2(mthis, __arg_0, __arg_1);
+  getProgramInfoLog_Callback_1_(mthis, __arg_0) => mthis.callMethod("getProgramInfoLog", [__arg_0]);
 
-  static deleteProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteProgram_Callback";
-  deleteProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getProgramParameter_Callback_0_(mthis) => mthis.callMethod("getProgramParameter", []);
 
-  static deleteRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
-  deleteRenderbuffer_Callback_0_(mthis) => deleteRenderbuffer_Callback_0(mthis);
+  getProgramParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getProgramParameter", [__arg_0]);
 
-  static deleteRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
-  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => deleteRenderbuffer_Callback_1(mthis, __arg_0);
+  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getProgramParameter", [__arg_0, __arg_1]);
 
-  static deleteRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
-  deleteRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => deleteRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+  getRenderbufferParameter_Callback_0_(mthis) => mthis.callMethod("getRenderbufferParameter", []);
 
-  static deleteRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
-  deleteRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getRenderbufferParameter", [__arg_0]);
 
-  static deleteShader_Callback_0(mthis) native "WebGLRenderingContext_deleteShader_Callback";
-  deleteShader_Callback_0_(mthis) => deleteShader_Callback_0(mthis);
+  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getRenderbufferParameter", [__arg_0, __arg_1]);
 
-  static deleteShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteShader_Callback";
-  deleteShader_Callback_1_(mthis, __arg_0) => deleteShader_Callback_1(mthis, __arg_0);
+  getShaderInfoLog_Callback_0_(mthis) => mthis.callMethod("getShaderInfoLog", []);
 
-  static deleteShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteShader_Callback";
-  deleteShader_Callback_2_(mthis, __arg_0, __arg_1) => deleteShader_Callback_2(mthis, __arg_0, __arg_1);
+  getShaderInfoLog_Callback_1_(mthis, __arg_0) => mthis.callMethod("getShaderInfoLog", [__arg_0]);
 
-  static deleteShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteShader_Callback";
-  deleteShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getShaderParameter_Callback_0_(mthis) => mthis.callMethod("getShaderParameter", []);
 
-  static deleteTexture_Callback_0(mthis) native "WebGLRenderingContext_deleteTexture_Callback";
-  deleteTexture_Callback_0_(mthis) => deleteTexture_Callback_0(mthis);
+  getShaderParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getShaderParameter", [__arg_0]);
 
-  static deleteTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteTexture_Callback";
-  deleteTexture_Callback_1_(mthis, __arg_0) => deleteTexture_Callback_1(mthis, __arg_0);
+  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getShaderParameter", [__arg_0, __arg_1]);
 
-  static deleteTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteTexture_Callback";
-  deleteTexture_Callback_2_(mthis, __arg_0, __arg_1) => deleteTexture_Callback_2(mthis, __arg_0, __arg_1);
+  getShaderPrecisionFormat_Callback_0_(mthis) => mthis.callMethod("getShaderPrecisionFormat", []);
 
-  static deleteTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteTexture_Callback";
-  deleteTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => mthis.callMethod("getShaderPrecisionFormat", [__arg_0]);
 
-  static depthFunc_Callback_0(mthis) native "WebGLRenderingContext_depthFunc_Callback";
-  depthFunc_Callback_0_(mthis) => depthFunc_Callback_0(mthis);
+  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getShaderPrecisionFormat", [__arg_0, __arg_1]);
 
-  static depthFunc_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_depthFunc_Callback";
-  depthFunc_Callback_1_(mthis, __arg_0) => depthFunc_Callback_1(mthis, __arg_0);
+  getShaderSource_Callback_0_(mthis) => mthis.callMethod("getShaderSource", []);
 
-  static depthFunc_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_depthFunc_Callback";
-  depthFunc_Callback_2_(mthis, __arg_0, __arg_1) => depthFunc_Callback_2(mthis, __arg_0, __arg_1);
+  getShaderSource_Callback_1_(mthis, __arg_0) => mthis.callMethod("getShaderSource", [__arg_0]);
 
-  static depthFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_depthFunc_Callback";
-  depthFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => depthFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getSupportedExtensions_Callback_0_(mthis) => mthis.callMethod("getSupportedExtensions", []);
 
-  static depthMask_Callback_0(mthis) native "WebGLRenderingContext_depthMask_Callback";
-  depthMask_Callback_0_(mthis) => depthMask_Callback_0(mthis);
+  getTexParameter_Callback_0_(mthis) => mthis.callMethod("getTexParameter", []);
 
-  static depthMask_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_depthMask_Callback";
-  depthMask_Callback_1_(mthis, __arg_0) => depthMask_Callback_1(mthis, __arg_0);
+  getTexParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getTexParameter", [__arg_0]);
 
-  static depthMask_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_depthMask_Callback";
-  depthMask_Callback_2_(mthis, __arg_0, __arg_1) => depthMask_Callback_2(mthis, __arg_0, __arg_1);
+  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getTexParameter", [__arg_0, __arg_1]);
 
-  static depthMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_depthMask_Callback";
-  depthMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => depthMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getUniformLocation_Callback_0_(mthis) => mthis.callMethod("getUniformLocation", []);
 
-  static depthRange_Callback_0(mthis) native "WebGLRenderingContext_depthRange_Callback";
-  depthRange_Callback_0_(mthis) => depthRange_Callback_0(mthis);
+  getUniformLocation_Callback_1_(mthis, __arg_0) => mthis.callMethod("getUniformLocation", [__arg_0]);
 
-  static depthRange_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_depthRange_Callback";
-  depthRange_Callback_1_(mthis, __arg_0) => depthRange_Callback_1(mthis, __arg_0);
+  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getUniformLocation", [__arg_0, __arg_1]);
 
-  static depthRange_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_depthRange_Callback";
-  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => depthRange_Callback_2(mthis, __arg_0, __arg_1);
+  getUniform_Callback_0_(mthis) => mthis.callMethod("getUniform", []);
 
-  static depthRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_depthRange_Callback";
-  depthRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => depthRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getUniform_Callback_1_(mthis, __arg_0) => mthis.callMethod("getUniform", [__arg_0]);
 
-  static depthRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_depthRange_Callback";
-  depthRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => depthRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getUniform", [__arg_0, __arg_1]);
 
-  static detachShader_Callback_0(mthis) native "WebGLRenderingContext_detachShader_Callback";
-  detachShader_Callback_0_(mthis) => detachShader_Callback_0(mthis);
+  getVertexAttribOffset_Callback_0_(mthis) => mthis.callMethod("getVertexAttribOffset", []);
 
-  static detachShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_detachShader_Callback";
-  detachShader_Callback_1_(mthis, __arg_0) => detachShader_Callback_1(mthis, __arg_0);
+  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => mthis.callMethod("getVertexAttribOffset", [__arg_0]);
 
-  static detachShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_detachShader_Callback";
-  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => detachShader_Callback_2(mthis, __arg_0, __arg_1);
+  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getVertexAttribOffset", [__arg_0, __arg_1]);
 
-  static detachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_detachShader_Callback";
-  detachShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => detachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  getVertexAttrib_Callback_0_(mthis) => mthis.callMethod("getVertexAttrib", []);
 
-  static detachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_detachShader_Callback";
-  detachShader_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => detachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  getVertexAttrib_Callback_1_(mthis, __arg_0) => mthis.callMethod("getVertexAttrib", [__arg_0]);
 
-  static disableVertexAttribArray_Callback_0(mthis) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
-  disableVertexAttribArray_Callback_0_(mthis) => disableVertexAttribArray_Callback_0(mthis);
+  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getVertexAttrib", [__arg_0, __arg_1]);
 
-  static disableVertexAttribArray_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
-  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => disableVertexAttribArray_Callback_1(mthis, __arg_0);
+  hint_Callback_0_(mthis) => mthis.callMethod("hint", []);
 
-  static disableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
-  disableVertexAttribArray_Callback_2_(mthis, __arg_0, __arg_1) => disableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1);
+  hint_Callback_1_(mthis, __arg_0) => mthis.callMethod("hint", [__arg_0]);
 
-  static disableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
-  disableVertexAttribArray_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => disableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  hint_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("hint", [__arg_0, __arg_1]);
 
-  static disable_Callback_0(mthis) native "WebGLRenderingContext_disable_Callback";
-  disable_Callback_0_(mthis) => disable_Callback_0(mthis);
+  isBuffer_Callback_0_(mthis) => mthis.callMethod("isBuffer", []);
 
-  static disable_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_disable_Callback";
-  disable_Callback_1_(mthis, __arg_0) => disable_Callback_1(mthis, __arg_0);
+  isBuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("isBuffer", [__arg_0]);
 
-  static disable_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_disable_Callback";
-  disable_Callback_2_(mthis, __arg_0, __arg_1) => disable_Callback_2(mthis, __arg_0, __arg_1);
+  isContextLost_Callback_0_(mthis) => mthis.callMethod("isContextLost", []);
 
-  static disable_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_disable_Callback";
-  disable_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => disable_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isEnabled_Callback_0_(mthis) => mthis.callMethod("isEnabled", []);
 
-  static drawArrays_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_drawArrays_Callback";
-  drawArrays_Callback_1_(mthis, __arg_0) => drawArrays_Callback_1(mthis, __arg_0);
+  isEnabled_Callback_1_(mthis, __arg_0) => mthis.callMethod("isEnabled", [__arg_0]);
 
-  static drawArrays_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_drawArrays_Callback";
-  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => drawArrays_Callback_2(mthis, __arg_0, __arg_1);
+  isFramebuffer_Callback_0_(mthis) => mthis.callMethod("isFramebuffer", []);
 
-  static drawArrays_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_drawArrays_Callback";
-  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawArrays_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isFramebuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("isFramebuffer", [__arg_0]);
 
-  static drawArrays_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_drawArrays_Callback";
-  drawArrays_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawArrays_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  isProgram_Callback_0_(mthis) => mthis.callMethod("isProgram", []);
 
-  static drawArrays_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_drawArrays_Callback";
-  drawArrays_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawArrays_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  isProgram_Callback_1_(mthis, __arg_0) => mthis.callMethod("isProgram", [__arg_0]);
 
-  static drawElements_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_drawElements_Callback";
-  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => drawElements_Callback_2(mthis, __arg_0, __arg_1);
+  isRenderbuffer_Callback_0_(mthis) => mthis.callMethod("isRenderbuffer", []);
 
-  static drawElements_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_drawElements_Callback";
-  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawElements_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  isRenderbuffer_Callback_1_(mthis, __arg_0) => mthis.callMethod("isRenderbuffer", [__arg_0]);
 
-  static drawElements_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_drawElements_Callback";
-  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawElements_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  isShader_Callback_0_(mthis) => mthis.callMethod("isShader", []);
 
-  static drawElements_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_drawElements_Callback";
-  drawElements_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawElements_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  isShader_Callback_1_(mthis, __arg_0) => mthis.callMethod("isShader", [__arg_0]);
 
-  static drawElements_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_drawElements_Callback";
-  drawElements_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawElements_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  isTexture_Callback_0_(mthis) => mthis.callMethod("isTexture", []);
 
-  static drawingBufferHeight_Getter(mthis) native "WebGLRenderingContext_drawingBufferHeight_Getter";
-  drawingBufferHeight_Getter_(mthis) => drawingBufferHeight_Getter(mthis);
+  isTexture_Callback_1_(mthis, __arg_0) => mthis.callMethod("isTexture", [__arg_0]);
 
-  static drawingBufferWidth_Getter(mthis) native "WebGLRenderingContext_drawingBufferWidth_Getter";
-  drawingBufferWidth_Getter_(mthis) => drawingBufferWidth_Getter(mthis);
+  lineWidth_Callback_0_(mthis) => mthis.callMethod("lineWidth", []);
 
-  static enableVertexAttribArray_Callback_0(mthis) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
-  enableVertexAttribArray_Callback_0_(mthis) => enableVertexAttribArray_Callback_0(mthis);
+  lineWidth_Callback_1_(mthis, __arg_0) => mthis.callMethod("lineWidth", [__arg_0]);
 
-  static enableVertexAttribArray_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
-  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => enableVertexAttribArray_Callback_1(mthis, __arg_0);
+  linkProgram_Callback_0_(mthis) => mthis.callMethod("linkProgram", []);
 
-  static enableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
-  enableVertexAttribArray_Callback_2_(mthis, __arg_0, __arg_1) => enableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1);
+  linkProgram_Callback_1_(mthis, __arg_0) => mthis.callMethod("linkProgram", [__arg_0]);
 
-  static enableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
-  enableVertexAttribArray_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => enableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  pixelStorei_Callback_0_(mthis) => mthis.callMethod("pixelStorei", []);
 
-  static enable_Callback_0(mthis) native "WebGLRenderingContext_enable_Callback";
-  enable_Callback_0_(mthis) => enable_Callback_0(mthis);
+  pixelStorei_Callback_1_(mthis, __arg_0) => mthis.callMethod("pixelStorei", [__arg_0]);
 
-  static enable_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_enable_Callback";
-  enable_Callback_1_(mthis, __arg_0) => enable_Callback_1(mthis, __arg_0);
+  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("pixelStorei", [__arg_0, __arg_1]);
 
-  static enable_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_enable_Callback";
-  enable_Callback_2_(mthis, __arg_0, __arg_1) => enable_Callback_2(mthis, __arg_0, __arg_1);
+  polygonOffset_Callback_0_(mthis) => mthis.callMethod("polygonOffset", []);
 
-  static enable_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_enable_Callback";
-  enable_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => enable_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  polygonOffset_Callback_1_(mthis, __arg_0) => mthis.callMethod("polygonOffset", [__arg_0]);
 
-  static finish_Callback_0(mthis) native "WebGLRenderingContext_finish_Callback";
-  finish_Callback_0_(mthis) => finish_Callback_0(mthis);
+  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("polygonOffset", [__arg_0, __arg_1]);
 
-  static finish_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_finish_Callback";
-  finish_Callback_1_(mthis, __arg_0) => finish_Callback_1(mthis, __arg_0);
+  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static finish_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_finish_Callback";
-  finish_Callback_2_(mthis, __arg_0, __arg_1) => finish_Callback_2(mthis, __arg_0, __arg_1);
+  readPixels_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static flush_Callback_0(mthis) native "WebGLRenderingContext_flush_Callback";
-  flush_Callback_0_(mthis) => flush_Callback_0(mthis);
+  readPixels_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("readPixels", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static flush_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_flush_Callback";
-  flush_Callback_1_(mthis, __arg_0) => flush_Callback_1(mthis, __arg_0);
+  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("renderbufferStorage", [__arg_0, __arg_1]);
 
-  static flush_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_flush_Callback";
-  flush_Callback_2_(mthis, __arg_0, __arg_1) => flush_Callback_2(mthis, __arg_0, __arg_1);
+  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("renderbufferStorage", [__arg_0, __arg_1, __arg_2]);
 
-  static framebufferRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
-  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => framebufferRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("renderbufferStorage", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static framebufferRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
-  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => framebufferRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  sampleCoverage_Callback_0_(mthis) => mthis.callMethod("sampleCoverage", []);
 
-  static framebufferRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
-  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => framebufferRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  sampleCoverage_Callback_1_(mthis, __arg_0) => mthis.callMethod("sampleCoverage", [__arg_0]);
 
-  static framebufferRenderbuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
-  framebufferRenderbuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => framebufferRenderbuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("sampleCoverage", [__arg_0, __arg_1]);
 
-  static framebufferRenderbuffer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
-  framebufferRenderbuffer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => framebufferRenderbuffer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  scissor_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scissor", [__arg_0, __arg_1]);
 
-  static framebufferTexture2D_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_framebufferTexture2D_Callback";
-  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => framebufferTexture2D_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scissor", [__arg_0, __arg_1, __arg_2]);
 
-  static framebufferTexture2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_framebufferTexture2D_Callback";
-  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => framebufferTexture2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("scissor", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static framebufferTexture2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_framebufferTexture2D_Callback";
-  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => framebufferTexture2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  shaderSource_Callback_0_(mthis) => mthis.callMethod("shaderSource", []);
 
-  static framebufferTexture2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_framebufferTexture2D_Callback";
-  framebufferTexture2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => framebufferTexture2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  shaderSource_Callback_1_(mthis, __arg_0) => mthis.callMethod("shaderSource", [__arg_0]);
 
-  static framebufferTexture2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_framebufferTexture2D_Callback";
-  framebufferTexture2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => framebufferTexture2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("shaderSource", [__arg_0, __arg_1]);
 
-  static frontFace_Callback_0(mthis) native "WebGLRenderingContext_frontFace_Callback";
-  frontFace_Callback_0_(mthis) => frontFace_Callback_0(mthis);
+  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("stencilFuncSeparate", [__arg_0, __arg_1]);
 
-  static frontFace_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_frontFace_Callback";
-  frontFace_Callback_1_(mthis, __arg_0) => frontFace_Callback_1(mthis, __arg_0);
+  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("stencilFuncSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  static frontFace_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_frontFace_Callback";
-  frontFace_Callback_2_(mthis, __arg_0, __arg_1) => frontFace_Callback_2(mthis, __arg_0, __arg_1);
+  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("stencilFuncSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static frontFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_frontFace_Callback";
-  frontFace_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => frontFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stencilFunc_Callback_1_(mthis, __arg_0) => mthis.callMethod("stencilFunc", [__arg_0]);
 
-  static generateMipmap_Callback_0(mthis) native "WebGLRenderingContext_generateMipmap_Callback";
-  generateMipmap_Callback_0_(mthis) => generateMipmap_Callback_0(mthis);
+  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("stencilFunc", [__arg_0, __arg_1]);
 
-  static generateMipmap_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_generateMipmap_Callback";
-  generateMipmap_Callback_1_(mthis, __arg_0) => generateMipmap_Callback_1(mthis, __arg_0);
+  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("stencilFunc", [__arg_0, __arg_1, __arg_2]);
 
-  static generateMipmap_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_generateMipmap_Callback";
-  generateMipmap_Callback_2_(mthis, __arg_0, __arg_1) => generateMipmap_Callback_2(mthis, __arg_0, __arg_1);
+  stencilMaskSeparate_Callback_0_(mthis) => mthis.callMethod("stencilMaskSeparate", []);
 
-  static generateMipmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_generateMipmap_Callback";
-  generateMipmap_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => generateMipmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => mthis.callMethod("stencilMaskSeparate", [__arg_0]);
 
-  static getActiveAttrib_Callback_0(mthis) native "WebGLRenderingContext_getActiveAttrib_Callback";
-  getActiveAttrib_Callback_0_(mthis) => getActiveAttrib_Callback_0(mthis);
+  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("stencilMaskSeparate", [__arg_0, __arg_1]);
 
-  static getActiveAttrib_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getActiveAttrib_Callback";
-  getActiveAttrib_Callback_1_(mthis, __arg_0) => getActiveAttrib_Callback_1(mthis, __arg_0);
+  stencilMask_Callback_0_(mthis) => mthis.callMethod("stencilMask", []);
 
-  static getActiveAttrib_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getActiveAttrib_Callback";
-  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => getActiveAttrib_Callback_2(mthis, __arg_0, __arg_1);
+  stencilMask_Callback_1_(mthis, __arg_0) => mthis.callMethod("stencilMask", [__arg_0]);
 
-  static getActiveAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getActiveAttrib_Callback";
-  getActiveAttrib_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getActiveAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("stencilOpSeparate", [__arg_0, __arg_1]);
 
-  static getActiveAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getActiveAttrib_Callback";
-  getActiveAttrib_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getActiveAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("stencilOpSeparate", [__arg_0, __arg_1, __arg_2]);
 
-  static getActiveUniform_Callback_0(mthis) native "WebGLRenderingContext_getActiveUniform_Callback";
-  getActiveUniform_Callback_0_(mthis) => getActiveUniform_Callback_0(mthis);
+  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("stencilOpSeparate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getActiveUniform_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getActiveUniform_Callback";
-  getActiveUniform_Callback_1_(mthis, __arg_0) => getActiveUniform_Callback_1(mthis, __arg_0);
+  stencilOp_Callback_1_(mthis, __arg_0) => mthis.callMethod("stencilOp", [__arg_0]);
 
-  static getActiveUniform_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getActiveUniform_Callback";
-  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => getActiveUniform_Callback_2(mthis, __arg_0, __arg_1);
+  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("stencilOp", [__arg_0, __arg_1]);
 
-  static getActiveUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getActiveUniform_Callback";
-  getActiveUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getActiveUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("stencilOp", [__arg_0, __arg_1, __arg_2]);
 
-  static getActiveUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getActiveUniform_Callback";
-  getActiveUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getActiveUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getAttachedShaders_Callback_0(mthis) native "WebGLRenderingContext_getAttachedShaders_Callback";
-  getAttachedShaders_Callback_0_(mthis) => getAttachedShaders_Callback_0(mthis);
+  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static getAttachedShaders_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getAttachedShaders_Callback";
-  getAttachedShaders_Callback_1_(mthis, __arg_0) => getAttachedShaders_Callback_1(mthis, __arg_0);
+  texImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static getAttachedShaders_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getAttachedShaders_Callback";
-  getAttachedShaders_Callback_2_(mthis, __arg_0, __arg_1) => getAttachedShaders_Callback_2(mthis, __arg_0, __arg_1);
+  texImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static getAttachedShaders_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getAttachedShaders_Callback";
-  getAttachedShaders_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttachedShaders_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  texImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static getAttribLocation_Callback_0(mthis) native "WebGLRenderingContext_getAttribLocation_Callback";
-  getAttribLocation_Callback_0_(mthis) => getAttribLocation_Callback_0(mthis);
+  texImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => mthis.callMethod("texImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  static getAttribLocation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getAttribLocation_Callback";
-  getAttribLocation_Callback_1_(mthis, __arg_0) => getAttribLocation_Callback_1(mthis, __arg_0);
+  texParameterf_Callback_1_(mthis, __arg_0) => mthis.callMethod("texParameterf", [__arg_0]);
 
-  static getAttribLocation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getAttribLocation_Callback";
-  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => getAttribLocation_Callback_2(mthis, __arg_0, __arg_1);
+  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("texParameterf", [__arg_0, __arg_1]);
 
-  static getAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getAttribLocation_Callback";
-  getAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("texParameterf", [__arg_0, __arg_1, __arg_2]);
 
-  static getAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getAttribLocation_Callback";
-  getAttribLocation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  texParameteri_Callback_1_(mthis, __arg_0) => mthis.callMethod("texParameteri", [__arg_0]);
 
-  static getBufferParameter_Callback_0(mthis) native "WebGLRenderingContext_getBufferParameter_Callback";
-  getBufferParameter_Callback_0_(mthis) => getBufferParameter_Callback_0(mthis);
+  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("texParameteri", [__arg_0, __arg_1]);
 
-  static getBufferParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getBufferParameter_Callback";
-  getBufferParameter_Callback_1_(mthis, __arg_0) => getBufferParameter_Callback_1(mthis, __arg_0);
+  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("texParameteri", [__arg_0, __arg_1, __arg_2]);
 
-  static getBufferParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getBufferParameter_Callback";
-  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => getBufferParameter_Callback_2(mthis, __arg_0, __arg_1);
+  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static getBufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getBufferParameter_Callback";
-  getBufferParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getBufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  texSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static getBufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getBufferParameter_Callback";
-  getBufferParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getBufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  texSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static getContextAttributes_Callback_0(mthis) native "WebGLRenderingContext_getContextAttributes_Callback";
-  getContextAttributes_Callback_0_(mthis) => getContextAttributes_Callback_0(mthis);
+  texSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => mthis.callMethod("texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7]);
 
-  static getContextAttributes_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getContextAttributes_Callback";
-  getContextAttributes_Callback_1_(mthis, __arg_0) => getContextAttributes_Callback_1(mthis, __arg_0);
+  texSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => mthis.callMethod("texSubImage2D", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8]);
 
-  static getContextAttributes_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getContextAttributes_Callback";
-  getContextAttributes_Callback_2_(mthis, __arg_0, __arg_1) => getContextAttributes_Callback_2(mthis, __arg_0, __arg_1);
+  uniform1f_Callback_0_(mthis) => mthis.callMethod("uniform1f", []);
 
-  static getError_Callback_0(mthis) native "WebGLRenderingContext_getError_Callback";
-  getError_Callback_0_(mthis) => getError_Callback_0(mthis);
+  uniform1f_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform1f", [__arg_0]);
 
-  static getError_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getError_Callback";
-  getError_Callback_1_(mthis, __arg_0) => getError_Callback_1(mthis, __arg_0);
+  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform1f", [__arg_0, __arg_1]);
 
-  static getError_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getError_Callback";
-  getError_Callback_2_(mthis, __arg_0, __arg_1) => getError_Callback_2(mthis, __arg_0, __arg_1);
+  uniform1fv_Callback_0_(mthis) => mthis.callMethod("uniform1fv", []);
 
-  static getExtension_Callback_0(mthis) native "WebGLRenderingContext_getExtension_Callback";
-  getExtension_Callback_0_(mthis) => getExtension_Callback_0(mthis);
+  uniform1fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform1fv", [__arg_0]);
 
-  static getExtension_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getExtension_Callback";
-  getExtension_Callback_1_(mthis, __arg_0) => getExtension_Callback_1(mthis, __arg_0);
+  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform1fv", [__arg_0, __arg_1]);
 
-  static getExtension_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getExtension_Callback";
-  getExtension_Callback_2_(mthis, __arg_0, __arg_1) => getExtension_Callback_2(mthis, __arg_0, __arg_1);
+  uniform1i_Callback_0_(mthis) => mthis.callMethod("uniform1i", []);
 
-  static getExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getExtension_Callback";
-  getExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform1i_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform1i", [__arg_0]);
 
-  static getFramebufferAttachmentParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
-  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => getFramebufferAttachmentParameter_Callback_1(mthis, __arg_0);
+  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform1i", [__arg_0, __arg_1]);
 
-  static getFramebufferAttachmentParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
-  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => getFramebufferAttachmentParameter_Callback_2(mthis, __arg_0, __arg_1);
+  uniform1iv_Callback_0_(mthis) => mthis.callMethod("uniform1iv", []);
 
-  static getFramebufferAttachmentParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
-  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFramebufferAttachmentParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform1iv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform1iv", [__arg_0]);
 
-  static getFramebufferAttachmentParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
-  getFramebufferAttachmentParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFramebufferAttachmentParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform1iv", [__arg_0, __arg_1]);
 
-  static getFramebufferAttachmentParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
-  getFramebufferAttachmentParameter_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getFramebufferAttachmentParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  uniform2f_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform2f", [__arg_0]);
 
-  static getParameter_Callback_0(mthis) native "WebGLRenderingContext_getParameter_Callback";
-  getParameter_Callback_0_(mthis) => getParameter_Callback_0(mthis);
+  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform2f", [__arg_0, __arg_1]);
 
-  static getParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getParameter_Callback";
-  getParameter_Callback_1_(mthis, __arg_0) => getParameter_Callback_1(mthis, __arg_0);
+  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniform2f", [__arg_0, __arg_1, __arg_2]);
 
-  static getParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getParameter_Callback";
-  getParameter_Callback_2_(mthis, __arg_0, __arg_1) => getParameter_Callback_2(mthis, __arg_0, __arg_1);
+  uniform2fv_Callback_0_(mthis) => mthis.callMethod("uniform2fv", []);
 
-  static getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getParameter_Callback";
-  getParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform2fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform2fv", [__arg_0]);
 
-  static getProgramInfoLog_Callback_0(mthis) native "WebGLRenderingContext_getProgramInfoLog_Callback";
-  getProgramInfoLog_Callback_0_(mthis) => getProgramInfoLog_Callback_0(mthis);
+  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform2fv", [__arg_0, __arg_1]);
 
-  static getProgramInfoLog_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getProgramInfoLog_Callback";
-  getProgramInfoLog_Callback_1_(mthis, __arg_0) => getProgramInfoLog_Callback_1(mthis, __arg_0);
+  uniform2i_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform2i", [__arg_0]);
 
-  static getProgramInfoLog_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getProgramInfoLog_Callback";
-  getProgramInfoLog_Callback_2_(mthis, __arg_0, __arg_1) => getProgramInfoLog_Callback_2(mthis, __arg_0, __arg_1);
+  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform2i", [__arg_0, __arg_1]);
 
-  static getProgramInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getProgramInfoLog_Callback";
-  getProgramInfoLog_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getProgramInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniform2i", [__arg_0, __arg_1, __arg_2]);
 
-  static getProgramParameter_Callback_0(mthis) native "WebGLRenderingContext_getProgramParameter_Callback";
-  getProgramParameter_Callback_0_(mthis) => getProgramParameter_Callback_0(mthis);
+  uniform2iv_Callback_0_(mthis) => mthis.callMethod("uniform2iv", []);
 
-  static getProgramParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getProgramParameter_Callback";
-  getProgramParameter_Callback_1_(mthis, __arg_0) => getProgramParameter_Callback_1(mthis, __arg_0);
+  uniform2iv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform2iv", [__arg_0]);
 
-  static getProgramParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getProgramParameter_Callback";
-  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => getProgramParameter_Callback_2(mthis, __arg_0, __arg_1);
+  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform2iv", [__arg_0, __arg_1]);
 
-  static getProgramParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getProgramParameter_Callback";
-  getProgramParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getProgramParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform3f", [__arg_0, __arg_1]);
 
-  static getProgramParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getProgramParameter_Callback";
-  getProgramParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getProgramParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniform3f", [__arg_0, __arg_1, __arg_2]);
 
-  static getRenderbufferParameter_Callback_0(mthis) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
-  getRenderbufferParameter_Callback_0_(mthis) => getRenderbufferParameter_Callback_0(mthis);
+  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("uniform3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getRenderbufferParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
-  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => getRenderbufferParameter_Callback_1(mthis, __arg_0);
+  uniform3fv_Callback_0_(mthis) => mthis.callMethod("uniform3fv", []);
 
-  static getRenderbufferParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
-  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => getRenderbufferParameter_Callback_2(mthis, __arg_0, __arg_1);
+  uniform3fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform3fv", [__arg_0]);
 
-  static getRenderbufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
-  getRenderbufferParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRenderbufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform3fv", [__arg_0, __arg_1]);
 
-  static getRenderbufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
-  getRenderbufferParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getRenderbufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform3i", [__arg_0, __arg_1]);
 
-  static getShaderInfoLog_Callback_0(mthis) native "WebGLRenderingContext_getShaderInfoLog_Callback";
-  getShaderInfoLog_Callback_0_(mthis) => getShaderInfoLog_Callback_0(mthis);
+  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniform3i", [__arg_0, __arg_1, __arg_2]);
 
-  static getShaderInfoLog_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderInfoLog_Callback";
-  getShaderInfoLog_Callback_1_(mthis, __arg_0) => getShaderInfoLog_Callback_1(mthis, __arg_0);
+  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("uniform3i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getShaderInfoLog_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderInfoLog_Callback";
-  getShaderInfoLog_Callback_2_(mthis, __arg_0, __arg_1) => getShaderInfoLog_Callback_2(mthis, __arg_0, __arg_1);
+  uniform3iv_Callback_0_(mthis) => mthis.callMethod("uniform3iv", []);
 
-  static getShaderInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderInfoLog_Callback";
-  getShaderInfoLog_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform3iv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform3iv", [__arg_0]);
 
-  static getShaderParameter_Callback_0(mthis) native "WebGLRenderingContext_getShaderParameter_Callback";
-  getShaderParameter_Callback_0_(mthis) => getShaderParameter_Callback_0(mthis);
+  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform3iv", [__arg_0, __arg_1]);
 
-  static getShaderParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderParameter_Callback";
-  getShaderParameter_Callback_1_(mthis, __arg_0) => getShaderParameter_Callback_1(mthis, __arg_0);
+  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniform4f", [__arg_0, __arg_1, __arg_2]);
 
-  static getShaderParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderParameter_Callback";
-  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => getShaderParameter_Callback_2(mthis, __arg_0, __arg_1);
+  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getShaderParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderParameter_Callback";
-  getShaderParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("uniform4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static getShaderParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getShaderParameter_Callback";
-  getShaderParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getShaderParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  uniform4fv_Callback_0_(mthis) => mthis.callMethod("uniform4fv", []);
 
-  static getShaderPrecisionFormat_Callback_0(mthis) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
-  getShaderPrecisionFormat_Callback_0_(mthis) => getShaderPrecisionFormat_Callback_0(mthis);
+  uniform4fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform4fv", [__arg_0]);
 
-  static getShaderPrecisionFormat_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
-  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => getShaderPrecisionFormat_Callback_1(mthis, __arg_0);
+  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform4fv", [__arg_0, __arg_1]);
 
-  static getShaderPrecisionFormat_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
-  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => getShaderPrecisionFormat_Callback_2(mthis, __arg_0, __arg_1);
+  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniform4i", [__arg_0, __arg_1, __arg_2]);
 
-  static getShaderPrecisionFormat_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
-  getShaderPrecisionFormat_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderPrecisionFormat_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getShaderPrecisionFormat_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
-  getShaderPrecisionFormat_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getShaderPrecisionFormat_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("uniform4i", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static getShaderSource_Callback_0(mthis) native "WebGLRenderingContext_getShaderSource_Callback";
-  getShaderSource_Callback_0_(mthis) => getShaderSource_Callback_0(mthis);
+  uniform4iv_Callback_0_(mthis) => mthis.callMethod("uniform4iv", []);
 
-  static getShaderSource_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderSource_Callback";
-  getShaderSource_Callback_1_(mthis, __arg_0) => getShaderSource_Callback_1(mthis, __arg_0);
+  uniform4iv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniform4iv", [__arg_0]);
 
-  static getShaderSource_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderSource_Callback";
-  getShaderSource_Callback_2_(mthis, __arg_0, __arg_1) => getShaderSource_Callback_2(mthis, __arg_0, __arg_1);
+  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniform4iv", [__arg_0, __arg_1]);
 
-  static getShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderSource_Callback";
-  getShaderSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniformMatrix2fv", [__arg_0]);
 
-  static getSupportedExtensions_Callback_0(mthis) native "WebGLRenderingContext_getSupportedExtensions_Callback";
-  getSupportedExtensions_Callback_0_(mthis) => getSupportedExtensions_Callback_0(mthis);
+  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniformMatrix2fv", [__arg_0, __arg_1]);
 
-  static getSupportedExtensions_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getSupportedExtensions_Callback";
-  getSupportedExtensions_Callback_1_(mthis, __arg_0) => getSupportedExtensions_Callback_1(mthis, __arg_0);
-
-  static getSupportedExtensions_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getSupportedExtensions_Callback";
-  getSupportedExtensions_Callback_2_(mthis, __arg_0, __arg_1) => getSupportedExtensions_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getTexParameter_Callback_0(mthis) native "WebGLRenderingContext_getTexParameter_Callback";
-  getTexParameter_Callback_0_(mthis) => getTexParameter_Callback_0(mthis);
-
-  static getTexParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getTexParameter_Callback";
-  getTexParameter_Callback_1_(mthis, __arg_0) => getTexParameter_Callback_1(mthis, __arg_0);
-
-  static getTexParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getTexParameter_Callback";
-  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => getTexParameter_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getTexParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getTexParameter_Callback";
-  getTexParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTexParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getTexParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getTexParameter_Callback";
-  getTexParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getTexParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getUniformLocation_Callback_0(mthis) native "WebGLRenderingContext_getUniformLocation_Callback";
-  getUniformLocation_Callback_0_(mthis) => getUniformLocation_Callback_0(mthis);
-
-  static getUniformLocation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getUniformLocation_Callback";
-  getUniformLocation_Callback_1_(mthis, __arg_0) => getUniformLocation_Callback_1(mthis, __arg_0);
-
-  static getUniformLocation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getUniformLocation_Callback";
-  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => getUniformLocation_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getUniformLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getUniformLocation_Callback";
-  getUniformLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getUniformLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getUniformLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getUniformLocation_Callback";
-  getUniformLocation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getUniformLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getUniform_Callback_0(mthis) native "WebGLRenderingContext_getUniform_Callback";
-  getUniform_Callback_0_(mthis) => getUniform_Callback_0(mthis);
-
-  static getUniform_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getUniform_Callback";
-  getUniform_Callback_1_(mthis, __arg_0) => getUniform_Callback_1(mthis, __arg_0);
-
-  static getUniform_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getUniform_Callback";
-  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => getUniform_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getUniform_Callback";
-  getUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getUniform_Callback";
-  getUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getVertexAttribOffset_Callback_0(mthis) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
-  getVertexAttribOffset_Callback_0_(mthis) => getVertexAttribOffset_Callback_0(mthis);
-
-  static getVertexAttribOffset_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
-  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => getVertexAttribOffset_Callback_1(mthis, __arg_0);
-
-  static getVertexAttribOffset_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
-  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => getVertexAttribOffset_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getVertexAttribOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
-  getVertexAttribOffset_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getVertexAttribOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getVertexAttribOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
-  getVertexAttribOffset_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getVertexAttribOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static getVertexAttrib_Callback_0(mthis) native "WebGLRenderingContext_getVertexAttrib_Callback";
-  getVertexAttrib_Callback_0_(mthis) => getVertexAttrib_Callback_0(mthis);
-
-  static getVertexAttrib_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getVertexAttrib_Callback";
-  getVertexAttrib_Callback_1_(mthis, __arg_0) => getVertexAttrib_Callback_1(mthis, __arg_0);
-
-  static getVertexAttrib_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getVertexAttrib_Callback";
-  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => getVertexAttrib_Callback_2(mthis, __arg_0, __arg_1);
-
-  static getVertexAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getVertexAttrib_Callback";
-  getVertexAttrib_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getVertexAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static getVertexAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getVertexAttrib_Callback";
-  getVertexAttrib_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getVertexAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static hint_Callback_0(mthis) native "WebGLRenderingContext_hint_Callback";
-  hint_Callback_0_(mthis) => hint_Callback_0(mthis);
-
-  static hint_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_hint_Callback";
-  hint_Callback_1_(mthis, __arg_0) => hint_Callback_1(mthis, __arg_0);
-
-  static hint_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_hint_Callback";
-  hint_Callback_2_(mthis, __arg_0, __arg_1) => hint_Callback_2(mthis, __arg_0, __arg_1);
-
-  static hint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_hint_Callback";
-  hint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static hint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_hint_Callback";
-  hint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => hint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static isBuffer_Callback_0(mthis) native "WebGLRenderingContext_isBuffer_Callback";
-  isBuffer_Callback_0_(mthis) => isBuffer_Callback_0(mthis);
-
-  static isBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isBuffer_Callback";
-  isBuffer_Callback_1_(mthis, __arg_0) => isBuffer_Callback_1(mthis, __arg_0);
-
-  static isBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isBuffer_Callback";
-  isBuffer_Callback_2_(mthis, __arg_0, __arg_1) => isBuffer_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isBuffer_Callback";
-  isBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isContextLost_Callback_0(mthis) native "WebGLRenderingContext_isContextLost_Callback";
-  isContextLost_Callback_0_(mthis) => isContextLost_Callback_0(mthis);
-
-  static isContextLost_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isContextLost_Callback";
-  isContextLost_Callback_1_(mthis, __arg_0) => isContextLost_Callback_1(mthis, __arg_0);
-
-  static isContextLost_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isContextLost_Callback";
-  isContextLost_Callback_2_(mthis, __arg_0, __arg_1) => isContextLost_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isEnabled_Callback_0(mthis) native "WebGLRenderingContext_isEnabled_Callback";
-  isEnabled_Callback_0_(mthis) => isEnabled_Callback_0(mthis);
-
-  static isEnabled_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isEnabled_Callback";
-  isEnabled_Callback_1_(mthis, __arg_0) => isEnabled_Callback_1(mthis, __arg_0);
-
-  static isEnabled_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isEnabled_Callback";
-  isEnabled_Callback_2_(mthis, __arg_0, __arg_1) => isEnabled_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isEnabled_Callback";
-  isEnabled_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_isFramebuffer_Callback";
-  isFramebuffer_Callback_0_(mthis) => isFramebuffer_Callback_0(mthis);
-
-  static isFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isFramebuffer_Callback";
-  isFramebuffer_Callback_1_(mthis, __arg_0) => isFramebuffer_Callback_1(mthis, __arg_0);
-
-  static isFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isFramebuffer_Callback";
-  isFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => isFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isFramebuffer_Callback";
-  isFramebuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isProgram_Callback_0(mthis) native "WebGLRenderingContext_isProgram_Callback";
-  isProgram_Callback_0_(mthis) => isProgram_Callback_0(mthis);
-
-  static isProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isProgram_Callback";
-  isProgram_Callback_1_(mthis, __arg_0) => isProgram_Callback_1(mthis, __arg_0);
-
-  static isProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isProgram_Callback";
-  isProgram_Callback_2_(mthis, __arg_0, __arg_1) => isProgram_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isProgram_Callback";
-  isProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_isRenderbuffer_Callback";
-  isRenderbuffer_Callback_0_(mthis) => isRenderbuffer_Callback_0(mthis);
-
-  static isRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isRenderbuffer_Callback";
-  isRenderbuffer_Callback_1_(mthis, __arg_0) => isRenderbuffer_Callback_1(mthis, __arg_0);
-
-  static isRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isRenderbuffer_Callback";
-  isRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => isRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isRenderbuffer_Callback";
-  isRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isShader_Callback_0(mthis) native "WebGLRenderingContext_isShader_Callback";
-  isShader_Callback_0_(mthis) => isShader_Callback_0(mthis);
-
-  static isShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isShader_Callback";
-  isShader_Callback_1_(mthis, __arg_0) => isShader_Callback_1(mthis, __arg_0);
-
-  static isShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isShader_Callback";
-  isShader_Callback_2_(mthis, __arg_0, __arg_1) => isShader_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isShader_Callback";
-  isShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static isTexture_Callback_0(mthis) native "WebGLRenderingContext_isTexture_Callback";
-  isTexture_Callback_0_(mthis) => isTexture_Callback_0(mthis);
-
-  static isTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isTexture_Callback";
-  isTexture_Callback_1_(mthis, __arg_0) => isTexture_Callback_1(mthis, __arg_0);
-
-  static isTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isTexture_Callback";
-  isTexture_Callback_2_(mthis, __arg_0, __arg_1) => isTexture_Callback_2(mthis, __arg_0, __arg_1);
-
-  static isTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isTexture_Callback";
-  isTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static lineWidth_Callback_0(mthis) native "WebGLRenderingContext_lineWidth_Callback";
-  lineWidth_Callback_0_(mthis) => lineWidth_Callback_0(mthis);
-
-  static lineWidth_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_lineWidth_Callback";
-  lineWidth_Callback_1_(mthis, __arg_0) => lineWidth_Callback_1(mthis, __arg_0);
-
-  static lineWidth_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_lineWidth_Callback";
-  lineWidth_Callback_2_(mthis, __arg_0, __arg_1) => lineWidth_Callback_2(mthis, __arg_0, __arg_1);
-
-  static lineWidth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_lineWidth_Callback";
-  lineWidth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lineWidth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static linkProgram_Callback_0(mthis) native "WebGLRenderingContext_linkProgram_Callback";
-  linkProgram_Callback_0_(mthis) => linkProgram_Callback_0(mthis);
-
-  static linkProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_linkProgram_Callback";
-  linkProgram_Callback_1_(mthis, __arg_0) => linkProgram_Callback_1(mthis, __arg_0);
-
-  static linkProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_linkProgram_Callback";
-  linkProgram_Callback_2_(mthis, __arg_0, __arg_1) => linkProgram_Callback_2(mthis, __arg_0, __arg_1);
-
-  static linkProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_linkProgram_Callback";
-  linkProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => linkProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static pixelStorei_Callback_0(mthis) native "WebGLRenderingContext_pixelStorei_Callback";
-  pixelStorei_Callback_0_(mthis) => pixelStorei_Callback_0(mthis);
-
-  static pixelStorei_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_pixelStorei_Callback";
-  pixelStorei_Callback_1_(mthis, __arg_0) => pixelStorei_Callback_1(mthis, __arg_0);
-
-  static pixelStorei_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_pixelStorei_Callback";
-  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => pixelStorei_Callback_2(mthis, __arg_0, __arg_1);
-
-  static pixelStorei_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_pixelStorei_Callback";
-  pixelStorei_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => pixelStorei_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static pixelStorei_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_pixelStorei_Callback";
-  pixelStorei_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => pixelStorei_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static polygonOffset_Callback_0(mthis) native "WebGLRenderingContext_polygonOffset_Callback";
-  polygonOffset_Callback_0_(mthis) => polygonOffset_Callback_0(mthis);
-
-  static polygonOffset_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_polygonOffset_Callback";
-  polygonOffset_Callback_1_(mthis, __arg_0) => polygonOffset_Callback_1(mthis, __arg_0);
-
-  static polygonOffset_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_polygonOffset_Callback";
-  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => polygonOffset_Callback_2(mthis, __arg_0, __arg_1);
-
-  static polygonOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_polygonOffset_Callback";
-  polygonOffset_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => polygonOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static polygonOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_polygonOffset_Callback";
-  polygonOffset_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => polygonOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static readPixels_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_readPixels_Callback";
-  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => readPixels_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static readPixels_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_readPixels_Callback";
-  readPixels_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => readPixels_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static readPixels_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_readPixels_Callback";
-  readPixels_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => readPixels_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static readPixels_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_readPixels_Callback";
-  readPixels_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => readPixels_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static readPixels_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_readPixels_Callback";
-  readPixels_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => readPixels_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
-
-  static renderbufferStorage_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_renderbufferStorage_Callback";
-  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => renderbufferStorage_Callback_2(mthis, __arg_0, __arg_1);
-
-  static renderbufferStorage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_renderbufferStorage_Callback";
-  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => renderbufferStorage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static renderbufferStorage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_renderbufferStorage_Callback";
-  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => renderbufferStorage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static renderbufferStorage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_renderbufferStorage_Callback";
-  renderbufferStorage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => renderbufferStorage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static renderbufferStorage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_renderbufferStorage_Callback";
-  renderbufferStorage_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => renderbufferStorage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static sampleCoverage_Callback_0(mthis) native "WebGLRenderingContext_sampleCoverage_Callback";
-  sampleCoverage_Callback_0_(mthis) => sampleCoverage_Callback_0(mthis);
-
-  static sampleCoverage_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_sampleCoverage_Callback";
-  sampleCoverage_Callback_1_(mthis, __arg_0) => sampleCoverage_Callback_1(mthis, __arg_0);
-
-  static sampleCoverage_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_sampleCoverage_Callback";
-  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => sampleCoverage_Callback_2(mthis, __arg_0, __arg_1);
-
-  static sampleCoverage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_sampleCoverage_Callback";
-  sampleCoverage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sampleCoverage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static sampleCoverage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_sampleCoverage_Callback";
-  sampleCoverage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => sampleCoverage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static scissor_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_scissor_Callback";
-  scissor_Callback_2_(mthis, __arg_0, __arg_1) => scissor_Callback_2(mthis, __arg_0, __arg_1);
-
-  static scissor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_scissor_Callback";
-  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scissor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static scissor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_scissor_Callback";
-  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scissor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static scissor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_scissor_Callback";
-  scissor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scissor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static scissor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_scissor_Callback";
-  scissor_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => scissor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static shaderSource_Callback_0(mthis) native "WebGLRenderingContext_shaderSource_Callback";
-  shaderSource_Callback_0_(mthis) => shaderSource_Callback_0(mthis);
-
-  static shaderSource_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_shaderSource_Callback";
-  shaderSource_Callback_1_(mthis, __arg_0) => shaderSource_Callback_1(mthis, __arg_0);
-
-  static shaderSource_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_shaderSource_Callback";
-  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => shaderSource_Callback_2(mthis, __arg_0, __arg_1);
-
-  static shaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_shaderSource_Callback";
-  shaderSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => shaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static shaderSource_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_shaderSource_Callback";
-  shaderSource_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => shaderSource_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static stencilFuncSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
-  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => stencilFuncSeparate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stencilFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
-  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stencilFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
-  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static stencilFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
-  stencilFuncSeparate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static stencilFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
-  stencilFuncSeparate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => stencilFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static stencilFunc_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilFunc_Callback";
-  stencilFunc_Callback_1_(mthis, __arg_0) => stencilFunc_Callback_1(mthis, __arg_0);
-
-  static stencilFunc_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilFunc_Callback";
-  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => stencilFunc_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stencilFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilFunc_Callback";
-  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stencilFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilFunc_Callback";
-  stencilFunc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static stencilFunc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilFunc_Callback";
-  stencilFunc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilFunc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static stencilMaskSeparate_Callback_0(mthis) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
-  stencilMaskSeparate_Callback_0_(mthis) => stencilMaskSeparate_Callback_0(mthis);
-
-  static stencilMaskSeparate_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
-  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => stencilMaskSeparate_Callback_1(mthis, __arg_0);
-
-  static stencilMaskSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
-  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => stencilMaskSeparate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stencilMaskSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
-  stencilMaskSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilMaskSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stencilMaskSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
-  stencilMaskSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilMaskSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static stencilMask_Callback_0(mthis) native "WebGLRenderingContext_stencilMask_Callback";
-  stencilMask_Callback_0_(mthis) => stencilMask_Callback_0(mthis);
-
-  static stencilMask_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilMask_Callback";
-  stencilMask_Callback_1_(mthis, __arg_0) => stencilMask_Callback_1(mthis, __arg_0);
-
-  static stencilMask_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilMask_Callback";
-  stencilMask_Callback_2_(mthis, __arg_0, __arg_1) => stencilMask_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stencilMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilMask_Callback";
-  stencilMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stencilOpSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilOpSeparate_Callback";
-  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => stencilOpSeparate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stencilOpSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilOpSeparate_Callback";
-  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilOpSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stencilOpSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilOpSeparate_Callback";
-  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilOpSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static stencilOpSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilOpSeparate_Callback";
-  stencilOpSeparate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilOpSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static stencilOpSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_stencilOpSeparate_Callback";
-  stencilOpSeparate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => stencilOpSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static stencilOp_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilOp_Callback";
-  stencilOp_Callback_1_(mthis, __arg_0) => stencilOp_Callback_1(mthis, __arg_0);
-
-  static stencilOp_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilOp_Callback";
-  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => stencilOp_Callback_2(mthis, __arg_0, __arg_1);
-
-  static stencilOp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilOp_Callback";
-  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilOp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static stencilOp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilOp_Callback";
-  stencilOp_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilOp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static stencilOp_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilOp_Callback";
-  stencilOp_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilOp_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static texImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => texImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
-
-  static texImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => texImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
-
-  static texImage2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => texImage2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static texImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static texImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => texImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static texImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => texImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static texImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => texImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static texImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_texImage2D_Callback";
-  texImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => texImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
-
-  static texParameterf_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_texParameterf_Callback";
-  texParameterf_Callback_1_(mthis, __arg_0) => texParameterf_Callback_1(mthis, __arg_0);
-
-  static texParameterf_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_texParameterf_Callback";
-  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => texParameterf_Callback_2(mthis, __arg_0, __arg_1);
-
-  static texParameterf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_texParameterf_Callback";
-  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => texParameterf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static texParameterf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_texParameterf_Callback";
-  texParameterf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => texParameterf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static texParameterf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texParameterf_Callback";
-  texParameterf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texParameterf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static texParameteri_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_texParameteri_Callback";
-  texParameteri_Callback_1_(mthis, __arg_0) => texParameteri_Callback_1(mthis, __arg_0);
-
-  static texParameteri_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_texParameteri_Callback";
-  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => texParameteri_Callback_2(mthis, __arg_0, __arg_1);
-
-  static texParameteri_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_texParameteri_Callback";
-  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => texParameteri_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static texParameteri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_texParameteri_Callback";
-  texParameteri_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => texParameteri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static texParameteri_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texParameteri_Callback";
-  texParameteri_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texParameteri_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static texSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_texSubImage2D_Callback";
-  texSubImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => texSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
-
-  static texSubImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "WebGLRenderingContext_texSubImage2D_Callback";
-  texSubImage2D_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => texSubImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
-
-  static texSubImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texSubImage2D_Callback";
-  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texSubImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static texSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_texSubImage2D_Callback";
-  texSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => texSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static texSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_texSubImage2D_Callback";
-  texSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => texSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static texSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_texSubImage2D_Callback";
-  texSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => texSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
-
-  static texSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_texSubImage2D_Callback";
-  texSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => texSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
-
-  static uniform1f_Callback_0(mthis) native "WebGLRenderingContext_uniform1f_Callback";
-  uniform1f_Callback_0_(mthis) => uniform1f_Callback_0(mthis);
-
-  static uniform1f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1f_Callback";
-  uniform1f_Callback_1_(mthis, __arg_0) => uniform1f_Callback_1(mthis, __arg_0);
-
-  static uniform1f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1f_Callback";
-  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => uniform1f_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1f_Callback";
-  uniform1f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1f_Callback";
-  uniform1f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform1fv_Callback_0(mthis) native "WebGLRenderingContext_uniform1fv_Callback";
-  uniform1fv_Callback_0_(mthis) => uniform1fv_Callback_0(mthis);
-
-  static uniform1fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1fv_Callback";
-  uniform1fv_Callback_1_(mthis, __arg_0) => uniform1fv_Callback_1(mthis, __arg_0);
-
-  static uniform1fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1fv_Callback";
-  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform1fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1fv_Callback";
-  uniform1fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1fv_Callback";
-  uniform1fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform1i_Callback_0(mthis) native "WebGLRenderingContext_uniform1i_Callback";
-  uniform1i_Callback_0_(mthis) => uniform1i_Callback_0(mthis);
-
-  static uniform1i_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1i_Callback";
-  uniform1i_Callback_1_(mthis, __arg_0) => uniform1i_Callback_1(mthis, __arg_0);
-
-  static uniform1i_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1i_Callback";
-  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => uniform1i_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform1i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1i_Callback";
-  uniform1i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform1i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1i_Callback";
-  uniform1i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform1iv_Callback_0(mthis) native "WebGLRenderingContext_uniform1iv_Callback";
-  uniform1iv_Callback_0_(mthis) => uniform1iv_Callback_0(mthis);
-
-  static uniform1iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1iv_Callback";
-  uniform1iv_Callback_1_(mthis, __arg_0) => uniform1iv_Callback_1(mthis, __arg_0);
-
-  static uniform1iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1iv_Callback";
-  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform1iv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform1iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1iv_Callback";
-  uniform1iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform1iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1iv_Callback";
-  uniform1iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform2f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2f_Callback";
-  uniform2f_Callback_1_(mthis, __arg_0) => uniform2f_Callback_1(mthis, __arg_0);
-
-  static uniform2f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2f_Callback";
-  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => uniform2f_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2f_Callback";
-  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2f_Callback";
-  uniform2f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform2f_Callback";
-  uniform2f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniform2fv_Callback_0(mthis) native "WebGLRenderingContext_uniform2fv_Callback";
-  uniform2fv_Callback_0_(mthis) => uniform2fv_Callback_0(mthis);
-
-  static uniform2fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2fv_Callback";
-  uniform2fv_Callback_1_(mthis, __arg_0) => uniform2fv_Callback_1(mthis, __arg_0);
-
-  static uniform2fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2fv_Callback";
-  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform2fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2fv_Callback";
-  uniform2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2fv_Callback";
-  uniform2fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform2i_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2i_Callback";
-  uniform2i_Callback_1_(mthis, __arg_0) => uniform2i_Callback_1(mthis, __arg_0);
-
-  static uniform2i_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2i_Callback";
-  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => uniform2i_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform2i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2i_Callback";
-  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform2i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2i_Callback";
-  uniform2i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform2i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform2i_Callback";
-  uniform2i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform2i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniform2iv_Callback_0(mthis) native "WebGLRenderingContext_uniform2iv_Callback";
-  uniform2iv_Callback_0_(mthis) => uniform2iv_Callback_0(mthis);
-
-  static uniform2iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2iv_Callback";
-  uniform2iv_Callback_1_(mthis, __arg_0) => uniform2iv_Callback_1(mthis, __arg_0);
-
-  static uniform2iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2iv_Callback";
-  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform2iv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform2iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2iv_Callback";
-  uniform2iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform2iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2iv_Callback";
-  uniform2iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform3f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3f_Callback";
-  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => uniform3f_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3f_Callback";
-  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3f_Callback";
-  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform3f_Callback";
-  uniform3f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniform3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform3f_Callback";
-  uniform3f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static uniform3fv_Callback_0(mthis) native "WebGLRenderingContext_uniform3fv_Callback";
-  uniform3fv_Callback_0_(mthis) => uniform3fv_Callback_0(mthis);
-
-  static uniform3fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform3fv_Callback";
-  uniform3fv_Callback_1_(mthis, __arg_0) => uniform3fv_Callback_1(mthis, __arg_0);
-
-  static uniform3fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3fv_Callback";
-  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform3fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3fv_Callback";
-  uniform3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3fv_Callback";
-  uniform3fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform3i_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3i_Callback";
-  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => uniform3i_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform3i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3i_Callback";
-  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform3i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3i_Callback";
-  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform3i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform3i_Callback";
-  uniform3i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform3i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniform3i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform3i_Callback";
-  uniform3i_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform3i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static uniform3iv_Callback_0(mthis) native "WebGLRenderingContext_uniform3iv_Callback";
-  uniform3iv_Callback_0_(mthis) => uniform3iv_Callback_0(mthis);
-
-  static uniform3iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform3iv_Callback";
-  uniform3iv_Callback_1_(mthis, __arg_0) => uniform3iv_Callback_1(mthis, __arg_0);
-
-  static uniform3iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3iv_Callback";
-  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform3iv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform3iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3iv_Callback";
-  uniform3iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform3iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3iv_Callback";
-  uniform3iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4f_Callback";
-  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4f_Callback";
-  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform4f_Callback";
-  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniform4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform4f_Callback";
-  uniform4f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static uniform4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_uniform4f_Callback";
-  uniform4f_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => uniform4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static uniform4fv_Callback_0(mthis) native "WebGLRenderingContext_uniform4fv_Callback";
-  uniform4fv_Callback_0_(mthis) => uniform4fv_Callback_0(mthis);
-
-  static uniform4fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform4fv_Callback";
-  uniform4fv_Callback_1_(mthis, __arg_0) => uniform4fv_Callback_1(mthis, __arg_0);
-
-  static uniform4fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform4fv_Callback";
-  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform4fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4fv_Callback";
-  uniform4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4fv_Callback";
-  uniform4fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform4i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4i_Callback";
-  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform4i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4i_Callback";
-  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniform4i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform4i_Callback";
-  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform4i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniform4i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform4i_Callback";
-  uniform4i_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform4i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static uniform4i_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_uniform4i_Callback";
-  uniform4i_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => uniform4i_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
-
-  static uniform4iv_Callback_0(mthis) native "WebGLRenderingContext_uniform4iv_Callback";
-  uniform4iv_Callback_0_(mthis) => uniform4iv_Callback_0(mthis);
-
-  static uniform4iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform4iv_Callback";
-  uniform4iv_Callback_1_(mthis, __arg_0) => uniform4iv_Callback_1(mthis, __arg_0);
-
-  static uniform4iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform4iv_Callback";
-  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform4iv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniform4iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4iv_Callback";
-  uniform4iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniform4iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4iv_Callback";
-  uniform4iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniformMatrix2fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
-  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => uniformMatrix2fv_Callback_1(mthis, __arg_0);
-
-  static uniformMatrix2fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
-  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => uniformMatrix2fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniformMatrix2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
-  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniformMatrix2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniformMatrix2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
-  uniformMatrix2fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniformMatrix2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniformMatrix2fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
-  uniformMatrix2fv_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniformMatrix2fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniformMatrix3fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
-  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => uniformMatrix3fv_Callback_1(mthis, __arg_0);
-
-  static uniformMatrix3fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
-  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => uniformMatrix3fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniformMatrix3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
-  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniformMatrix3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniformMatrix3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
-  uniformMatrix3fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniformMatrix3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniformMatrix3fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
-  uniformMatrix3fv_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniformMatrix3fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static uniformMatrix4fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
-  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => uniformMatrix4fv_Callback_1(mthis, __arg_0);
-
-  static uniformMatrix4fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
-  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => uniformMatrix4fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static uniformMatrix4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
-  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniformMatrix4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static uniformMatrix4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
-  uniformMatrix4fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniformMatrix4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static uniformMatrix4fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
-  uniformMatrix4fv_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniformMatrix4fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static useProgram_Callback_0(mthis) native "WebGLRenderingContext_useProgram_Callback";
-  useProgram_Callback_0_(mthis) => useProgram_Callback_0(mthis);
-
-  static useProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_useProgram_Callback";
-  useProgram_Callback_1_(mthis, __arg_0) => useProgram_Callback_1(mthis, __arg_0);
-
-  static useProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_useProgram_Callback";
-  useProgram_Callback_2_(mthis, __arg_0, __arg_1) => useProgram_Callback_2(mthis, __arg_0, __arg_1);
-
-  static useProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_useProgram_Callback";
-  useProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => useProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static validateProgram_Callback_0(mthis) native "WebGLRenderingContext_validateProgram_Callback";
-  validateProgram_Callback_0_(mthis) => validateProgram_Callback_0(mthis);
-
-  static validateProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_validateProgram_Callback";
-  validateProgram_Callback_1_(mthis, __arg_0) => validateProgram_Callback_1(mthis, __arg_0);
-
-  static validateProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_validateProgram_Callback";
-  validateProgram_Callback_2_(mthis, __arg_0, __arg_1) => validateProgram_Callback_2(mthis, __arg_0, __arg_1);
-
-  static validateProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_validateProgram_Callback";
-  validateProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => validateProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static vertexAttrib1f_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib1f_Callback";
-  vertexAttrib1f_Callback_0_(mthis) => vertexAttrib1f_Callback_0(mthis);
-
-  static vertexAttrib1f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib1f_Callback";
-  vertexAttrib1f_Callback_1_(mthis, __arg_0) => vertexAttrib1f_Callback_1(mthis, __arg_0);
-
-  static vertexAttrib1f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib1f_Callback";
-  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib1f_Callback_2(mthis, __arg_0, __arg_1);
-
-  static vertexAttrib1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib1f_Callback";
-  vertexAttrib1f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static vertexAttrib1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib1f_Callback";
-  vertexAttrib1f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static vertexAttrib1fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
-  vertexAttrib1fv_Callback_0_(mthis) => vertexAttrib1fv_Callback_0(mthis);
-
-  static vertexAttrib1fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
-  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => vertexAttrib1fv_Callback_1(mthis, __arg_0);
-
-  static vertexAttrib1fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
-  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib1fv_Callback_2(mthis, __arg_0, __arg_1);
-
-  static vertexAttrib1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
-  vertexAttrib1fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static vertexAttrib1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
-  vertexAttrib1fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniformMatrix2fv", [__arg_0, __arg_1, __arg_2]);
 
-  static vertexAttrib2f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib2f_Callback";
-  vertexAttrib2f_Callback_1_(mthis, __arg_0) => vertexAttrib2f_Callback_1(mthis, __arg_0);
+  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniformMatrix3fv", [__arg_0]);
 
-  static vertexAttrib2f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib2f_Callback";
-  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib2f_Callback_2(mthis, __arg_0, __arg_1);
+  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniformMatrix3fv", [__arg_0, __arg_1]);
 
-  static vertexAttrib2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib2f_Callback";
-  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniformMatrix3fv", [__arg_0, __arg_1, __arg_2]);
 
-  static vertexAttrib2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib2f_Callback";
-  vertexAttrib2f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("uniformMatrix4fv", [__arg_0]);
 
-  static vertexAttrib2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttrib2f_Callback";
-  vertexAttrib2f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttrib2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("uniformMatrix4fv", [__arg_0, __arg_1]);
 
-  static vertexAttrib2fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
-  vertexAttrib2fv_Callback_0_(mthis) => vertexAttrib2fv_Callback_0(mthis);
+  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("uniformMatrix4fv", [__arg_0, __arg_1, __arg_2]);
 
-  static vertexAttrib2fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
-  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => vertexAttrib2fv_Callback_1(mthis, __arg_0);
+  useProgram_Callback_0_(mthis) => mthis.callMethod("useProgram", []);
 
-  static vertexAttrib2fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
-  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib2fv_Callback_2(mthis, __arg_0, __arg_1);
+  useProgram_Callback_1_(mthis, __arg_0) => mthis.callMethod("useProgram", [__arg_0]);
 
-  static vertexAttrib2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
-  vertexAttrib2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  validateProgram_Callback_0_(mthis) => mthis.callMethod("validateProgram", []);
 
-  static vertexAttrib2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
-  vertexAttrib2fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  validateProgram_Callback_1_(mthis, __arg_0) => mthis.callMethod("validateProgram", [__arg_0]);
 
-  static vertexAttrib3f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib3f_Callback";
-  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib3f_Callback_2(mthis, __arg_0, __arg_1);
+  vertexAttrib1f_Callback_0_(mthis) => mthis.callMethod("vertexAttrib1f", []);
 
-  static vertexAttrib3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib3f_Callback";
-  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  vertexAttrib1f_Callback_1_(mthis, __arg_0) => mthis.callMethod("vertexAttrib1f", [__arg_0]);
 
-  static vertexAttrib3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib3f_Callback";
-  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttrib1f", [__arg_0, __arg_1]);
 
-  static vertexAttrib3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttrib3f_Callback";
-  vertexAttrib3f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttrib3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  vertexAttrib1fv_Callback_0_(mthis) => mthis.callMethod("vertexAttrib1fv", []);
 
-  static vertexAttrib3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_vertexAttrib3f_Callback";
-  vertexAttrib3f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => vertexAttrib3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("vertexAttrib1fv", [__arg_0]);
 
-  static vertexAttrib3fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
-  vertexAttrib3fv_Callback_0_(mthis) => vertexAttrib3fv_Callback_0(mthis);
+  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttrib1fv", [__arg_0, __arg_1]);
 
-  static vertexAttrib3fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
-  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => vertexAttrib3fv_Callback_1(mthis, __arg_0);
+  vertexAttrib2f_Callback_1_(mthis, __arg_0) => mthis.callMethod("vertexAttrib2f", [__arg_0]);
 
-  static vertexAttrib3fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
-  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib3fv_Callback_2(mthis, __arg_0, __arg_1);
+  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttrib2f", [__arg_0, __arg_1]);
 
-  static vertexAttrib3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
-  vertexAttrib3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("vertexAttrib2f", [__arg_0, __arg_1, __arg_2]);
 
-  static vertexAttrib3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
-  vertexAttrib3fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  vertexAttrib2fv_Callback_0_(mthis) => mthis.callMethod("vertexAttrib2fv", []);
 
-  static vertexAttrib4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib4f_Callback";
-  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("vertexAttrib2fv", [__arg_0]);
 
-  static vertexAttrib4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib4f_Callback";
-  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttrib2fv", [__arg_0, __arg_1]);
 
-  static vertexAttrib4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttrib4f_Callback";
-  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttrib4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttrib3f", [__arg_0, __arg_1]);
 
-  static vertexAttrib4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_vertexAttrib4f_Callback";
-  vertexAttrib4f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => vertexAttrib4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("vertexAttrib3f", [__arg_0, __arg_1, __arg_2]);
 
-  static vertexAttrib4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_vertexAttrib4f_Callback";
-  vertexAttrib4f_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => vertexAttrib4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("vertexAttrib3f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static vertexAttrib4fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
-  vertexAttrib4fv_Callback_0_(mthis) => vertexAttrib4fv_Callback_0(mthis);
+  vertexAttrib3fv_Callback_0_(mthis) => mthis.callMethod("vertexAttrib3fv", []);
 
-  static vertexAttrib4fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
-  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => vertexAttrib4fv_Callback_1(mthis, __arg_0);
+  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("vertexAttrib3fv", [__arg_0]);
 
-  static vertexAttrib4fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
-  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib4fv_Callback_2(mthis, __arg_0, __arg_1);
+  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttrib3fv", [__arg_0, __arg_1]);
 
-  static vertexAttrib4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
-  vertexAttrib4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("vertexAttrib4f", [__arg_0, __arg_1, __arg_2]);
 
-  static vertexAttrib4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
-  vertexAttrib4fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static vertexAttribPointer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttribPointer_Callback";
-  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttribPointer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("vertexAttrib4f", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static vertexAttribPointer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttribPointer_Callback";
-  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttribPointer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  vertexAttrib4fv_Callback_0_(mthis) => mthis.callMethod("vertexAttrib4fv", []);
 
-  static vertexAttribPointer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_vertexAttribPointer_Callback";
-  vertexAttribPointer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => vertexAttribPointer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => mthis.callMethod("vertexAttrib4fv", [__arg_0]);
 
-  static vertexAttribPointer_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_vertexAttribPointer_Callback";
-  vertexAttribPointer_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => vertexAttribPointer_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("vertexAttrib4fv", [__arg_0, __arg_1]);
 
-  static vertexAttribPointer_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_vertexAttribPointer_Callback";
-  vertexAttribPointer_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => vertexAttribPointer_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static viewport_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_viewport_Callback";
-  viewport_Callback_2_(mthis, __arg_0, __arg_1) => viewport_Callback_2(mthis, __arg_0, __arg_1);
+  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static viewport_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_viewport_Callback";
-  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => viewport_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  vertexAttribPointer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("vertexAttribPointer", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static viewport_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_viewport_Callback";
-  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => viewport_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  viewport_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("viewport", [__arg_0, __arg_1]);
 
-  static viewport_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_viewport_Callback";
-  viewport_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => viewport_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("viewport", [__arg_0, __arg_1, __arg_2]);
 
-  static viewport_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_viewport_Callback";
-  viewport_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => viewport_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("viewport", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
 }
 
@@ -28886,14 +15744,11 @@
 class BlinkWebGLShaderPrecisionFormat {
   static final instance = new BlinkWebGLShaderPrecisionFormat();
 
-  static precision_Getter(mthis) native "WebGLShaderPrecisionFormat_precision_Getter";
-  precision_Getter_(mthis) => precision_Getter(mthis);
+  precision_Getter_(mthis) => mthis["precision"];
 
-  static rangeMax_Getter(mthis) native "WebGLShaderPrecisionFormat_rangeMax_Getter";
-  rangeMax_Getter_(mthis) => rangeMax_Getter(mthis);
+  rangeMax_Getter_(mthis) => mthis["rangeMax"];
 
-  static rangeMin_Getter(mthis) native "WebGLShaderPrecisionFormat_rangeMin_Getter";
-  rangeMin_Getter_(mthis) => rangeMin_Getter(mthis);
+  rangeMin_Getter_(mthis) => mthis["rangeMin"];
 
 }
 
@@ -28915,1762 +15770,985 @@
 class BlinkWebKitAnimationEvent extends BlinkEvent {
   static final instance = new BlinkWebKitAnimationEvent();
 
-  static animationName_Getter(mthis) native "WebKitAnimationEvent_animationName_Getter";
-  animationName_Getter_(mthis) => animationName_Getter(mthis);
+  animationName_Getter_(mthis) => mthis["animationName"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "WebKitAnimationEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["WebKitAnimationEvent"], [__arg_0, __arg_1]);
 
-  static elapsedTime_Getter(mthis) native "WebKitAnimationEvent_elapsedTime_Getter";
-  elapsedTime_Getter_(mthis) => elapsedTime_Getter(mthis);
+  elapsedTime_Getter_(mthis) => mthis["elapsedTime"];
 
 }
 
 class BlinkWebKitCSSFilterRule extends BlinkCSSRule {
   static final instance = new BlinkWebKitCSSFilterRule();
 
-  static style_Getter(mthis) native "WebKitCSSFilterRule_style_Getter";
-  style_Getter_(mthis) => style_Getter(mthis);
+  style_Getter_(mthis) => mthis["style"];
 
 }
 
 class BlinkWebKitCSSFilterValue extends BlinkCSSValueList {
   static final instance = new BlinkWebKitCSSFilterValue();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "WebKitCSSFilterValue___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static operationType_Getter(mthis) native "WebKitCSSFilterValue_operationType_Getter";
-  operationType_Getter_(mthis) => operationType_Getter(mthis);
+  operationType_Getter_(mthis) => mthis["operationType"];
 
 }
 
 class BlinkWebKitCSSMatrix {
   static final instance = new BlinkWebKitCSSMatrix();
 
-  static a_Getter(mthis) native "WebKitCSSMatrix_a_Getter";
-  a_Getter_(mthis) => a_Getter(mthis);
+  a_Getter_(mthis) => mthis["a"];
 
-  static a_Setter(mthis, __arg_0) native "WebKitCSSMatrix_a_Setter";
-  a_Setter_(mthis, __arg_0) => a_Setter(mthis, __arg_0);
+  a_Setter_(mthis, __arg_0) => mthis["a"] = __arg_0;
 
-  static b_Getter(mthis) native "WebKitCSSMatrix_b_Getter";
-  b_Getter_(mthis) => b_Getter(mthis);
+  b_Getter_(mthis) => mthis["b"];
 
-  static b_Setter(mthis, __arg_0) native "WebKitCSSMatrix_b_Setter";
-  b_Setter_(mthis, __arg_0) => b_Setter(mthis, __arg_0);
+  b_Setter_(mthis, __arg_0) => mthis["b"] = __arg_0;
 
-  static c_Getter(mthis) native "WebKitCSSMatrix_c_Getter";
-  c_Getter_(mthis) => c_Getter(mthis);
+  c_Getter_(mthis) => mthis["c"];
 
-  static c_Setter(mthis, __arg_0) native "WebKitCSSMatrix_c_Setter";
-  c_Setter_(mthis, __arg_0) => c_Setter(mthis, __arg_0);
+  c_Setter_(mthis, __arg_0) => mthis["c"] = __arg_0;
 
-  static constructorCallback_0() native "WebKitCSSMatrix_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["WebKitCSSMatrix"], []);
 
-  static constructorCallback_1(__arg_0) native "WebKitCSSMatrix_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["WebKitCSSMatrix"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "WebKitCSSMatrix_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  d_Getter_(mthis) => mthis["d"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  d_Setter_(mthis, __arg_0) => mthis["d"] = __arg_0;
 
-  static d_Getter(mthis) native "WebKitCSSMatrix_d_Getter";
-  d_Getter_(mthis) => d_Getter(mthis);
+  e_Getter_(mthis) => mthis["e"];
 
-  static d_Setter(mthis, __arg_0) native "WebKitCSSMatrix_d_Setter";
-  d_Setter_(mthis, __arg_0) => d_Setter(mthis, __arg_0);
+  e_Setter_(mthis, __arg_0) => mthis["e"] = __arg_0;
 
-  static e_Getter(mthis) native "WebKitCSSMatrix_e_Getter";
-  e_Getter_(mthis) => e_Getter(mthis);
+  f_Getter_(mthis) => mthis["f"];
 
-  static e_Setter(mthis, __arg_0) native "WebKitCSSMatrix_e_Setter";
-  e_Setter_(mthis, __arg_0) => e_Setter(mthis, __arg_0);
+  f_Setter_(mthis, __arg_0) => mthis["f"] = __arg_0;
 
-  static f_Getter(mthis) native "WebKitCSSMatrix_f_Getter";
-  f_Getter_(mthis) => f_Getter(mthis);
+  inverse_Callback_0_(mthis) => mthis.callMethod("inverse", []);
 
-  static f_Setter(mthis, __arg_0) native "WebKitCSSMatrix_f_Setter";
-  f_Setter_(mthis, __arg_0) => f_Setter(mthis, __arg_0);
+  m11_Getter_(mthis) => mthis["m11"];
 
-  static inverse_Callback_0(mthis) native "WebKitCSSMatrix_inverse_Callback";
-  inverse_Callback_0_(mthis) => inverse_Callback_0(mthis);
+  m11_Setter_(mthis, __arg_0) => mthis["m11"] = __arg_0;
 
-  static inverse_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_inverse_Callback";
-  inverse_Callback_1_(mthis, __arg_0) => inverse_Callback_1(mthis, __arg_0);
+  m12_Getter_(mthis) => mthis["m12"];
 
-  static inverse_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_inverse_Callback";
-  inverse_Callback_2_(mthis, __arg_0, __arg_1) => inverse_Callback_2(mthis, __arg_0, __arg_1);
+  m12_Setter_(mthis, __arg_0) => mthis["m12"] = __arg_0;
 
-  static m11_Getter(mthis) native "WebKitCSSMatrix_m11_Getter";
-  m11_Getter_(mthis) => m11_Getter(mthis);
+  m13_Getter_(mthis) => mthis["m13"];
 
-  static m11_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m11_Setter";
-  m11_Setter_(mthis, __arg_0) => m11_Setter(mthis, __arg_0);
+  m13_Setter_(mthis, __arg_0) => mthis["m13"] = __arg_0;
 
-  static m12_Getter(mthis) native "WebKitCSSMatrix_m12_Getter";
-  m12_Getter_(mthis) => m12_Getter(mthis);
+  m14_Getter_(mthis) => mthis["m14"];
 
-  static m12_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m12_Setter";
-  m12_Setter_(mthis, __arg_0) => m12_Setter(mthis, __arg_0);
+  m14_Setter_(mthis, __arg_0) => mthis["m14"] = __arg_0;
 
-  static m13_Getter(mthis) native "WebKitCSSMatrix_m13_Getter";
-  m13_Getter_(mthis) => m13_Getter(mthis);
+  m21_Getter_(mthis) => mthis["m21"];
 
-  static m13_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m13_Setter";
-  m13_Setter_(mthis, __arg_0) => m13_Setter(mthis, __arg_0);
+  m21_Setter_(mthis, __arg_0) => mthis["m21"] = __arg_0;
 
-  static m14_Getter(mthis) native "WebKitCSSMatrix_m14_Getter";
-  m14_Getter_(mthis) => m14_Getter(mthis);
+  m22_Getter_(mthis) => mthis["m22"];
 
-  static m14_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m14_Setter";
-  m14_Setter_(mthis, __arg_0) => m14_Setter(mthis, __arg_0);
+  m22_Setter_(mthis, __arg_0) => mthis["m22"] = __arg_0;
 
-  static m21_Getter(mthis) native "WebKitCSSMatrix_m21_Getter";
-  m21_Getter_(mthis) => m21_Getter(mthis);
+  m23_Getter_(mthis) => mthis["m23"];
 
-  static m21_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m21_Setter";
-  m21_Setter_(mthis, __arg_0) => m21_Setter(mthis, __arg_0);
+  m23_Setter_(mthis, __arg_0) => mthis["m23"] = __arg_0;
 
-  static m22_Getter(mthis) native "WebKitCSSMatrix_m22_Getter";
-  m22_Getter_(mthis) => m22_Getter(mthis);
+  m24_Getter_(mthis) => mthis["m24"];
 
-  static m22_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m22_Setter";
-  m22_Setter_(mthis, __arg_0) => m22_Setter(mthis, __arg_0);
+  m24_Setter_(mthis, __arg_0) => mthis["m24"] = __arg_0;
 
-  static m23_Getter(mthis) native "WebKitCSSMatrix_m23_Getter";
-  m23_Getter_(mthis) => m23_Getter(mthis);
+  m31_Getter_(mthis) => mthis["m31"];
 
-  static m23_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m23_Setter";
-  m23_Setter_(mthis, __arg_0) => m23_Setter(mthis, __arg_0);
+  m31_Setter_(mthis, __arg_0) => mthis["m31"] = __arg_0;
 
-  static m24_Getter(mthis) native "WebKitCSSMatrix_m24_Getter";
-  m24_Getter_(mthis) => m24_Getter(mthis);
+  m32_Getter_(mthis) => mthis["m32"];
 
-  static m24_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m24_Setter";
-  m24_Setter_(mthis, __arg_0) => m24_Setter(mthis, __arg_0);
+  m32_Setter_(mthis, __arg_0) => mthis["m32"] = __arg_0;
 
-  static m31_Getter(mthis) native "WebKitCSSMatrix_m31_Getter";
-  m31_Getter_(mthis) => m31_Getter(mthis);
+  m33_Getter_(mthis) => mthis["m33"];
 
-  static m31_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m31_Setter";
-  m31_Setter_(mthis, __arg_0) => m31_Setter(mthis, __arg_0);
+  m33_Setter_(mthis, __arg_0) => mthis["m33"] = __arg_0;
 
-  static m32_Getter(mthis) native "WebKitCSSMatrix_m32_Getter";
-  m32_Getter_(mthis) => m32_Getter(mthis);
+  m34_Getter_(mthis) => mthis["m34"];
 
-  static m32_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m32_Setter";
-  m32_Setter_(mthis, __arg_0) => m32_Setter(mthis, __arg_0);
+  m34_Setter_(mthis, __arg_0) => mthis["m34"] = __arg_0;
 
-  static m33_Getter(mthis) native "WebKitCSSMatrix_m33_Getter";
-  m33_Getter_(mthis) => m33_Getter(mthis);
+  m41_Getter_(mthis) => mthis["m41"];
 
-  static m33_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m33_Setter";
-  m33_Setter_(mthis, __arg_0) => m33_Setter(mthis, __arg_0);
+  m41_Setter_(mthis, __arg_0) => mthis["m41"] = __arg_0;
 
-  static m34_Getter(mthis) native "WebKitCSSMatrix_m34_Getter";
-  m34_Getter_(mthis) => m34_Getter(mthis);
+  m42_Getter_(mthis) => mthis["m42"];
 
-  static m34_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m34_Setter";
-  m34_Setter_(mthis, __arg_0) => m34_Setter(mthis, __arg_0);
+  m42_Setter_(mthis, __arg_0) => mthis["m42"] = __arg_0;
 
-  static m41_Getter(mthis) native "WebKitCSSMatrix_m41_Getter";
-  m41_Getter_(mthis) => m41_Getter(mthis);
+  m43_Getter_(mthis) => mthis["m43"];
 
-  static m41_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m41_Setter";
-  m41_Setter_(mthis, __arg_0) => m41_Setter(mthis, __arg_0);
+  m43_Setter_(mthis, __arg_0) => mthis["m43"] = __arg_0;
 
-  static m42_Getter(mthis) native "WebKitCSSMatrix_m42_Getter";
-  m42_Getter_(mthis) => m42_Getter(mthis);
-
-  static m42_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m42_Setter";
-  m42_Setter_(mthis, __arg_0) => m42_Setter(mthis, __arg_0);
-
-  static m43_Getter(mthis) native "WebKitCSSMatrix_m43_Getter";
-  m43_Getter_(mthis) => m43_Getter(mthis);
-
-  static m43_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m43_Setter";
-  m43_Setter_(mthis, __arg_0) => m43_Setter(mthis, __arg_0);
-
-  static m44_Getter(mthis) native "WebKitCSSMatrix_m44_Getter";
-  m44_Getter_(mthis) => m44_Getter(mthis);
-
-  static m44_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m44_Setter";
-  m44_Setter_(mthis, __arg_0) => m44_Setter(mthis, __arg_0);
-
-  static multiply_Callback_0(mthis) native "WebKitCSSMatrix_multiply_Callback";
-  multiply_Callback_0_(mthis) => multiply_Callback_0(mthis);
-
-  static multiply_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_multiply_Callback";
-  multiply_Callback_1_(mthis, __arg_0) => multiply_Callback_1(mthis, __arg_0);
-
-  static multiply_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_multiply_Callback";
-  multiply_Callback_2_(mthis, __arg_0, __arg_1) => multiply_Callback_2(mthis, __arg_0, __arg_1);
-
-  static multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_multiply_Callback";
-  multiply_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rotateAxisAngle_Callback_0(mthis) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
-  rotateAxisAngle_Callback_0_(mthis) => rotateAxisAngle_Callback_0(mthis);
-
-  static rotateAxisAngle_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
-  rotateAxisAngle_Callback_1_(mthis, __arg_0) => rotateAxisAngle_Callback_1(mthis, __arg_0);
-
-  static rotateAxisAngle_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
-  rotateAxisAngle_Callback_2_(mthis, __arg_0, __arg_1) => rotateAxisAngle_Callback_2(mthis, __arg_0, __arg_1);
-
-  static rotateAxisAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
-  rotateAxisAngle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotateAxisAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static rotateAxisAngle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
-  rotateAxisAngle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rotateAxisAngle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static rotateAxisAngle_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
-  rotateAxisAngle_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rotateAxisAngle_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static rotateAxisAngle_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
-  rotateAxisAngle_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => rotateAxisAngle_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static rotate_Callback_0(mthis) native "WebKitCSSMatrix_rotate_Callback";
-  rotate_Callback_0_(mthis) => rotate_Callback_0(mthis);
-
-  static rotate_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_rotate_Callback";
-  rotate_Callback_1_(mthis, __arg_0) => rotate_Callback_1(mthis, __arg_0);
-
-  static rotate_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_rotate_Callback";
-  rotate_Callback_2_(mthis, __arg_0, __arg_1) => rotate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_rotate_Callback";
-  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  m44_Getter_(mthis) => mthis["m44"];
 
-  static rotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_rotate_Callback";
-  rotate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  m44_Setter_(mthis, __arg_0) => mthis["m44"] = __arg_0;
 
-  static rotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_rotate_Callback";
-  rotate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  multiply_Callback_0_(mthis) => mthis.callMethod("multiply", []);
 
-  static scale_Callback_0(mthis) native "WebKitCSSMatrix_scale_Callback";
-  scale_Callback_0_(mthis) => scale_Callback_0(mthis);
+  multiply_Callback_1_(mthis, __arg_0) => mthis.callMethod("multiply", [__arg_0]);
 
-  static scale_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_scale_Callback";
-  scale_Callback_1_(mthis, __arg_0) => scale_Callback_1(mthis, __arg_0);
+  rotateAxisAngle_Callback_0_(mthis) => mthis.callMethod("rotateAxisAngle", []);
 
-  static scale_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_scale_Callback";
-  scale_Callback_2_(mthis, __arg_0, __arg_1) => scale_Callback_2(mthis, __arg_0, __arg_1);
+  rotateAxisAngle_Callback_1_(mthis, __arg_0) => mthis.callMethod("rotateAxisAngle", [__arg_0]);
 
-  static scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_scale_Callback";
-  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  rotateAxisAngle_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("rotateAxisAngle", [__arg_0, __arg_1]);
 
-  static scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_scale_Callback";
-  scale_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  rotateAxisAngle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("rotateAxisAngle", [__arg_0, __arg_1, __arg_2]);
 
-  static scale_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_scale_Callback";
-  scale_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scale_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  rotateAxisAngle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("rotateAxisAngle", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static setMatrixValue_Callback_0(mthis) native "WebKitCSSMatrix_setMatrixValue_Callback";
-  setMatrixValue_Callback_0_(mthis) => setMatrixValue_Callback_0(mthis);
+  rotate_Callback_0_(mthis) => mthis.callMethod("rotate", []);
 
-  static setMatrixValue_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_setMatrixValue_Callback";
-  setMatrixValue_Callback_1_(mthis, __arg_0) => setMatrixValue_Callback_1(mthis, __arg_0);
+  rotate_Callback_1_(mthis, __arg_0) => mthis.callMethod("rotate", [__arg_0]);
 
-  static setMatrixValue_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_setMatrixValue_Callback";
-  setMatrixValue_Callback_2_(mthis, __arg_0, __arg_1) => setMatrixValue_Callback_2(mthis, __arg_0, __arg_1);
+  rotate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("rotate", [__arg_0, __arg_1]);
 
-  static setMatrixValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_setMatrixValue_Callback";
-  setMatrixValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setMatrixValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("rotate", [__arg_0, __arg_1, __arg_2]);
 
-  static skewX_Callback_0(mthis) native "WebKitCSSMatrix_skewX_Callback";
-  skewX_Callback_0_(mthis) => skewX_Callback_0(mthis);
+  scale_Callback_0_(mthis) => mthis.callMethod("scale", []);
 
-  static skewX_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_skewX_Callback";
-  skewX_Callback_1_(mthis, __arg_0) => skewX_Callback_1(mthis, __arg_0);
+  scale_Callback_1_(mthis, __arg_0) => mthis.callMethod("scale", [__arg_0]);
 
-  static skewX_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_skewX_Callback";
-  skewX_Callback_2_(mthis, __arg_0, __arg_1) => skewX_Callback_2(mthis, __arg_0, __arg_1);
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scale", [__arg_0, __arg_1]);
 
-  static skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_skewX_Callback";
-  skewX_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scale", [__arg_0, __arg_1, __arg_2]);
 
-  static skewY_Callback_0(mthis) native "WebKitCSSMatrix_skewY_Callback";
-  skewY_Callback_0_(mthis) => skewY_Callback_0(mthis);
+  setMatrixValue_Callback_0_(mthis) => mthis.callMethod("setMatrixValue", []);
 
-  static skewY_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_skewY_Callback";
-  skewY_Callback_1_(mthis, __arg_0) => skewY_Callback_1(mthis, __arg_0);
+  setMatrixValue_Callback_1_(mthis, __arg_0) => mthis.callMethod("setMatrixValue", [__arg_0]);
 
-  static skewY_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_skewY_Callback";
-  skewY_Callback_2_(mthis, __arg_0, __arg_1) => skewY_Callback_2(mthis, __arg_0, __arg_1);
+  skewX_Callback_0_(mthis) => mthis.callMethod("skewX", []);
 
-  static skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_skewY_Callback";
-  skewY_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  skewX_Callback_1_(mthis, __arg_0) => mthis.callMethod("skewX", [__arg_0]);
 
-  static translate_Callback_0(mthis) native "WebKitCSSMatrix_translate_Callback";
-  translate_Callback_0_(mthis) => translate_Callback_0(mthis);
+  skewY_Callback_0_(mthis) => mthis.callMethod("skewY", []);
 
-  static translate_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_translate_Callback";
-  translate_Callback_1_(mthis, __arg_0) => translate_Callback_1(mthis, __arg_0);
+  skewY_Callback_1_(mthis, __arg_0) => mthis.callMethod("skewY", [__arg_0]);
 
-  static translate_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_translate_Callback";
-  translate_Callback_2_(mthis, __arg_0, __arg_1) => translate_Callback_2(mthis, __arg_0, __arg_1);
+  translate_Callback_0_(mthis) => mthis.callMethod("translate", []);
 
-  static translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_translate_Callback";
-  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  translate_Callback_1_(mthis, __arg_0) => mthis.callMethod("translate", [__arg_0]);
 
-  static translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_translate_Callback";
-  translate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("translate", [__arg_0, __arg_1]);
 
-  static translate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_translate_Callback";
-  translate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => translate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("translate", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkWebKitCSSTransformValue extends BlinkCSSValueList {
   static final instance = new BlinkWebKitCSSTransformValue();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "WebKitCSSTransformValue___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static operationType_Getter(mthis) native "WebKitCSSTransformValue_operationType_Getter";
-  operationType_Getter_(mthis) => operationType_Getter(mthis);
+  operationType_Getter_(mthis) => mthis["operationType"];
 
 }
 
 class BlinkWebKitGamepad {
   static final instance = new BlinkWebKitGamepad();
 
-  static axes_Getter(mthis) native "WebKitGamepad_axes_Getter";
-  axes_Getter_(mthis) => axes_Getter(mthis);
+  axes_Getter_(mthis) => mthis["axes"];
 
-  static buttons_Getter(mthis) native "WebKitGamepad_buttons_Getter";
-  buttons_Getter_(mthis) => buttons_Getter(mthis);
+  buttons_Getter_(mthis) => mthis["buttons"];
 
-  static connected_Getter(mthis) native "WebKitGamepad_connected_Getter";
-  connected_Getter_(mthis) => connected_Getter(mthis);
+  connected_Getter_(mthis) => mthis["connected"];
 
-  static id_Getter(mthis) native "WebKitGamepad_id_Getter";
-  id_Getter_(mthis) => id_Getter(mthis);
+  id_Getter_(mthis) => mthis["id"];
 
-  static index_Getter(mthis) native "WebKitGamepad_index_Getter";
-  index_Getter_(mthis) => index_Getter(mthis);
+  index_Getter_(mthis) => mthis["index"];
 
-  static mapping_Getter(mthis) native "WebKitGamepad_mapping_Getter";
-  mapping_Getter_(mthis) => mapping_Getter(mthis);
+  mapping_Getter_(mthis) => mthis["mapping"];
 
-  static timestamp_Getter(mthis) native "WebKitGamepad_timestamp_Getter";
-  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
+  timestamp_Getter_(mthis) => mthis["timestamp"];
 
 }
 
 class BlinkWebKitGamepadList {
   static final instance = new BlinkWebKitGamepadList();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "WebKitGamepadList___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static item_Callback_0(mthis) native "WebKitGamepadList_item_Callback";
-  item_Callback_0_(mthis) => item_Callback_0(mthis);
+  item_Callback_0_(mthis) => mthis.callMethod("item", []);
 
-  static item_Callback_1(mthis, __arg_0) native "WebKitGamepadList_item_Callback";
-  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+  item_Callback_1_(mthis, __arg_0) => mthis.callMethod("item", [__arg_0]);
 
-  static item_Callback_2(mthis, __arg_0, __arg_1) native "WebKitGamepadList_item_Callback";
-  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
-
-  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitGamepadList_item_Callback";
-  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static length_Getter(mthis) native "WebKitGamepadList_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  length_Getter_(mthis) => mthis["length"];
 
 }
 
 class BlinkWebSocket extends BlinkEventTarget {
   static final instance = new BlinkWebSocket();
 
-  static URL_Getter(mthis) native "WebSocket_URL_Getter";
-  URL_Getter_(mthis) => URL_Getter(mthis);
+  URL_Getter_(mthis) => mthis["URL"];
 
-  static binaryType_Getter(mthis) native "WebSocket_binaryType_Getter";
-  binaryType_Getter_(mthis) => binaryType_Getter(mthis);
+  binaryType_Getter_(mthis) => mthis["binaryType"];
 
-  static binaryType_Setter(mthis, __arg_0) native "WebSocket_binaryType_Setter";
-  binaryType_Setter_(mthis, __arg_0) => binaryType_Setter(mthis, __arg_0);
+  binaryType_Setter_(mthis, __arg_0) => mthis["binaryType"] = __arg_0;
 
-  static bufferedAmount_Getter(mthis) native "WebSocket_bufferedAmount_Getter";
-  bufferedAmount_Getter_(mthis) => bufferedAmount_Getter(mthis);
+  bufferedAmount_Getter_(mthis) => mthis["bufferedAmount"];
 
-  static close_Callback_0(mthis) native "WebSocket_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static close_Callback_1(mthis, __arg_0) native "WebSocket_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  close_Callback_1_(mthis, __arg_0) => mthis.callMethod("close", [__arg_0]);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "WebSocket_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  close_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("close", [__arg_0, __arg_1]);
 
-  static close_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebSocket_close_Callback";
-  close_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => close_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  constructorCallback_0_() => new js.JsObject(js.context["WebSocket"], []);
 
-  static close_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebSocket_close_Callback";
-  close_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => close_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["WebSocket"], [__arg_0]);
 
-  static constructorCallback_0() native "WebSocket_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["WebSocket"], [__arg_0, __arg_1]);
 
-  static constructorCallback_1(__arg_0) native "WebSocket_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  extensions_Getter_(mthis) => mthis["extensions"];
 
-  static constructorCallback_2(__arg_0, __arg_1) native "WebSocket_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "WebSocket_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "WebSocket_constructorCallback";
-  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static extensions_Getter(mthis) native "WebSocket_extensions_Getter";
-  extensions_Getter_(mthis) => extensions_Getter(mthis);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onclose_Getter(mthis) native "WebSocket_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static onclose_Setter(mthis, __arg_0) native "WebSocket_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static onerror_Getter(mthis) native "WebSocket_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onopen_Getter_(mthis) => mthis["onopen"];
 
-  static onerror_Setter(mthis, __arg_0) native "WebSocket_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onopen_Setter_(mthis, __arg_0) => mthis["onopen"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "WebSocket_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  protocol_Getter_(mthis) => mthis["protocol"];
 
-  static onmessage_Setter(mthis, __arg_0) native "WebSocket_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static onopen_Getter(mthis) native "WebSocket_onopen_Getter";
-  onopen_Getter_(mthis) => onopen_Getter(mthis);
+  send_Callback_0_(mthis) => mthis.callMethod("send", []);
 
-  static onopen_Setter(mthis, __arg_0) native "WebSocket_onopen_Setter";
-  onopen_Setter_(mthis, __arg_0) => onopen_Setter(mthis, __arg_0);
+  send_Callback_1_(mthis, __arg_0) => mthis.callMethod("send", [__arg_0]);
 
-  static protocol_Getter(mthis) native "WebSocket_protocol_Getter";
-  protocol_Getter_(mthis) => protocol_Getter(mthis);
-
-  static readyState_Getter(mthis) native "WebSocket_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
-
-  static send_Callback_0(mthis) native "WebSocket_send_Callback";
-  send_Callback_0_(mthis) => send_Callback_0(mthis);
-
-  static send_Callback_1(mthis, __arg_0) native "WebSocket_send_Callback";
-  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
-
-  static send_Callback_2(mthis, __arg_0, __arg_1) native "WebSocket_send_Callback";
-  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
-
-  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebSocket_send_Callback";
-  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static url_Getter(mthis) native "WebSocket_url_Getter";
-  url_Getter_(mthis) => url_Getter(mthis);
+  url_Getter_(mthis) => mthis["url"];
 
 }
 
 class BlinkWheelEvent extends BlinkMouseEvent {
   static final instance = new BlinkWheelEvent();
 
-  static constructorCallback_2(__arg_0, __arg_1) native "WheelEvent_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  constructorCallback_2_(__arg_0, __arg_1) => new js.JsObject(js.context["WheelEvent"], [__arg_0, __arg_1]);
 
-  static deltaMode_Getter(mthis) native "WheelEvent_deltaMode_Getter";
-  deltaMode_Getter_(mthis) => deltaMode_Getter(mthis);
+  deltaMode_Getter_(mthis) => mthis["deltaMode"];
 
-  static deltaX_Getter(mthis) native "WheelEvent_deltaX_Getter";
-  deltaX_Getter_(mthis) => deltaX_Getter(mthis);
+  deltaX_Getter_(mthis) => mthis["deltaX"];
 
-  static deltaY_Getter(mthis) native "WheelEvent_deltaY_Getter";
-  deltaY_Getter_(mthis) => deltaY_Getter(mthis);
+  deltaY_Getter_(mthis) => mthis["deltaY"];
 
-  static deltaZ_Getter(mthis) native "WheelEvent_deltaZ_Getter";
-  deltaZ_Getter_(mthis) => deltaZ_Getter(mthis);
+  deltaZ_Getter_(mthis) => mthis["deltaZ"];
 
-  static wheelDeltaX_Getter(mthis) native "WheelEvent_wheelDeltaX_Getter";
-  wheelDeltaX_Getter_(mthis) => wheelDeltaX_Getter(mthis);
+  wheelDeltaX_Getter_(mthis) => mthis["wheelDeltaX"];
 
-  static wheelDeltaY_Getter(mthis) native "WheelEvent_wheelDeltaY_Getter";
-  wheelDeltaY_Getter_(mthis) => wheelDeltaY_Getter(mthis);
+  wheelDeltaY_Getter_(mthis) => mthis["wheelDeltaY"];
 
 }
 
 class BlinkWindow extends BlinkEventTarget {
   static final instance = new BlinkWindow();
 
-  static $__getter___Callback_1(mthis, __arg_0) native "Window___getter___Callback";
-  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+  $__getter___Callback_1_(mthis, __arg_0) => mthis.callMethod("__getter__", [__arg_0]);
 
-  static CSS_Getter(mthis) native "Window_CSS_Getter";
-  CSS_Getter_(mthis) => CSS_Getter(mthis);
+  CSS_Getter_(mthis) => mthis["CSS"];
 
-  static alert_Callback_0(mthis) native "Window_alert_Callback";
-  alert_Callback_0_(mthis) => alert_Callback_0(mthis);
+  alert_Callback_0_(mthis) => mthis.callMethod("alert", []);
 
-  static alert_Callback_1(mthis, __arg_0) native "Window_alert_Callback";
-  alert_Callback_1_(mthis, __arg_0) => alert_Callback_1(mthis, __arg_0);
+  alert_Callback_1_(mthis, __arg_0) => mthis.callMethod("alert", [__arg_0]);
 
-  static alert_Callback_2(mthis, __arg_0, __arg_1) native "Window_alert_Callback";
-  alert_Callback_2_(mthis, __arg_0, __arg_1) => alert_Callback_2(mthis, __arg_0, __arg_1);
+  applicationCache_Getter_(mthis) => mthis["applicationCache"];
 
-  static alert_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_alert_Callback";
-  alert_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => alert_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  atob_Callback_0_(mthis) => mthis.callMethod("atob", []);
 
-  static applicationCache_Getter(mthis) native "Window_applicationCache_Getter";
-  applicationCache_Getter_(mthis) => applicationCache_Getter(mthis);
+  atob_Callback_1_(mthis, __arg_0) => mthis.callMethod("atob", [__arg_0]);
 
-  static atob_Callback_0(mthis) native "Window_atob_Callback";
-  atob_Callback_0_(mthis) => atob_Callback_0(mthis);
+  blur_Callback_0_(mthis) => mthis.callMethod("blur", []);
 
-  static atob_Callback_1(mthis, __arg_0) native "Window_atob_Callback";
-  atob_Callback_1_(mthis, __arg_0) => atob_Callback_1(mthis, __arg_0);
+  btoa_Callback_0_(mthis) => mthis.callMethod("btoa", []);
 
-  static atob_Callback_2(mthis, __arg_0, __arg_1) native "Window_atob_Callback";
-  atob_Callback_2_(mthis, __arg_0, __arg_1) => atob_Callback_2(mthis, __arg_0, __arg_1);
+  btoa_Callback_1_(mthis, __arg_0) => mthis.callMethod("btoa", [__arg_0]);
 
-  static atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_atob_Callback";
-  atob_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  cancelAnimationFrame_Callback_0_(mthis) => mthis.callMethod("cancelAnimationFrame", []);
 
-  static blur_Callback_0(mthis) native "Window_blur_Callback";
-  blur_Callback_0_(mthis) => blur_Callback_0(mthis);
+  cancelAnimationFrame_Callback_1_(mthis, __arg_0) => mthis.callMethod("cancelAnimationFrame", [__arg_0]);
 
-  static blur_Callback_1(mthis, __arg_0) native "Window_blur_Callback";
-  blur_Callback_1_(mthis, __arg_0) => blur_Callback_1(mthis, __arg_0);
+  captureEvents_Callback_0_(mthis) => mthis.callMethod("captureEvents", []);
 
-  static blur_Callback_2(mthis, __arg_0, __arg_1) native "Window_blur_Callback";
-  blur_Callback_2_(mthis, __arg_0, __arg_1) => blur_Callback_2(mthis, __arg_0, __arg_1);
+  clearInterval_Callback_0_(mthis) => mthis.callMethod("clearInterval", []);
 
-  static btoa_Callback_0(mthis) native "Window_btoa_Callback";
-  btoa_Callback_0_(mthis) => btoa_Callback_0(mthis);
+  clearInterval_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearInterval", [__arg_0]);
 
-  static btoa_Callback_1(mthis, __arg_0) native "Window_btoa_Callback";
-  btoa_Callback_1_(mthis, __arg_0) => btoa_Callback_1(mthis, __arg_0);
+  clearTimeout_Callback_0_(mthis) => mthis.callMethod("clearTimeout", []);
 
-  static btoa_Callback_2(mthis, __arg_0, __arg_1) native "Window_btoa_Callback";
-  btoa_Callback_2_(mthis, __arg_0, __arg_1) => btoa_Callback_2(mthis, __arg_0, __arg_1);
+  clearTimeout_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearTimeout", [__arg_0]);
 
-  static btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_btoa_Callback";
-  btoa_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static cancelAnimationFrame_Callback_0(mthis) native "Window_cancelAnimationFrame_Callback";
-  cancelAnimationFrame_Callback_0_(mthis) => cancelAnimationFrame_Callback_0(mthis);
+  closed_Getter_(mthis) => mthis["closed"];
 
-  static cancelAnimationFrame_Callback_1(mthis, __arg_0) native "Window_cancelAnimationFrame_Callback";
-  cancelAnimationFrame_Callback_1_(mthis, __arg_0) => cancelAnimationFrame_Callback_1(mthis, __arg_0);
+  confirm_Callback_0_(mthis) => mthis.callMethod("confirm", []);
 
-  static cancelAnimationFrame_Callback_2(mthis, __arg_0, __arg_1) native "Window_cancelAnimationFrame_Callback";
-  cancelAnimationFrame_Callback_2_(mthis, __arg_0, __arg_1) => cancelAnimationFrame_Callback_2(mthis, __arg_0, __arg_1);
+  confirm_Callback_1_(mthis, __arg_0) => mthis.callMethod("confirm", [__arg_0]);
 
-  static cancelAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_cancelAnimationFrame_Callback";
-  cancelAnimationFrame_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cancelAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  console_Getter_(mthis) => mthis["console"];
 
-  static captureEvents_Callback_0(mthis) native "Window_captureEvents_Callback";
-  captureEvents_Callback_0_(mthis) => captureEvents_Callback_0(mthis);
+  crypto_Getter_(mthis) => mthis["crypto"];
 
-  static captureEvents_Callback_1(mthis, __arg_0) native "Window_captureEvents_Callback";
-  captureEvents_Callback_1_(mthis, __arg_0) => captureEvents_Callback_1(mthis, __arg_0);
+  defaultStatus_Getter_(mthis) => mthis["defaultStatus"];
 
-  static captureEvents_Callback_2(mthis, __arg_0, __arg_1) native "Window_captureEvents_Callback";
-  captureEvents_Callback_2_(mthis, __arg_0, __arg_1) => captureEvents_Callback_2(mthis, __arg_0, __arg_1);
+  defaultStatus_Setter_(mthis, __arg_0) => mthis["defaultStatus"] = __arg_0;
 
-  static clearInterval_Callback_0(mthis) native "Window_clearInterval_Callback";
-  clearInterval_Callback_0_(mthis) => clearInterval_Callback_0(mthis);
+  defaultstatus_Getter_(mthis) => mthis["defaultstatus"];
 
-  static clearInterval_Callback_1(mthis, __arg_0) native "Window_clearInterval_Callback";
-  clearInterval_Callback_1_(mthis, __arg_0) => clearInterval_Callback_1(mthis, __arg_0);
+  defaultstatus_Setter_(mthis, __arg_0) => mthis["defaultstatus"] = __arg_0;
 
-  static clearInterval_Callback_2(mthis, __arg_0, __arg_1) native "Window_clearInterval_Callback";
-  clearInterval_Callback_2_(mthis, __arg_0, __arg_1) => clearInterval_Callback_2(mthis, __arg_0, __arg_1);
+  devicePixelRatio_Getter_(mthis) => mthis["devicePixelRatio"];
 
-  static clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_clearInterval_Callback";
-  clearInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  document_Getter_(mthis) => mthis["document"];
 
-  static clearTimeout_Callback_0(mthis) native "Window_clearTimeout_Callback";
-  clearTimeout_Callback_0_(mthis) => clearTimeout_Callback_0(mthis);
+  event_Getter_(mthis) => mthis["event"];
 
-  static clearTimeout_Callback_1(mthis, __arg_0) native "Window_clearTimeout_Callback";
-  clearTimeout_Callback_1_(mthis, __arg_0) => clearTimeout_Callback_1(mthis, __arg_0);
+  event_Setter_(mthis, __arg_0) => mthis["event"] = __arg_0;
 
-  static clearTimeout_Callback_2(mthis, __arg_0, __arg_1) native "Window_clearTimeout_Callback";
-  clearTimeout_Callback_2_(mthis, __arg_0, __arg_1) => clearTimeout_Callback_2(mthis, __arg_0, __arg_1);
+  find_Callback_0_(mthis) => mthis.callMethod("find", []);
 
-  static clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_clearTimeout_Callback";
-  clearTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  find_Callback_1_(mthis, __arg_0) => mthis.callMethod("find", [__arg_0]);
 
-  static close_Callback_0(mthis) native "Window_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  find_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("find", [__arg_0, __arg_1]);
 
-  static close_Callback_1(mthis, __arg_0) native "Window_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  find_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("find", [__arg_0, __arg_1, __arg_2]);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "Window_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  find_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("find", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static closed_Getter(mthis) native "Window_closed_Getter";
-  closed_Getter_(mthis) => closed_Getter(mthis);
+  find_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("find", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static confirm_Callback_0(mthis) native "Window_confirm_Callback";
-  confirm_Callback_0_(mthis) => confirm_Callback_0(mthis);
+  find_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => mthis.callMethod("find", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5]);
 
-  static confirm_Callback_1(mthis, __arg_0) native "Window_confirm_Callback";
-  confirm_Callback_1_(mthis, __arg_0) => confirm_Callback_1(mthis, __arg_0);
+  find_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => mthis.callMethod("find", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6]);
 
-  static confirm_Callback_2(mthis, __arg_0, __arg_1) native "Window_confirm_Callback";
-  confirm_Callback_2_(mthis, __arg_0, __arg_1) => confirm_Callback_2(mthis, __arg_0, __arg_1);
+  focus_Callback_0_(mthis) => mthis.callMethod("focus", []);
 
-  static confirm_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_confirm_Callback";
-  confirm_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => confirm_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  frameElement_Getter_(mthis) => mthis["frameElement"];
 
-  static console_Getter(mthis) native "Window_console_Getter";
-  console_Getter_(mthis) => console_Getter(mthis);
+  frames_Getter_(mthis) => mthis["frames"];
 
-  static crypto_Getter(mthis) native "Window_crypto_Getter";
-  crypto_Getter_(mthis) => crypto_Getter(mthis);
+  getComputedStyle_Callback_0_(mthis) => mthis.callMethod("getComputedStyle", []);
 
-  static defaultStatus_Getter(mthis) native "Window_defaultStatus_Getter";
-  defaultStatus_Getter_(mthis) => defaultStatus_Getter(mthis);
+  getComputedStyle_Callback_1_(mthis, __arg_0) => mthis.callMethod("getComputedStyle", [__arg_0]);
 
-  static defaultStatus_Setter(mthis, __arg_0) native "Window_defaultStatus_Setter";
-  defaultStatus_Setter_(mthis, __arg_0) => defaultStatus_Setter(mthis, __arg_0);
+  getComputedStyle_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getComputedStyle", [__arg_0, __arg_1]);
 
-  static defaultstatus_Getter(mthis) native "Window_defaultstatus_Getter";
-  defaultstatus_Getter_(mthis) => defaultstatus_Getter(mthis);
+  getMatchedCSSRules_Callback_0_(mthis) => mthis.callMethod("getMatchedCSSRules", []);
 
-  static defaultstatus_Setter(mthis, __arg_0) native "Window_defaultstatus_Setter";
-  defaultstatus_Setter_(mthis, __arg_0) => defaultstatus_Setter(mthis, __arg_0);
+  getMatchedCSSRules_Callback_1_(mthis, __arg_0) => mthis.callMethod("getMatchedCSSRules", [__arg_0]);
 
-  static devicePixelRatio_Getter(mthis) native "Window_devicePixelRatio_Getter";
-  devicePixelRatio_Getter_(mthis) => devicePixelRatio_Getter(mthis);
+  getMatchedCSSRules_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getMatchedCSSRules", [__arg_0, __arg_1]);
 
-  static document_Getter(mthis) native "Window_document_Getter";
-  document_Getter_(mthis) => document_Getter(mthis);
+  getSelection_Callback_0_(mthis) => mthis.callMethod("getSelection", []);
 
-  static event_Getter(mthis) native "Window_event_Getter";
-  event_Getter_(mthis) => event_Getter(mthis);
+  history_Getter_(mthis) => mthis["history"];
 
-  static event_Setter(mthis, __arg_0) native "Window_event_Setter";
-  event_Setter_(mthis, __arg_0) => event_Setter(mthis, __arg_0);
+  indexedDB_Getter_(mthis) => mthis["indexedDB"];
 
-  static find_Callback_0(mthis) native "Window_find_Callback";
-  find_Callback_0_(mthis) => find_Callback_0(mthis);
+  innerHeight_Getter_(mthis) => mthis["innerHeight"];
 
-  static find_Callback_1(mthis, __arg_0) native "Window_find_Callback";
-  find_Callback_1_(mthis, __arg_0) => find_Callback_1(mthis, __arg_0);
+  innerWidth_Getter_(mthis) => mthis["innerWidth"];
 
-  static find_Callback_2(mthis, __arg_0, __arg_1) native "Window_find_Callback";
-  find_Callback_2_(mthis, __arg_0, __arg_1) => find_Callback_2(mthis, __arg_0, __arg_1);
+  length_Getter_(mthis) => mthis["length"];
 
-  static find_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_find_Callback";
-  find_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => find_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  localStorage_Getter_(mthis) => mthis["localStorage"];
 
-  static find_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_find_Callback";
-  find_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => find_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  location_Getter_(mthis) => mthis["location"];
 
-  static find_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_find_Callback";
-  find_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => find_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  location_Setter_(mthis, __arg_0) => mthis["location"] = __arg_0;
 
-  static find_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Window_find_Callback";
-  find_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => find_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  locationbar_Getter_(mthis) => mthis["locationbar"];
 
-  static find_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Window_find_Callback";
-  find_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => find_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  matchMedia_Callback_0_(mthis) => mthis.callMethod("matchMedia", []);
 
-  static find_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Window_find_Callback";
-  find_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => find_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+  matchMedia_Callback_1_(mthis, __arg_0) => mthis.callMethod("matchMedia", [__arg_0]);
 
-  static find_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "Window_find_Callback";
-  find_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => find_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+  menubar_Getter_(mthis) => mthis["menubar"];
 
-  static focus_Callback_0(mthis) native "Window_focus_Callback";
-  focus_Callback_0_(mthis) => focus_Callback_0(mthis);
+  moveBy_Callback_0_(mthis) => mthis.callMethod("moveBy", []);
 
-  static focus_Callback_1(mthis, __arg_0) native "Window_focus_Callback";
-  focus_Callback_1_(mthis, __arg_0) => focus_Callback_1(mthis, __arg_0);
+  moveBy_Callback_1_(mthis, __arg_0) => mthis.callMethod("moveBy", [__arg_0]);
 
-  static focus_Callback_2(mthis, __arg_0, __arg_1) native "Window_focus_Callback";
-  focus_Callback_2_(mthis, __arg_0, __arg_1) => focus_Callback_2(mthis, __arg_0, __arg_1);
+  moveBy_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("moveBy", [__arg_0, __arg_1]);
 
-  static frameElement_Getter(mthis) native "Window_frameElement_Getter";
-  frameElement_Getter_(mthis) => frameElement_Getter(mthis);
+  moveTo_Callback_0_(mthis) => mthis.callMethod("moveTo", []);
 
-  static frames_Getter(mthis) native "Window_frames_Getter";
-  frames_Getter_(mthis) => frames_Getter(mthis);
+  moveTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("moveTo", [__arg_0]);
 
-  static getComputedStyle_Callback_0(mthis) native "Window_getComputedStyle_Callback";
-  getComputedStyle_Callback_0_(mthis) => getComputedStyle_Callback_0(mthis);
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("moveTo", [__arg_0, __arg_1]);
 
-  static getComputedStyle_Callback_1(mthis, __arg_0) native "Window_getComputedStyle_Callback";
-  getComputedStyle_Callback_1_(mthis, __arg_0) => getComputedStyle_Callback_1(mthis, __arg_0);
+  name_Getter_(mthis) => mthis["name"];
 
-  static getComputedStyle_Callback_2(mthis, __arg_0, __arg_1) native "Window_getComputedStyle_Callback";
-  getComputedStyle_Callback_2_(mthis, __arg_0, __arg_1) => getComputedStyle_Callback_2(mthis, __arg_0, __arg_1);
+  name_Setter_(mthis, __arg_0) => mthis["name"] = __arg_0;
 
-  static getComputedStyle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_getComputedStyle_Callback";
-  getComputedStyle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getComputedStyle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  navigator_Getter_(mthis) => mthis["navigator"];
 
-  static getComputedStyle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_getComputedStyle_Callback";
-  getComputedStyle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getComputedStyle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  offscreenBuffering_Getter_(mthis) => mthis["offscreenBuffering"];
 
-  static getMatchedCSSRules_Callback_0(mthis) native "Window_getMatchedCSSRules_Callback";
-  getMatchedCSSRules_Callback_0_(mthis) => getMatchedCSSRules_Callback_0(mthis);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static getMatchedCSSRules_Callback_1(mthis, __arg_0) native "Window_getMatchedCSSRules_Callback";
-  getMatchedCSSRules_Callback_1_(mthis, __arg_0) => getMatchedCSSRules_Callback_1(mthis, __arg_0);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static getMatchedCSSRules_Callback_2(mthis, __arg_0, __arg_1) native "Window_getMatchedCSSRules_Callback";
-  getMatchedCSSRules_Callback_2_(mthis, __arg_0, __arg_1) => getMatchedCSSRules_Callback_2(mthis, __arg_0, __arg_1);
+  onanimationend_Getter_(mthis) => mthis["onanimationend"];
 
-  static getMatchedCSSRules_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_getMatchedCSSRules_Callback";
-  getMatchedCSSRules_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getMatchedCSSRules_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onanimationend_Setter_(mthis, __arg_0) => mthis["onanimationend"] = __arg_0;
 
-  static getMatchedCSSRules_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_getMatchedCSSRules_Callback";
-  getMatchedCSSRules_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getMatchedCSSRules_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onanimationiteration_Getter_(mthis) => mthis["onanimationiteration"];
 
-  static getSelection_Callback_0(mthis) native "Window_getSelection_Callback";
-  getSelection_Callback_0_(mthis) => getSelection_Callback_0(mthis);
+  onanimationiteration_Setter_(mthis, __arg_0) => mthis["onanimationiteration"] = __arg_0;
 
-  static getSelection_Callback_1(mthis, __arg_0) native "Window_getSelection_Callback";
-  getSelection_Callback_1_(mthis, __arg_0) => getSelection_Callback_1(mthis, __arg_0);
+  onanimationstart_Getter_(mthis) => mthis["onanimationstart"];
 
-  static getSelection_Callback_2(mthis, __arg_0, __arg_1) native "Window_getSelection_Callback";
-  getSelection_Callback_2_(mthis, __arg_0, __arg_1) => getSelection_Callback_2(mthis, __arg_0, __arg_1);
+  onanimationstart_Setter_(mthis, __arg_0) => mthis["onanimationstart"] = __arg_0;
 
-  static history_Getter(mthis) native "Window_history_Getter";
-  history_Getter_(mthis) => history_Getter(mthis);
+  onautocomplete_Getter_(mthis) => mthis["onautocomplete"];
 
-  static indexedDB_Getter(mthis) native "Window_indexedDB_Getter";
-  indexedDB_Getter_(mthis) => indexedDB_Getter(mthis);
+  onautocomplete_Setter_(mthis, __arg_0) => mthis["onautocomplete"] = __arg_0;
 
-  static innerHeight_Getter(mthis) native "Window_innerHeight_Getter";
-  innerHeight_Getter_(mthis) => innerHeight_Getter(mthis);
+  onautocompleteerror_Getter_(mthis) => mthis["onautocompleteerror"];
 
-  static innerWidth_Getter(mthis) native "Window_innerWidth_Getter";
-  innerWidth_Getter_(mthis) => innerWidth_Getter(mthis);
+  onautocompleteerror_Setter_(mthis, __arg_0) => mthis["onautocompleteerror"] = __arg_0;
 
-  static length_Getter(mthis) native "Window_length_Getter";
-  length_Getter_(mthis) => length_Getter(mthis);
+  onbeforeunload_Getter_(mthis) => mthis["onbeforeunload"];
 
-  static localStorage_Getter(mthis) native "Window_localStorage_Getter";
-  localStorage_Getter_(mthis) => localStorage_Getter(mthis);
+  onbeforeunload_Setter_(mthis, __arg_0) => mthis["onbeforeunload"] = __arg_0;
 
-  static location_Getter(mthis) native "Window_location_Getter";
-  location_Getter_(mthis) => location_Getter(mthis);
+  onblur_Getter_(mthis) => mthis["onblur"];
 
-  static location_Setter(mthis, __arg_0) native "Window_location_Setter";
-  location_Setter_(mthis, __arg_0) => location_Setter(mthis, __arg_0);
+  onblur_Setter_(mthis, __arg_0) => mthis["onblur"] = __arg_0;
 
-  static locationbar_Getter(mthis) native "Window_locationbar_Getter";
-  locationbar_Getter_(mthis) => locationbar_Getter(mthis);
+  oncancel_Getter_(mthis) => mthis["oncancel"];
 
-  static matchMedia_Callback_0(mthis) native "Window_matchMedia_Callback";
-  matchMedia_Callback_0_(mthis) => matchMedia_Callback_0(mthis);
+  oncancel_Setter_(mthis, __arg_0) => mthis["oncancel"] = __arg_0;
 
-  static matchMedia_Callback_1(mthis, __arg_0) native "Window_matchMedia_Callback";
-  matchMedia_Callback_1_(mthis, __arg_0) => matchMedia_Callback_1(mthis, __arg_0);
+  oncanplay_Getter_(mthis) => mthis["oncanplay"];
 
-  static matchMedia_Callback_2(mthis, __arg_0, __arg_1) native "Window_matchMedia_Callback";
-  matchMedia_Callback_2_(mthis, __arg_0, __arg_1) => matchMedia_Callback_2(mthis, __arg_0, __arg_1);
+  oncanplay_Setter_(mthis, __arg_0) => mthis["oncanplay"] = __arg_0;
 
-  static matchMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_matchMedia_Callback";
-  matchMedia_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matchMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  oncanplaythrough_Getter_(mthis) => mthis["oncanplaythrough"];
 
-  static menubar_Getter(mthis) native "Window_menubar_Getter";
-  menubar_Getter_(mthis) => menubar_Getter(mthis);
+  oncanplaythrough_Setter_(mthis, __arg_0) => mthis["oncanplaythrough"] = __arg_0;
 
-  static moveBy_Callback_0(mthis) native "Window_moveBy_Callback";
-  moveBy_Callback_0_(mthis) => moveBy_Callback_0(mthis);
+  onchange_Getter_(mthis) => mthis["onchange"];
 
-  static moveBy_Callback_1(mthis, __arg_0) native "Window_moveBy_Callback";
-  moveBy_Callback_1_(mthis, __arg_0) => moveBy_Callback_1(mthis, __arg_0);
+  onchange_Setter_(mthis, __arg_0) => mthis["onchange"] = __arg_0;
 
-  static moveBy_Callback_2(mthis, __arg_0, __arg_1) native "Window_moveBy_Callback";
-  moveBy_Callback_2_(mthis, __arg_0, __arg_1) => moveBy_Callback_2(mthis, __arg_0, __arg_1);
+  onclick_Getter_(mthis) => mthis["onclick"];
 
-  static moveBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_moveBy_Callback";
-  moveBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onclick_Setter_(mthis, __arg_0) => mthis["onclick"] = __arg_0;
 
-  static moveBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_moveBy_Callback";
-  moveBy_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onclose_Getter_(mthis) => mthis["onclose"];
 
-  static moveTo_Callback_0(mthis) native "Window_moveTo_Callback";
-  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
+  onclose_Setter_(mthis, __arg_0) => mthis["onclose"] = __arg_0;
 
-  static moveTo_Callback_1(mthis, __arg_0) native "Window_moveTo_Callback";
-  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
+  oncontextmenu_Getter_(mthis) => mthis["oncontextmenu"];
 
-  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "Window_moveTo_Callback";
-  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
+  oncontextmenu_Setter_(mthis, __arg_0) => mthis["oncontextmenu"] = __arg_0;
 
-  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_moveTo_Callback";
-  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  oncuechange_Getter_(mthis) => mthis["oncuechange"];
 
-  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_moveTo_Callback";
-  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  oncuechange_Setter_(mthis, __arg_0) => mthis["oncuechange"] = __arg_0;
 
-  static name_Getter(mthis) native "Window_name_Getter";
-  name_Getter_(mthis) => name_Getter(mthis);
+  ondblclick_Getter_(mthis) => mthis["ondblclick"];
 
-  static name_Setter(mthis, __arg_0) native "Window_name_Setter";
-  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+  ondblclick_Setter_(mthis, __arg_0) => mthis["ondblclick"] = __arg_0;
 
-  static navigator_Getter(mthis) native "Window_navigator_Getter";
-  navigator_Getter_(mthis) => navigator_Getter(mthis);
+  ondevicelight_Getter_(mthis) => mthis["ondevicelight"];
 
-  static offscreenBuffering_Getter(mthis) native "Window_offscreenBuffering_Getter";
-  offscreenBuffering_Getter_(mthis) => offscreenBuffering_Getter(mthis);
+  ondevicelight_Setter_(mthis, __arg_0) => mthis["ondevicelight"] = __arg_0;
 
-  static onabort_Getter(mthis) native "Window_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  ondevicemotion_Getter_(mthis) => mthis["ondevicemotion"];
 
-  static onabort_Setter(mthis, __arg_0) native "Window_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  ondevicemotion_Setter_(mthis, __arg_0) => mthis["ondevicemotion"] = __arg_0;
 
-  static onanimationend_Getter(mthis) native "Window_onanimationend_Getter";
-  onanimationend_Getter_(mthis) => onanimationend_Getter(mthis);
+  ondeviceorientation_Getter_(mthis) => mthis["ondeviceorientation"];
 
-  static onanimationend_Setter(mthis, __arg_0) native "Window_onanimationend_Setter";
-  onanimationend_Setter_(mthis, __arg_0) => onanimationend_Setter(mthis, __arg_0);
+  ondeviceorientation_Setter_(mthis, __arg_0) => mthis["ondeviceorientation"] = __arg_0;
 
-  static onanimationiteration_Getter(mthis) native "Window_onanimationiteration_Getter";
-  onanimationiteration_Getter_(mthis) => onanimationiteration_Getter(mthis);
+  ondrag_Getter_(mthis) => mthis["ondrag"];
 
-  static onanimationiteration_Setter(mthis, __arg_0) native "Window_onanimationiteration_Setter";
-  onanimationiteration_Setter_(mthis, __arg_0) => onanimationiteration_Setter(mthis, __arg_0);
+  ondrag_Setter_(mthis, __arg_0) => mthis["ondrag"] = __arg_0;
 
-  static onanimationstart_Getter(mthis) native "Window_onanimationstart_Getter";
-  onanimationstart_Getter_(mthis) => onanimationstart_Getter(mthis);
+  ondragend_Getter_(mthis) => mthis["ondragend"];
 
-  static onanimationstart_Setter(mthis, __arg_0) native "Window_onanimationstart_Setter";
-  onanimationstart_Setter_(mthis, __arg_0) => onanimationstart_Setter(mthis, __arg_0);
+  ondragend_Setter_(mthis, __arg_0) => mthis["ondragend"] = __arg_0;
 
-  static onautocomplete_Getter(mthis) native "Window_onautocomplete_Getter";
-  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+  ondragenter_Getter_(mthis) => mthis["ondragenter"];
 
-  static onautocomplete_Setter(mthis, __arg_0) native "Window_onautocomplete_Setter";
-  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+  ondragenter_Setter_(mthis, __arg_0) => mthis["ondragenter"] = __arg_0;
 
-  static onautocompleteerror_Getter(mthis) native "Window_onautocompleteerror_Getter";
-  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+  ondragleave_Getter_(mthis) => mthis["ondragleave"];
 
-  static onautocompleteerror_Setter(mthis, __arg_0) native "Window_onautocompleteerror_Setter";
-  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+  ondragleave_Setter_(mthis, __arg_0) => mthis["ondragleave"] = __arg_0;
 
-  static onbeforeunload_Getter(mthis) native "Window_onbeforeunload_Getter";
-  onbeforeunload_Getter_(mthis) => onbeforeunload_Getter(mthis);
+  ondragover_Getter_(mthis) => mthis["ondragover"];
 
-  static onbeforeunload_Setter(mthis, __arg_0) native "Window_onbeforeunload_Setter";
-  onbeforeunload_Setter_(mthis, __arg_0) => onbeforeunload_Setter(mthis, __arg_0);
+  ondragover_Setter_(mthis, __arg_0) => mthis["ondragover"] = __arg_0;
 
-  static onblur_Getter(mthis) native "Window_onblur_Getter";
-  onblur_Getter_(mthis) => onblur_Getter(mthis);
+  ondragstart_Getter_(mthis) => mthis["ondragstart"];
 
-  static onblur_Setter(mthis, __arg_0) native "Window_onblur_Setter";
-  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+  ondragstart_Setter_(mthis, __arg_0) => mthis["ondragstart"] = __arg_0;
 
-  static oncancel_Getter(mthis) native "Window_oncancel_Getter";
-  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+  ondrop_Getter_(mthis) => mthis["ondrop"];
 
-  static oncancel_Setter(mthis, __arg_0) native "Window_oncancel_Setter";
-  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+  ondrop_Setter_(mthis, __arg_0) => mthis["ondrop"] = __arg_0;
 
-  static oncanplay_Getter(mthis) native "Window_oncanplay_Getter";
-  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+  ondurationchange_Getter_(mthis) => mthis["ondurationchange"];
 
-  static oncanplay_Setter(mthis, __arg_0) native "Window_oncanplay_Setter";
-  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+  ondurationchange_Setter_(mthis, __arg_0) => mthis["ondurationchange"] = __arg_0;
 
-  static oncanplaythrough_Getter(mthis) native "Window_oncanplaythrough_Getter";
-  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+  onemptied_Getter_(mthis) => mthis["onemptied"];
 
-  static oncanplaythrough_Setter(mthis, __arg_0) native "Window_oncanplaythrough_Setter";
-  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+  onemptied_Setter_(mthis, __arg_0) => mthis["onemptied"] = __arg_0;
 
-  static onchange_Getter(mthis) native "Window_onchange_Getter";
-  onchange_Getter_(mthis) => onchange_Getter(mthis);
+  onended_Getter_(mthis) => mthis["onended"];
 
-  static onchange_Setter(mthis, __arg_0) native "Window_onchange_Setter";
-  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+  onended_Setter_(mthis, __arg_0) => mthis["onended"] = __arg_0;
 
-  static onclick_Getter(mthis) native "Window_onclick_Getter";
-  onclick_Getter_(mthis) => onclick_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onclick_Setter(mthis, __arg_0) native "Window_onclick_Setter";
-  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onclose_Getter(mthis) native "Window_onclose_Getter";
-  onclose_Getter_(mthis) => onclose_Getter(mthis);
+  onfocus_Getter_(mthis) => mthis["onfocus"];
 
-  static onclose_Setter(mthis, __arg_0) native "Window_onclose_Setter";
-  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+  onfocus_Setter_(mthis, __arg_0) => mthis["onfocus"] = __arg_0;
 
-  static oncontextmenu_Getter(mthis) native "Window_oncontextmenu_Getter";
-  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+  onhashchange_Getter_(mthis) => mthis["onhashchange"];
 
-  static oncontextmenu_Setter(mthis, __arg_0) native "Window_oncontextmenu_Setter";
-  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+  onhashchange_Setter_(mthis, __arg_0) => mthis["onhashchange"] = __arg_0;
 
-  static oncuechange_Getter(mthis) native "Window_oncuechange_Getter";
-  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+  oninput_Getter_(mthis) => mthis["oninput"];
 
-  static oncuechange_Setter(mthis, __arg_0) native "Window_oncuechange_Setter";
-  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+  oninput_Setter_(mthis, __arg_0) => mthis["oninput"] = __arg_0;
 
-  static ondblclick_Getter(mthis) native "Window_ondblclick_Getter";
-  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+  oninvalid_Getter_(mthis) => mthis["oninvalid"];
 
-  static ondblclick_Setter(mthis, __arg_0) native "Window_ondblclick_Setter";
-  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+  oninvalid_Setter_(mthis, __arg_0) => mthis["oninvalid"] = __arg_0;
 
-  static ondevicelight_Getter(mthis) native "Window_ondevicelight_Getter";
-  ondevicelight_Getter_(mthis) => ondevicelight_Getter(mthis);
+  onkeydown_Getter_(mthis) => mthis["onkeydown"];
 
-  static ondevicelight_Setter(mthis, __arg_0) native "Window_ondevicelight_Setter";
-  ondevicelight_Setter_(mthis, __arg_0) => ondevicelight_Setter(mthis, __arg_0);
+  onkeydown_Setter_(mthis, __arg_0) => mthis["onkeydown"] = __arg_0;
 
-  static ondevicemotion_Getter(mthis) native "Window_ondevicemotion_Getter";
-  ondevicemotion_Getter_(mthis) => ondevicemotion_Getter(mthis);
+  onkeypress_Getter_(mthis) => mthis["onkeypress"];
 
-  static ondevicemotion_Setter(mthis, __arg_0) native "Window_ondevicemotion_Setter";
-  ondevicemotion_Setter_(mthis, __arg_0) => ondevicemotion_Setter(mthis, __arg_0);
+  onkeypress_Setter_(mthis, __arg_0) => mthis["onkeypress"] = __arg_0;
 
-  static ondeviceorientation_Getter(mthis) native "Window_ondeviceorientation_Getter";
-  ondeviceorientation_Getter_(mthis) => ondeviceorientation_Getter(mthis);
+  onkeyup_Getter_(mthis) => mthis["onkeyup"];
 
-  static ondeviceorientation_Setter(mthis, __arg_0) native "Window_ondeviceorientation_Setter";
-  ondeviceorientation_Setter_(mthis, __arg_0) => ondeviceorientation_Setter(mthis, __arg_0);
+  onkeyup_Setter_(mthis, __arg_0) => mthis["onkeyup"] = __arg_0;
 
-  static ondrag_Getter(mthis) native "Window_ondrag_Getter";
-  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+  onlanguagechange_Getter_(mthis) => mthis["onlanguagechange"];
 
-  static ondrag_Setter(mthis, __arg_0) native "Window_ondrag_Setter";
-  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+  onlanguagechange_Setter_(mthis, __arg_0) => mthis["onlanguagechange"] = __arg_0;
 
-  static ondragend_Getter(mthis) native "Window_ondragend_Getter";
-  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+  onload_Getter_(mthis) => mthis["onload"];
 
-  static ondragend_Setter(mthis, __arg_0) native "Window_ondragend_Setter";
-  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
 
-  static ondragenter_Getter(mthis) native "Window_ondragenter_Getter";
-  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+  onloadeddata_Getter_(mthis) => mthis["onloadeddata"];
 
-  static ondragenter_Setter(mthis, __arg_0) native "Window_ondragenter_Setter";
-  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
+  onloadeddata_Setter_(mthis, __arg_0) => mthis["onloadeddata"] = __arg_0;
 
-  static ondragleave_Getter(mthis) native "Window_ondragleave_Getter";
-  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
+  onloadedmetadata_Getter_(mthis) => mthis["onloadedmetadata"];
 
-  static ondragleave_Setter(mthis, __arg_0) native "Window_ondragleave_Setter";
-  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
+  onloadedmetadata_Setter_(mthis, __arg_0) => mthis["onloadedmetadata"] = __arg_0;
 
-  static ondragover_Getter(mthis) native "Window_ondragover_Getter";
-  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
+  onloadstart_Getter_(mthis) => mthis["onloadstart"];
 
-  static ondragover_Setter(mthis, __arg_0) native "Window_ondragover_Setter";
-  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
+  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
 
-  static ondragstart_Getter(mthis) native "Window_ondragstart_Getter";
-  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static ondragstart_Setter(mthis, __arg_0) native "Window_ondragstart_Setter";
-  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static ondrop_Getter(mthis) native "Window_ondrop_Getter";
-  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
+  onmousedown_Getter_(mthis) => mthis["onmousedown"];
 
-  static ondrop_Setter(mthis, __arg_0) native "Window_ondrop_Setter";
-  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
+  onmousedown_Setter_(mthis, __arg_0) => mthis["onmousedown"] = __arg_0;
 
-  static ondurationchange_Getter(mthis) native "Window_ondurationchange_Getter";
-  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
+  onmouseenter_Getter_(mthis) => mthis["onmouseenter"];
 
-  static ondurationchange_Setter(mthis, __arg_0) native "Window_ondurationchange_Setter";
-  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
+  onmouseenter_Setter_(mthis, __arg_0) => mthis["onmouseenter"] = __arg_0;
 
-  static onemptied_Getter(mthis) native "Window_onemptied_Getter";
-  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
+  onmouseleave_Getter_(mthis) => mthis["onmouseleave"];
 
-  static onemptied_Setter(mthis, __arg_0) native "Window_onemptied_Setter";
-  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
+  onmouseleave_Setter_(mthis, __arg_0) => mthis["onmouseleave"] = __arg_0;
 
-  static onended_Getter(mthis) native "Window_onended_Getter";
-  onended_Getter_(mthis) => onended_Getter(mthis);
+  onmousemove_Getter_(mthis) => mthis["onmousemove"];
 
-  static onended_Setter(mthis, __arg_0) native "Window_onended_Setter";
-  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+  onmousemove_Setter_(mthis, __arg_0) => mthis["onmousemove"] = __arg_0;
 
-  static onerror_Getter(mthis) native "Window_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onmouseout_Getter_(mthis) => mthis["onmouseout"];
 
-  static onerror_Setter(mthis, __arg_0) native "Window_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onmouseout_Setter_(mthis, __arg_0) => mthis["onmouseout"] = __arg_0;
 
-  static onfocus_Getter(mthis) native "Window_onfocus_Getter";
-  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+  onmouseover_Getter_(mthis) => mthis["onmouseover"];
 
-  static onfocus_Setter(mthis, __arg_0) native "Window_onfocus_Setter";
-  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+  onmouseover_Setter_(mthis, __arg_0) => mthis["onmouseover"] = __arg_0;
 
-  static onhashchange_Getter(mthis) native "Window_onhashchange_Getter";
-  onhashchange_Getter_(mthis) => onhashchange_Getter(mthis);
+  onmouseup_Getter_(mthis) => mthis["onmouseup"];
 
-  static onhashchange_Setter(mthis, __arg_0) native "Window_onhashchange_Setter";
-  onhashchange_Setter_(mthis, __arg_0) => onhashchange_Setter(mthis, __arg_0);
+  onmouseup_Setter_(mthis, __arg_0) => mthis["onmouseup"] = __arg_0;
 
-  static oninput_Getter(mthis) native "Window_oninput_Getter";
-  oninput_Getter_(mthis) => oninput_Getter(mthis);
+  onmousewheel_Getter_(mthis) => mthis["onmousewheel"];
 
-  static oninput_Setter(mthis, __arg_0) native "Window_oninput_Setter";
-  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
+  onmousewheel_Setter_(mthis, __arg_0) => mthis["onmousewheel"] = __arg_0;
 
-  static oninvalid_Getter(mthis) native "Window_oninvalid_Getter";
-  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
+  onoffline_Getter_(mthis) => mthis["onoffline"];
 
-  static oninvalid_Setter(mthis, __arg_0) native "Window_oninvalid_Setter";
-  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
+  onoffline_Setter_(mthis, __arg_0) => mthis["onoffline"] = __arg_0;
 
-  static onkeydown_Getter(mthis) native "Window_onkeydown_Getter";
-  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
+  ononline_Getter_(mthis) => mthis["ononline"];
 
-  static onkeydown_Setter(mthis, __arg_0) native "Window_onkeydown_Setter";
-  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
+  ononline_Setter_(mthis, __arg_0) => mthis["ononline"] = __arg_0;
 
-  static onkeypress_Getter(mthis) native "Window_onkeypress_Getter";
-  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
+  onorientationchange_Getter_(mthis) => mthis["onorientationchange"];
 
-  static onkeypress_Setter(mthis, __arg_0) native "Window_onkeypress_Setter";
-  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
+  onorientationchange_Setter_(mthis, __arg_0) => mthis["onorientationchange"] = __arg_0;
 
-  static onkeyup_Getter(mthis) native "Window_onkeyup_Getter";
-  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
+  onpagehide_Getter_(mthis) => mthis["onpagehide"];
 
-  static onkeyup_Setter(mthis, __arg_0) native "Window_onkeyup_Setter";
-  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
+  onpagehide_Setter_(mthis, __arg_0) => mthis["onpagehide"] = __arg_0;
 
-  static onlanguagechange_Getter(mthis) native "Window_onlanguagechange_Getter";
-  onlanguagechange_Getter_(mthis) => onlanguagechange_Getter(mthis);
+  onpageshow_Getter_(mthis) => mthis["onpageshow"];
 
-  static onlanguagechange_Setter(mthis, __arg_0) native "Window_onlanguagechange_Setter";
-  onlanguagechange_Setter_(mthis, __arg_0) => onlanguagechange_Setter(mthis, __arg_0);
+  onpageshow_Setter_(mthis, __arg_0) => mthis["onpageshow"] = __arg_0;
 
-  static onload_Getter(mthis) native "Window_onload_Getter";
-  onload_Getter_(mthis) => onload_Getter(mthis);
+  onpause_Getter_(mthis) => mthis["onpause"];
 
-  static onload_Setter(mthis, __arg_0) native "Window_onload_Setter";
-  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+  onpause_Setter_(mthis, __arg_0) => mthis["onpause"] = __arg_0;
 
-  static onloadeddata_Getter(mthis) native "Window_onloadeddata_Getter";
-  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
+  onplay_Getter_(mthis) => mthis["onplay"];
 
-  static onloadeddata_Setter(mthis, __arg_0) native "Window_onloadeddata_Setter";
-  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
+  onplay_Setter_(mthis, __arg_0) => mthis["onplay"] = __arg_0;
 
-  static onloadedmetadata_Getter(mthis) native "Window_onloadedmetadata_Getter";
-  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
+  onplaying_Getter_(mthis) => mthis["onplaying"];
 
-  static onloadedmetadata_Setter(mthis, __arg_0) native "Window_onloadedmetadata_Setter";
-  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
+  onplaying_Setter_(mthis, __arg_0) => mthis["onplaying"] = __arg_0;
 
-  static onloadstart_Getter(mthis) native "Window_onloadstart_Getter";
-  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+  onpopstate_Getter_(mthis) => mthis["onpopstate"];
 
-  static onloadstart_Setter(mthis, __arg_0) native "Window_onloadstart_Setter";
-  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+  onpopstate_Setter_(mthis, __arg_0) => mthis["onpopstate"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "Window_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onmessage_Setter(mthis, __arg_0) native "Window_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static onmousedown_Getter(mthis) native "Window_onmousedown_Getter";
-  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
+  onratechange_Getter_(mthis) => mthis["onratechange"];
 
-  static onmousedown_Setter(mthis, __arg_0) native "Window_onmousedown_Setter";
-  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
+  onratechange_Setter_(mthis, __arg_0) => mthis["onratechange"] = __arg_0;
 
-  static onmouseenter_Getter(mthis) native "Window_onmouseenter_Getter";
-  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
+  onreset_Getter_(mthis) => mthis["onreset"];
 
-  static onmouseenter_Setter(mthis, __arg_0) native "Window_onmouseenter_Setter";
-  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
+  onreset_Setter_(mthis, __arg_0) => mthis["onreset"] = __arg_0;
 
-  static onmouseleave_Getter(mthis) native "Window_onmouseleave_Getter";
-  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
+  onresize_Getter_(mthis) => mthis["onresize"];
 
-  static onmouseleave_Setter(mthis, __arg_0) native "Window_onmouseleave_Setter";
-  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
+  onresize_Setter_(mthis, __arg_0) => mthis["onresize"] = __arg_0;
 
-  static onmousemove_Getter(mthis) native "Window_onmousemove_Getter";
-  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
-
-  static onmousemove_Setter(mthis, __arg_0) native "Window_onmousemove_Setter";
-  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
-
-  static onmouseout_Getter(mthis) native "Window_onmouseout_Getter";
-  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
-
-  static onmouseout_Setter(mthis, __arg_0) native "Window_onmouseout_Setter";
-  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
-
-  static onmouseover_Getter(mthis) native "Window_onmouseover_Getter";
-  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
-
-  static onmouseover_Setter(mthis, __arg_0) native "Window_onmouseover_Setter";
-  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
-
-  static onmouseup_Getter(mthis) native "Window_onmouseup_Getter";
-  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
-
-  static onmouseup_Setter(mthis, __arg_0) native "Window_onmouseup_Setter";
-  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
-
-  static onmousewheel_Getter(mthis) native "Window_onmousewheel_Getter";
-  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
-
-  static onmousewheel_Setter(mthis, __arg_0) native "Window_onmousewheel_Setter";
-  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
-
-  static onoffline_Getter(mthis) native "Window_onoffline_Getter";
-  onoffline_Getter_(mthis) => onoffline_Getter(mthis);
-
-  static onoffline_Setter(mthis, __arg_0) native "Window_onoffline_Setter";
-  onoffline_Setter_(mthis, __arg_0) => onoffline_Setter(mthis, __arg_0);
-
-  static ononline_Getter(mthis) native "Window_ononline_Getter";
-  ononline_Getter_(mthis) => ononline_Getter(mthis);
-
-  static ononline_Setter(mthis, __arg_0) native "Window_ononline_Setter";
-  ononline_Setter_(mthis, __arg_0) => ononline_Setter(mthis, __arg_0);
-
-  static onorientationchange_Getter(mthis) native "Window_onorientationchange_Getter";
-  onorientationchange_Getter_(mthis) => onorientationchange_Getter(mthis);
-
-  static onorientationchange_Setter(mthis, __arg_0) native "Window_onorientationchange_Setter";
-  onorientationchange_Setter_(mthis, __arg_0) => onorientationchange_Setter(mthis, __arg_0);
-
-  static onpagehide_Getter(mthis) native "Window_onpagehide_Getter";
-  onpagehide_Getter_(mthis) => onpagehide_Getter(mthis);
-
-  static onpagehide_Setter(mthis, __arg_0) native "Window_onpagehide_Setter";
-  onpagehide_Setter_(mthis, __arg_0) => onpagehide_Setter(mthis, __arg_0);
-
-  static onpageshow_Getter(mthis) native "Window_onpageshow_Getter";
-  onpageshow_Getter_(mthis) => onpageshow_Getter(mthis);
-
-  static onpageshow_Setter(mthis, __arg_0) native "Window_onpageshow_Setter";
-  onpageshow_Setter_(mthis, __arg_0) => onpageshow_Setter(mthis, __arg_0);
-
-  static onpause_Getter(mthis) native "Window_onpause_Getter";
-  onpause_Getter_(mthis) => onpause_Getter(mthis);
-
-  static onpause_Setter(mthis, __arg_0) native "Window_onpause_Setter";
-  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
-
-  static onplay_Getter(mthis) native "Window_onplay_Getter";
-  onplay_Getter_(mthis) => onplay_Getter(mthis);
-
-  static onplay_Setter(mthis, __arg_0) native "Window_onplay_Setter";
-  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
-
-  static onplaying_Getter(mthis) native "Window_onplaying_Getter";
-  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
-
-  static onplaying_Setter(mthis, __arg_0) native "Window_onplaying_Setter";
-  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
-
-  static onpopstate_Getter(mthis) native "Window_onpopstate_Getter";
-  onpopstate_Getter_(mthis) => onpopstate_Getter(mthis);
-
-  static onpopstate_Setter(mthis, __arg_0) native "Window_onpopstate_Setter";
-  onpopstate_Setter_(mthis, __arg_0) => onpopstate_Setter(mthis, __arg_0);
-
-  static onprogress_Getter(mthis) native "Window_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
-
-  static onprogress_Setter(mthis, __arg_0) native "Window_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
-
-  static onratechange_Getter(mthis) native "Window_onratechange_Getter";
-  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
-
-  static onratechange_Setter(mthis, __arg_0) native "Window_onratechange_Setter";
-  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
-
-  static onreset_Getter(mthis) native "Window_onreset_Getter";
-  onreset_Getter_(mthis) => onreset_Getter(mthis);
-
-  static onreset_Setter(mthis, __arg_0) native "Window_onreset_Setter";
-  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
-
-  static onresize_Getter(mthis) native "Window_onresize_Getter";
-  onresize_Getter_(mthis) => onresize_Getter(mthis);
-
-  static onresize_Setter(mthis, __arg_0) native "Window_onresize_Setter";
-  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
-
-  static onscroll_Getter(mthis) native "Window_onscroll_Getter";
-  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
-
-  static onscroll_Setter(mthis, __arg_0) native "Window_onscroll_Setter";
-  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
-
-  static onsearch_Getter(mthis) native "Window_onsearch_Getter";
-  onsearch_Getter_(mthis) => onsearch_Getter(mthis);
-
-  static onsearch_Setter(mthis, __arg_0) native "Window_onsearch_Setter";
-  onsearch_Setter_(mthis, __arg_0) => onsearch_Setter(mthis, __arg_0);
-
-  static onseeked_Getter(mthis) native "Window_onseeked_Getter";
-  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
-
-  static onseeked_Setter(mthis, __arg_0) native "Window_onseeked_Setter";
-  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
-
-  static onseeking_Getter(mthis) native "Window_onseeking_Getter";
-  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
-
-  static onseeking_Setter(mthis, __arg_0) native "Window_onseeking_Setter";
-  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
-
-  static onselect_Getter(mthis) native "Window_onselect_Getter";
-  onselect_Getter_(mthis) => onselect_Getter(mthis);
-
-  static onselect_Setter(mthis, __arg_0) native "Window_onselect_Setter";
-  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
-
-  static onshow_Getter(mthis) native "Window_onshow_Getter";
-  onshow_Getter_(mthis) => onshow_Getter(mthis);
-
-  static onshow_Setter(mthis, __arg_0) native "Window_onshow_Setter";
-  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
-
-  static onstalled_Getter(mthis) native "Window_onstalled_Getter";
-  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
-
-  static onstalled_Setter(mthis, __arg_0) native "Window_onstalled_Setter";
-  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
-
-  static onstorage_Getter(mthis) native "Window_onstorage_Getter";
-  onstorage_Getter_(mthis) => onstorage_Getter(mthis);
-
-  static onstorage_Setter(mthis, __arg_0) native "Window_onstorage_Setter";
-  onstorage_Setter_(mthis, __arg_0) => onstorage_Setter(mthis, __arg_0);
-
-  static onsubmit_Getter(mthis) native "Window_onsubmit_Getter";
-  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
-
-  static onsubmit_Setter(mthis, __arg_0) native "Window_onsubmit_Setter";
-  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
-
-  static onsuspend_Getter(mthis) native "Window_onsuspend_Getter";
-  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
-
-  static onsuspend_Setter(mthis, __arg_0) native "Window_onsuspend_Setter";
-  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
-
-  static ontimeupdate_Getter(mthis) native "Window_ontimeupdate_Getter";
-  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
-
-  static ontimeupdate_Setter(mthis, __arg_0) native "Window_ontimeupdate_Setter";
-  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
-
-  static ontoggle_Getter(mthis) native "Window_ontoggle_Getter";
-  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
-
-  static ontoggle_Setter(mthis, __arg_0) native "Window_ontoggle_Setter";
-  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
-
-  static ontouchcancel_Getter(mthis) native "Window_ontouchcancel_Getter";
-  ontouchcancel_Getter_(mthis) => ontouchcancel_Getter(mthis);
-
-  static ontouchcancel_Setter(mthis, __arg_0) native "Window_ontouchcancel_Setter";
-  ontouchcancel_Setter_(mthis, __arg_0) => ontouchcancel_Setter(mthis, __arg_0);
-
-  static ontouchend_Getter(mthis) native "Window_ontouchend_Getter";
-  ontouchend_Getter_(mthis) => ontouchend_Getter(mthis);
-
-  static ontouchend_Setter(mthis, __arg_0) native "Window_ontouchend_Setter";
-  ontouchend_Setter_(mthis, __arg_0) => ontouchend_Setter(mthis, __arg_0);
-
-  static ontouchmove_Getter(mthis) native "Window_ontouchmove_Getter";
-  ontouchmove_Getter_(mthis) => ontouchmove_Getter(mthis);
-
-  static ontouchmove_Setter(mthis, __arg_0) native "Window_ontouchmove_Setter";
-  ontouchmove_Setter_(mthis, __arg_0) => ontouchmove_Setter(mthis, __arg_0);
-
-  static ontouchstart_Getter(mthis) native "Window_ontouchstart_Getter";
-  ontouchstart_Getter_(mthis) => ontouchstart_Getter(mthis);
-
-  static ontouchstart_Setter(mthis, __arg_0) native "Window_ontouchstart_Setter";
-  ontouchstart_Setter_(mthis, __arg_0) => ontouchstart_Setter(mthis, __arg_0);
-
-  static ontransitionend_Getter(mthis) native "Window_ontransitionend_Getter";
-  ontransitionend_Getter_(mthis) => ontransitionend_Getter(mthis);
-
-  static ontransitionend_Setter(mthis, __arg_0) native "Window_ontransitionend_Setter";
-  ontransitionend_Setter_(mthis, __arg_0) => ontransitionend_Setter(mthis, __arg_0);
-
-  static onunload_Getter(mthis) native "Window_onunload_Getter";
-  onunload_Getter_(mthis) => onunload_Getter(mthis);
+  onscroll_Getter_(mthis) => mthis["onscroll"];
 
-  static onunload_Setter(mthis, __arg_0) native "Window_onunload_Setter";
-  onunload_Setter_(mthis, __arg_0) => onunload_Setter(mthis, __arg_0);
+  onscroll_Setter_(mthis, __arg_0) => mthis["onscroll"] = __arg_0;
 
-  static onvolumechange_Getter(mthis) native "Window_onvolumechange_Getter";
-  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+  onsearch_Getter_(mthis) => mthis["onsearch"];
 
-  static onvolumechange_Setter(mthis, __arg_0) native "Window_onvolumechange_Setter";
-  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+  onsearch_Setter_(mthis, __arg_0) => mthis["onsearch"] = __arg_0;
 
-  static onwaiting_Getter(mthis) native "Window_onwaiting_Getter";
-  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+  onseeked_Getter_(mthis) => mthis["onseeked"];
 
-  static onwaiting_Setter(mthis, __arg_0) native "Window_onwaiting_Setter";
-  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+  onseeked_Setter_(mthis, __arg_0) => mthis["onseeked"] = __arg_0;
 
-  static onwebkitanimationend_Getter(mthis) native "Window_onwebkitanimationend_Getter";
-  onwebkitanimationend_Getter_(mthis) => onwebkitanimationend_Getter(mthis);
+  onseeking_Getter_(mthis) => mthis["onseeking"];
 
-  static onwebkitanimationend_Setter(mthis, __arg_0) native "Window_onwebkitanimationend_Setter";
-  onwebkitanimationend_Setter_(mthis, __arg_0) => onwebkitanimationend_Setter(mthis, __arg_0);
+  onseeking_Setter_(mthis, __arg_0) => mthis["onseeking"] = __arg_0;
 
-  static onwebkitanimationiteration_Getter(mthis) native "Window_onwebkitanimationiteration_Getter";
-  onwebkitanimationiteration_Getter_(mthis) => onwebkitanimationiteration_Getter(mthis);
+  onselect_Getter_(mthis) => mthis["onselect"];
 
-  static onwebkitanimationiteration_Setter(mthis, __arg_0) native "Window_onwebkitanimationiteration_Setter";
-  onwebkitanimationiteration_Setter_(mthis, __arg_0) => onwebkitanimationiteration_Setter(mthis, __arg_0);
+  onselect_Setter_(mthis, __arg_0) => mthis["onselect"] = __arg_0;
 
-  static onwebkitanimationstart_Getter(mthis) native "Window_onwebkitanimationstart_Getter";
-  onwebkitanimationstart_Getter_(mthis) => onwebkitanimationstart_Getter(mthis);
+  onshow_Getter_(mthis) => mthis["onshow"];
 
-  static onwebkitanimationstart_Setter(mthis, __arg_0) native "Window_onwebkitanimationstart_Setter";
-  onwebkitanimationstart_Setter_(mthis, __arg_0) => onwebkitanimationstart_Setter(mthis, __arg_0);
+  onshow_Setter_(mthis, __arg_0) => mthis["onshow"] = __arg_0;
 
-  static onwebkittransitionend_Getter(mthis) native "Window_onwebkittransitionend_Getter";
-  onwebkittransitionend_Getter_(mthis) => onwebkittransitionend_Getter(mthis);
+  onstalled_Getter_(mthis) => mthis["onstalled"];
 
-  static onwebkittransitionend_Setter(mthis, __arg_0) native "Window_onwebkittransitionend_Setter";
-  onwebkittransitionend_Setter_(mthis, __arg_0) => onwebkittransitionend_Setter(mthis, __arg_0);
+  onstalled_Setter_(mthis, __arg_0) => mthis["onstalled"] = __arg_0;
 
-  static onwheel_Getter(mthis) native "Window_onwheel_Getter";
-  onwheel_Getter_(mthis) => onwheel_Getter(mthis);
+  onstorage_Getter_(mthis) => mthis["onstorage"];
 
-  static onwheel_Setter(mthis, __arg_0) native "Window_onwheel_Setter";
-  onwheel_Setter_(mthis, __arg_0) => onwheel_Setter(mthis, __arg_0);
+  onstorage_Setter_(mthis, __arg_0) => mthis["onstorage"] = __arg_0;
 
-  static openDatabase_Callback_2(mthis, __arg_0, __arg_1) native "Window_openDatabase_Callback";
-  openDatabase_Callback_2_(mthis, __arg_0, __arg_1) => openDatabase_Callback_2(mthis, __arg_0, __arg_1);
+  onsubmit_Getter_(mthis) => mthis["onsubmit"];
 
-  static openDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_openDatabase_Callback";
-  openDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onsubmit_Setter_(mthis, __arg_0) => mthis["onsubmit"] = __arg_0;
 
-  static openDatabase_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_openDatabase_Callback";
-  openDatabase_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openDatabase_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onsuspend_Getter_(mthis) => mthis["onsuspend"];
 
-  static openDatabase_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_openDatabase_Callback";
-  openDatabase_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => openDatabase_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  onsuspend_Setter_(mthis, __arg_0) => mthis["onsuspend"] = __arg_0;
 
-  static openDatabase_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Window_openDatabase_Callback";
-  openDatabase_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => openDatabase_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  ontimeupdate_Getter_(mthis) => mthis["ontimeupdate"];
 
-  static openDatabase_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Window_openDatabase_Callback";
-  openDatabase_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => openDatabase_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  ontimeupdate_Setter_(mthis, __arg_0) => mthis["ontimeupdate"] = __arg_0;
 
-  static open_Callback_0(mthis) native "Window_open_Callback";
-  open_Callback_0_(mthis) => open_Callback_0(mthis);
+  ontoggle_Getter_(mthis) => mthis["ontoggle"];
 
-  static open_Callback_1(mthis, __arg_0) native "Window_open_Callback";
-  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
+  ontoggle_Setter_(mthis, __arg_0) => mthis["ontoggle"] = __arg_0;
 
-  static open_Callback_2(mthis, __arg_0, __arg_1) native "Window_open_Callback";
-  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
+  ontouchcancel_Getter_(mthis) => mthis["ontouchcancel"];
 
-  static open_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_open_Callback";
-  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => open_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  ontouchcancel_Setter_(mthis, __arg_0) => mthis["ontouchcancel"] = __arg_0;
 
-  static open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_open_Callback";
-  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  ontouchend_Getter_(mthis) => mthis["ontouchend"];
 
-  static open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_open_Callback";
-  open_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  ontouchend_Setter_(mthis, __arg_0) => mthis["ontouchend"] = __arg_0;
 
-  static opener_Getter(mthis) native "Window_opener_Getter";
-  opener_Getter_(mthis) => opener_Getter(mthis);
+  ontouchmove_Getter_(mthis) => mthis["ontouchmove"];
 
-  static opener_Setter(mthis, __arg_0) native "Window_opener_Setter";
-  opener_Setter_(mthis, __arg_0) => opener_Setter(mthis, __arg_0);
+  ontouchmove_Setter_(mthis, __arg_0) => mthis["ontouchmove"] = __arg_0;
 
-  static orientation_Getter(mthis) native "Window_orientation_Getter";
-  orientation_Getter_(mthis) => orientation_Getter(mthis);
+  ontouchstart_Getter_(mthis) => mthis["ontouchstart"];
 
-  static outerHeight_Getter(mthis) native "Window_outerHeight_Getter";
-  outerHeight_Getter_(mthis) => outerHeight_Getter(mthis);
+  ontouchstart_Setter_(mthis, __arg_0) => mthis["ontouchstart"] = __arg_0;
 
-  static outerWidth_Getter(mthis) native "Window_outerWidth_Getter";
-  outerWidth_Getter_(mthis) => outerWidth_Getter(mthis);
+  ontransitionend_Getter_(mthis) => mthis["ontransitionend"];
 
-  static pageXOffset_Getter(mthis) native "Window_pageXOffset_Getter";
-  pageXOffset_Getter_(mthis) => pageXOffset_Getter(mthis);
+  ontransitionend_Setter_(mthis, __arg_0) => mthis["ontransitionend"] = __arg_0;
 
-  static pageYOffset_Getter(mthis) native "Window_pageYOffset_Getter";
-  pageYOffset_Getter_(mthis) => pageYOffset_Getter(mthis);
+  onunload_Getter_(mthis) => mthis["onunload"];
 
-  static parent_Getter(mthis) native "Window_parent_Getter";
-  parent_Getter_(mthis) => parent_Getter(mthis);
+  onunload_Setter_(mthis, __arg_0) => mthis["onunload"] = __arg_0;
 
-  static performance_Getter(mthis) native "Window_performance_Getter";
-  performance_Getter_(mthis) => performance_Getter(mthis);
+  onvolumechange_Getter_(mthis) => mthis["onvolumechange"];
 
-  static personalbar_Getter(mthis) native "Window_personalbar_Getter";
-  personalbar_Getter_(mthis) => personalbar_Getter(mthis);
+  onvolumechange_Setter_(mthis, __arg_0) => mthis["onvolumechange"] = __arg_0;
 
-  static postMessage_Callback_0(mthis) native "Window_postMessage_Callback";
-  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+  onwaiting_Getter_(mthis) => mthis["onwaiting"];
 
-  static postMessage_Callback_1(mthis, __arg_0) native "Window_postMessage_Callback";
-  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+  onwaiting_Setter_(mthis, __arg_0) => mthis["onwaiting"] = __arg_0;
 
-  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "Window_postMessage_Callback";
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+  onwebkitanimationend_Getter_(mthis) => mthis["onwebkitanimationend"];
 
-  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_postMessage_Callback";
-  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  onwebkitanimationend_Setter_(mthis, __arg_0) => mthis["onwebkitanimationend"] = __arg_0;
 
-  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_postMessage_Callback";
-  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  onwebkitanimationiteration_Getter_(mthis) => mthis["onwebkitanimationiteration"];
 
-  static postMessage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_postMessage_Callback";
-  postMessage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => postMessage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  onwebkitanimationiteration_Setter_(mthis, __arg_0) => mthis["onwebkitanimationiteration"] = __arg_0;
 
-  static print_Callback_0(mthis) native "Window_print_Callback";
-  print_Callback_0_(mthis) => print_Callback_0(mthis);
+  onwebkitanimationstart_Getter_(mthis) => mthis["onwebkitanimationstart"];
 
-  static print_Callback_1(mthis, __arg_0) native "Window_print_Callback";
-  print_Callback_1_(mthis, __arg_0) => print_Callback_1(mthis, __arg_0);
+  onwebkitanimationstart_Setter_(mthis, __arg_0) => mthis["onwebkitanimationstart"] = __arg_0;
 
-  static print_Callback_2(mthis, __arg_0, __arg_1) native "Window_print_Callback";
-  print_Callback_2_(mthis, __arg_0, __arg_1) => print_Callback_2(mthis, __arg_0, __arg_1);
+  onwebkittransitionend_Getter_(mthis) => mthis["onwebkittransitionend"];
 
-  static releaseEvents_Callback_0(mthis) native "Window_releaseEvents_Callback";
-  releaseEvents_Callback_0_(mthis) => releaseEvents_Callback_0(mthis);
+  onwebkittransitionend_Setter_(mthis, __arg_0) => mthis["onwebkittransitionend"] = __arg_0;
 
-  static releaseEvents_Callback_1(mthis, __arg_0) native "Window_releaseEvents_Callback";
-  releaseEvents_Callback_1_(mthis, __arg_0) => releaseEvents_Callback_1(mthis, __arg_0);
+  onwheel_Getter_(mthis) => mthis["onwheel"];
 
-  static releaseEvents_Callback_2(mthis, __arg_0, __arg_1) native "Window_releaseEvents_Callback";
-  releaseEvents_Callback_2_(mthis, __arg_0, __arg_1) => releaseEvents_Callback_2(mthis, __arg_0, __arg_1);
+  onwheel_Setter_(mthis, __arg_0) => mthis["onwheel"] = __arg_0;
 
-  static requestAnimationFrame_Callback_0(mthis) native "Window_requestAnimationFrame_Callback";
-  requestAnimationFrame_Callback_0_(mthis) => requestAnimationFrame_Callback_0(mthis);
+  openDatabase_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("openDatabase", [__arg_0, __arg_1]);
 
-  static requestAnimationFrame_Callback_1(mthis, __arg_0) native "Window_requestAnimationFrame_Callback";
-  requestAnimationFrame_Callback_1_(mthis, __arg_0) => requestAnimationFrame_Callback_1(mthis, __arg_0);
+  openDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("openDatabase", [__arg_0, __arg_1, __arg_2]);
 
-  static requestAnimationFrame_Callback_2(mthis, __arg_0, __arg_1) native "Window_requestAnimationFrame_Callback";
-  requestAnimationFrame_Callback_2_(mthis, __arg_0, __arg_1) => requestAnimationFrame_Callback_2(mthis, __arg_0, __arg_1);
+  openDatabase_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("openDatabase", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static requestAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_requestAnimationFrame_Callback";
-  requestAnimationFrame_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  openDatabase_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("openDatabase", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static resizeBy_Callback_0(mthis) native "Window_resizeBy_Callback";
-  resizeBy_Callback_0_(mthis) => resizeBy_Callback_0(mthis);
+  open_Callback_0_(mthis) => mthis.callMethod("open", []);
 
-  static resizeBy_Callback_1(mthis, __arg_0) native "Window_resizeBy_Callback";
-  resizeBy_Callback_1_(mthis, __arg_0) => resizeBy_Callback_1(mthis, __arg_0);
+  open_Callback_1_(mthis, __arg_0) => mthis.callMethod("open", [__arg_0]);
 
-  static resizeBy_Callback_2(mthis, __arg_0, __arg_1) native "Window_resizeBy_Callback";
-  resizeBy_Callback_2_(mthis, __arg_0, __arg_1) => resizeBy_Callback_2(mthis, __arg_0, __arg_1);
+  open_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("open", [__arg_0, __arg_1]);
 
-  static resizeBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_resizeBy_Callback";
-  resizeBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => resizeBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("open", [__arg_0, __arg_1, __arg_2]);
 
-  static resizeBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_resizeBy_Callback";
-  resizeBy_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => resizeBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  opener_Getter_(mthis) => mthis["opener"];
 
-  static resizeTo_Callback_0(mthis) native "Window_resizeTo_Callback";
-  resizeTo_Callback_0_(mthis) => resizeTo_Callback_0(mthis);
+  opener_Setter_(mthis, __arg_0) => mthis["opener"] = __arg_0;
 
-  static resizeTo_Callback_1(mthis, __arg_0) native "Window_resizeTo_Callback";
-  resizeTo_Callback_1_(mthis, __arg_0) => resizeTo_Callback_1(mthis, __arg_0);
+  orientation_Getter_(mthis) => mthis["orientation"];
 
-  static resizeTo_Callback_2(mthis, __arg_0, __arg_1) native "Window_resizeTo_Callback";
-  resizeTo_Callback_2_(mthis, __arg_0, __arg_1) => resizeTo_Callback_2(mthis, __arg_0, __arg_1);
+  outerHeight_Getter_(mthis) => mthis["outerHeight"];
 
-  static resizeTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_resizeTo_Callback";
-  resizeTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => resizeTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  outerWidth_Getter_(mthis) => mthis["outerWidth"];
 
-  static resizeTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_resizeTo_Callback";
-  resizeTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => resizeTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  pageXOffset_Getter_(mthis) => mthis["pageXOffset"];
 
-  static screenLeft_Getter(mthis) native "Window_screenLeft_Getter";
-  screenLeft_Getter_(mthis) => screenLeft_Getter(mthis);
+  pageYOffset_Getter_(mthis) => mthis["pageYOffset"];
 
-  static screenTop_Getter(mthis) native "Window_screenTop_Getter";
-  screenTop_Getter_(mthis) => screenTop_Getter(mthis);
+  parent_Getter_(mthis) => mthis["parent"];
 
-  static screenX_Getter(mthis) native "Window_screenX_Getter";
-  screenX_Getter_(mthis) => screenX_Getter(mthis);
+  performance_Getter_(mthis) => mthis["performance"];
 
-  static screenY_Getter(mthis) native "Window_screenY_Getter";
-  screenY_Getter_(mthis) => screenY_Getter(mthis);
+  personalbar_Getter_(mthis) => mthis["personalbar"];
 
-  static screen_Getter(mthis) native "Window_screen_Getter";
-  screen_Getter_(mthis) => screen_Getter(mthis);
+  postMessage_Callback_0_(mthis) => mthis.callMethod("postMessage", []);
 
-  static scrollBy_Callback_0(mthis) native "Window_scrollBy_Callback";
-  scrollBy_Callback_0_(mthis) => scrollBy_Callback_0(mthis);
+  postMessage_Callback_1_(mthis, __arg_0) => mthis.callMethod("postMessage", [__arg_0]);
 
-  static scrollBy_Callback_1(mthis, __arg_0) native "Window_scrollBy_Callback";
-  scrollBy_Callback_1_(mthis, __arg_0) => scrollBy_Callback_1(mthis, __arg_0);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("postMessage", [__arg_0, __arg_1]);
 
-  static scrollBy_Callback_2(mthis, __arg_0, __arg_1) native "Window_scrollBy_Callback";
-  scrollBy_Callback_2_(mthis, __arg_0, __arg_1) => scrollBy_Callback_2(mthis, __arg_0, __arg_1);
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("postMessage", [__arg_0, __arg_1, __arg_2]);
 
-  static scrollBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_scrollBy_Callback";
-  scrollBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  print_Callback_0_(mthis) => mthis.callMethod("print", []);
 
-  static scrollBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_scrollBy_Callback";
-  scrollBy_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scrollBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  releaseEvents_Callback_0_(mthis) => mthis.callMethod("releaseEvents", []);
 
-  static scrollBy_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_scrollBy_Callback";
-  scrollBy_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scrollBy_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  requestAnimationFrame_Callback_0_(mthis) => mthis.callMethod("requestAnimationFrame", []);
 
-  static scrollTo_Callback_0(mthis) native "Window_scrollTo_Callback";
-  scrollTo_Callback_0_(mthis) => scrollTo_Callback_0(mthis);
+  requestAnimationFrame_Callback_1_(mthis, __arg_0) => mthis.callMethod("requestAnimationFrame", [__arg_0]);
 
-  static scrollTo_Callback_1(mthis, __arg_0) native "Window_scrollTo_Callback";
-  scrollTo_Callback_1_(mthis, __arg_0) => scrollTo_Callback_1(mthis, __arg_0);
+  resizeBy_Callback_0_(mthis) => mthis.callMethod("resizeBy", []);
 
-  static scrollTo_Callback_2(mthis, __arg_0, __arg_1) native "Window_scrollTo_Callback";
-  scrollTo_Callback_2_(mthis, __arg_0, __arg_1) => scrollTo_Callback_2(mthis, __arg_0, __arg_1);
+  resizeBy_Callback_1_(mthis, __arg_0) => mthis.callMethod("resizeBy", [__arg_0]);
 
-  static scrollTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_scrollTo_Callback";
-  scrollTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  resizeBy_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("resizeBy", [__arg_0, __arg_1]);
 
-  static scrollTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_scrollTo_Callback";
-  scrollTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scrollTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  resizeTo_Callback_0_(mthis) => mthis.callMethod("resizeTo", []);
 
-  static scrollTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_scrollTo_Callback";
-  scrollTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scrollTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  resizeTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("resizeTo", [__arg_0]);
 
-  static scrollX_Getter(mthis) native "Window_scrollX_Getter";
-  scrollX_Getter_(mthis) => scrollX_Getter(mthis);
+  resizeTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("resizeTo", [__arg_0, __arg_1]);
 
-  static scrollY_Getter(mthis) native "Window_scrollY_Getter";
-  scrollY_Getter_(mthis) => scrollY_Getter(mthis);
+  screenLeft_Getter_(mthis) => mthis["screenLeft"];
 
-  static scroll_Callback_0(mthis) native "Window_scroll_Callback";
-  scroll_Callback_0_(mthis) => scroll_Callback_0(mthis);
+  screenTop_Getter_(mthis) => mthis["screenTop"];
 
-  static scroll_Callback_1(mthis, __arg_0) native "Window_scroll_Callback";
-  scroll_Callback_1_(mthis, __arg_0) => scroll_Callback_1(mthis, __arg_0);
+  screenX_Getter_(mthis) => mthis["screenX"];
 
-  static scroll_Callback_2(mthis, __arg_0, __arg_1) native "Window_scroll_Callback";
-  scroll_Callback_2_(mthis, __arg_0, __arg_1) => scroll_Callback_2(mthis, __arg_0, __arg_1);
+  screenY_Getter_(mthis) => mthis["screenY"];
 
-  static scroll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_scroll_Callback";
-  scroll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scroll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  screen_Getter_(mthis) => mthis["screen"];
 
-  static scroll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_scroll_Callback";
-  scroll_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scroll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scrollBy_Callback_0_(mthis) => mthis.callMethod("scrollBy", []);
 
-  static scroll_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_scroll_Callback";
-  scroll_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scroll_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  scrollBy_Callback_1_(mthis, __arg_0) => mthis.callMethod("scrollBy", [__arg_0]);
 
-  static scrollbars_Getter(mthis) native "Window_scrollbars_Getter";
-  scrollbars_Getter_(mthis) => scrollbars_Getter(mthis);
+  scrollBy_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scrollBy", [__arg_0, __arg_1]);
 
-  static self_Getter(mthis) native "Window_self_Getter";
-  self_Getter_(mthis) => self_Getter(mthis);
+  scrollBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scrollBy", [__arg_0, __arg_1, __arg_2]);
 
-  static sessionStorage_Getter(mthis) native "Window_sessionStorage_Getter";
-  sessionStorage_Getter_(mthis) => sessionStorage_Getter(mthis);
+  scrollTo_Callback_0_(mthis) => mthis.callMethod("scrollTo", []);
 
-  static setInterval_Callback_0(mthis) native "Window_setInterval_Callback";
-  setInterval_Callback_0_(mthis) => setInterval_Callback_0(mthis);
+  scrollTo_Callback_1_(mthis, __arg_0) => mthis.callMethod("scrollTo", [__arg_0]);
 
-  static setInterval_Callback_1(mthis, __arg_0) native "Window_setInterval_Callback";
-  setInterval_Callback_1_(mthis, __arg_0) => setInterval_Callback_1(mthis, __arg_0);
+  scrollTo_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scrollTo", [__arg_0, __arg_1]);
 
-  static setInterval_Callback_2(mthis, __arg_0, __arg_1) native "Window_setInterval_Callback";
-  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => setInterval_Callback_2(mthis, __arg_0, __arg_1);
+  scrollTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scrollTo", [__arg_0, __arg_1, __arg_2]);
 
-  static setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_setInterval_Callback";
-  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scrollX_Getter_(mthis) => mthis["scrollX"];
 
-  static setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_setInterval_Callback";
-  setInterval_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scrollY_Getter_(mthis) => mthis["scrollY"];
 
-  static setTimeout_Callback_0(mthis) native "Window_setTimeout_Callback";
-  setTimeout_Callback_0_(mthis) => setTimeout_Callback_0(mthis);
+  scroll_Callback_0_(mthis) => mthis.callMethod("scroll", []);
 
-  static setTimeout_Callback_1(mthis, __arg_0) native "Window_setTimeout_Callback";
-  setTimeout_Callback_1_(mthis, __arg_0) => setTimeout_Callback_1(mthis, __arg_0);
+  scroll_Callback_1_(mthis, __arg_0) => mthis.callMethod("scroll", [__arg_0]);
 
-  static setTimeout_Callback_2(mthis, __arg_0, __arg_1) native "Window_setTimeout_Callback";
-  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => setTimeout_Callback_2(mthis, __arg_0, __arg_1);
+  scroll_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("scroll", [__arg_0, __arg_1]);
 
-  static setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_setTimeout_Callback";
-  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  scroll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("scroll", [__arg_0, __arg_1, __arg_2]);
 
-  static setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_setTimeout_Callback";
-  setTimeout_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  scrollbars_Getter_(mthis) => mthis["scrollbars"];
 
-  static showModalDialog_Callback_0(mthis) native "Window_showModalDialog_Callback";
-  showModalDialog_Callback_0_(mthis) => showModalDialog_Callback_0(mthis);
+  self_Getter_(mthis) => mthis["self"];
 
-  static showModalDialog_Callback_1(mthis, __arg_0) native "Window_showModalDialog_Callback";
-  showModalDialog_Callback_1_(mthis, __arg_0) => showModalDialog_Callback_1(mthis, __arg_0);
+  sessionStorage_Getter_(mthis) => mthis["sessionStorage"];
 
-  static showModalDialog_Callback_2(mthis, __arg_0, __arg_1) native "Window_showModalDialog_Callback";
-  showModalDialog_Callback_2_(mthis, __arg_0, __arg_1) => showModalDialog_Callback_2(mthis, __arg_0, __arg_1);
+  setInterval_Callback_0_(mthis) => mthis.callMethod("setInterval", []);
 
-  static showModalDialog_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_showModalDialog_Callback";
-  showModalDialog_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => showModalDialog_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setInterval_Callback_1_(mthis, __arg_0) => mthis.callMethod("setInterval", [__arg_0]);
 
-  static showModalDialog_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_showModalDialog_Callback";
-  showModalDialog_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => showModalDialog_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setInterval", [__arg_0, __arg_1]);
 
-  static showModalDialog_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_showModalDialog_Callback";
-  showModalDialog_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => showModalDialog_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setTimeout_Callback_0_(mthis) => mthis.callMethod("setTimeout", []);
 
-  static speechSynthesis_Getter(mthis) native "Window_speechSynthesis_Getter";
-  speechSynthesis_Getter_(mthis) => speechSynthesis_Getter(mthis);
+  setTimeout_Callback_1_(mthis, __arg_0) => mthis.callMethod("setTimeout", [__arg_0]);
 
-  static status_Getter(mthis) native "Window_status_Getter";
-  status_Getter_(mthis) => status_Getter(mthis);
+  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setTimeout", [__arg_0, __arg_1]);
 
-  static status_Setter(mthis, __arg_0) native "Window_status_Setter";
-  status_Setter_(mthis, __arg_0) => status_Setter(mthis, __arg_0);
+  showModalDialog_Callback_0_(mthis) => mthis.callMethod("showModalDialog", []);
 
-  static statusbar_Getter(mthis) native "Window_statusbar_Getter";
-  statusbar_Getter_(mthis) => statusbar_Getter(mthis);
+  showModalDialog_Callback_1_(mthis, __arg_0) => mthis.callMethod("showModalDialog", [__arg_0]);
 
-  static stop_Callback_0(mthis) native "Window_stop_Callback";
-  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
+  showModalDialog_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("showModalDialog", [__arg_0, __arg_1]);
 
-  static stop_Callback_1(mthis, __arg_0) native "Window_stop_Callback";
-  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
+  showModalDialog_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("showModalDialog", [__arg_0, __arg_1, __arg_2]);
 
-  static stop_Callback_2(mthis, __arg_0, __arg_1) native "Window_stop_Callback";
-  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+  speechSynthesis_Getter_(mthis) => mthis["speechSynthesis"];
 
-  static styleMedia_Getter(mthis) native "Window_styleMedia_Getter";
-  styleMedia_Getter_(mthis) => styleMedia_Getter(mthis);
+  status_Getter_(mthis) => mthis["status"];
 
-  static toolbar_Getter(mthis) native "Window_toolbar_Getter";
-  toolbar_Getter_(mthis) => toolbar_Getter(mthis);
+  status_Setter_(mthis, __arg_0) => mthis["status"] = __arg_0;
 
-  static top_Getter(mthis) native "Window_top_Getter";
-  top_Getter_(mthis) => top_Getter(mthis);
+  statusbar_Getter_(mthis) => mthis["statusbar"];
 
-  static webkitRequestFileSystem_Callback_1(mthis, __arg_0) native "Window_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => webkitRequestFileSystem_Callback_1(mthis, __arg_0);
+  stop_Callback_0_(mthis) => mthis.callMethod("stop", []);
 
-  static webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1) native "Window_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1);
+  styleMedia_Getter_(mthis) => mthis["styleMedia"];
 
-  static webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  toolbar_Getter_(mthis) => mthis["toolbar"];
 
-  static webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  top_Getter_(mthis) => mthis["top"];
 
-  static webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitRequestFileSystem", [__arg_0]);
 
-  static webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Window_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitRequestFileSystem", [__arg_0, __arg_1]);
 
-  static webkitResolveLocalFileSystemURL_Callback_0(mthis) native "Window_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => webkitResolveLocalFileSystemURL_Callback_0(mthis);
+  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2]);
 
-  static webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0) native "Window_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0);
+  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1) native "Window_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1);
+  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => mthis.callMethod("webkitResolveLocalFileSystemURL", []);
 
-  static webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitResolveLocalFileSystemURL", [__arg_0]);
 
-  static webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitResolveLocalFileSystemURL", [__arg_0, __arg_1]);
 
-  static webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("webkitResolveLocalFileSystemURL", [__arg_0, __arg_1, __arg_2]);
 
-  static webkitStorageInfo_Getter(mthis) native "Window_webkitStorageInfo_Getter";
-  webkitStorageInfo_Getter_(mthis) => webkitStorageInfo_Getter(mthis);
+  webkitStorageInfo_Getter_(mthis) => mthis["webkitStorageInfo"];
 
-  static window_Getter(mthis) native "Window_window_Getter";
-  window_Getter_(mthis) => window_Getter(mthis);
+  window_Getter_(mthis) => mthis["window"];
 
 }
 
 class BlinkWorker extends BlinkEventTarget {
   static final instance = new BlinkWorker();
 
-  static constructorCallback_0() native "Worker_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["Worker"], []);
 
-  static constructorCallback_1(__arg_0) native "Worker_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["Worker"], [__arg_0]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "Worker_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Worker_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onerror_Getter(mthis) native "Worker_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onmessage_Getter_(mthis) => mthis["onmessage"];
 
-  static onerror_Setter(mthis, __arg_0) native "Worker_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onmessage_Setter_(mthis, __arg_0) => mthis["onmessage"] = __arg_0;
 
-  static onmessage_Getter(mthis) native "Worker_onmessage_Getter";
-  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+  postMessage_Callback_0_(mthis) => mthis.callMethod("postMessage", []);
 
-  static onmessage_Setter(mthis, __arg_0) native "Worker_onmessage_Setter";
-  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+  postMessage_Callback_1_(mthis, __arg_0) => mthis.callMethod("postMessage", [__arg_0]);
 
-  static postMessage_Callback_0(mthis) native "Worker_postMessage_Callback";
-  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("postMessage", [__arg_0, __arg_1]);
 
-  static postMessage_Callback_1(mthis, __arg_0) native "Worker_postMessage_Callback";
-  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
-
-  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "Worker_postMessage_Callback";
-  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
-
-  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Worker_postMessage_Callback";
-  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Worker_postMessage_Callback";
-  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static terminate_Callback_0(mthis) native "Worker_terminate_Callback";
-  terminate_Callback_0_(mthis) => terminate_Callback_0(mthis);
-
-  static terminate_Callback_1(mthis, __arg_0) native "Worker_terminate_Callback";
-  terminate_Callback_1_(mthis, __arg_0) => terminate_Callback_1(mthis, __arg_0);
-
-  static terminate_Callback_2(mthis, __arg_0, __arg_1) native "Worker_terminate_Callback";
-  terminate_Callback_2_(mthis, __arg_0, __arg_1) => terminate_Callback_2(mthis, __arg_0, __arg_1);
+  terminate_Callback_0_(mthis) => mthis.callMethod("terminate", []);
 
 }
 
@@ -30682,323 +16760,160 @@
 class BlinkWorkerGlobalScope extends BlinkEventTarget {
   static final instance = new BlinkWorkerGlobalScope();
 
-  static atob_Callback_0(mthis) native "WorkerGlobalScope_atob_Callback";
-  atob_Callback_0_(mthis) => atob_Callback_0(mthis);
+  atob_Callback_0_(mthis) => mthis.callMethod("atob", []);
 
-  static atob_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_atob_Callback";
-  atob_Callback_1_(mthis, __arg_0) => atob_Callback_1(mthis, __arg_0);
+  atob_Callback_1_(mthis, __arg_0) => mthis.callMethod("atob", [__arg_0]);
 
-  static atob_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_atob_Callback";
-  atob_Callback_2_(mthis, __arg_0, __arg_1) => atob_Callback_2(mthis, __arg_0, __arg_1);
+  btoa_Callback_0_(mthis) => mthis.callMethod("btoa", []);
 
-  static atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_atob_Callback";
-  atob_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  btoa_Callback_1_(mthis, __arg_0) => mthis.callMethod("btoa", [__arg_0]);
 
-  static btoa_Callback_0(mthis) native "WorkerGlobalScope_btoa_Callback";
-  btoa_Callback_0_(mthis) => btoa_Callback_0(mthis);
+  clearInterval_Callback_0_(mthis) => mthis.callMethod("clearInterval", []);
 
-  static btoa_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_btoa_Callback";
-  btoa_Callback_1_(mthis, __arg_0) => btoa_Callback_1(mthis, __arg_0);
+  clearInterval_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearInterval", [__arg_0]);
 
-  static btoa_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_btoa_Callback";
-  btoa_Callback_2_(mthis, __arg_0, __arg_1) => btoa_Callback_2(mthis, __arg_0, __arg_1);
+  clearTimeout_Callback_0_(mthis) => mthis.callMethod("clearTimeout", []);
 
-  static btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_btoa_Callback";
-  btoa_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  clearTimeout_Callback_1_(mthis, __arg_0) => mthis.callMethod("clearTimeout", [__arg_0]);
 
-  static clearInterval_Callback_0(mthis) native "WorkerGlobalScope_clearInterval_Callback";
-  clearInterval_Callback_0_(mthis) => clearInterval_Callback_0(mthis);
+  close_Callback_0_(mthis) => mthis.callMethod("close", []);
 
-  static clearInterval_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_clearInterval_Callback";
-  clearInterval_Callback_1_(mthis, __arg_0) => clearInterval_Callback_1(mthis, __arg_0);
+  console_Getter_(mthis) => mthis["console"];
 
-  static clearInterval_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_clearInterval_Callback";
-  clearInterval_Callback_2_(mthis, __arg_0, __arg_1) => clearInterval_Callback_2(mthis, __arg_0, __arg_1);
+  createImageBitmap_Callback_0_(mthis) => mthis.callMethod("createImageBitmap", []);
 
-  static clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_clearInterval_Callback";
-  clearInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  createImageBitmap_Callback_1_(mthis, __arg_0) => mthis.callMethod("createImageBitmap", [__arg_0]);
 
-  static clearTimeout_Callback_0(mthis) native "WorkerGlobalScope_clearTimeout_Callback";
-  clearTimeout_Callback_0_(mthis) => clearTimeout_Callback_0(mthis);
+  createImageBitmap_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("createImageBitmap", [__arg_0, __arg_1, __arg_2]);
 
-  static clearTimeout_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_clearTimeout_Callback";
-  clearTimeout_Callback_1_(mthis, __arg_0) => clearTimeout_Callback_1(mthis, __arg_0);
+  createImageBitmap_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("createImageBitmap", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static clearTimeout_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_clearTimeout_Callback";
-  clearTimeout_Callback_2_(mthis, __arg_0, __arg_1) => clearTimeout_Callback_2(mthis, __arg_0, __arg_1);
+  createImageBitmap_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("createImageBitmap", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_clearTimeout_Callback";
-  clearTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  crypto_Getter_(mthis) => mthis["crypto"];
 
-  static close_Callback_0(mthis) native "WorkerGlobalScope_close_Callback";
-  close_Callback_0_(mthis) => close_Callback_0(mthis);
+  importScripts_Callback_0_(mthis) => mthis.callMethod("importScripts", []);
 
-  static close_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_close_Callback";
-  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+  importScripts_Callback_1_(mthis, __arg_0) => mthis.callMethod("importScripts", [__arg_0]);
 
-  static close_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_close_Callback";
-  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+  indexedDB_Getter_(mthis) => mthis["indexedDB"];
 
-  static console_Getter(mthis) native "WorkerGlobalScope_console_Getter";
-  console_Getter_(mthis) => console_Getter(mthis);
+  location_Getter_(mthis) => mthis["location"];
 
-  static createImageBitmap_Callback_0(mthis) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_0_(mthis) => createImageBitmap_Callback_0(mthis);
+  navigator_Getter_(mthis) => mthis["navigator"];
 
-  static createImageBitmap_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_1_(mthis, __arg_0) => createImageBitmap_Callback_1(mthis, __arg_0);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static createImageBitmap_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_2_(mthis, __arg_0, __arg_1) => createImageBitmap_Callback_2(mthis, __arg_0, __arg_1);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static createImageBitmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createImageBitmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  performance_Getter_(mthis) => mthis["performance"];
 
-  static createImageBitmap_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createImageBitmap_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  self_Getter_(mthis) => mthis["self"];
 
-  static createImageBitmap_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createImageBitmap_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  setInterval_Callback_0_(mthis) => mthis.callMethod("setInterval", []);
 
-  static createImageBitmap_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createImageBitmap_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  setInterval_Callback_1_(mthis, __arg_0) => mthis.callMethod("setInterval", [__arg_0]);
 
-  static createImageBitmap_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WorkerGlobalScope_createImageBitmap_Callback";
-  createImageBitmap_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createImageBitmap_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setInterval", [__arg_0, __arg_1]);
 
-  static crypto_Getter(mthis) native "WorkerGlobalScope_crypto_Getter";
-  crypto_Getter_(mthis) => crypto_Getter(mthis);
+  setTimeout_Callback_0_(mthis) => mthis.callMethod("setTimeout", []);
 
-  static importScripts_Callback_0(mthis) native "WorkerGlobalScope_importScripts_Callback";
-  importScripts_Callback_0_(mthis) => importScripts_Callback_0(mthis);
+  setTimeout_Callback_1_(mthis, __arg_0) => mthis.callMethod("setTimeout", [__arg_0]);
 
-  static importScripts_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_importScripts_Callback";
-  importScripts_Callback_1_(mthis, __arg_0) => importScripts_Callback_1(mthis, __arg_0);
+  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setTimeout", [__arg_0, __arg_1]);
 
-  static importScripts_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_importScripts_Callback";
-  importScripts_Callback_2_(mthis, __arg_0, __arg_1) => importScripts_Callback_2(mthis, __arg_0, __arg_1);
+  webkitRequestFileSystemSync_Callback_0_(mthis) => mthis.callMethod("webkitRequestFileSystemSync", []);
 
-  static importScripts_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_importScripts_Callback";
-  importScripts_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importScripts_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitRequestFileSystemSync_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitRequestFileSystemSync", [__arg_0]);
 
-  static indexedDB_Getter(mthis) native "WorkerGlobalScope_indexedDB_Getter";
-  indexedDB_Getter_(mthis) => indexedDB_Getter(mthis);
+  webkitRequestFileSystemSync_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitRequestFileSystemSync", [__arg_0, __arg_1]);
 
-  static location_Getter(mthis) native "WorkerGlobalScope_location_Getter";
-  location_Getter_(mthis) => location_Getter(mthis);
+  webkitRequestFileSystem_Callback_0_(mthis) => mthis.callMethod("webkitRequestFileSystem", []);
 
-  static navigator_Getter(mthis) native "WorkerGlobalScope_navigator_Getter";
-  navigator_Getter_(mthis) => navigator_Getter(mthis);
-
-  static onerror_Getter(mthis) native "WorkerGlobalScope_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
-
-  static onerror_Setter(mthis, __arg_0) native "WorkerGlobalScope_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
-
-  static performance_Getter(mthis) native "WorkerGlobalScope_performance_Getter";
-  performance_Getter_(mthis) => performance_Getter(mthis);
-
-  static self_Getter(mthis) native "WorkerGlobalScope_self_Getter";
-  self_Getter_(mthis) => self_Getter(mthis);
-
-  static setInterval_Callback_0(mthis) native "WorkerGlobalScope_setInterval_Callback";
-  setInterval_Callback_0_(mthis) => setInterval_Callback_0(mthis);
-
-  static setInterval_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_setInterval_Callback";
-  setInterval_Callback_1_(mthis, __arg_0) => setInterval_Callback_1(mthis, __arg_0);
-
-  static setInterval_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_setInterval_Callback";
-  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => setInterval_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_setInterval_Callback";
-  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_setInterval_Callback";
-  setInterval_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setTimeout_Callback_0(mthis) native "WorkerGlobalScope_setTimeout_Callback";
-  setTimeout_Callback_0_(mthis) => setTimeout_Callback_0(mthis);
-
-  static setTimeout_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_setTimeout_Callback";
-  setTimeout_Callback_1_(mthis, __arg_0) => setTimeout_Callback_1(mthis, __arg_0);
-
-  static setTimeout_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_setTimeout_Callback";
-  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => setTimeout_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_setTimeout_Callback";
-  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_setTimeout_Callback";
-  setTimeout_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static webkitRequestFileSystemSync_Callback_0(mthis) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
-  webkitRequestFileSystemSync_Callback_0_(mthis) => webkitRequestFileSystemSync_Callback_0(mthis);
-
-  static webkitRequestFileSystemSync_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
-  webkitRequestFileSystemSync_Callback_1_(mthis, __arg_0) => webkitRequestFileSystemSync_Callback_1(mthis, __arg_0);
-
-  static webkitRequestFileSystemSync_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
-  webkitRequestFileSystemSync_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFileSystemSync_Callback_2(mthis, __arg_0, __arg_1);
-
-  static webkitRequestFileSystemSync_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
-  webkitRequestFileSystemSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFileSystemSync_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static webkitRequestFileSystemSync_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
-  webkitRequestFileSystemSync_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitRequestFileSystemSync_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static webkitRequestFileSystem_Callback_0(mthis) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_0_(mthis) => webkitRequestFileSystem_Callback_0(mthis);
-
-  static webkitRequestFileSystem_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => webkitRequestFileSystem_Callback_1(mthis, __arg_0);
-
-  static webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-  webkitRequestFileSystem_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static webkitResolveLocalFileSystemSyncURL_Callback_0(mthis) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
-  webkitResolveLocalFileSystemSyncURL_Callback_0_(mthis) => webkitResolveLocalFileSystemSyncURL_Callback_0(mthis);
+  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitRequestFileSystem", [__arg_0]);
 
-  static webkitResolveLocalFileSystemSyncURL_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
-  webkitResolveLocalFileSystemSyncURL_Callback_1_(mthis, __arg_0) => webkitResolveLocalFileSystemSyncURL_Callback_1(mthis, __arg_0);
+  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitRequestFileSystem", [__arg_0, __arg_1]);
 
-  static webkitResolveLocalFileSystemSyncURL_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
-  webkitResolveLocalFileSystemSyncURL_Callback_2_(mthis, __arg_0, __arg_1) => webkitResolveLocalFileSystemSyncURL_Callback_2(mthis, __arg_0, __arg_1);
+  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2]);
 
-  static webkitResolveLocalFileSystemSyncURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
-  webkitResolveLocalFileSystemSyncURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitResolveLocalFileSystemSyncURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("webkitRequestFileSystem", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static webkitResolveLocalFileSystemURL_Callback_0(mthis) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => webkitResolveLocalFileSystemURL_Callback_0(mthis);
+  webkitResolveLocalFileSystemSyncURL_Callback_0_(mthis) => mthis.callMethod("webkitResolveLocalFileSystemSyncURL", []);
 
-  static webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0);
+  webkitResolveLocalFileSystemSyncURL_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitResolveLocalFileSystemSyncURL", [__arg_0]);
 
-  static webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1);
+  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => mthis.callMethod("webkitResolveLocalFileSystemURL", []);
 
-  static webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => mthis.callMethod("webkitResolveLocalFileSystemURL", [__arg_0]);
 
-  static webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("webkitResolveLocalFileSystemURL", [__arg_0, __arg_1]);
 
-  static webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-  webkitResolveLocalFileSystemURL_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("webkitResolveLocalFileSystemURL", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkWorkerLocation {
   static final instance = new BlinkWorkerLocation();
 
-  static hash_Getter(mthis) native "WorkerLocation_hash_Getter";
-  hash_Getter_(mthis) => hash_Getter(mthis);
+  hash_Getter_(mthis) => mthis["hash"];
 
-  static host_Getter(mthis) native "WorkerLocation_host_Getter";
-  host_Getter_(mthis) => host_Getter(mthis);
+  host_Getter_(mthis) => mthis["host"];
 
-  static hostname_Getter(mthis) native "WorkerLocation_hostname_Getter";
-  hostname_Getter_(mthis) => hostname_Getter(mthis);
+  hostname_Getter_(mthis) => mthis["hostname"];
 
-  static href_Getter(mthis) native "WorkerLocation_href_Getter";
-  href_Getter_(mthis) => href_Getter(mthis);
+  href_Getter_(mthis) => mthis["href"];
 
-  static origin_Getter(mthis) native "WorkerLocation_origin_Getter";
-  origin_Getter_(mthis) => origin_Getter(mthis);
+  origin_Getter_(mthis) => mthis["origin"];
 
-  static pathname_Getter(mthis) native "WorkerLocation_pathname_Getter";
-  pathname_Getter_(mthis) => pathname_Getter(mthis);
+  pathname_Getter_(mthis) => mthis["pathname"];
 
-  static port_Getter(mthis) native "WorkerLocation_port_Getter";
-  port_Getter_(mthis) => port_Getter(mthis);
+  port_Getter_(mthis) => mthis["port"];
 
-  static protocol_Getter(mthis) native "WorkerLocation_protocol_Getter";
-  protocol_Getter_(mthis) => protocol_Getter(mthis);
+  protocol_Getter_(mthis) => mthis["protocol"];
 
-  static search_Getter(mthis) native "WorkerLocation_search_Getter";
-  search_Getter_(mthis) => search_Getter(mthis);
+  search_Getter_(mthis) => mthis["search"];
 
-  static toString_Callback_0(mthis) native "WorkerLocation_toString_Callback";
-  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
-
-  static toString_Callback_1(mthis, __arg_0) native "WorkerLocation_toString_Callback";
-  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
-
-  static toString_Callback_2(mthis, __arg_0, __arg_1) native "WorkerLocation_toString_Callback";
-  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
+  toString_Callback_0_(mthis) => mthis.callMethod("toString", []);
 
 }
 
 class BlinkWorkerNavigator {
   static final instance = new BlinkWorkerNavigator();
 
-  static appCodeName_Getter(mthis) native "WorkerNavigator_appCodeName_Getter";
-  appCodeName_Getter_(mthis) => appCodeName_Getter(mthis);
+  appCodeName_Getter_(mthis) => mthis["appCodeName"];
 
-  static appName_Getter(mthis) native "WorkerNavigator_appName_Getter";
-  appName_Getter_(mthis) => appName_Getter(mthis);
+  appName_Getter_(mthis) => mthis["appName"];
 
-  static appVersion_Getter(mthis) native "WorkerNavigator_appVersion_Getter";
-  appVersion_Getter_(mthis) => appVersion_Getter(mthis);
+  appVersion_Getter_(mthis) => mthis["appVersion"];
 
-  static connection_Getter(mthis) native "WorkerNavigator_connection_Getter";
-  connection_Getter_(mthis) => connection_Getter(mthis);
+  connection_Getter_(mthis) => mthis["connection"];
 
-  static dartEnabled_Getter(mthis) native "WorkerNavigator_dartEnabled_Getter";
-  dartEnabled_Getter_(mthis) => dartEnabled_Getter(mthis);
+  dartEnabled_Getter_(mthis) => mthis["dartEnabled"];
 
-  static geofencing_Getter(mthis) native "WorkerNavigator_geofencing_Getter";
-  geofencing_Getter_(mthis) => geofencing_Getter(mthis);
+  geofencing_Getter_(mthis) => mthis["geofencing"];
 
-  static hardwareConcurrency_Getter(mthis) native "WorkerNavigator_hardwareConcurrency_Getter";
-  hardwareConcurrency_Getter_(mthis) => hardwareConcurrency_Getter(mthis);
+  hardwareConcurrency_Getter_(mthis) => mthis["hardwareConcurrency"];
 
-  static onLine_Getter(mthis) native "WorkerNavigator_onLine_Getter";
-  onLine_Getter_(mthis) => onLine_Getter(mthis);
+  onLine_Getter_(mthis) => mthis["onLine"];
 
-  static platform_Getter(mthis) native "WorkerNavigator_platform_Getter";
-  platform_Getter_(mthis) => platform_Getter(mthis);
+  platform_Getter_(mthis) => mthis["platform"];
 
-  static product_Getter(mthis) native "WorkerNavigator_product_Getter";
-  product_Getter_(mthis) => product_Getter(mthis);
+  product_Getter_(mthis) => mthis["product"];
 
-  static userAgent_Getter(mthis) native "WorkerNavigator_userAgent_Getter";
-  userAgent_Getter_(mthis) => userAgent_Getter(mthis);
+  userAgent_Getter_(mthis) => mthis["userAgent"];
 
-  static webkitPersistentStorage_Getter(mthis) native "WorkerNavigator_webkitPersistentStorage_Getter";
-  webkitPersistentStorage_Getter_(mthis) => webkitPersistentStorage_Getter(mthis);
+  webkitPersistentStorage_Getter_(mthis) => mthis["webkitPersistentStorage"];
 
-  static webkitTemporaryStorage_Getter(mthis) native "WorkerNavigator_webkitTemporaryStorage_Getter";
-  webkitTemporaryStorage_Getter_(mthis) => webkitTemporaryStorage_Getter(mthis);
+  webkitTemporaryStorage_Getter_(mthis) => mthis["webkitTemporaryStorage"];
 
 }
 
 class BlinkWorkerPerformance {
   static final instance = new BlinkWorkerPerformance();
 
-  static memory_Getter(mthis) native "WorkerPerformance_memory_Getter";
-  memory_Getter_(mthis) => memory_Getter(mthis);
+  memory_Getter_(mthis) => mthis["memory"];
 
-  static now_Callback_0(mthis) native "WorkerPerformance_now_Callback";
-  now_Callback_0_(mthis) => now_Callback_0(mthis);
-
-  static now_Callback_1(mthis, __arg_0) native "WorkerPerformance_now_Callback";
-  now_Callback_1_(mthis, __arg_0) => now_Callback_1(mthis, __arg_0);
-
-  static now_Callback_2(mthis, __arg_0, __arg_1) native "WorkerPerformance_now_Callback";
-  now_Callback_2_(mthis, __arg_0, __arg_1) => now_Callback_2(mthis, __arg_0, __arg_1);
+  now_Callback_0_(mthis) => mthis.callMethod("now", []);
 
 }
 
@@ -31010,216 +16925,117 @@
 class BlinkXMLHttpRequest extends BlinkXMLHttpRequestEventTarget {
   static final instance = new BlinkXMLHttpRequest();
 
-  static abort_Callback_0(mthis) native "XMLHttpRequest_abort_Callback";
-  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+  abort_Callback_0_(mthis) => mthis.callMethod("abort", []);
 
-  static abort_Callback_1(mthis, __arg_0) native "XMLHttpRequest_abort_Callback";
-  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["XMLHttpRequest"], []);
 
-  static abort_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_abort_Callback";
-  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+  constructorCallback_1_(__arg_0) => new js.JsObject(js.context["XMLHttpRequest"], [__arg_0]);
 
-  static constructorCallback_0() native "XMLHttpRequest_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  getAllResponseHeaders_Callback_0_(mthis) => mthis.callMethod("getAllResponseHeaders", []);
 
-  static constructorCallback_1(__arg_0) native "XMLHttpRequest_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  getResponseHeader_Callback_0_(mthis) => mthis.callMethod("getResponseHeader", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "XMLHttpRequest_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  getResponseHeader_Callback_1_(mthis, __arg_0) => mthis.callMethod("getResponseHeader", [__arg_0]);
 
-  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "XMLHttpRequest_constructorCallback";
-  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+  onreadystatechange_Getter_(mthis) => mthis["onreadystatechange"];
 
-  static getAllResponseHeaders_Callback_0(mthis) native "XMLHttpRequest_getAllResponseHeaders_Callback";
-  getAllResponseHeaders_Callback_0_(mthis) => getAllResponseHeaders_Callback_0(mthis);
+  onreadystatechange_Setter_(mthis, __arg_0) => mthis["onreadystatechange"] = __arg_0;
 
-  static getAllResponseHeaders_Callback_1(mthis, __arg_0) native "XMLHttpRequest_getAllResponseHeaders_Callback";
-  getAllResponseHeaders_Callback_1_(mthis, __arg_0) => getAllResponseHeaders_Callback_1(mthis, __arg_0);
+  open_Callback_0_(mthis) => mthis.callMethod("open", []);
 
-  static getAllResponseHeaders_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_getAllResponseHeaders_Callback";
-  getAllResponseHeaders_Callback_2_(mthis, __arg_0, __arg_1) => getAllResponseHeaders_Callback_2(mthis, __arg_0, __arg_1);
+  open_Callback_1_(mthis, __arg_0) => mthis.callMethod("open", [__arg_0]);
 
-  static getResponseHeader_Callback_0(mthis) native "XMLHttpRequest_getResponseHeader_Callback";
-  getResponseHeader_Callback_0_(mthis) => getResponseHeader_Callback_0(mthis);
+  open_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("open", [__arg_0, __arg_1]);
 
-  static getResponseHeader_Callback_1(mthis, __arg_0) native "XMLHttpRequest_getResponseHeader_Callback";
-  getResponseHeader_Callback_1_(mthis, __arg_0) => getResponseHeader_Callback_1(mthis, __arg_0);
+  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("open", [__arg_0, __arg_1, __arg_2]);
 
-  static getResponseHeader_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_getResponseHeader_Callback";
-  getResponseHeader_Callback_2_(mthis, __arg_0, __arg_1) => getResponseHeader_Callback_2(mthis, __arg_0, __arg_1);
+  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("open", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static getResponseHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_getResponseHeader_Callback";
-  getResponseHeader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getResponseHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  open_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("open", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
-  static onreadystatechange_Getter(mthis) native "XMLHttpRequest_onreadystatechange_Getter";
-  onreadystatechange_Getter_(mthis) => onreadystatechange_Getter(mthis);
+  overrideMimeType_Callback_0_(mthis) => mthis.callMethod("overrideMimeType", []);
 
-  static onreadystatechange_Setter(mthis, __arg_0) native "XMLHttpRequest_onreadystatechange_Setter";
-  onreadystatechange_Setter_(mthis, __arg_0) => onreadystatechange_Setter(mthis, __arg_0);
+  overrideMimeType_Callback_1_(mthis, __arg_0) => mthis.callMethod("overrideMimeType", [__arg_0]);
 
-  static open_Callback_0(mthis) native "XMLHttpRequest_open_Callback";
-  open_Callback_0_(mthis) => open_Callback_0(mthis);
+  readyState_Getter_(mthis) => mthis["readyState"];
 
-  static open_Callback_1(mthis, __arg_0) native "XMLHttpRequest_open_Callback";
-  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
+  responseText_Getter_(mthis) => mthis["responseText"];
 
-  static open_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_open_Callback";
-  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
+  responseType_Getter_(mthis) => mthis["responseType"];
 
-  static open_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_open_Callback";
-  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => open_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  responseType_Setter_(mthis, __arg_0) => mthis["responseType"] = __arg_0;
 
-  static open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XMLHttpRequest_open_Callback";
-  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  responseURL_Getter_(mthis) => mthis["responseURL"];
 
-  static open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XMLHttpRequest_open_Callback";
-  open_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  responseXML_Getter_(mthis) => mthis["responseXML"];
 
-  static open_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "XMLHttpRequest_open_Callback";
-  open_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => open_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+  response_Getter_(mthis) => mthis["response"];
 
-  static open_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "XMLHttpRequest_open_Callback";
-  open_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => open_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  send_Callback_0_(mthis) => mthis.callMethod("send", []);
 
-  static overrideMimeType_Callback_0(mthis) native "XMLHttpRequest_overrideMimeType_Callback";
-  overrideMimeType_Callback_0_(mthis) => overrideMimeType_Callback_0(mthis);
+  send_Callback_1_(mthis, __arg_0) => mthis.callMethod("send", [__arg_0]);
 
-  static overrideMimeType_Callback_1(mthis, __arg_0) native "XMLHttpRequest_overrideMimeType_Callback";
-  overrideMimeType_Callback_1_(mthis, __arg_0) => overrideMimeType_Callback_1(mthis, __arg_0);
+  setRequestHeader_Callback_0_(mthis) => mthis.callMethod("setRequestHeader", []);
 
-  static overrideMimeType_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_overrideMimeType_Callback";
-  overrideMimeType_Callback_2_(mthis, __arg_0, __arg_1) => overrideMimeType_Callback_2(mthis, __arg_0, __arg_1);
+  setRequestHeader_Callback_1_(mthis, __arg_0) => mthis.callMethod("setRequestHeader", [__arg_0]);
 
-  static overrideMimeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_overrideMimeType_Callback";
-  overrideMimeType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => overrideMimeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  setRequestHeader_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setRequestHeader", [__arg_0, __arg_1]);
 
-  static readyState_Getter(mthis) native "XMLHttpRequest_readyState_Getter";
-  readyState_Getter_(mthis) => readyState_Getter(mthis);
+  statusText_Getter_(mthis) => mthis["statusText"];
 
-  static responseText_Getter(mthis) native "XMLHttpRequest_responseText_Getter";
-  responseText_Getter_(mthis) => responseText_Getter(mthis);
+  status_Getter_(mthis) => mthis["status"];
 
-  static responseType_Getter(mthis) native "XMLHttpRequest_responseType_Getter";
-  responseType_Getter_(mthis) => responseType_Getter(mthis);
+  timeout_Getter_(mthis) => mthis["timeout"];
 
-  static responseType_Setter(mthis, __arg_0) native "XMLHttpRequest_responseType_Setter";
-  responseType_Setter_(mthis, __arg_0) => responseType_Setter(mthis, __arg_0);
+  timeout_Setter_(mthis, __arg_0) => mthis["timeout"] = __arg_0;
 
-  static responseURL_Getter(mthis) native "XMLHttpRequest_responseURL_Getter";
-  responseURL_Getter_(mthis) => responseURL_Getter(mthis);
+  upload_Getter_(mthis) => mthis["upload"];
 
-  static responseXML_Getter(mthis) native "XMLHttpRequest_responseXML_Getter";
-  responseXML_Getter_(mthis) => responseXML_Getter(mthis);
+  withCredentials_Getter_(mthis) => mthis["withCredentials"];
 
-  static response_Getter(mthis) native "XMLHttpRequest_response_Getter";
-  response_Getter_(mthis) => response_Getter(mthis);
-
-  static send_Callback_0(mthis) native "XMLHttpRequest_send_Callback";
-  send_Callback_0_(mthis) => send_Callback_0(mthis);
-
-  static send_Callback_1(mthis, __arg_0) native "XMLHttpRequest_send_Callback";
-  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
-
-  static send_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_send_Callback";
-  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
-
-  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_send_Callback";
-  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setRequestHeader_Callback_0(mthis) native "XMLHttpRequest_setRequestHeader_Callback";
-  setRequestHeader_Callback_0_(mthis) => setRequestHeader_Callback_0(mthis);
-
-  static setRequestHeader_Callback_1(mthis, __arg_0) native "XMLHttpRequest_setRequestHeader_Callback";
-  setRequestHeader_Callback_1_(mthis, __arg_0) => setRequestHeader_Callback_1(mthis, __arg_0);
-
-  static setRequestHeader_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_setRequestHeader_Callback";
-  setRequestHeader_Callback_2_(mthis, __arg_0, __arg_1) => setRequestHeader_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setRequestHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_setRequestHeader_Callback";
-  setRequestHeader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRequestHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setRequestHeader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XMLHttpRequest_setRequestHeader_Callback";
-  setRequestHeader_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRequestHeader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static statusText_Getter(mthis) native "XMLHttpRequest_statusText_Getter";
-  statusText_Getter_(mthis) => statusText_Getter(mthis);
-
-  static status_Getter(mthis) native "XMLHttpRequest_status_Getter";
-  status_Getter_(mthis) => status_Getter(mthis);
-
-  static timeout_Getter(mthis) native "XMLHttpRequest_timeout_Getter";
-  timeout_Getter_(mthis) => timeout_Getter(mthis);
-
-  static timeout_Setter(mthis, __arg_0) native "XMLHttpRequest_timeout_Setter";
-  timeout_Setter_(mthis, __arg_0) => timeout_Setter(mthis, __arg_0);
-
-  static upload_Getter(mthis) native "XMLHttpRequest_upload_Getter";
-  upload_Getter_(mthis) => upload_Getter(mthis);
-
-  static withCredentials_Getter(mthis) native "XMLHttpRequest_withCredentials_Getter";
-  withCredentials_Getter_(mthis) => withCredentials_Getter(mthis);
-
-  static withCredentials_Setter(mthis, __arg_0) native "XMLHttpRequest_withCredentials_Setter";
-  withCredentials_Setter_(mthis, __arg_0) => withCredentials_Setter(mthis, __arg_0);
+  withCredentials_Setter_(mthis, __arg_0) => mthis["withCredentials"] = __arg_0;
 
 }
 
 class BlinkXMLHttpRequestEventTarget extends BlinkEventTarget {
   static final instance = new BlinkXMLHttpRequestEventTarget();
 
-  static onabort_Getter(mthis) native "XMLHttpRequestEventTarget_onabort_Getter";
-  onabort_Getter_(mthis) => onabort_Getter(mthis);
+  onabort_Getter_(mthis) => mthis["onabort"];
 
-  static onabort_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onabort_Setter";
-  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+  onabort_Setter_(mthis, __arg_0) => mthis["onabort"] = __arg_0;
 
-  static onerror_Getter(mthis) native "XMLHttpRequestEventTarget_onerror_Getter";
-  onerror_Getter_(mthis) => onerror_Getter(mthis);
+  onerror_Getter_(mthis) => mthis["onerror"];
 
-  static onerror_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onerror_Setter";
-  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+  onerror_Setter_(mthis, __arg_0) => mthis["onerror"] = __arg_0;
 
-  static onload_Getter(mthis) native "XMLHttpRequestEventTarget_onload_Getter";
-  onload_Getter_(mthis) => onload_Getter(mthis);
+  onload_Getter_(mthis) => mthis["onload"];
 
-  static onload_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onload_Setter";
-  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+  onload_Setter_(mthis, __arg_0) => mthis["onload"] = __arg_0;
 
-  static onloadend_Getter(mthis) native "XMLHttpRequestEventTarget_onloadend_Getter";
-  onloadend_Getter_(mthis) => onloadend_Getter(mthis);
+  onloadend_Getter_(mthis) => mthis["onloadend"];
 
-  static onloadend_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onloadend_Setter";
-  onloadend_Setter_(mthis, __arg_0) => onloadend_Setter(mthis, __arg_0);
+  onloadend_Setter_(mthis, __arg_0) => mthis["onloadend"] = __arg_0;
 
-  static onloadstart_Getter(mthis) native "XMLHttpRequestEventTarget_onloadstart_Getter";
-  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+  onloadstart_Getter_(mthis) => mthis["onloadstart"];
 
-  static onloadstart_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onloadstart_Setter";
-  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+  onloadstart_Setter_(mthis, __arg_0) => mthis["onloadstart"] = __arg_0;
 
-  static onprogress_Getter(mthis) native "XMLHttpRequestEventTarget_onprogress_Getter";
-  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+  onprogress_Getter_(mthis) => mthis["onprogress"];
 
-  static onprogress_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onprogress_Setter";
-  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+  onprogress_Setter_(mthis, __arg_0) => mthis["onprogress"] = __arg_0;
 
-  static ontimeout_Getter(mthis) native "XMLHttpRequestEventTarget_ontimeout_Getter";
-  ontimeout_Getter_(mthis) => ontimeout_Getter(mthis);
+  ontimeout_Getter_(mthis) => mthis["ontimeout"];
 
-  static ontimeout_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_ontimeout_Setter";
-  ontimeout_Setter_(mthis, __arg_0) => ontimeout_Setter(mthis, __arg_0);
+  ontimeout_Setter_(mthis, __arg_0) => mthis["ontimeout"] = __arg_0;
 
 }
 
 class BlinkXMLHttpRequestProgressEvent extends BlinkProgressEvent {
   static final instance = new BlinkXMLHttpRequestProgressEvent();
 
-  static position_Getter(mthis) native "XMLHttpRequestProgressEvent_position_Getter";
-  position_Getter_(mthis) => position_Getter(mthis);
+  position_Getter_(mthis) => mthis["position"];
 
-  static totalSize_Getter(mthis) native "XMLHttpRequestProgressEvent_totalSize_Getter";
-  totalSize_Getter_(mthis) => totalSize_Getter(mthis);
+  totalSize_Getter_(mthis) => mthis["totalSize"];
 
 }
 
@@ -31231,294 +17047,130 @@
 class BlinkXMLSerializer {
   static final instance = new BlinkXMLSerializer();
 
-  static constructorCallback_0() native "XMLSerializer_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["XMLSerializer"], []);
 
-  static constructorCallback_1(__arg_0) native "XMLSerializer_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  serializeToString_Callback_0_(mthis) => mthis.callMethod("serializeToString", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "XMLSerializer_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
-
-  static serializeToString_Callback_0(mthis) native "XMLSerializer_serializeToString_Callback";
-  serializeToString_Callback_0_(mthis) => serializeToString_Callback_0(mthis);
-
-  static serializeToString_Callback_1(mthis, __arg_0) native "XMLSerializer_serializeToString_Callback";
-  serializeToString_Callback_1_(mthis, __arg_0) => serializeToString_Callback_1(mthis, __arg_0);
-
-  static serializeToString_Callback_2(mthis, __arg_0, __arg_1) native "XMLSerializer_serializeToString_Callback";
-  serializeToString_Callback_2_(mthis, __arg_0, __arg_1) => serializeToString_Callback_2(mthis, __arg_0, __arg_1);
-
-  static serializeToString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLSerializer_serializeToString_Callback";
-  serializeToString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => serializeToString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  serializeToString_Callback_1_(mthis, __arg_0) => mthis.callMethod("serializeToString", [__arg_0]);
 
 }
 
 class BlinkXPathEvaluator {
   static final instance = new BlinkXPathEvaluator();
 
-  static constructorCallback_0() native "XPathEvaluator_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  constructorCallback_0_() => new js.JsObject(js.context["XPathEvaluator"], []);
 
-  static constructorCallback_1(__arg_0) native "XPathEvaluator_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  createExpression_Callback_0_(mthis) => mthis.callMethod("createExpression", []);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "XPathEvaluator_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  createExpression_Callback_1_(mthis, __arg_0) => mthis.callMethod("createExpression", [__arg_0]);
 
-  static createExpression_Callback_0(mthis) native "XPathEvaluator_createExpression_Callback";
-  createExpression_Callback_0_(mthis) => createExpression_Callback_0(mthis);
+  createExpression_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("createExpression", [__arg_0, __arg_1]);
 
-  static createExpression_Callback_1(mthis, __arg_0) native "XPathEvaluator_createExpression_Callback";
-  createExpression_Callback_1_(mthis, __arg_0) => createExpression_Callback_1(mthis, __arg_0);
+  createNSResolver_Callback_0_(mthis) => mthis.callMethod("createNSResolver", []);
 
-  static createExpression_Callback_2(mthis, __arg_0, __arg_1) native "XPathEvaluator_createExpression_Callback";
-  createExpression_Callback_2_(mthis, __arg_0, __arg_1) => createExpression_Callback_2(mthis, __arg_0, __arg_1);
+  createNSResolver_Callback_1_(mthis, __arg_0) => mthis.callMethod("createNSResolver", [__arg_0]);
 
-  static createExpression_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathEvaluator_createExpression_Callback";
-  createExpression_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createExpression_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  evaluate_Callback_0_(mthis) => mthis.callMethod("evaluate", []);
 
-  static createExpression_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XPathEvaluator_createExpression_Callback";
-  createExpression_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createExpression_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  evaluate_Callback_1_(mthis, __arg_0) => mthis.callMethod("evaluate", [__arg_0]);
 
-  static createNSResolver_Callback_0(mthis) native "XPathEvaluator_createNSResolver_Callback";
-  createNSResolver_Callback_0_(mthis) => createNSResolver_Callback_0(mthis);
+  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("evaluate", [__arg_0, __arg_1]);
 
-  static createNSResolver_Callback_1(mthis, __arg_0) native "XPathEvaluator_createNSResolver_Callback";
-  createNSResolver_Callback_1_(mthis, __arg_0) => createNSResolver_Callback_1(mthis, __arg_0);
+  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("evaluate", [__arg_0, __arg_1, __arg_2]);
 
-  static createNSResolver_Callback_2(mthis, __arg_0, __arg_1) native "XPathEvaluator_createNSResolver_Callback";
-  createNSResolver_Callback_2_(mthis, __arg_0, __arg_1) => createNSResolver_Callback_2(mthis, __arg_0, __arg_1);
+  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => mthis.callMethod("evaluate", [__arg_0, __arg_1, __arg_2, __arg_3]);
 
-  static createNSResolver_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathEvaluator_createNSResolver_Callback";
-  createNSResolver_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createNSResolver_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static evaluate_Callback_0(mthis) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_0_(mthis) => evaluate_Callback_0(mthis);
-
-  static evaluate_Callback_1(mthis, __arg_0) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_1_(mthis, __arg_0) => evaluate_Callback_1(mthis, __arg_0);
-
-  static evaluate_Callback_2(mthis, __arg_0, __arg_1) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => evaluate_Callback_2(mthis, __arg_0, __arg_1);
-
-  static evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static evaluate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => evaluate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
-
-  static evaluate_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "XPathEvaluator_evaluate_Callback";
-  evaluate_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => evaluate_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => mthis.callMethod("evaluate", [__arg_0, __arg_1, __arg_2, __arg_3, __arg_4]);
 
 }
 
 class BlinkXPathExpression {
   static final instance = new BlinkXPathExpression();
 
-  static evaluate_Callback_0(mthis) native "XPathExpression_evaluate_Callback";
-  evaluate_Callback_0_(mthis) => evaluate_Callback_0(mthis);
+  evaluate_Callback_0_(mthis) => mthis.callMethod("evaluate", []);
 
-  static evaluate_Callback_1(mthis, __arg_0) native "XPathExpression_evaluate_Callback";
-  evaluate_Callback_1_(mthis, __arg_0) => evaluate_Callback_1(mthis, __arg_0);
+  evaluate_Callback_1_(mthis, __arg_0) => mthis.callMethod("evaluate", [__arg_0]);
 
-  static evaluate_Callback_2(mthis, __arg_0, __arg_1) native "XPathExpression_evaluate_Callback";
-  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => evaluate_Callback_2(mthis, __arg_0, __arg_1);
+  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("evaluate", [__arg_0, __arg_1]);
 
-  static evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathExpression_evaluate_Callback";
-  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XPathExpression_evaluate_Callback";
-  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XPathExpression_evaluate_Callback";
-  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("evaluate", [__arg_0, __arg_1, __arg_2]);
 
 }
 
 class BlinkXPathNSResolver {
   static final instance = new BlinkXPathNSResolver();
 
-  static lookupNamespaceURI_Callback_0(mthis) native "XPathNSResolver_lookupNamespaceURI_Callback";
-  lookupNamespaceURI_Callback_0_(mthis) => lookupNamespaceURI_Callback_0(mthis);
+  lookupNamespaceURI_Callback_0_(mthis) => mthis.callMethod("lookupNamespaceURI", []);
 
-  static lookupNamespaceURI_Callback_1(mthis, __arg_0) native "XPathNSResolver_lookupNamespaceURI_Callback";
-  lookupNamespaceURI_Callback_1_(mthis, __arg_0) => lookupNamespaceURI_Callback_1(mthis, __arg_0);
-
-  static lookupNamespaceURI_Callback_2(mthis, __arg_0, __arg_1) native "XPathNSResolver_lookupNamespaceURI_Callback";
-  lookupNamespaceURI_Callback_2_(mthis, __arg_0, __arg_1) => lookupNamespaceURI_Callback_2(mthis, __arg_0, __arg_1);
-
-  static lookupNamespaceURI_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathNSResolver_lookupNamespaceURI_Callback";
-  lookupNamespaceURI_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lookupNamespaceURI_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  lookupNamespaceURI_Callback_1_(mthis, __arg_0) => mthis.callMethod("lookupNamespaceURI", [__arg_0]);
 
 }
 
 class BlinkXPathResult {
   static final instance = new BlinkXPathResult();
 
-  static booleanValue_Getter(mthis) native "XPathResult_booleanValue_Getter";
-  booleanValue_Getter_(mthis) => booleanValue_Getter(mthis);
+  booleanValue_Getter_(mthis) => mthis["booleanValue"];
 
-  static invalidIteratorState_Getter(mthis) native "XPathResult_invalidIteratorState_Getter";
-  invalidIteratorState_Getter_(mthis) => invalidIteratorState_Getter(mthis);
+  invalidIteratorState_Getter_(mthis) => mthis["invalidIteratorState"];
 
-  static iterateNext_Callback_0(mthis) native "XPathResult_iterateNext_Callback";
-  iterateNext_Callback_0_(mthis) => iterateNext_Callback_0(mthis);
+  iterateNext_Callback_0_(mthis) => mthis.callMethod("iterateNext", []);
 
-  static iterateNext_Callback_1(mthis, __arg_0) native "XPathResult_iterateNext_Callback";
-  iterateNext_Callback_1_(mthis, __arg_0) => iterateNext_Callback_1(mthis, __arg_0);
+  numberValue_Getter_(mthis) => mthis["numberValue"];
 
-  static iterateNext_Callback_2(mthis, __arg_0, __arg_1) native "XPathResult_iterateNext_Callback";
-  iterateNext_Callback_2_(mthis, __arg_0, __arg_1) => iterateNext_Callback_2(mthis, __arg_0, __arg_1);
+  resultType_Getter_(mthis) => mthis["resultType"];
 
-  static numberValue_Getter(mthis) native "XPathResult_numberValue_Getter";
-  numberValue_Getter_(mthis) => numberValue_Getter(mthis);
+  singleNodeValue_Getter_(mthis) => mthis["singleNodeValue"];
 
-  static resultType_Getter(mthis) native "XPathResult_resultType_Getter";
-  resultType_Getter_(mthis) => resultType_Getter(mthis);
+  snapshotItem_Callback_0_(mthis) => mthis.callMethod("snapshotItem", []);
 
-  static singleNodeValue_Getter(mthis) native "XPathResult_singleNodeValue_Getter";
-  singleNodeValue_Getter_(mthis) => singleNodeValue_Getter(mthis);
+  snapshotItem_Callback_1_(mthis, __arg_0) => mthis.callMethod("snapshotItem", [__arg_0]);
 
-  static snapshotItem_Callback_0(mthis) native "XPathResult_snapshotItem_Callback";
-  snapshotItem_Callback_0_(mthis) => snapshotItem_Callback_0(mthis);
+  snapshotLength_Getter_(mthis) => mthis["snapshotLength"];
 
-  static snapshotItem_Callback_1(mthis, __arg_0) native "XPathResult_snapshotItem_Callback";
-  snapshotItem_Callback_1_(mthis, __arg_0) => snapshotItem_Callback_1(mthis, __arg_0);
-
-  static snapshotItem_Callback_2(mthis, __arg_0, __arg_1) native "XPathResult_snapshotItem_Callback";
-  snapshotItem_Callback_2_(mthis, __arg_0, __arg_1) => snapshotItem_Callback_2(mthis, __arg_0, __arg_1);
-
-  static snapshotItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathResult_snapshotItem_Callback";
-  snapshotItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => snapshotItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static snapshotLength_Getter(mthis) native "XPathResult_snapshotLength_Getter";
-  snapshotLength_Getter_(mthis) => snapshotLength_Getter(mthis);
-
-  static stringValue_Getter(mthis) native "XPathResult_stringValue_Getter";
-  stringValue_Getter_(mthis) => stringValue_Getter(mthis);
+  stringValue_Getter_(mthis) => mthis["stringValue"];
 
 }
 
 class BlinkXSLTProcessor {
   static final instance = new BlinkXSLTProcessor();
 
-  static clearParameters_Callback_0(mthis) native "XSLTProcessor_clearParameters_Callback";
-  clearParameters_Callback_0_(mthis) => clearParameters_Callback_0(mthis);
+  clearParameters_Callback_0_(mthis) => mthis.callMethod("clearParameters", []);
 
-  static clearParameters_Callback_1(mthis, __arg_0) native "XSLTProcessor_clearParameters_Callback";
-  clearParameters_Callback_1_(mthis, __arg_0) => clearParameters_Callback_1(mthis, __arg_0);
+  constructorCallback_0_() => new js.JsObject(js.context["XSLTProcessor"], []);
 
-  static clearParameters_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_clearParameters_Callback";
-  clearParameters_Callback_2_(mthis, __arg_0, __arg_1) => clearParameters_Callback_2(mthis, __arg_0, __arg_1);
+  getParameter_Callback_0_(mthis) => mthis.callMethod("getParameter", []);
 
-  static constructorCallback_0() native "XSLTProcessor_constructorCallback";
-  constructorCallback_0_() => constructorCallback_0();
+  getParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("getParameter", [__arg_0]);
 
-  static constructorCallback_1(__arg_0) native "XSLTProcessor_constructorCallback";
-  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+  getParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("getParameter", [__arg_0, __arg_1]);
 
-  static constructorCallback_2(__arg_0, __arg_1) native "XSLTProcessor_constructorCallback";
-  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+  importStylesheet_Callback_0_(mthis) => mthis.callMethod("importStylesheet", []);
 
-  static getParameter_Callback_0(mthis) native "XSLTProcessor_getParameter_Callback";
-  getParameter_Callback_0_(mthis) => getParameter_Callback_0(mthis);
+  importStylesheet_Callback_1_(mthis, __arg_0) => mthis.callMethod("importStylesheet", [__arg_0]);
 
-  static getParameter_Callback_1(mthis, __arg_0) native "XSLTProcessor_getParameter_Callback";
-  getParameter_Callback_1_(mthis, __arg_0) => getParameter_Callback_1(mthis, __arg_0);
+  removeParameter_Callback_0_(mthis) => mthis.callMethod("removeParameter", []);
 
-  static getParameter_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_getParameter_Callback";
-  getParameter_Callback_2_(mthis, __arg_0, __arg_1) => getParameter_Callback_2(mthis, __arg_0, __arg_1);
+  removeParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("removeParameter", [__arg_0]);
 
-  static getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_getParameter_Callback";
-  getParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  removeParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("removeParameter", [__arg_0, __arg_1]);
 
-  static getParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_getParameter_Callback";
-  getParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  reset_Callback_0_(mthis) => mthis.callMethod("reset", []);
 
-  static importStylesheet_Callback_0(mthis) native "XSLTProcessor_importStylesheet_Callback";
-  importStylesheet_Callback_0_(mthis) => importStylesheet_Callback_0(mthis);
+  setParameter_Callback_1_(mthis, __arg_0) => mthis.callMethod("setParameter", [__arg_0]);
 
-  static importStylesheet_Callback_1(mthis, __arg_0) native "XSLTProcessor_importStylesheet_Callback";
-  importStylesheet_Callback_1_(mthis, __arg_0) => importStylesheet_Callback_1(mthis, __arg_0);
+  setParameter_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("setParameter", [__arg_0, __arg_1]);
 
-  static importStylesheet_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_importStylesheet_Callback";
-  importStylesheet_Callback_2_(mthis, __arg_0, __arg_1) => importStylesheet_Callback_2(mthis, __arg_0, __arg_1);
+  setParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mthis.callMethod("setParameter", [__arg_0, __arg_1, __arg_2]);
 
-  static importStylesheet_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_importStylesheet_Callback";
-  importStylesheet_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importStylesheet_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+  transformToDocument_Callback_0_(mthis) => mthis.callMethod("transformToDocument", []);
 
-  static removeParameter_Callback_0(mthis) native "XSLTProcessor_removeParameter_Callback";
-  removeParameter_Callback_0_(mthis) => removeParameter_Callback_0(mthis);
+  transformToDocument_Callback_1_(mthis, __arg_0) => mthis.callMethod("transformToDocument", [__arg_0]);
 
-  static removeParameter_Callback_1(mthis, __arg_0) native "XSLTProcessor_removeParameter_Callback";
-  removeParameter_Callback_1_(mthis, __arg_0) => removeParameter_Callback_1(mthis, __arg_0);
+  transformToFragment_Callback_0_(mthis) => mthis.callMethod("transformToFragment", []);
 
-  static removeParameter_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_removeParameter_Callback";
-  removeParameter_Callback_2_(mthis, __arg_0, __arg_1) => removeParameter_Callback_2(mthis, __arg_0, __arg_1);
+  transformToFragment_Callback_1_(mthis, __arg_0) => mthis.callMethod("transformToFragment", [__arg_0]);
 
-  static removeParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_removeParameter_Callback";
-  removeParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static removeParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_removeParameter_Callback";
-  removeParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static reset_Callback_0(mthis) native "XSLTProcessor_reset_Callback";
-  reset_Callback_0_(mthis) => reset_Callback_0(mthis);
-
-  static reset_Callback_1(mthis, __arg_0) native "XSLTProcessor_reset_Callback";
-  reset_Callback_1_(mthis, __arg_0) => reset_Callback_1(mthis, __arg_0);
-
-  static reset_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_reset_Callback";
-  reset_Callback_2_(mthis, __arg_0, __arg_1) => reset_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setParameter_Callback_1(mthis, __arg_0) native "XSLTProcessor_setParameter_Callback";
-  setParameter_Callback_1_(mthis, __arg_0) => setParameter_Callback_1(mthis, __arg_0);
-
-  static setParameter_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_setParameter_Callback";
-  setParameter_Callback_2_(mthis, __arg_0, __arg_1) => setParameter_Callback_2(mthis, __arg_0, __arg_1);
-
-  static setParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_setParameter_Callback";
-  setParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static setParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_setParameter_Callback";
-  setParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
-
-  static setParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XSLTProcessor_setParameter_Callback";
-  setParameter_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
-
-  static transformToDocument_Callback_0(mthis) native "XSLTProcessor_transformToDocument_Callback";
-  transformToDocument_Callback_0_(mthis) => transformToDocument_Callback_0(mthis);
-
-  static transformToDocument_Callback_1(mthis, __arg_0) native "XSLTProcessor_transformToDocument_Callback";
-  transformToDocument_Callback_1_(mthis, __arg_0) => transformToDocument_Callback_1(mthis, __arg_0);
-
-  static transformToDocument_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_transformToDocument_Callback";
-  transformToDocument_Callback_2_(mthis, __arg_0, __arg_1) => transformToDocument_Callback_2(mthis, __arg_0, __arg_1);
-
-  static transformToDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_transformToDocument_Callback";
-  transformToDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transformToDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static transformToFragment_Callback_0(mthis) native "XSLTProcessor_transformToFragment_Callback";
-  transformToFragment_Callback_0_(mthis) => transformToFragment_Callback_0(mthis);
-
-  static transformToFragment_Callback_1(mthis, __arg_0) native "XSLTProcessor_transformToFragment_Callback";
-  transformToFragment_Callback_1_(mthis, __arg_0) => transformToFragment_Callback_1(mthis, __arg_0);
-
-  static transformToFragment_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_transformToFragment_Callback";
-  transformToFragment_Callback_2_(mthis, __arg_0, __arg_1) => transformToFragment_Callback_2(mthis, __arg_0, __arg_1);
-
-  static transformToFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_transformToFragment_Callback";
-  transformToFragment_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transformToFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
-
-  static transformToFragment_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_transformToFragment_Callback";
-  transformToFragment_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transformToFragment_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+  transformToFragment_Callback_2_(mthis, __arg_0, __arg_1) => mthis.callMethod("transformToFragment", [__arg_0, __arg_1]);
 
 }
 
@@ -31537,6 +17189,8 @@
 
   static createElement(document, tagName) native "Utils_createElement";
 
+  static constructElement(element_type, jsObject) native "Utils_constructor_create";
+
   static initializeCustomElement(element) native "Utils_initializeCustomElement";
 
   static changeElementWrapper(element, type) native "Utils_changeElementWrapper";
diff --git a/sdk/lib/_internal/js_runtime/lib/interceptors.dart b/sdk/lib/_internal/js_runtime/lib/interceptors.dart
index 0247af4..262213b 100644
--- a/sdk/lib/_internal/js_runtime/lib/interceptors.dart
+++ b/sdk/lib/_internal/js_runtime/lib/interceptors.dart
@@ -12,7 +12,6 @@
 import 'dart:_internal' hide Symbol;
 import "dart:_internal" as _symbol_dev show Symbol;
 import 'dart:_js_helper' show allMatchesInStringUnchecked,
-                              Null,
                               JSSyntaxRegExp,
                               Primitives,
                               argumentErrorValue,
@@ -36,7 +35,6 @@
                               stringReplaceFirstMappedUnchecked,
                               stringReplaceRangeUnchecked,
                               lookupAndCacheInterceptor,
-                              lookupDispatchRecord,
                               StringMatch,
                               firstMatchAfter,
                               NoInline;
diff --git a/sdk/lib/_internal/js_runtime/lib/internal_patch.dart b/sdk/lib/_internal/js_runtime/lib/internal_patch.dart
index 6c39c4a..cb8820c 100644
--- a/sdk/lib/_internal/js_runtime/lib/internal_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/internal_patch.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:_js_primitives' show printString;
-import 'dart:_js_helper' show JS, patch;
+import 'dart:_js_helper' show patch;
 import 'dart:_interceptors' show JSArray;
 
 @patch
diff --git a/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart b/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart
index 9e463ba..a74fb12 100644
--- a/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/isolate_helper.dart
@@ -21,7 +21,6 @@
 import 'dart:_js_helper' show
     Closure,
     InternalMap,
-    Null,
     Primitives,
     convertDartClosureToJS,
     createDartClosureFromNameOfStaticFunction,
diff --git a/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart b/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart
index 70eda5b..85b30b1 100644
--- a/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/isolate_patch.dart
@@ -6,9 +6,7 @@
 
 import 'dart:_js_helper' show patch;
 import 'dart:_isolate_helper' show CapabilityImpl,
-                                   CloseToken,
                                    IsolateNatives,
-                                   JsIsolateSink,
                                    ReceivePortImpl,
                                    RawReceivePortImpl;
 
@@ -63,12 +61,14 @@
   static Future<Isolate> spawnUri(
       Uri uri, List<String> args, var message,
       {bool paused: false,
-       bool checked,
-       Uri packageRoot,
-       Map<String, Uri> packages,
-       bool errorsAreFatal,
        SendPort onExit,
-       SendPort onError}) {
+       SendPort onError,
+       bool errorsAreFatal,
+       bool checked,
+       Map<String, String> environment,
+       Uri packageRoot,
+       Map<String, Uri> packages}) {
+    if (environment != null) throw new UnimplementedError("environment");
     if (packageRoot != null) throw new UnimplementedError("packageRoot");
     if (packages != null) throw new UnimplementedError("packages");
     bool forcePause = (errorsAreFatal != null) ||
diff --git a/sdk/lib/_internal/js_runtime/lib/js_array.dart b/sdk/lib/_internal/js_runtime/lib/js_array.dart
index 5495a6c..ad369ab 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_array.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_array.dart
@@ -581,7 +581,7 @@
 
   int get length => JS('JSUInt32', r'#.length', this);
 
-  void set length(int newLength) {
+  set length(int newLength) {
     checkGrowable('set length');
     if (newLength is !int) {
       throw new ArgumentError.value(newLength, 'newLength');
diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
index b4ab91c..0007532 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
@@ -18,8 +18,7 @@
     JsGetName,
     LEAF_TAGS,
     NATIVE_SUPERCLASS_TAG_NAME,
-    STATIC_FUNCTION_NAME_PROPERTY_NAME,
-    TRACE_BUFFER;
+    STATIC_FUNCTION_NAME_PROPERTY_NAME;
 
 import 'dart:collection';
 
@@ -45,13 +44,12 @@
     JS_BUILTIN,
     JS_CALL_IN_ISOLATE,
     JS_CONST,
-    JS_GET_STATIC_STATEC,
     JS_CURRENT_ISOLATE_CONTEXT,
     JS_EFFECT,
     JS_EMBEDDED_GLOBAL,
     JS_GET_FLAG,
     JS_GET_NAME,
-    JS_HAS_EQUALS,
+    JS_INTERCEPTOR_CONSTANT,
     JS_STRING_CONCAT,
     RAW_DART_FUNCTION_REF;
 
@@ -848,24 +846,71 @@
   ///
   /// In minified mode, uses the unminified names if available.
   static String objectTypeName(Object object) {
-    String name = constructorNameFallback(getInterceptor(object));
-    if (name == 'Object') {
-      // Try to decompile the constructor by turning it into a string and get
-      // the name out of that. If the decompiled name is a string containing an
-      // identifier, we use that instead of the very generic 'Object'.
-      var decompiled =
-          JS('var', r'#.match(/^\s*function\s*([\w$]*)\s*\(/)[1]',
-              JS('var', r'String(#.constructor)', object));
-      if (decompiled is String)
-        if (JS('bool', r'/^\w+$/.test(#)', decompiled))
-          name = decompiled;
+    return formatType(_objectRawTypeName(object), getRuntimeTypeInfo(object));
+  }
+
+  static String _objectRawTypeName(Object object) {
+    var interceptor = getInterceptor(object);
+    // The interceptor is either an object (self-intercepting plain Dart class),
+    // the prototype of the constructor for an Interceptor class (like
+    // `JSString.prototype`, `JSNull.prototype`), or an Interceptor object
+    // instance (`const JSString()`, should use `JSString.prototype`).
+    //
+    // These all should have a `constructor` property with a `name` property.
+    String name;
+    var interceptorConstructor = JS('', '#.constructor', interceptor);
+    if (JS('bool', 'typeof # == "function"', interceptorConstructor)) {
+      var interceptorConstructorName = JS('', '#.name', interceptorConstructor);
+      if (interceptorConstructorName is String) {
+        name = interceptorConstructorName;
+      }
     }
+
+    if (name == null ||
+        identical(interceptor,
+            JS_INTERCEPTOR_CONSTANT(UnknownJavaScriptObject)) ||
+        identical(interceptor, JS_INTERCEPTOR_CONSTANT(Interceptor))) {
+      // Try to do better.  If we do not find something better, leave the name
+      // as 'UnknownJavaScriptObject' or 'Interceptor' (or the minified name).
+      //
+      // When we get here via the UnknownJavaScriptObject test (for JavaScript
+      // objects from outside the program), the object's constructor has a
+      // better name that 'UnknownJavaScriptObject'.
+      //
+      // When we get here the Interceptor test (for Native classes that are
+      // declared in the Dart program but have been 'folded' into Interceptor),
+      // the native class's constructor name is better than the generic
+      // 'Interceptor' (an abstract class).
+
+      // Try the [constructorNameFallback]. This gets the constructor name for
+      // any browser (used by [getNativeInterceptor]).
+      String dispatchName = constructorNameFallback(object);
+      if (name == null) name = dispatchName;
+      if (dispatchName == 'Object') {
+        // Try to decompile the constructor by turning it into a string and get
+        // the name out of that. If the decompiled name is a string containing
+        // an identifier, we use that instead of the very generic 'Object'.
+        var objectConstructor = JS('', '#.constructor', object);
+        if (JS('bool', 'typeof # == "function"', objectConstructor)) {
+          var decompiledName =
+              JS('var', r'#.match(/^\s*function\s*([\w$]*)\s*\(/)[1]',
+                  JS('var', r'String(#)', objectConstructor));
+          if (decompiledName is String &&
+              JS('bool', r'/^\w+$/.test(#)', decompiledName)) {
+            name = decompiledName;
+          }
+        }
+      } else {
+        name = dispatchName;
+      }
+    }
+
     // TODO(kasperl): If the namer gave us a fresh global name, we may
     // want to remove the numeric suffix that makes it unique too.
     if (name.length > 1 && identical(name.codeUnitAt(0), DOLLAR_CHAR_VALUE)) {
       name = name.substring(1);
     }
-    return formatType(name, getRuntimeTypeInfo(object));
+    return name;
   }
 
   /// In minified mode, uses the unminified names if available.
@@ -1566,7 +1611,7 @@
  */
 @NoInline()
 Error diagnoseIndexError(indexable, index) {
-  if (index is! int) return new ArgumentError.value(index, 'index');
+  if (index is !int) return new ArgumentError.value(index, 'index');
   int length = indexable.length;
   // The following returns the same error that would be thrown by calling
   // [RangeError.checkValidIndex] with no optional parameters provided.
@@ -3321,18 +3366,33 @@
 
 /**
  * Helper function for implementing asserts. The compiler treats this specially.
+ *
+ * Returns the negation of the condition. That is: `true` if the assert should
+ * fail.
  */
+bool assertTest(condition) {
+  // Do bool success check first, it is common and faster than 'is Function'.
+  if (true == condition) return false;
+  if (condition is Function) condition = condition();
+  if (condition is bool) return !condition;
+  throw new TypeErrorImplementation(condition, 'bool');
+}
+
+/**
+ * Helper function for implementing asserts with messages.
+ * The compiler treats this specially.
+ */
+void assertThrow(Object message) {
+  throw new _AssertionError(message);
+}
+
+/**
+ * Helper function for implementing asserts without messages.
+ * The compiler treats this specially.
+ */
+@NoInline()
 void assertHelper(condition) {
-  // Do a bool check first because it is common and faster than 'is Function'.
-  if (condition is !bool) {
-    if (condition is Function) condition = condition();
-    if (condition is !bool) {
-      throw new TypeErrorImplementation(condition, 'bool');
-    }
-  }
-  // Compare to true to avoid boolean conversion check in checked
-  // mode.
-  if (true != condition) throw new AssertionError();
+  if (assertTest(condition)) throw new AssertionError();
 }
 
 /**
@@ -3995,3 +4055,24 @@
 void mainHasTooManyParameters() {
   throw new MainError("'main' expects too many parameters.");
 }
+
+class _AssertionError extends AssertionError {
+  final _message;
+  _AssertionError(this._message);
+
+  String toString() => "Assertion failed: " + Error.safeToString(_message);
+}
+
+
+// [_UnreachableError] is a separate class because we always resolve
+// [assertUnreachable] and want to reduce the impact of resolving possibly
+// unneeded code.
+class _UnreachableError extends AssertionError {
+  _UnreachableError();
+  String toString() => "Assertion failed: Reached dead code";
+}
+
+@NoInline()
+void assertUnreachable() {
+  throw new _UnreachableError();
+}
diff --git a/sdk/lib/_internal/js_runtime/lib/js_mirrors.dart b/sdk/lib/_internal/js_runtime/lib/js_mirrors.dart
index aa836ca..fc78e72 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_mirrors.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_mirrors.dart
@@ -26,13 +26,7 @@
     JS_GET_STATIC_STATE,
     JS_CURRENT_ISOLATE_CONTEXT,
     JS_EMBEDDED_GLOBAL,
-    JS_GET_NAME,
-    JS_TYPEDEF_TAG,
-    JS_FUNCTION_TYPE_RETURN_TYPE_TAG,
-    JS_FUNCTION_TYPE_VOID_RETURN_TAG,
-    JS_FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG,
-    JS_FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG,
-    JS_FUNCTION_TYPE_NAMED_PARAMETERS_TAG;
+    JS_GET_NAME;
 
 
 import 'dart:_internal' as _symbol_dev;
@@ -43,7 +37,6 @@
     Closure,
     JSInvocationMirror,
     JsCache,
-    Null,
     Primitives,
     ReflectionInfo,
     RuntimeError,
diff --git a/sdk/lib/_internal/js_runtime/lib/js_rti.dart b/sdk/lib/_internal/js_runtime/lib/js_rti.dart
index e5669e2..60af58d 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_rti.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_rti.dart
@@ -41,7 +41,11 @@
 
 part of _js_helper;
 
-Type createRuntimeType(String name) => new TypeImpl(name);
+Type createRuntimeType(String name) {
+  // Use a 'JS' cast to String.  Since this is registered as used by the
+  // backend, type inference assumes the worst (name is dynamic).
+  return new TypeImpl(JS('String', '#', name));
+}
 
 class TypeImpl implements Type {
   final String _typeName;
@@ -85,10 +89,14 @@
  * representation of type 4 or 5, that is, either a JavaScript array or
  * `null`.
  */
+// Don't inline.  Let the JS engine inline this.  The call expression is much
+// more compact that the inlined expansion.
+// TODO(sra): For most objects it would be better to initialize the type info as
+// a field in the constructor: http://dartbug.com/22676 .
+@NoInline()
 Object setRuntimeTypeInfo(Object target, var rti) {
   assert(rti == null || isJsArray(rti));
-  // We have to check for null because factories may return null.
-  if (target != null) JS('var', r'#.$builtinTypeInfo = #', target, rti);
+  JS('var', r'#.$builtinTypeInfo = #', target, rti);
   return target;
 }
 
diff --git a/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart b/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart
index ec50a86..c256020 100644
--- a/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart
+++ b/sdk/lib/_internal/js_runtime/lib/native_typed_data.dart
@@ -12,7 +12,7 @@
 import 'dart:_internal';
 import 'dart:_interceptors' show JSIndexable, JSUInt32, JSUInt31;
 import 'dart:_js_helper' show
-    Creates, JavaScriptIndexingBehavior, JSName, Native, Null, Returns,
+    Creates, JavaScriptIndexingBehavior, JSName, Native, Returns,
     diagnoseIndexError, diagnoseRangeError;
 import 'dart:_foreign_helper' show JS;
 import 'dart:math' as Math;
diff --git a/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart b/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart
index e9af062..6041760 100644
--- a/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart
@@ -9,7 +9,7 @@
 import 'dart:_internal';
 import 'dart:_interceptors' show JSIndexable, JSUInt32, JSUInt31;
 import 'dart:_js_helper'
-    show Creates, JavaScriptIndexingBehavior, JSName, Null, Returns, patch;
+    show Creates, JavaScriptIndexingBehavior, JSName, Returns, patch;
 import 'dart:_native_typed_data';
 
 @patch class ByteData {
diff --git a/sdk/lib/async/async.dart b/sdk/lib/async/async.dart
index b244191..ac205be 100644
--- a/sdk/lib/async/async.dart
+++ b/sdk/lib/async/async.dart
@@ -91,7 +91,7 @@
 library dart.async;
 
 import "dart:collection";
-import "dart:_internal" show deprecated, printToZone, printToConsole,
+import "dart:_internal" show printToZone, printToConsole,
                              IterableElementError;
 
 part 'async_error.dart';
diff --git a/sdk/lib/core/bool.dart b/sdk/lib/core/bool.dart
index 8150219..d1f31d7 100644
--- a/sdk/lib/core/bool.dart
+++ b/sdk/lib/core/bool.dart
@@ -21,11 +21,19 @@
    * In all other cases, including when there is no declaration for `name`,
    * the result is the [defaultValue].
    *
+   * The result is the same as would be returned by:
+   *
+   *     (const String.fromEnvironment(name) == "true")
+   *         ? true
+   *         : (const String.fromEnvironment(name) == "false")
+   *             ? false
+   *             : defaultValue
+   *
    * Example:
    *
    *     const loggingFlag = const bool.fromEnvironment("logging");
    *
-   * If you want to use a different truth-string, you can use the
+   * If you want to use a different truth-string than `"true"`, you can use the
    * [String.fromEnvironment] constructor directly:
    *
    *     const isLoggingOn = (const String.fromEnvironment("logging") == "on");
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart
index 3053807..0229732 100644
--- a/sdk/lib/core/errors.dart
+++ b/sdk/lib/core/errors.dart
@@ -96,6 +96,8 @@
  * Error thrown by the runtime system when an assert statement fails.
  */
 class AssertionError extends Error {
+  AssertionError();
+  String toString() => "Assertion failed";
 }
 
 /**
diff --git a/sdk/lib/core/list.dart b/sdk/lib/core/list.dart
index 8e837f8..50a5f58 100644
--- a/sdk/lib/core/list.dart
+++ b/sdk/lib/core/list.dart
@@ -159,7 +159,7 @@
    *
    * Throws an [UnsupportedError] if the list is fixed-length.
    */
-  void set length(int newLength);
+  set length(int newLength);
 
   /**
    * Adds [value] to the end of this list,
diff --git a/sdk/lib/developer/developer.dart b/sdk/lib/developer/developer.dart
index c51a680..d5620e4 100644
--- a/sdk/lib/developer/developer.dart
+++ b/sdk/lib/developer/developer.dart
@@ -37,13 +37,13 @@
 
 /// Emit a log event.
 /// [message] is the log message.
-/// [time] (optional) is the timestamp.
-/// [sequenceNumber] (optional) is a monotonically increasing sequence number.
-/// [level] (optional) is the severity level (value between 0 and 2000).
-/// [name] (optional) is the name of the source of the log message.
-/// [zone] (optional) the zone where the log was emitted
-/// [error] (optional) an error object associated with this log event.
-/// [stackTrace] (optional) a stack trace associated with this log event.
+/// [time]  (optional) is the timestamp.
+/// [sequenceNumber]  (optional) is a monotonically increasing sequence number.
+/// [level]  (optional) is the severity level (value between 0 and 2000).
+/// [name]  (optional) is the name of the source of the log message.
+/// [zone]  (optional) the zone where the log was emitted
+/// [error]  (optional) an error object associated with this log event.
+/// [stackTrace]  (optional) a stack trace associated with this log event.
 external void log(String message,
                   {DateTime time,
                    int sequenceNumber,
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index a63c557..ece22d3 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -26,7 +26,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide Symbol, deprecated;
+import 'dart:_internal' hide Symbol;
 import 'dart:html_common';
 import 'dart:indexed_db';
 import 'dart:isolate';
@@ -55,7 +55,7 @@
 // Not actually used, but imported since dart:html can generate these objects.
 import 'dart:_js_helper' show
     convertDartClosureToJS, Creates, JavaScriptIndexingBehavior,
-    JSName, Native, Null, Returns, Inline, ForceInline,
+    JSName, Native, Returns, ForceInline,
     findDispatchTagForInterceptorClass, setNativeSubclassDispatchRecord,
     makeLeafDispatchRecord;
 import 'dart:_interceptors' show
@@ -820,12 +820,10 @@
 @DomName('HTMLAudioElement')
 @Native("HTMLAudioElement")
 class AudioElement extends MediaElement {
-  // To suppress missing implicit constructor warnings.
-  factory AudioElement._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('HTMLAudioElement.HTMLAudioElement')
   @DocsEditable()
-  factory AudioElement([String src]) {
+  factory AudioElement._([String src]) {
     if (src != null) {
       return AudioElement._create_1(src);
     }
@@ -839,6 +837,8 @@
    * This can only be called by subclasses from their created constructor.
    */
   AudioElement.created() : super.created();
+
+  factory AudioElement([String src]) => new AudioElement._(src);
 }
 // 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
@@ -1049,7 +1049,7 @@
   // Shadowing definition.
   String get returnValue => JS("String", "#.returnValue", this);
 
-  void set returnValue(String value) {
+  set returnValue(String value) {
     JS("void", "#.returnValue = #", this, value);
   }
 }
@@ -2372,7 +2372,7 @@
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   // TODO(14316): Firefox has this functionality with mozDashOffset, but it
   // needs to be polyfilled.
-  void set lineDashOffset(num value) {
+  set lineDashOffset(num value) {
     JS('void',
        'typeof #.lineDashOffset != "undefined" ? #.lineDashOffset = # : '
        '#.webkitLineDashOffset = #', this, this, value, this, value);
@@ -3458,7 +3458,7 @@
   String get background => this._background;
 
   /** Sets the value of "background" */
-  void set background(String value) {
+  set background(String value) {
     _background = value == null ? '' : value;
   }
   @Returns('String')
@@ -3469,7 +3469,7 @@
   String get backgroundAttachment => this._backgroundAttachment;
 
   /** Sets the value of "background-attachment" */
-  void set backgroundAttachment(String value) {
+  set backgroundAttachment(String value) {
     _backgroundAttachment = value == null ? '' : value;
   }
   @Returns('String')
@@ -3480,7 +3480,7 @@
   String get backgroundColor => this._backgroundColor;
 
   /** Sets the value of "background-color" */
-  void set backgroundColor(String value) {
+  set backgroundColor(String value) {
     _backgroundColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -3491,7 +3491,7 @@
   String get backgroundImage => this._backgroundImage;
 
   /** Sets the value of "background-image" */
-  void set backgroundImage(String value) {
+  set backgroundImage(String value) {
     _backgroundImage = value == null ? '' : value;
   }
   @Returns('String')
@@ -3502,7 +3502,7 @@
   String get backgroundPosition => this._backgroundPosition;
 
   /** Sets the value of "background-position" */
-  void set backgroundPosition(String value) {
+  set backgroundPosition(String value) {
     _backgroundPosition = value == null ? '' : value;
   }
   @Returns('String')
@@ -3513,7 +3513,7 @@
   String get backgroundRepeat => this._backgroundRepeat;
 
   /** Sets the value of "background-repeat" */
-  void set backgroundRepeat(String value) {
+  set backgroundRepeat(String value) {
     _backgroundRepeat = value == null ? '' : value;
   }
   @Returns('String')
@@ -3524,7 +3524,7 @@
   String get border => this._border;
 
   /** Sets the value of "border" */
-  void set border(String value) {
+  set border(String value) {
     _border = value == null ? '' : value;
   }
   @Returns('String')
@@ -3535,7 +3535,7 @@
   String get borderBottom => this._borderBottom;
 
   /** Sets the value of "border-bottom" */
-  void set borderBottom(String value) {
+  set borderBottom(String value) {
     _borderBottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -3546,7 +3546,7 @@
   String get borderBottomColor => this._borderBottomColor;
 
   /** Sets the value of "border-bottom-color" */
-  void set borderBottomColor(String value) {
+  set borderBottomColor(String value) {
     _borderBottomColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -3557,7 +3557,7 @@
   String get borderBottomStyle => this._borderBottomStyle;
 
   /** Sets the value of "border-bottom-style" */
-  void set borderBottomStyle(String value) {
+  set borderBottomStyle(String value) {
     _borderBottomStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -3568,7 +3568,7 @@
   String get borderBottomWidth => this._borderBottomWidth;
 
   /** Sets the value of "border-bottom-width" */
-  void set borderBottomWidth(String value) {
+  set borderBottomWidth(String value) {
     _borderBottomWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -3579,7 +3579,7 @@
   String get borderCollapse => this._borderCollapse;
 
   /** Sets the value of "border-collapse" */
-  void set borderCollapse(String value) {
+  set borderCollapse(String value) {
     _borderCollapse = value == null ? '' : value;
   }
   @Returns('String')
@@ -3590,7 +3590,7 @@
   String get borderColor => this._borderColor;
 
   /** Sets the value of "border-color" */
-  void set borderColor(String value) {
+  set borderColor(String value) {
     _borderColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -3601,7 +3601,7 @@
   String get borderLeft => this._borderLeft;
 
   /** Sets the value of "border-left" */
-  void set borderLeft(String value) {
+  set borderLeft(String value) {
     _borderLeft = value == null ? '' : value;
   }
   @Returns('String')
@@ -3612,7 +3612,7 @@
   String get borderLeftColor => this._borderLeftColor;
 
   /** Sets the value of "border-left-color" */
-  void set borderLeftColor(String value) {
+  set borderLeftColor(String value) {
     _borderLeftColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -3623,7 +3623,7 @@
   String get borderLeftStyle => this._borderLeftStyle;
 
   /** Sets the value of "border-left-style" */
-  void set borderLeftStyle(String value) {
+  set borderLeftStyle(String value) {
     _borderLeftStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -3634,7 +3634,7 @@
   String get borderLeftWidth => this._borderLeftWidth;
 
   /** Sets the value of "border-left-width" */
-  void set borderLeftWidth(String value) {
+  set borderLeftWidth(String value) {
     _borderLeftWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -3645,7 +3645,7 @@
   String get borderRight => this._borderRight;
 
   /** Sets the value of "border-right" */
-  void set borderRight(String value) {
+  set borderRight(String value) {
     _borderRight = value == null ? '' : value;
   }
   @Returns('String')
@@ -3656,7 +3656,7 @@
   String get borderRightColor => this._borderRightColor;
 
   /** Sets the value of "border-right-color" */
-  void set borderRightColor(String value) {
+  set borderRightColor(String value) {
     _borderRightColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -3667,7 +3667,7 @@
   String get borderRightStyle => this._borderRightStyle;
 
   /** Sets the value of "border-right-style" */
-  void set borderRightStyle(String value) {
+  set borderRightStyle(String value) {
     _borderRightStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -3678,7 +3678,7 @@
   String get borderRightWidth => this._borderRightWidth;
 
   /** Sets the value of "border-right-width" */
-  void set borderRightWidth(String value) {
+  set borderRightWidth(String value) {
     _borderRightWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -3689,7 +3689,7 @@
   String get borderSpacing => this._borderSpacing;
 
   /** Sets the value of "border-spacing" */
-  void set borderSpacing(String value) {
+  set borderSpacing(String value) {
     _borderSpacing = value == null ? '' : value;
   }
   @Returns('String')
@@ -3700,7 +3700,7 @@
   String get borderStyle => this._borderStyle;
 
   /** Sets the value of "border-style" */
-  void set borderStyle(String value) {
+  set borderStyle(String value) {
     _borderStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -3711,7 +3711,7 @@
   String get borderTop => this._borderTop;
 
   /** Sets the value of "border-top" */
-  void set borderTop(String value) {
+  set borderTop(String value) {
     _borderTop = value == null ? '' : value;
   }
   @Returns('String')
@@ -3722,7 +3722,7 @@
   String get borderTopColor => this._borderTopColor;
 
   /** Sets the value of "border-top-color" */
-  void set borderTopColor(String value) {
+  set borderTopColor(String value) {
     _borderTopColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -3733,7 +3733,7 @@
   String get borderTopStyle => this._borderTopStyle;
 
   /** Sets the value of "border-top-style" */
-  void set borderTopStyle(String value) {
+  set borderTopStyle(String value) {
     _borderTopStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -3744,7 +3744,7 @@
   String get borderTopWidth => this._borderTopWidth;
 
   /** Sets the value of "border-top-width" */
-  void set borderTopWidth(String value) {
+  set borderTopWidth(String value) {
     _borderTopWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -3755,7 +3755,7 @@
   String get borderWidth => this._borderWidth;
 
   /** Sets the value of "border-width" */
-  void set borderWidth(String value) {
+  set borderWidth(String value) {
     _borderWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -3766,7 +3766,7 @@
   String get bottom => this._bottom;
 
   /** Sets the value of "bottom" */
-  void set bottom(String value) {
+  set bottom(String value) {
     _bottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -3777,7 +3777,7 @@
   String get captionSide => this._captionSide;
 
   /** Sets the value of "caption-side" */
-  void set captionSide(String value) {
+  set captionSide(String value) {
     _captionSide = value == null ? '' : value;
   }
   @Returns('String')
@@ -3788,7 +3788,7 @@
   String get clear => this._clear;
 
   /** Sets the value of "clear" */
-  void set clear(String value) {
+  set clear(String value) {
     _clear = value == null ? '' : value;
   }
   @Returns('String')
@@ -3799,7 +3799,7 @@
   String get clip => this._clip;
 
   /** Sets the value of "clip" */
-  void set clip(String value) {
+  set clip(String value) {
     _clip = value == null ? '' : value;
   }
   @Returns('String')
@@ -3810,7 +3810,7 @@
   String get color => this._color;
 
   /** Sets the value of "color" */
-  void set color(String value) {
+  set color(String value) {
     _color = value == null ? '' : value;
   }
   @Returns('String')
@@ -3821,7 +3821,7 @@
   String get content => this._content;
 
   /** Sets the value of "content" */
-  void set content(String value) {
+  set content(String value) {
     _content = value == null ? '' : value;
   }
   @Returns('String')
@@ -3832,7 +3832,7 @@
   String get cursor => this._cursor;
 
   /** Sets the value of "cursor" */
-  void set cursor(String value) {
+  set cursor(String value) {
     _cursor = value == null ? '' : value;
   }
   @Returns('String')
@@ -3843,7 +3843,7 @@
   String get direction => this._direction;
 
   /** Sets the value of "direction" */
-  void set direction(String value) {
+  set direction(String value) {
     _direction = value == null ? '' : value;
   }
   @Returns('String')
@@ -3854,7 +3854,7 @@
   String get display => this._display;
 
   /** Sets the value of "display" */
-  void set display(String value) {
+  set display(String value) {
     _display = value == null ? '' : value;
   }
   @Returns('String')
@@ -3865,7 +3865,7 @@
   String get emptyCells => this._emptyCells;
 
   /** Sets the value of "empty-cells" */
-  void set emptyCells(String value) {
+  set emptyCells(String value) {
     _emptyCells = value == null ? '' : value;
   }
   @Returns('String')
@@ -3876,7 +3876,7 @@
   String get font => this._font;
 
   /** Sets the value of "font" */
-  void set font(String value) {
+  set font(String value) {
     _font = value == null ? '' : value;
   }
   @Returns('String')
@@ -3887,7 +3887,7 @@
   String get fontFamily => this._fontFamily;
 
   /** Sets the value of "font-family" */
-  void set fontFamily(String value) {
+  set fontFamily(String value) {
     _fontFamily = value == null ? '' : value;
   }
   @Returns('String')
@@ -3898,7 +3898,7 @@
   String get fontSize => this._fontSize;
 
   /** Sets the value of "font-size" */
-  void set fontSize(String value) {
+  set fontSize(String value) {
     _fontSize = value == null ? '' : value;
   }
   @Returns('String')
@@ -3909,7 +3909,7 @@
   String get fontStyle => this._fontStyle;
 
   /** Sets the value of "font-style" */
-  void set fontStyle(String value) {
+  set fontStyle(String value) {
     _fontStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -3920,7 +3920,7 @@
   String get fontVariant => this._fontVariant;
 
   /** Sets the value of "font-variant" */
-  void set fontVariant(String value) {
+  set fontVariant(String value) {
     _fontVariant = value == null ? '' : value;
   }
   @Returns('String')
@@ -3931,7 +3931,7 @@
   String get fontWeight => this._fontWeight;
 
   /** Sets the value of "font-weight" */
-  void set fontWeight(String value) {
+  set fontWeight(String value) {
     _fontWeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -3942,7 +3942,7 @@
   String get height => this._height;
 
   /** Sets the value of "height" */
-  void set height(String value) {
+  set height(String value) {
     _height = value == null ? '' : value;
   }
   @Returns('String')
@@ -3953,7 +3953,7 @@
   String get left => this._left;
 
   /** Sets the value of "left" */
-  void set left(String value) {
+  set left(String value) {
     _left = value == null ? '' : value;
   }
   @Returns('String')
@@ -3964,7 +3964,7 @@
   String get letterSpacing => this._letterSpacing;
 
   /** Sets the value of "letter-spacing" */
-  void set letterSpacing(String value) {
+  set letterSpacing(String value) {
     _letterSpacing = value == null ? '' : value;
   }
   @Returns('String')
@@ -3975,7 +3975,7 @@
   String get lineHeight => this._lineHeight;
 
   /** Sets the value of "line-height" */
-  void set lineHeight(String value) {
+  set lineHeight(String value) {
     _lineHeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -3986,7 +3986,7 @@
   String get listStyle => this._listStyle;
 
   /** Sets the value of "list-style" */
-  void set listStyle(String value) {
+  set listStyle(String value) {
     _listStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -3997,7 +3997,7 @@
   String get listStyleImage => this._listStyleImage;
 
   /** Sets the value of "list-style-image" */
-  void set listStyleImage(String value) {
+  set listStyleImage(String value) {
     _listStyleImage = value == null ? '' : value;
   }
   @Returns('String')
@@ -4008,7 +4008,7 @@
   String get listStylePosition => this._listStylePosition;
 
   /** Sets the value of "list-style-position" */
-  void set listStylePosition(String value) {
+  set listStylePosition(String value) {
     _listStylePosition = value == null ? '' : value;
   }
   @Returns('String')
@@ -4019,7 +4019,7 @@
   String get listStyleType => this._listStyleType;
 
   /** Sets the value of "list-style-type" */
-  void set listStyleType(String value) {
+  set listStyleType(String value) {
     _listStyleType = value == null ? '' : value;
   }
   @Returns('String')
@@ -4030,7 +4030,7 @@
   String get margin => this._margin;
 
   /** Sets the value of "margin" */
-  void set margin(String value) {
+  set margin(String value) {
     _margin = value == null ? '' : value;
   }
   @Returns('String')
@@ -4041,7 +4041,7 @@
   String get marginBottom => this._marginBottom;
 
   /** Sets the value of "margin-bottom" */
-  void set marginBottom(String value) {
+  set marginBottom(String value) {
     _marginBottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -4052,7 +4052,7 @@
   String get marginLeft => this._marginLeft;
 
   /** Sets the value of "margin-left" */
-  void set marginLeft(String value) {
+  set marginLeft(String value) {
     _marginLeft = value == null ? '' : value;
   }
   @Returns('String')
@@ -4063,7 +4063,7 @@
   String get marginRight => this._marginRight;
 
   /** Sets the value of "margin-right" */
-  void set marginRight(String value) {
+  set marginRight(String value) {
     _marginRight = value == null ? '' : value;
   }
   @Returns('String')
@@ -4074,7 +4074,7 @@
   String get marginTop => this._marginTop;
 
   /** Sets the value of "margin-top" */
-  void set marginTop(String value) {
+  set marginTop(String value) {
     _marginTop = value == null ? '' : value;
   }
   @Returns('String')
@@ -4085,7 +4085,7 @@
   String get maxHeight => this._maxHeight;
 
   /** Sets the value of "max-height" */
-  void set maxHeight(String value) {
+  set maxHeight(String value) {
     _maxHeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -4096,7 +4096,7 @@
   String get maxWidth => this._maxWidth;
 
   /** Sets the value of "max-width" */
-  void set maxWidth(String value) {
+  set maxWidth(String value) {
     _maxWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -4107,7 +4107,7 @@
   String get minHeight => this._minHeight;
 
   /** Sets the value of "min-height" */
-  void set minHeight(String value) {
+  set minHeight(String value) {
     _minHeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -4118,7 +4118,7 @@
   String get minWidth => this._minWidth;
 
   /** Sets the value of "min-width" */
-  void set minWidth(String value) {
+  set minWidth(String value) {
     _minWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -4129,7 +4129,7 @@
   String get outline => this._outline;
 
   /** Sets the value of "outline" */
-  void set outline(String value) {
+  set outline(String value) {
     _outline = value == null ? '' : value;
   }
   @Returns('String')
@@ -4140,7 +4140,7 @@
   String get outlineColor => this._outlineColor;
 
   /** Sets the value of "outline-color" */
-  void set outlineColor(String value) {
+  set outlineColor(String value) {
     _outlineColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -4151,7 +4151,7 @@
   String get outlineStyle => this._outlineStyle;
 
   /** Sets the value of "outline-style" */
-  void set outlineStyle(String value) {
+  set outlineStyle(String value) {
     _outlineStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -4162,7 +4162,7 @@
   String get outlineWidth => this._outlineWidth;
 
   /** Sets the value of "outline-width" */
-  void set outlineWidth(String value) {
+  set outlineWidth(String value) {
     _outlineWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -4173,7 +4173,7 @@
   String get overflow => this._overflow;
 
   /** Sets the value of "overflow" */
-  void set overflow(String value) {
+  set overflow(String value) {
     _overflow = value == null ? '' : value;
   }
   @Returns('String')
@@ -4184,7 +4184,7 @@
   String get padding => this._padding;
 
   /** Sets the value of "padding" */
-  void set padding(String value) {
+  set padding(String value) {
     _padding = value == null ? '' : value;
   }
   @Returns('String')
@@ -4195,7 +4195,7 @@
   String get paddingBottom => this._paddingBottom;
 
   /** Sets the value of "padding-bottom" */
-  void set paddingBottom(String value) {
+  set paddingBottom(String value) {
     _paddingBottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -4206,7 +4206,7 @@
   String get paddingLeft => this._paddingLeft;
 
   /** Sets the value of "padding-left" */
-  void set paddingLeft(String value) {
+  set paddingLeft(String value) {
     _paddingLeft = value == null ? '' : value;
   }
   @Returns('String')
@@ -4217,7 +4217,7 @@
   String get paddingRight => this._paddingRight;
 
   /** Sets the value of "padding-right" */
-  void set paddingRight(String value) {
+  set paddingRight(String value) {
     _paddingRight = value == null ? '' : value;
   }
   @Returns('String')
@@ -4228,7 +4228,7 @@
   String get paddingTop => this._paddingTop;
 
   /** Sets the value of "padding-top" */
-  void set paddingTop(String value) {
+  set paddingTop(String value) {
     _paddingTop = value == null ? '' : value;
   }
   @Returns('String')
@@ -4239,7 +4239,7 @@
   String get pageBreakAfter => this._pageBreakAfter;
 
   /** Sets the value of "page-break-after" */
-  void set pageBreakAfter(String value) {
+  set pageBreakAfter(String value) {
     _pageBreakAfter = value == null ? '' : value;
   }
   @Returns('String')
@@ -4250,7 +4250,7 @@
   String get pageBreakBefore => this._pageBreakBefore;
 
   /** Sets the value of "page-break-before" */
-  void set pageBreakBefore(String value) {
+  set pageBreakBefore(String value) {
     _pageBreakBefore = value == null ? '' : value;
   }
   @Returns('String')
@@ -4261,7 +4261,7 @@
   String get pageBreakInside => this._pageBreakInside;
 
   /** Sets the value of "page-break-inside" */
-  void set pageBreakInside(String value) {
+  set pageBreakInside(String value) {
     _pageBreakInside = value == null ? '' : value;
   }
   @Returns('String')
@@ -4272,7 +4272,7 @@
   String get position => this._position;
 
   /** Sets the value of "position" */
-  void set position(String value) {
+  set position(String value) {
     _position = value == null ? '' : value;
   }
   @Returns('String')
@@ -4283,7 +4283,7 @@
   String get quotes => this._quotes;
 
   /** Sets the value of "quotes" */
-  void set quotes(String value) {
+  set quotes(String value) {
     _quotes = value == null ? '' : value;
   }
   @Returns('String')
@@ -4294,7 +4294,7 @@
   String get right => this._right;
 
   /** Sets the value of "right" */
-  void set right(String value) {
+  set right(String value) {
     _right = value == null ? '' : value;
   }
   @Returns('String')
@@ -4305,7 +4305,7 @@
   String get tableLayout => this._tableLayout;
 
   /** Sets the value of "table-layout" */
-  void set tableLayout(String value) {
+  set tableLayout(String value) {
     _tableLayout = value == null ? '' : value;
   }
   @Returns('String')
@@ -4316,7 +4316,7 @@
   String get textAlign => this._textAlign;
 
   /** Sets the value of "text-align" */
-  void set textAlign(String value) {
+  set textAlign(String value) {
     _textAlign = value == null ? '' : value;
   }
   @Returns('String')
@@ -4327,7 +4327,7 @@
   String get textDecoration => this._textDecoration;
 
   /** Sets the value of "text-decoration" */
-  void set textDecoration(String value) {
+  set textDecoration(String value) {
     _textDecoration = value == null ? '' : value;
   }
   @Returns('String')
@@ -4338,7 +4338,7 @@
   String get textIndent => this._textIndent;
 
   /** Sets the value of "text-indent" */
-  void set textIndent(String value) {
+  set textIndent(String value) {
     _textIndent = value == null ? '' : value;
   }
   @Returns('String')
@@ -4349,7 +4349,7 @@
   String get textTransform => this._textTransform;
 
   /** Sets the value of "text-transform" */
-  void set textTransform(String value) {
+  set textTransform(String value) {
     _textTransform = value == null ? '' : value;
   }
   @Returns('String')
@@ -4360,7 +4360,7 @@
   String get top => this._top;
 
   /** Sets the value of "top" */
-  void set top(String value) {
+  set top(String value) {
     _top = value == null ? '' : value;
   }
   @Returns('String')
@@ -4371,7 +4371,7 @@
   String get unicodeBidi => this._unicodeBidi;
 
   /** Sets the value of "unicode-bidi" */
-  void set unicodeBidi(String value) {
+  set unicodeBidi(String value) {
     _unicodeBidi = value == null ? '' : value;
   }
   @Returns('String')
@@ -4382,7 +4382,7 @@
   String get verticalAlign => this._verticalAlign;
 
   /** Sets the value of "vertical-align" */
-  void set verticalAlign(String value) {
+  set verticalAlign(String value) {
     _verticalAlign = value == null ? '' : value;
   }
   @Returns('String')
@@ -4393,7 +4393,7 @@
   String get visibility => this._visibility;
 
   /** Sets the value of "visibility" */
-  void set visibility(String value) {
+  set visibility(String value) {
     _visibility = value == null ? '' : value;
   }
   @Returns('String')
@@ -4404,7 +4404,7 @@
   String get whiteSpace => this._whiteSpace;
 
   /** Sets the value of "white-space" */
-  void set whiteSpace(String value) {
+  set whiteSpace(String value) {
     _whiteSpace = value == null ? '' : value;
   }
   @Returns('String')
@@ -4415,7 +4415,7 @@
   String get width => this._width;
 
   /** Sets the value of "width" */
-  void set width(String value) {
+  set width(String value) {
     _width = value == null ? '' : value;
   }
   @Returns('String')
@@ -4426,7 +4426,7 @@
   String get wordSpacing => this._wordSpacing;
 
   /** Sets the value of "word-spacing" */
-  void set wordSpacing(String value) {
+  set wordSpacing(String value) {
     _wordSpacing = value == null ? '' : value;
   }
   @Returns('String')
@@ -4437,7 +4437,7 @@
   String get zIndex => this._zIndex;
 
   /** Sets the value of "z-index" */
-  void set zIndex(String value) {
+  set zIndex(String value) {
     _zIndex = value == null ? '' : value;
   }
   @Returns('String')
@@ -4473,452 +4473,452 @@
   }
 
   /** Sets the value of "background" */
-  void set background(String value) {
+  set background(String value) {
     _setAll('background', value);
   }
     
   /** Sets the value of "background-attachment" */
-  void set backgroundAttachment(String value) {
+  set backgroundAttachment(String value) {
     _setAll('backgroundAttachment', value);
   }
     
   /** Sets the value of "background-color" */
-  void set backgroundColor(String value) {
+  set backgroundColor(String value) {
     _setAll('backgroundColor', value);
   }
     
   /** Sets the value of "background-image" */
-  void set backgroundImage(String value) {
+  set backgroundImage(String value) {
     _setAll('backgroundImage', value);
   }
     
   /** Sets the value of "background-position" */
-  void set backgroundPosition(String value) {
+  set backgroundPosition(String value) {
     _setAll('backgroundPosition', value);
   }
     
   /** Sets the value of "background-repeat" */
-  void set backgroundRepeat(String value) {
+  set backgroundRepeat(String value) {
     _setAll('backgroundRepeat', value);
   }
     
   /** Sets the value of "border" */
-  void set border(String value) {
+  set border(String value) {
     _setAll('border', value);
   }
     
   /** Sets the value of "border-bottom" */
-  void set borderBottom(String value) {
+  set borderBottom(String value) {
     _setAll('borderBottom', value);
   }
     
   /** Sets the value of "border-bottom-color" */
-  void set borderBottomColor(String value) {
+  set borderBottomColor(String value) {
     _setAll('borderBottomColor', value);
   }
     
   /** Sets the value of "border-bottom-style" */
-  void set borderBottomStyle(String value) {
+  set borderBottomStyle(String value) {
     _setAll('borderBottomStyle', value);
   }
     
   /** Sets the value of "border-bottom-width" */
-  void set borderBottomWidth(String value) {
+  set borderBottomWidth(String value) {
     _setAll('borderBottomWidth', value);
   }
     
   /** Sets the value of "border-collapse" */
-  void set borderCollapse(String value) {
+  set borderCollapse(String value) {
     _setAll('borderCollapse', value);
   }
     
   /** Sets the value of "border-color" */
-  void set borderColor(String value) {
+  set borderColor(String value) {
     _setAll('borderColor', value);
   }
     
   /** Sets the value of "border-left" */
-  void set borderLeft(String value) {
+  set borderLeft(String value) {
     _setAll('borderLeft', value);
   }
     
   /** Sets the value of "border-left-color" */
-  void set borderLeftColor(String value) {
+  set borderLeftColor(String value) {
     _setAll('borderLeftColor', value);
   }
     
   /** Sets the value of "border-left-style" */
-  void set borderLeftStyle(String value) {
+  set borderLeftStyle(String value) {
     _setAll('borderLeftStyle', value);
   }
     
   /** Sets the value of "border-left-width" */
-  void set borderLeftWidth(String value) {
+  set borderLeftWidth(String value) {
     _setAll('borderLeftWidth', value);
   }
     
   /** Sets the value of "border-right" */
-  void set borderRight(String value) {
+  set borderRight(String value) {
     _setAll('borderRight', value);
   }
     
   /** Sets the value of "border-right-color" */
-  void set borderRightColor(String value) {
+  set borderRightColor(String value) {
     _setAll('borderRightColor', value);
   }
     
   /** Sets the value of "border-right-style" */
-  void set borderRightStyle(String value) {
+  set borderRightStyle(String value) {
     _setAll('borderRightStyle', value);
   }
     
   /** Sets the value of "border-right-width" */
-  void set borderRightWidth(String value) {
+  set borderRightWidth(String value) {
     _setAll('borderRightWidth', value);
   }
     
   /** Sets the value of "border-spacing" */
-  void set borderSpacing(String value) {
+  set borderSpacing(String value) {
     _setAll('borderSpacing', value);
   }
     
   /** Sets the value of "border-style" */
-  void set borderStyle(String value) {
+  set borderStyle(String value) {
     _setAll('borderStyle', value);
   }
     
   /** Sets the value of "border-top" */
-  void set borderTop(String value) {
+  set borderTop(String value) {
     _setAll('borderTop', value);
   }
     
   /** Sets the value of "border-top-color" */
-  void set borderTopColor(String value) {
+  set borderTopColor(String value) {
     _setAll('borderTopColor', value);
   }
     
   /** Sets the value of "border-top-style" */
-  void set borderTopStyle(String value) {
+  set borderTopStyle(String value) {
     _setAll('borderTopStyle', value);
   }
     
   /** Sets the value of "border-top-width" */
-  void set borderTopWidth(String value) {
+  set borderTopWidth(String value) {
     _setAll('borderTopWidth', value);
   }
     
   /** Sets the value of "border-width" */
-  void set borderWidth(String value) {
+  set borderWidth(String value) {
     _setAll('borderWidth', value);
   }
     
   /** Sets the value of "bottom" */
-  void set bottom(String value) {
+  set bottom(String value) {
     _setAll('bottom', value);
   }
     
   /** Sets the value of "caption-side" */
-  void set captionSide(String value) {
+  set captionSide(String value) {
     _setAll('captionSide', value);
   }
     
   /** Sets the value of "clear" */
-  void set clear(String value) {
+  set clear(String value) {
     _setAll('clear', value);
   }
     
   /** Sets the value of "clip" */
-  void set clip(String value) {
+  set clip(String value) {
     _setAll('clip', value);
   }
     
   /** Sets the value of "color" */
-  void set color(String value) {
+  set color(String value) {
     _setAll('color', value);
   }
     
   /** Sets the value of "content" */
-  void set content(String value) {
+  set content(String value) {
     _setAll('content', value);
   }
     
   /** Sets the value of "cursor" */
-  void set cursor(String value) {
+  set cursor(String value) {
     _setAll('cursor', value);
   }
     
   /** Sets the value of "direction" */
-  void set direction(String value) {
+  set direction(String value) {
     _setAll('direction', value);
   }
     
   /** Sets the value of "display" */
-  void set display(String value) {
+  set display(String value) {
     _setAll('display', value);
   }
     
   /** Sets the value of "empty-cells" */
-  void set emptyCells(String value) {
+  set emptyCells(String value) {
     _setAll('emptyCells', value);
   }
     
   /** Sets the value of "font" */
-  void set font(String value) {
+  set font(String value) {
     _setAll('font', value);
   }
     
   /** Sets the value of "font-family" */
-  void set fontFamily(String value) {
+  set fontFamily(String value) {
     _setAll('fontFamily', value);
   }
     
   /** Sets the value of "font-size" */
-  void set fontSize(String value) {
+  set fontSize(String value) {
     _setAll('fontSize', value);
   }
     
   /** Sets the value of "font-style" */
-  void set fontStyle(String value) {
+  set fontStyle(String value) {
     _setAll('fontStyle', value);
   }
     
   /** Sets the value of "font-variant" */
-  void set fontVariant(String value) {
+  set fontVariant(String value) {
     _setAll('fontVariant', value);
   }
     
   /** Sets the value of "font-weight" */
-  void set fontWeight(String value) {
+  set fontWeight(String value) {
     _setAll('fontWeight', value);
   }
     
   /** Sets the value of "height" */
-  void set height(String value) {
+  set height(String value) {
     _setAll('height', value);
   }
     
   /** Sets the value of "left" */
-  void set left(String value) {
+  set left(String value) {
     _setAll('left', value);
   }
     
   /** Sets the value of "letter-spacing" */
-  void set letterSpacing(String value) {
+  set letterSpacing(String value) {
     _setAll('letterSpacing', value);
   }
     
   /** Sets the value of "line-height" */
-  void set lineHeight(String value) {
+  set lineHeight(String value) {
     _setAll('lineHeight', value);
   }
     
   /** Sets the value of "list-style" */
-  void set listStyle(String value) {
+  set listStyle(String value) {
     _setAll('listStyle', value);
   }
     
   /** Sets the value of "list-style-image" */
-  void set listStyleImage(String value) {
+  set listStyleImage(String value) {
     _setAll('listStyleImage', value);
   }
     
   /** Sets the value of "list-style-position" */
-  void set listStylePosition(String value) {
+  set listStylePosition(String value) {
     _setAll('listStylePosition', value);
   }
     
   /** Sets the value of "list-style-type" */
-  void set listStyleType(String value) {
+  set listStyleType(String value) {
     _setAll('listStyleType', value);
   }
     
   /** Sets the value of "margin" */
-  void set margin(String value) {
+  set margin(String value) {
     _setAll('margin', value);
   }
     
   /** Sets the value of "margin-bottom" */
-  void set marginBottom(String value) {
+  set marginBottom(String value) {
     _setAll('marginBottom', value);
   }
     
   /** Sets the value of "margin-left" */
-  void set marginLeft(String value) {
+  set marginLeft(String value) {
     _setAll('marginLeft', value);
   }
     
   /** Sets the value of "margin-right" */
-  void set marginRight(String value) {
+  set marginRight(String value) {
     _setAll('marginRight', value);
   }
     
   /** Sets the value of "margin-top" */
-  void set marginTop(String value) {
+  set marginTop(String value) {
     _setAll('marginTop', value);
   }
     
   /** Sets the value of "max-height" */
-  void set maxHeight(String value) {
+  set maxHeight(String value) {
     _setAll('maxHeight', value);
   }
     
   /** Sets the value of "max-width" */
-  void set maxWidth(String value) {
+  set maxWidth(String value) {
     _setAll('maxWidth', value);
   }
     
   /** Sets the value of "min-height" */
-  void set minHeight(String value) {
+  set minHeight(String value) {
     _setAll('minHeight', value);
   }
     
   /** Sets the value of "min-width" */
-  void set minWidth(String value) {
+  set minWidth(String value) {
     _setAll('minWidth', value);
   }
     
   /** Sets the value of "outline" */
-  void set outline(String value) {
+  set outline(String value) {
     _setAll('outline', value);
   }
     
   /** Sets the value of "outline-color" */
-  void set outlineColor(String value) {
+  set outlineColor(String value) {
     _setAll('outlineColor', value);
   }
     
   /** Sets the value of "outline-style" */
-  void set outlineStyle(String value) {
+  set outlineStyle(String value) {
     _setAll('outlineStyle', value);
   }
     
   /** Sets the value of "outline-width" */
-  void set outlineWidth(String value) {
+  set outlineWidth(String value) {
     _setAll('outlineWidth', value);
   }
     
   /** Sets the value of "overflow" */
-  void set overflow(String value) {
+  set overflow(String value) {
     _setAll('overflow', value);
   }
     
   /** Sets the value of "padding" */
-  void set padding(String value) {
+  set padding(String value) {
     _setAll('padding', value);
   }
     
   /** Sets the value of "padding-bottom" */
-  void set paddingBottom(String value) {
+  set paddingBottom(String value) {
     _setAll('paddingBottom', value);
   }
     
   /** Sets the value of "padding-left" */
-  void set paddingLeft(String value) {
+  set paddingLeft(String value) {
     _setAll('paddingLeft', value);
   }
     
   /** Sets the value of "padding-right" */
-  void set paddingRight(String value) {
+  set paddingRight(String value) {
     _setAll('paddingRight', value);
   }
     
   /** Sets the value of "padding-top" */
-  void set paddingTop(String value) {
+  set paddingTop(String value) {
     _setAll('paddingTop', value);
   }
     
   /** Sets the value of "page-break-after" */
-  void set pageBreakAfter(String value) {
+  set pageBreakAfter(String value) {
     _setAll('pageBreakAfter', value);
   }
     
   /** Sets the value of "page-break-before" */
-  void set pageBreakBefore(String value) {
+  set pageBreakBefore(String value) {
     _setAll('pageBreakBefore', value);
   }
     
   /** Sets the value of "page-break-inside" */
-  void set pageBreakInside(String value) {
+  set pageBreakInside(String value) {
     _setAll('pageBreakInside', value);
   }
     
   /** Sets the value of "position" */
-  void set position(String value) {
+  set position(String value) {
     _setAll('position', value);
   }
     
   /** Sets the value of "quotes" */
-  void set quotes(String value) {
+  set quotes(String value) {
     _setAll('quotes', value);
   }
     
   /** Sets the value of "right" */
-  void set right(String value) {
+  set right(String value) {
     _setAll('right', value);
   }
     
   /** Sets the value of "table-layout" */
-  void set tableLayout(String value) {
+  set tableLayout(String value) {
     _setAll('tableLayout', value);
   }
     
   /** Sets the value of "text-align" */
-  void set textAlign(String value) {
+  set textAlign(String value) {
     _setAll('textAlign', value);
   }
     
   /** Sets the value of "text-decoration" */
-  void set textDecoration(String value) {
+  set textDecoration(String value) {
     _setAll('textDecoration', value);
   }
     
   /** Sets the value of "text-indent" */
-  void set textIndent(String value) {
+  set textIndent(String value) {
     _setAll('textIndent', value);
   }
     
   /** Sets the value of "text-transform" */
-  void set textTransform(String value) {
+  set textTransform(String value) {
     _setAll('textTransform', value);
   }
     
   /** Sets the value of "top" */
-  void set top(String value) {
+  set top(String value) {
     _setAll('top', value);
   }
     
   /** Sets the value of "unicode-bidi" */
-  void set unicodeBidi(String value) {
+  set unicodeBidi(String value) {
     _setAll('unicodeBidi', value);
   }
     
   /** Sets the value of "vertical-align" */
-  void set verticalAlign(String value) {
+  set verticalAlign(String value) {
     _setAll('verticalAlign', value);
   }
     
   /** Sets the value of "visibility" */
-  void set visibility(String value) {
+  set visibility(String value) {
     _setAll('visibility', value);
   }
     
   /** Sets the value of "white-space" */
-  void set whiteSpace(String value) {
+  set whiteSpace(String value) {
     _setAll('whiteSpace', value);
   }
     
   /** Sets the value of "width" */
-  void set width(String value) {
+  set width(String value) {
     _setAll('width', value);
   }
     
   /** Sets the value of "word-spacing" */
-  void set wordSpacing(String value) {
+  set wordSpacing(String value) {
     _setAll('wordSpacing', value);
   }
     
   /** Sets the value of "z-index" */
-  void set zIndex(String value) {
+  set zIndex(String value) {
     _setAll('zIndex', value);
   }
     
@@ -4939,7 +4939,7 @@
     getPropertyValue('align-content');
 
   /** Sets the value of "align-content" */
-  void set alignContent(String value) {
+  set alignContent(String value) {
     setProperty('align-content', value, '');
   }
 
@@ -4948,7 +4948,7 @@
     getPropertyValue('align-items');
 
   /** Sets the value of "align-items" */
-  void set alignItems(String value) {
+  set alignItems(String value) {
     setProperty('align-items', value, '');
   }
 
@@ -4957,7 +4957,7 @@
     getPropertyValue('align-self');
 
   /** Sets the value of "align-self" */
-  void set alignSelf(String value) {
+  set alignSelf(String value) {
     setProperty('align-self', value, '');
   }
 
@@ -4966,7 +4966,7 @@
     getPropertyValue('animation');
 
   /** Sets the value of "animation" */
-  void set animation(String value) {
+  set animation(String value) {
     setProperty('animation', value, '');
   }
 
@@ -4975,7 +4975,7 @@
     getPropertyValue('animation-delay');
 
   /** Sets the value of "animation-delay" */
-  void set animationDelay(String value) {
+  set animationDelay(String value) {
     setProperty('animation-delay', value, '');
   }
 
@@ -4984,7 +4984,7 @@
     getPropertyValue('animation-direction');
 
   /** Sets the value of "animation-direction" */
-  void set animationDirection(String value) {
+  set animationDirection(String value) {
     setProperty('animation-direction', value, '');
   }
 
@@ -4993,7 +4993,7 @@
     getPropertyValue('animation-duration');
 
   /** Sets the value of "animation-duration" */
-  void set animationDuration(String value) {
+  set animationDuration(String value) {
     setProperty('animation-duration', value, '');
   }
 
@@ -5002,7 +5002,7 @@
     getPropertyValue('animation-fill-mode');
 
   /** Sets the value of "animation-fill-mode" */
-  void set animationFillMode(String value) {
+  set animationFillMode(String value) {
     setProperty('animation-fill-mode', value, '');
   }
 
@@ -5011,7 +5011,7 @@
     getPropertyValue('animation-iteration-count');
 
   /** Sets the value of "animation-iteration-count" */
-  void set animationIterationCount(String value) {
+  set animationIterationCount(String value) {
     setProperty('animation-iteration-count', value, '');
   }
 
@@ -5020,7 +5020,7 @@
     getPropertyValue('animation-name');
 
   /** Sets the value of "animation-name" */
-  void set animationName(String value) {
+  set animationName(String value) {
     setProperty('animation-name', value, '');
   }
 
@@ -5029,7 +5029,7 @@
     getPropertyValue('animation-play-state');
 
   /** Sets the value of "animation-play-state" */
-  void set animationPlayState(String value) {
+  set animationPlayState(String value) {
     setProperty('animation-play-state', value, '');
   }
 
@@ -5038,7 +5038,7 @@
     getPropertyValue('animation-timing-function');
 
   /** Sets the value of "animation-timing-function" */
-  void set animationTimingFunction(String value) {
+  set animationTimingFunction(String value) {
     setProperty('animation-timing-function', value, '');
   }
 
@@ -5047,7 +5047,7 @@
     getPropertyValue('app-region');
 
   /** Sets the value of "app-region" */
-  void set appRegion(String value) {
+  set appRegion(String value) {
     setProperty('app-region', value, '');
   }
 
@@ -5056,7 +5056,7 @@
     getPropertyValue('appearance');
 
   /** Sets the value of "appearance" */
-  void set appearance(String value) {
+  set appearance(String value) {
     setProperty('appearance', value, '');
   }
 
@@ -5065,7 +5065,7 @@
     getPropertyValue('aspect-ratio');
 
   /** Sets the value of "aspect-ratio" */
-  void set aspectRatio(String value) {
+  set aspectRatio(String value) {
     setProperty('aspect-ratio', value, '');
   }
 
@@ -5074,7 +5074,7 @@
     getPropertyValue('backface-visibility');
 
   /** Sets the value of "backface-visibility" */
-  void set backfaceVisibility(String value) {
+  set backfaceVisibility(String value) {
     setProperty('backface-visibility', value, '');
   }
 
@@ -5083,7 +5083,7 @@
     getPropertyValue('background');
 
   /** Sets the value of "background" */
-  void set background(String value) {
+  set background(String value) {
     setProperty('background', value, '');
   }
 
@@ -5092,7 +5092,7 @@
     getPropertyValue('background-attachment');
 
   /** Sets the value of "background-attachment" */
-  void set backgroundAttachment(String value) {
+  set backgroundAttachment(String value) {
     setProperty('background-attachment', value, '');
   }
 
@@ -5101,7 +5101,7 @@
     getPropertyValue('background-blend-mode');
 
   /** Sets the value of "background-blend-mode" */
-  void set backgroundBlendMode(String value) {
+  set backgroundBlendMode(String value) {
     setProperty('background-blend-mode', value, '');
   }
 
@@ -5110,7 +5110,7 @@
     getPropertyValue('background-clip');
 
   /** Sets the value of "background-clip" */
-  void set backgroundClip(String value) {
+  set backgroundClip(String value) {
     setProperty('background-clip', value, '');
   }
 
@@ -5119,7 +5119,7 @@
     getPropertyValue('background-color');
 
   /** Sets the value of "background-color" */
-  void set backgroundColor(String value) {
+  set backgroundColor(String value) {
     setProperty('background-color', value, '');
   }
 
@@ -5128,7 +5128,7 @@
     getPropertyValue('background-composite');
 
   /** Sets the value of "background-composite" */
-  void set backgroundComposite(String value) {
+  set backgroundComposite(String value) {
     setProperty('background-composite', value, '');
   }
 
@@ -5137,7 +5137,7 @@
     getPropertyValue('background-image');
 
   /** Sets the value of "background-image" */
-  void set backgroundImage(String value) {
+  set backgroundImage(String value) {
     setProperty('background-image', value, '');
   }
 
@@ -5146,7 +5146,7 @@
     getPropertyValue('background-origin');
 
   /** Sets the value of "background-origin" */
-  void set backgroundOrigin(String value) {
+  set backgroundOrigin(String value) {
     setProperty('background-origin', value, '');
   }
 
@@ -5155,7 +5155,7 @@
     getPropertyValue('background-position');
 
   /** Sets the value of "background-position" */
-  void set backgroundPosition(String value) {
+  set backgroundPosition(String value) {
     setProperty('background-position', value, '');
   }
 
@@ -5164,7 +5164,7 @@
     getPropertyValue('background-position-x');
 
   /** Sets the value of "background-position-x" */
-  void set backgroundPositionX(String value) {
+  set backgroundPositionX(String value) {
     setProperty('background-position-x', value, '');
   }
 
@@ -5173,7 +5173,7 @@
     getPropertyValue('background-position-y');
 
   /** Sets the value of "background-position-y" */
-  void set backgroundPositionY(String value) {
+  set backgroundPositionY(String value) {
     setProperty('background-position-y', value, '');
   }
 
@@ -5182,7 +5182,7 @@
     getPropertyValue('background-repeat');
 
   /** Sets the value of "background-repeat" */
-  void set backgroundRepeat(String value) {
+  set backgroundRepeat(String value) {
     setProperty('background-repeat', value, '');
   }
 
@@ -5191,7 +5191,7 @@
     getPropertyValue('background-repeat-x');
 
   /** Sets the value of "background-repeat-x" */
-  void set backgroundRepeatX(String value) {
+  set backgroundRepeatX(String value) {
     setProperty('background-repeat-x', value, '');
   }
 
@@ -5200,7 +5200,7 @@
     getPropertyValue('background-repeat-y');
 
   /** Sets the value of "background-repeat-y" */
-  void set backgroundRepeatY(String value) {
+  set backgroundRepeatY(String value) {
     setProperty('background-repeat-y', value, '');
   }
 
@@ -5209,7 +5209,7 @@
     getPropertyValue('background-size');
 
   /** Sets the value of "background-size" */
-  void set backgroundSize(String value) {
+  set backgroundSize(String value) {
     setProperty('background-size', value, '');
   }
 
@@ -5218,7 +5218,7 @@
     getPropertyValue('border');
 
   /** Sets the value of "border" */
-  void set border(String value) {
+  set border(String value) {
     setProperty('border', value, '');
   }
 
@@ -5227,7 +5227,7 @@
     getPropertyValue('border-after');
 
   /** Sets the value of "border-after" */
-  void set borderAfter(String value) {
+  set borderAfter(String value) {
     setProperty('border-after', value, '');
   }
 
@@ -5236,7 +5236,7 @@
     getPropertyValue('border-after-color');
 
   /** Sets the value of "border-after-color" */
-  void set borderAfterColor(String value) {
+  set borderAfterColor(String value) {
     setProperty('border-after-color', value, '');
   }
 
@@ -5245,7 +5245,7 @@
     getPropertyValue('border-after-style');
 
   /** Sets the value of "border-after-style" */
-  void set borderAfterStyle(String value) {
+  set borderAfterStyle(String value) {
     setProperty('border-after-style', value, '');
   }
 
@@ -5254,7 +5254,7 @@
     getPropertyValue('border-after-width');
 
   /** Sets the value of "border-after-width" */
-  void set borderAfterWidth(String value) {
+  set borderAfterWidth(String value) {
     setProperty('border-after-width', value, '');
   }
 
@@ -5263,7 +5263,7 @@
     getPropertyValue('border-before');
 
   /** Sets the value of "border-before" */
-  void set borderBefore(String value) {
+  set borderBefore(String value) {
     setProperty('border-before', value, '');
   }
 
@@ -5272,7 +5272,7 @@
     getPropertyValue('border-before-color');
 
   /** Sets the value of "border-before-color" */
-  void set borderBeforeColor(String value) {
+  set borderBeforeColor(String value) {
     setProperty('border-before-color', value, '');
   }
 
@@ -5281,7 +5281,7 @@
     getPropertyValue('border-before-style');
 
   /** Sets the value of "border-before-style" */
-  void set borderBeforeStyle(String value) {
+  set borderBeforeStyle(String value) {
     setProperty('border-before-style', value, '');
   }
 
@@ -5290,7 +5290,7 @@
     getPropertyValue('border-before-width');
 
   /** Sets the value of "border-before-width" */
-  void set borderBeforeWidth(String value) {
+  set borderBeforeWidth(String value) {
     setProperty('border-before-width', value, '');
   }
 
@@ -5299,7 +5299,7 @@
     getPropertyValue('border-bottom');
 
   /** Sets the value of "border-bottom" */
-  void set borderBottom(String value) {
+  set borderBottom(String value) {
     setProperty('border-bottom', value, '');
   }
 
@@ -5308,7 +5308,7 @@
     getPropertyValue('border-bottom-color');
 
   /** Sets the value of "border-bottom-color" */
-  void set borderBottomColor(String value) {
+  set borderBottomColor(String value) {
     setProperty('border-bottom-color', value, '');
   }
 
@@ -5317,7 +5317,7 @@
     getPropertyValue('border-bottom-left-radius');
 
   /** Sets the value of "border-bottom-left-radius" */
-  void set borderBottomLeftRadius(String value) {
+  set borderBottomLeftRadius(String value) {
     setProperty('border-bottom-left-radius', value, '');
   }
 
@@ -5326,7 +5326,7 @@
     getPropertyValue('border-bottom-right-radius');
 
   /** Sets the value of "border-bottom-right-radius" */
-  void set borderBottomRightRadius(String value) {
+  set borderBottomRightRadius(String value) {
     setProperty('border-bottom-right-radius', value, '');
   }
 
@@ -5335,7 +5335,7 @@
     getPropertyValue('border-bottom-style');
 
   /** Sets the value of "border-bottom-style" */
-  void set borderBottomStyle(String value) {
+  set borderBottomStyle(String value) {
     setProperty('border-bottom-style', value, '');
   }
 
@@ -5344,7 +5344,7 @@
     getPropertyValue('border-bottom-width');
 
   /** Sets the value of "border-bottom-width" */
-  void set borderBottomWidth(String value) {
+  set borderBottomWidth(String value) {
     setProperty('border-bottom-width', value, '');
   }
 
@@ -5353,7 +5353,7 @@
     getPropertyValue('border-collapse');
 
   /** Sets the value of "border-collapse" */
-  void set borderCollapse(String value) {
+  set borderCollapse(String value) {
     setProperty('border-collapse', value, '');
   }
 
@@ -5362,7 +5362,7 @@
     getPropertyValue('border-color');
 
   /** Sets the value of "border-color" */
-  void set borderColor(String value) {
+  set borderColor(String value) {
     setProperty('border-color', value, '');
   }
 
@@ -5371,7 +5371,7 @@
     getPropertyValue('border-end');
 
   /** Sets the value of "border-end" */
-  void set borderEnd(String value) {
+  set borderEnd(String value) {
     setProperty('border-end', value, '');
   }
 
@@ -5380,7 +5380,7 @@
     getPropertyValue('border-end-color');
 
   /** Sets the value of "border-end-color" */
-  void set borderEndColor(String value) {
+  set borderEndColor(String value) {
     setProperty('border-end-color', value, '');
   }
 
@@ -5389,7 +5389,7 @@
     getPropertyValue('border-end-style');
 
   /** Sets the value of "border-end-style" */
-  void set borderEndStyle(String value) {
+  set borderEndStyle(String value) {
     setProperty('border-end-style', value, '');
   }
 
@@ -5398,7 +5398,7 @@
     getPropertyValue('border-end-width');
 
   /** Sets the value of "border-end-width" */
-  void set borderEndWidth(String value) {
+  set borderEndWidth(String value) {
     setProperty('border-end-width', value, '');
   }
 
@@ -5407,7 +5407,7 @@
     getPropertyValue('border-fit');
 
   /** Sets the value of "border-fit" */
-  void set borderFit(String value) {
+  set borderFit(String value) {
     setProperty('border-fit', value, '');
   }
 
@@ -5416,7 +5416,7 @@
     getPropertyValue('border-horizontal-spacing');
 
   /** Sets the value of "border-horizontal-spacing" */
-  void set borderHorizontalSpacing(String value) {
+  set borderHorizontalSpacing(String value) {
     setProperty('border-horizontal-spacing', value, '');
   }
 
@@ -5425,7 +5425,7 @@
     getPropertyValue('border-image');
 
   /** Sets the value of "border-image" */
-  void set borderImage(String value) {
+  set borderImage(String value) {
     setProperty('border-image', value, '');
   }
 
@@ -5434,7 +5434,7 @@
     getPropertyValue('border-image-outset');
 
   /** Sets the value of "border-image-outset" */
-  void set borderImageOutset(String value) {
+  set borderImageOutset(String value) {
     setProperty('border-image-outset', value, '');
   }
 
@@ -5443,7 +5443,7 @@
     getPropertyValue('border-image-repeat');
 
   /** Sets the value of "border-image-repeat" */
-  void set borderImageRepeat(String value) {
+  set borderImageRepeat(String value) {
     setProperty('border-image-repeat', value, '');
   }
 
@@ -5452,7 +5452,7 @@
     getPropertyValue('border-image-slice');
 
   /** Sets the value of "border-image-slice" */
-  void set borderImageSlice(String value) {
+  set borderImageSlice(String value) {
     setProperty('border-image-slice', value, '');
   }
 
@@ -5461,7 +5461,7 @@
     getPropertyValue('border-image-source');
 
   /** Sets the value of "border-image-source" */
-  void set borderImageSource(String value) {
+  set borderImageSource(String value) {
     setProperty('border-image-source', value, '');
   }
 
@@ -5470,7 +5470,7 @@
     getPropertyValue('border-image-width');
 
   /** Sets the value of "border-image-width" */
-  void set borderImageWidth(String value) {
+  set borderImageWidth(String value) {
     setProperty('border-image-width', value, '');
   }
 
@@ -5479,7 +5479,7 @@
     getPropertyValue('border-left');
 
   /** Sets the value of "border-left" */
-  void set borderLeft(String value) {
+  set borderLeft(String value) {
     setProperty('border-left', value, '');
   }
 
@@ -5488,7 +5488,7 @@
     getPropertyValue('border-left-color');
 
   /** Sets the value of "border-left-color" */
-  void set borderLeftColor(String value) {
+  set borderLeftColor(String value) {
     setProperty('border-left-color', value, '');
   }
 
@@ -5497,7 +5497,7 @@
     getPropertyValue('border-left-style');
 
   /** Sets the value of "border-left-style" */
-  void set borderLeftStyle(String value) {
+  set borderLeftStyle(String value) {
     setProperty('border-left-style', value, '');
   }
 
@@ -5506,7 +5506,7 @@
     getPropertyValue('border-left-width');
 
   /** Sets the value of "border-left-width" */
-  void set borderLeftWidth(String value) {
+  set borderLeftWidth(String value) {
     setProperty('border-left-width', value, '');
   }
 
@@ -5515,7 +5515,7 @@
     getPropertyValue('border-radius');
 
   /** Sets the value of "border-radius" */
-  void set borderRadius(String value) {
+  set borderRadius(String value) {
     setProperty('border-radius', value, '');
   }
 
@@ -5524,7 +5524,7 @@
     getPropertyValue('border-right');
 
   /** Sets the value of "border-right" */
-  void set borderRight(String value) {
+  set borderRight(String value) {
     setProperty('border-right', value, '');
   }
 
@@ -5533,7 +5533,7 @@
     getPropertyValue('border-right-color');
 
   /** Sets the value of "border-right-color" */
-  void set borderRightColor(String value) {
+  set borderRightColor(String value) {
     setProperty('border-right-color', value, '');
   }
 
@@ -5542,7 +5542,7 @@
     getPropertyValue('border-right-style');
 
   /** Sets the value of "border-right-style" */
-  void set borderRightStyle(String value) {
+  set borderRightStyle(String value) {
     setProperty('border-right-style', value, '');
   }
 
@@ -5551,7 +5551,7 @@
     getPropertyValue('border-right-width');
 
   /** Sets the value of "border-right-width" */
-  void set borderRightWidth(String value) {
+  set borderRightWidth(String value) {
     setProperty('border-right-width', value, '');
   }
 
@@ -5560,7 +5560,7 @@
     getPropertyValue('border-spacing');
 
   /** Sets the value of "border-spacing" */
-  void set borderSpacing(String value) {
+  set borderSpacing(String value) {
     setProperty('border-spacing', value, '');
   }
 
@@ -5569,7 +5569,7 @@
     getPropertyValue('border-start');
 
   /** Sets the value of "border-start" */
-  void set borderStart(String value) {
+  set borderStart(String value) {
     setProperty('border-start', value, '');
   }
 
@@ -5578,7 +5578,7 @@
     getPropertyValue('border-start-color');
 
   /** Sets the value of "border-start-color" */
-  void set borderStartColor(String value) {
+  set borderStartColor(String value) {
     setProperty('border-start-color', value, '');
   }
 
@@ -5587,7 +5587,7 @@
     getPropertyValue('border-start-style');
 
   /** Sets the value of "border-start-style" */
-  void set borderStartStyle(String value) {
+  set borderStartStyle(String value) {
     setProperty('border-start-style', value, '');
   }
 
@@ -5596,7 +5596,7 @@
     getPropertyValue('border-start-width');
 
   /** Sets the value of "border-start-width" */
-  void set borderStartWidth(String value) {
+  set borderStartWidth(String value) {
     setProperty('border-start-width', value, '');
   }
 
@@ -5605,7 +5605,7 @@
     getPropertyValue('border-style');
 
   /** Sets the value of "border-style" */
-  void set borderStyle(String value) {
+  set borderStyle(String value) {
     setProperty('border-style', value, '');
   }
 
@@ -5614,7 +5614,7 @@
     getPropertyValue('border-top');
 
   /** Sets the value of "border-top" */
-  void set borderTop(String value) {
+  set borderTop(String value) {
     setProperty('border-top', value, '');
   }
 
@@ -5623,7 +5623,7 @@
     getPropertyValue('border-top-color');
 
   /** Sets the value of "border-top-color" */
-  void set borderTopColor(String value) {
+  set borderTopColor(String value) {
     setProperty('border-top-color', value, '');
   }
 
@@ -5632,7 +5632,7 @@
     getPropertyValue('border-top-left-radius');
 
   /** Sets the value of "border-top-left-radius" */
-  void set borderTopLeftRadius(String value) {
+  set borderTopLeftRadius(String value) {
     setProperty('border-top-left-radius', value, '');
   }
 
@@ -5641,7 +5641,7 @@
     getPropertyValue('border-top-right-radius');
 
   /** Sets the value of "border-top-right-radius" */
-  void set borderTopRightRadius(String value) {
+  set borderTopRightRadius(String value) {
     setProperty('border-top-right-radius', value, '');
   }
 
@@ -5650,7 +5650,7 @@
     getPropertyValue('border-top-style');
 
   /** Sets the value of "border-top-style" */
-  void set borderTopStyle(String value) {
+  set borderTopStyle(String value) {
     setProperty('border-top-style', value, '');
   }
 
@@ -5659,7 +5659,7 @@
     getPropertyValue('border-top-width');
 
   /** Sets the value of "border-top-width" */
-  void set borderTopWidth(String value) {
+  set borderTopWidth(String value) {
     setProperty('border-top-width', value, '');
   }
 
@@ -5668,7 +5668,7 @@
     getPropertyValue('border-vertical-spacing');
 
   /** Sets the value of "border-vertical-spacing" */
-  void set borderVerticalSpacing(String value) {
+  set borderVerticalSpacing(String value) {
     setProperty('border-vertical-spacing', value, '');
   }
 
@@ -5677,7 +5677,7 @@
     getPropertyValue('border-width');
 
   /** Sets the value of "border-width" */
-  void set borderWidth(String value) {
+  set borderWidth(String value) {
     setProperty('border-width', value, '');
   }
 
@@ -5686,7 +5686,7 @@
     getPropertyValue('bottom');
 
   /** Sets the value of "bottom" */
-  void set bottom(String value) {
+  set bottom(String value) {
     setProperty('bottom', value, '');
   }
 
@@ -5695,7 +5695,7 @@
     getPropertyValue('box-align');
 
   /** Sets the value of "box-align" */
-  void set boxAlign(String value) {
+  set boxAlign(String value) {
     setProperty('box-align', value, '');
   }
 
@@ -5704,7 +5704,7 @@
     getPropertyValue('box-decoration-break');
 
   /** Sets the value of "box-decoration-break" */
-  void set boxDecorationBreak(String value) {
+  set boxDecorationBreak(String value) {
     setProperty('box-decoration-break', value, '');
   }
 
@@ -5713,7 +5713,7 @@
     getPropertyValue('box-direction');
 
   /** Sets the value of "box-direction" */
-  void set boxDirection(String value) {
+  set boxDirection(String value) {
     setProperty('box-direction', value, '');
   }
 
@@ -5722,7 +5722,7 @@
     getPropertyValue('box-flex');
 
   /** Sets the value of "box-flex" */
-  void set boxFlex(String value) {
+  set boxFlex(String value) {
     setProperty('box-flex', value, '');
   }
 
@@ -5731,7 +5731,7 @@
     getPropertyValue('box-flex-group');
 
   /** Sets the value of "box-flex-group" */
-  void set boxFlexGroup(String value) {
+  set boxFlexGroup(String value) {
     setProperty('box-flex-group', value, '');
   }
 
@@ -5740,7 +5740,7 @@
     getPropertyValue('box-lines');
 
   /** Sets the value of "box-lines" */
-  void set boxLines(String value) {
+  set boxLines(String value) {
     setProperty('box-lines', value, '');
   }
 
@@ -5749,7 +5749,7 @@
     getPropertyValue('box-ordinal-group');
 
   /** Sets the value of "box-ordinal-group" */
-  void set boxOrdinalGroup(String value) {
+  set boxOrdinalGroup(String value) {
     setProperty('box-ordinal-group', value, '');
   }
 
@@ -5758,7 +5758,7 @@
     getPropertyValue('box-orient');
 
   /** Sets the value of "box-orient" */
-  void set boxOrient(String value) {
+  set boxOrient(String value) {
     setProperty('box-orient', value, '');
   }
 
@@ -5767,7 +5767,7 @@
     getPropertyValue('box-pack');
 
   /** Sets the value of "box-pack" */
-  void set boxPack(String value) {
+  set boxPack(String value) {
     setProperty('box-pack', value, '');
   }
 
@@ -5776,7 +5776,7 @@
     getPropertyValue('box-reflect');
 
   /** Sets the value of "box-reflect" */
-  void set boxReflect(String value) {
+  set boxReflect(String value) {
     setProperty('box-reflect', value, '');
   }
 
@@ -5785,7 +5785,7 @@
     getPropertyValue('box-shadow');
 
   /** Sets the value of "box-shadow" */
-  void set boxShadow(String value) {
+  set boxShadow(String value) {
     setProperty('box-shadow', value, '');
   }
 
@@ -5794,7 +5794,7 @@
     getPropertyValue('box-sizing');
 
   /** Sets the value of "box-sizing" */
-  void set boxSizing(String value) {
+  set boxSizing(String value) {
     setProperty('box-sizing', value, '');
   }
 
@@ -5803,7 +5803,7 @@
     getPropertyValue('caption-side');
 
   /** Sets the value of "caption-side" */
-  void set captionSide(String value) {
+  set captionSide(String value) {
     setProperty('caption-side', value, '');
   }
 
@@ -5812,7 +5812,7 @@
     getPropertyValue('clear');
 
   /** Sets the value of "clear" */
-  void set clear(String value) {
+  set clear(String value) {
     setProperty('clear', value, '');
   }
 
@@ -5821,7 +5821,7 @@
     getPropertyValue('clip');
 
   /** Sets the value of "clip" */
-  void set clip(String value) {
+  set clip(String value) {
     setProperty('clip', value, '');
   }
 
@@ -5830,7 +5830,7 @@
     getPropertyValue('clip-path');
 
   /** Sets the value of "clip-path" */
-  void set clipPath(String value) {
+  set clipPath(String value) {
     setProperty('clip-path', value, '');
   }
 
@@ -5839,7 +5839,7 @@
     getPropertyValue('color');
 
   /** Sets the value of "color" */
-  void set color(String value) {
+  set color(String value) {
     setProperty('color', value, '');
   }
 
@@ -5848,7 +5848,7 @@
     getPropertyValue('column-break-after');
 
   /** Sets the value of "column-break-after" */
-  void set columnBreakAfter(String value) {
+  set columnBreakAfter(String value) {
     setProperty('column-break-after', value, '');
   }
 
@@ -5857,7 +5857,7 @@
     getPropertyValue('column-break-before');
 
   /** Sets the value of "column-break-before" */
-  void set columnBreakBefore(String value) {
+  set columnBreakBefore(String value) {
     setProperty('column-break-before', value, '');
   }
 
@@ -5866,7 +5866,7 @@
     getPropertyValue('column-break-inside');
 
   /** Sets the value of "column-break-inside" */
-  void set columnBreakInside(String value) {
+  set columnBreakInside(String value) {
     setProperty('column-break-inside', value, '');
   }
 
@@ -5875,7 +5875,7 @@
     getPropertyValue('column-count');
 
   /** Sets the value of "column-count" */
-  void set columnCount(String value) {
+  set columnCount(String value) {
     setProperty('column-count', value, '');
   }
 
@@ -5884,7 +5884,7 @@
     getPropertyValue('column-fill');
 
   /** Sets the value of "column-fill" */
-  void set columnFill(String value) {
+  set columnFill(String value) {
     setProperty('column-fill', value, '');
   }
 
@@ -5893,7 +5893,7 @@
     getPropertyValue('column-gap');
 
   /** Sets the value of "column-gap" */
-  void set columnGap(String value) {
+  set columnGap(String value) {
     setProperty('column-gap', value, '');
   }
 
@@ -5902,7 +5902,7 @@
     getPropertyValue('column-rule');
 
   /** Sets the value of "column-rule" */
-  void set columnRule(String value) {
+  set columnRule(String value) {
     setProperty('column-rule', value, '');
   }
 
@@ -5911,7 +5911,7 @@
     getPropertyValue('column-rule-color');
 
   /** Sets the value of "column-rule-color" */
-  void set columnRuleColor(String value) {
+  set columnRuleColor(String value) {
     setProperty('column-rule-color', value, '');
   }
 
@@ -5920,7 +5920,7 @@
     getPropertyValue('column-rule-style');
 
   /** Sets the value of "column-rule-style" */
-  void set columnRuleStyle(String value) {
+  set columnRuleStyle(String value) {
     setProperty('column-rule-style', value, '');
   }
 
@@ -5929,7 +5929,7 @@
     getPropertyValue('column-rule-width');
 
   /** Sets the value of "column-rule-width" */
-  void set columnRuleWidth(String value) {
+  set columnRuleWidth(String value) {
     setProperty('column-rule-width', value, '');
   }
 
@@ -5938,7 +5938,7 @@
     getPropertyValue('column-span');
 
   /** Sets the value of "column-span" */
-  void set columnSpan(String value) {
+  set columnSpan(String value) {
     setProperty('column-span', value, '');
   }
 
@@ -5947,7 +5947,7 @@
     getPropertyValue('column-width');
 
   /** Sets the value of "column-width" */
-  void set columnWidth(String value) {
+  set columnWidth(String value) {
     setProperty('column-width', value, '');
   }
 
@@ -5956,7 +5956,7 @@
     getPropertyValue('columns');
 
   /** Sets the value of "columns" */
-  void set columns(String value) {
+  set columns(String value) {
     setProperty('columns', value, '');
   }
 
@@ -5965,7 +5965,7 @@
     getPropertyValue('content');
 
   /** Sets the value of "content" */
-  void set content(String value) {
+  set content(String value) {
     setProperty('content', value, '');
   }
 
@@ -5974,7 +5974,7 @@
     getPropertyValue('counter-increment');
 
   /** Sets the value of "counter-increment" */
-  void set counterIncrement(String value) {
+  set counterIncrement(String value) {
     setProperty('counter-increment', value, '');
   }
 
@@ -5983,7 +5983,7 @@
     getPropertyValue('counter-reset');
 
   /** Sets the value of "counter-reset" */
-  void set counterReset(String value) {
+  set counterReset(String value) {
     setProperty('counter-reset', value, '');
   }
 
@@ -5992,7 +5992,7 @@
     getPropertyValue('cursor');
 
   /** Sets the value of "cursor" */
-  void set cursor(String value) {
+  set cursor(String value) {
     setProperty('cursor', value, '');
   }
 
@@ -6001,7 +6001,7 @@
     getPropertyValue('direction');
 
   /** Sets the value of "direction" */
-  void set direction(String value) {
+  set direction(String value) {
     setProperty('direction', value, '');
   }
 
@@ -6010,7 +6010,7 @@
     getPropertyValue('display');
 
   /** Sets the value of "display" */
-  void set display(String value) {
+  set display(String value) {
     setProperty('display', value, '');
   }
 
@@ -6019,7 +6019,7 @@
     getPropertyValue('empty-cells');
 
   /** Sets the value of "empty-cells" */
-  void set emptyCells(String value) {
+  set emptyCells(String value) {
     setProperty('empty-cells', value, '');
   }
 
@@ -6028,7 +6028,7 @@
     getPropertyValue('filter');
 
   /** Sets the value of "filter" */
-  void set filter(String value) {
+  set filter(String value) {
     setProperty('filter', value, '');
   }
 
@@ -6037,7 +6037,7 @@
     getPropertyValue('flex');
 
   /** Sets the value of "flex" */
-  void set flex(String value) {
+  set flex(String value) {
     setProperty('flex', value, '');
   }
 
@@ -6046,7 +6046,7 @@
     getPropertyValue('flex-basis');
 
   /** Sets the value of "flex-basis" */
-  void set flexBasis(String value) {
+  set flexBasis(String value) {
     setProperty('flex-basis', value, '');
   }
 
@@ -6055,7 +6055,7 @@
     getPropertyValue('flex-direction');
 
   /** Sets the value of "flex-direction" */
-  void set flexDirection(String value) {
+  set flexDirection(String value) {
     setProperty('flex-direction', value, '');
   }
 
@@ -6064,7 +6064,7 @@
     getPropertyValue('flex-flow');
 
   /** Sets the value of "flex-flow" */
-  void set flexFlow(String value) {
+  set flexFlow(String value) {
     setProperty('flex-flow', value, '');
   }
 
@@ -6073,7 +6073,7 @@
     getPropertyValue('flex-grow');
 
   /** Sets the value of "flex-grow" */
-  void set flexGrow(String value) {
+  set flexGrow(String value) {
     setProperty('flex-grow', value, '');
   }
 
@@ -6082,7 +6082,7 @@
     getPropertyValue('flex-shrink');
 
   /** Sets the value of "flex-shrink" */
-  void set flexShrink(String value) {
+  set flexShrink(String value) {
     setProperty('flex-shrink', value, '');
   }
 
@@ -6091,7 +6091,7 @@
     getPropertyValue('flex-wrap');
 
   /** Sets the value of "flex-wrap" */
-  void set flexWrap(String value) {
+  set flexWrap(String value) {
     setProperty('flex-wrap', value, '');
   }
 
@@ -6100,7 +6100,7 @@
     getPropertyValue('float');
 
   /** Sets the value of "float" */
-  void set float(String value) {
+  set float(String value) {
     setProperty('float', value, '');
   }
 
@@ -6109,7 +6109,7 @@
     getPropertyValue('font');
 
   /** Sets the value of "font" */
-  void set font(String value) {
+  set font(String value) {
     setProperty('font', value, '');
   }
 
@@ -6118,7 +6118,7 @@
     getPropertyValue('font-family');
 
   /** Sets the value of "font-family" */
-  void set fontFamily(String value) {
+  set fontFamily(String value) {
     setProperty('font-family', value, '');
   }
 
@@ -6127,7 +6127,7 @@
     getPropertyValue('font-feature-settings');
 
   /** Sets the value of "font-feature-settings" */
-  void set fontFeatureSettings(String value) {
+  set fontFeatureSettings(String value) {
     setProperty('font-feature-settings', value, '');
   }
 
@@ -6136,7 +6136,7 @@
     getPropertyValue('font-kerning');
 
   /** Sets the value of "font-kerning" */
-  void set fontKerning(String value) {
+  set fontKerning(String value) {
     setProperty('font-kerning', value, '');
   }
 
@@ -6145,7 +6145,7 @@
     getPropertyValue('font-size');
 
   /** Sets the value of "font-size" */
-  void set fontSize(String value) {
+  set fontSize(String value) {
     setProperty('font-size', value, '');
   }
 
@@ -6154,7 +6154,7 @@
     getPropertyValue('font-size-delta');
 
   /** Sets the value of "font-size-delta" */
-  void set fontSizeDelta(String value) {
+  set fontSizeDelta(String value) {
     setProperty('font-size-delta', value, '');
   }
 
@@ -6163,7 +6163,7 @@
     getPropertyValue('font-smoothing');
 
   /** Sets the value of "font-smoothing" */
-  void set fontSmoothing(String value) {
+  set fontSmoothing(String value) {
     setProperty('font-smoothing', value, '');
   }
 
@@ -6172,7 +6172,7 @@
     getPropertyValue('font-stretch');
 
   /** Sets the value of "font-stretch" */
-  void set fontStretch(String value) {
+  set fontStretch(String value) {
     setProperty('font-stretch', value, '');
   }
 
@@ -6181,7 +6181,7 @@
     getPropertyValue('font-style');
 
   /** Sets the value of "font-style" */
-  void set fontStyle(String value) {
+  set fontStyle(String value) {
     setProperty('font-style', value, '');
   }
 
@@ -6190,7 +6190,7 @@
     getPropertyValue('font-variant');
 
   /** Sets the value of "font-variant" */
-  void set fontVariant(String value) {
+  set fontVariant(String value) {
     setProperty('font-variant', value, '');
   }
 
@@ -6199,7 +6199,7 @@
     getPropertyValue('font-variant-ligatures');
 
   /** Sets the value of "font-variant-ligatures" */
-  void set fontVariantLigatures(String value) {
+  set fontVariantLigatures(String value) {
     setProperty('font-variant-ligatures', value, '');
   }
 
@@ -6208,7 +6208,7 @@
     getPropertyValue('font-weight');
 
   /** Sets the value of "font-weight" */
-  void set fontWeight(String value) {
+  set fontWeight(String value) {
     setProperty('font-weight', value, '');
   }
 
@@ -6217,7 +6217,7 @@
     getPropertyValue('grid');
 
   /** Sets the value of "grid" */
-  void set grid(String value) {
+  set grid(String value) {
     setProperty('grid', value, '');
   }
 
@@ -6226,7 +6226,7 @@
     getPropertyValue('grid-area');
 
   /** Sets the value of "grid-area" */
-  void set gridArea(String value) {
+  set gridArea(String value) {
     setProperty('grid-area', value, '');
   }
 
@@ -6235,7 +6235,7 @@
     getPropertyValue('grid-auto-columns');
 
   /** Sets the value of "grid-auto-columns" */
-  void set gridAutoColumns(String value) {
+  set gridAutoColumns(String value) {
     setProperty('grid-auto-columns', value, '');
   }
 
@@ -6244,7 +6244,7 @@
     getPropertyValue('grid-auto-flow');
 
   /** Sets the value of "grid-auto-flow" */
-  void set gridAutoFlow(String value) {
+  set gridAutoFlow(String value) {
     setProperty('grid-auto-flow', value, '');
   }
 
@@ -6253,7 +6253,7 @@
     getPropertyValue('grid-auto-rows');
 
   /** Sets the value of "grid-auto-rows" */
-  void set gridAutoRows(String value) {
+  set gridAutoRows(String value) {
     setProperty('grid-auto-rows', value, '');
   }
 
@@ -6262,7 +6262,7 @@
     getPropertyValue('grid-column');
 
   /** Sets the value of "grid-column" */
-  void set gridColumn(String value) {
+  set gridColumn(String value) {
     setProperty('grid-column', value, '');
   }
 
@@ -6271,7 +6271,7 @@
     getPropertyValue('grid-column-end');
 
   /** Sets the value of "grid-column-end" */
-  void set gridColumnEnd(String value) {
+  set gridColumnEnd(String value) {
     setProperty('grid-column-end', value, '');
   }
 
@@ -6280,7 +6280,7 @@
     getPropertyValue('grid-column-start');
 
   /** Sets the value of "grid-column-start" */
-  void set gridColumnStart(String value) {
+  set gridColumnStart(String value) {
     setProperty('grid-column-start', value, '');
   }
 
@@ -6289,7 +6289,7 @@
     getPropertyValue('grid-row');
 
   /** Sets the value of "grid-row" */
-  void set gridRow(String value) {
+  set gridRow(String value) {
     setProperty('grid-row', value, '');
   }
 
@@ -6298,7 +6298,7 @@
     getPropertyValue('grid-row-end');
 
   /** Sets the value of "grid-row-end" */
-  void set gridRowEnd(String value) {
+  set gridRowEnd(String value) {
     setProperty('grid-row-end', value, '');
   }
 
@@ -6307,7 +6307,7 @@
     getPropertyValue('grid-row-start');
 
   /** Sets the value of "grid-row-start" */
-  void set gridRowStart(String value) {
+  set gridRowStart(String value) {
     setProperty('grid-row-start', value, '');
   }
 
@@ -6316,7 +6316,7 @@
     getPropertyValue('grid-template');
 
   /** Sets the value of "grid-template" */
-  void set gridTemplate(String value) {
+  set gridTemplate(String value) {
     setProperty('grid-template', value, '');
   }
 
@@ -6325,7 +6325,7 @@
     getPropertyValue('grid-template-areas');
 
   /** Sets the value of "grid-template-areas" */
-  void set gridTemplateAreas(String value) {
+  set gridTemplateAreas(String value) {
     setProperty('grid-template-areas', value, '');
   }
 
@@ -6334,7 +6334,7 @@
     getPropertyValue('grid-template-columns');
 
   /** Sets the value of "grid-template-columns" */
-  void set gridTemplateColumns(String value) {
+  set gridTemplateColumns(String value) {
     setProperty('grid-template-columns', value, '');
   }
 
@@ -6343,7 +6343,7 @@
     getPropertyValue('grid-template-rows');
 
   /** Sets the value of "grid-template-rows" */
-  void set gridTemplateRows(String value) {
+  set gridTemplateRows(String value) {
     setProperty('grid-template-rows', value, '');
   }
 
@@ -6352,7 +6352,7 @@
     getPropertyValue('height');
 
   /** Sets the value of "height" */
-  void set height(String value) {
+  set height(String value) {
     setProperty('height', value, '');
   }
 
@@ -6361,7 +6361,7 @@
     getPropertyValue('highlight');
 
   /** Sets the value of "highlight" */
-  void set highlight(String value) {
+  set highlight(String value) {
     setProperty('highlight', value, '');
   }
 
@@ -6370,7 +6370,7 @@
     getPropertyValue('hyphenate-character');
 
   /** Sets the value of "hyphenate-character" */
-  void set hyphenateCharacter(String value) {
+  set hyphenateCharacter(String value) {
     setProperty('hyphenate-character', value, '');
   }
 
@@ -6379,7 +6379,7 @@
     getPropertyValue('image-rendering');
 
   /** Sets the value of "image-rendering" */
-  void set imageRendering(String value) {
+  set imageRendering(String value) {
     setProperty('image-rendering', value, '');
   }
 
@@ -6388,7 +6388,7 @@
     getPropertyValue('isolation');
 
   /** Sets the value of "isolation" */
-  void set isolation(String value) {
+  set isolation(String value) {
     setProperty('isolation', value, '');
   }
 
@@ -6397,7 +6397,7 @@
     getPropertyValue('justify-content');
 
   /** Sets the value of "justify-content" */
-  void set justifyContent(String value) {
+  set justifyContent(String value) {
     setProperty('justify-content', value, '');
   }
 
@@ -6406,7 +6406,7 @@
     getPropertyValue('justify-self');
 
   /** Sets the value of "justify-self" */
-  void set justifySelf(String value) {
+  set justifySelf(String value) {
     setProperty('justify-self', value, '');
   }
 
@@ -6415,7 +6415,7 @@
     getPropertyValue('left');
 
   /** Sets the value of "left" */
-  void set left(String value) {
+  set left(String value) {
     setProperty('left', value, '');
   }
 
@@ -6424,7 +6424,7 @@
     getPropertyValue('letter-spacing');
 
   /** Sets the value of "letter-spacing" */
-  void set letterSpacing(String value) {
+  set letterSpacing(String value) {
     setProperty('letter-spacing', value, '');
   }
 
@@ -6433,7 +6433,7 @@
     getPropertyValue('line-box-contain');
 
   /** Sets the value of "line-box-contain" */
-  void set lineBoxContain(String value) {
+  set lineBoxContain(String value) {
     setProperty('line-box-contain', value, '');
   }
 
@@ -6442,7 +6442,7 @@
     getPropertyValue('line-break');
 
   /** Sets the value of "line-break" */
-  void set lineBreak(String value) {
+  set lineBreak(String value) {
     setProperty('line-break', value, '');
   }
 
@@ -6451,7 +6451,7 @@
     getPropertyValue('line-clamp');
 
   /** Sets the value of "line-clamp" */
-  void set lineClamp(String value) {
+  set lineClamp(String value) {
     setProperty('line-clamp', value, '');
   }
 
@@ -6460,7 +6460,7 @@
     getPropertyValue('line-height');
 
   /** Sets the value of "line-height" */
-  void set lineHeight(String value) {
+  set lineHeight(String value) {
     setProperty('line-height', value, '');
   }
 
@@ -6469,7 +6469,7 @@
     getPropertyValue('list-style');
 
   /** Sets the value of "list-style" */
-  void set listStyle(String value) {
+  set listStyle(String value) {
     setProperty('list-style', value, '');
   }
 
@@ -6478,7 +6478,7 @@
     getPropertyValue('list-style-image');
 
   /** Sets the value of "list-style-image" */
-  void set listStyleImage(String value) {
+  set listStyleImage(String value) {
     setProperty('list-style-image', value, '');
   }
 
@@ -6487,7 +6487,7 @@
     getPropertyValue('list-style-position');
 
   /** Sets the value of "list-style-position" */
-  void set listStylePosition(String value) {
+  set listStylePosition(String value) {
     setProperty('list-style-position', value, '');
   }
 
@@ -6496,7 +6496,7 @@
     getPropertyValue('list-style-type');
 
   /** Sets the value of "list-style-type" */
-  void set listStyleType(String value) {
+  set listStyleType(String value) {
     setProperty('list-style-type', value, '');
   }
 
@@ -6505,7 +6505,7 @@
     getPropertyValue('locale');
 
   /** Sets the value of "locale" */
-  void set locale(String value) {
+  set locale(String value) {
     setProperty('locale', value, '');
   }
 
@@ -6514,7 +6514,7 @@
     getPropertyValue('logical-height');
 
   /** Sets the value of "logical-height" */
-  void set logicalHeight(String value) {
+  set logicalHeight(String value) {
     setProperty('logical-height', value, '');
   }
 
@@ -6523,7 +6523,7 @@
     getPropertyValue('logical-width');
 
   /** Sets the value of "logical-width" */
-  void set logicalWidth(String value) {
+  set logicalWidth(String value) {
     setProperty('logical-width', value, '');
   }
 
@@ -6532,7 +6532,7 @@
     getPropertyValue('margin');
 
   /** Sets the value of "margin" */
-  void set margin(String value) {
+  set margin(String value) {
     setProperty('margin', value, '');
   }
 
@@ -6541,7 +6541,7 @@
     getPropertyValue('margin-after');
 
   /** Sets the value of "margin-after" */
-  void set marginAfter(String value) {
+  set marginAfter(String value) {
     setProperty('margin-after', value, '');
   }
 
@@ -6550,7 +6550,7 @@
     getPropertyValue('margin-after-collapse');
 
   /** Sets the value of "margin-after-collapse" */
-  void set marginAfterCollapse(String value) {
+  set marginAfterCollapse(String value) {
     setProperty('margin-after-collapse', value, '');
   }
 
@@ -6559,7 +6559,7 @@
     getPropertyValue('margin-before');
 
   /** Sets the value of "margin-before" */
-  void set marginBefore(String value) {
+  set marginBefore(String value) {
     setProperty('margin-before', value, '');
   }
 
@@ -6568,7 +6568,7 @@
     getPropertyValue('margin-before-collapse');
 
   /** Sets the value of "margin-before-collapse" */
-  void set marginBeforeCollapse(String value) {
+  set marginBeforeCollapse(String value) {
     setProperty('margin-before-collapse', value, '');
   }
 
@@ -6577,7 +6577,7 @@
     getPropertyValue('margin-bottom');
 
   /** Sets the value of "margin-bottom" */
-  void set marginBottom(String value) {
+  set marginBottom(String value) {
     setProperty('margin-bottom', value, '');
   }
 
@@ -6586,7 +6586,7 @@
     getPropertyValue('margin-bottom-collapse');
 
   /** Sets the value of "margin-bottom-collapse" */
-  void set marginBottomCollapse(String value) {
+  set marginBottomCollapse(String value) {
     setProperty('margin-bottom-collapse', value, '');
   }
 
@@ -6595,7 +6595,7 @@
     getPropertyValue('margin-collapse');
 
   /** Sets the value of "margin-collapse" */
-  void set marginCollapse(String value) {
+  set marginCollapse(String value) {
     setProperty('margin-collapse', value, '');
   }
 
@@ -6604,7 +6604,7 @@
     getPropertyValue('margin-end');
 
   /** Sets the value of "margin-end" */
-  void set marginEnd(String value) {
+  set marginEnd(String value) {
     setProperty('margin-end', value, '');
   }
 
@@ -6613,7 +6613,7 @@
     getPropertyValue('margin-left');
 
   /** Sets the value of "margin-left" */
-  void set marginLeft(String value) {
+  set marginLeft(String value) {
     setProperty('margin-left', value, '');
   }
 
@@ -6622,7 +6622,7 @@
     getPropertyValue('margin-right');
 
   /** Sets the value of "margin-right" */
-  void set marginRight(String value) {
+  set marginRight(String value) {
     setProperty('margin-right', value, '');
   }
 
@@ -6631,7 +6631,7 @@
     getPropertyValue('margin-start');
 
   /** Sets the value of "margin-start" */
-  void set marginStart(String value) {
+  set marginStart(String value) {
     setProperty('margin-start', value, '');
   }
 
@@ -6640,7 +6640,7 @@
     getPropertyValue('margin-top');
 
   /** Sets the value of "margin-top" */
-  void set marginTop(String value) {
+  set marginTop(String value) {
     setProperty('margin-top', value, '');
   }
 
@@ -6649,7 +6649,7 @@
     getPropertyValue('margin-top-collapse');
 
   /** Sets the value of "margin-top-collapse" */
-  void set marginTopCollapse(String value) {
+  set marginTopCollapse(String value) {
     setProperty('margin-top-collapse', value, '');
   }
 
@@ -6658,7 +6658,7 @@
     getPropertyValue('mask');
 
   /** Sets the value of "mask" */
-  void set mask(String value) {
+  set mask(String value) {
     setProperty('mask', value, '');
   }
 
@@ -6667,7 +6667,7 @@
     getPropertyValue('mask-box-image');
 
   /** Sets the value of "mask-box-image" */
-  void set maskBoxImage(String value) {
+  set maskBoxImage(String value) {
     setProperty('mask-box-image', value, '');
   }
 
@@ -6676,7 +6676,7 @@
     getPropertyValue('mask-box-image-outset');
 
   /** Sets the value of "mask-box-image-outset" */
-  void set maskBoxImageOutset(String value) {
+  set maskBoxImageOutset(String value) {
     setProperty('mask-box-image-outset', value, '');
   }
 
@@ -6685,7 +6685,7 @@
     getPropertyValue('mask-box-image-repeat');
 
   /** Sets the value of "mask-box-image-repeat" */
-  void set maskBoxImageRepeat(String value) {
+  set maskBoxImageRepeat(String value) {
     setProperty('mask-box-image-repeat', value, '');
   }
 
@@ -6694,7 +6694,7 @@
     getPropertyValue('mask-box-image-slice');
 
   /** Sets the value of "mask-box-image-slice" */
-  void set maskBoxImageSlice(String value) {
+  set maskBoxImageSlice(String value) {
     setProperty('mask-box-image-slice', value, '');
   }
 
@@ -6703,7 +6703,7 @@
     getPropertyValue('mask-box-image-source');
 
   /** Sets the value of "mask-box-image-source" */
-  void set maskBoxImageSource(String value) {
+  set maskBoxImageSource(String value) {
     setProperty('mask-box-image-source', value, '');
   }
 
@@ -6712,7 +6712,7 @@
     getPropertyValue('mask-box-image-width');
 
   /** Sets the value of "mask-box-image-width" */
-  void set maskBoxImageWidth(String value) {
+  set maskBoxImageWidth(String value) {
     setProperty('mask-box-image-width', value, '');
   }
 
@@ -6721,7 +6721,7 @@
     getPropertyValue('mask-clip');
 
   /** Sets the value of "mask-clip" */
-  void set maskClip(String value) {
+  set maskClip(String value) {
     setProperty('mask-clip', value, '');
   }
 
@@ -6730,7 +6730,7 @@
     getPropertyValue('mask-composite');
 
   /** Sets the value of "mask-composite" */
-  void set maskComposite(String value) {
+  set maskComposite(String value) {
     setProperty('mask-composite', value, '');
   }
 
@@ -6739,7 +6739,7 @@
     getPropertyValue('mask-image');
 
   /** Sets the value of "mask-image" */
-  void set maskImage(String value) {
+  set maskImage(String value) {
     setProperty('mask-image', value, '');
   }
 
@@ -6748,7 +6748,7 @@
     getPropertyValue('mask-origin');
 
   /** Sets the value of "mask-origin" */
-  void set maskOrigin(String value) {
+  set maskOrigin(String value) {
     setProperty('mask-origin', value, '');
   }
 
@@ -6757,7 +6757,7 @@
     getPropertyValue('mask-position');
 
   /** Sets the value of "mask-position" */
-  void set maskPosition(String value) {
+  set maskPosition(String value) {
     setProperty('mask-position', value, '');
   }
 
@@ -6766,7 +6766,7 @@
     getPropertyValue('mask-position-x');
 
   /** Sets the value of "mask-position-x" */
-  void set maskPositionX(String value) {
+  set maskPositionX(String value) {
     setProperty('mask-position-x', value, '');
   }
 
@@ -6775,7 +6775,7 @@
     getPropertyValue('mask-position-y');
 
   /** Sets the value of "mask-position-y" */
-  void set maskPositionY(String value) {
+  set maskPositionY(String value) {
     setProperty('mask-position-y', value, '');
   }
 
@@ -6784,7 +6784,7 @@
     getPropertyValue('mask-repeat');
 
   /** Sets the value of "mask-repeat" */
-  void set maskRepeat(String value) {
+  set maskRepeat(String value) {
     setProperty('mask-repeat', value, '');
   }
 
@@ -6793,7 +6793,7 @@
     getPropertyValue('mask-repeat-x');
 
   /** Sets the value of "mask-repeat-x" */
-  void set maskRepeatX(String value) {
+  set maskRepeatX(String value) {
     setProperty('mask-repeat-x', value, '');
   }
 
@@ -6802,7 +6802,7 @@
     getPropertyValue('mask-repeat-y');
 
   /** Sets the value of "mask-repeat-y" */
-  void set maskRepeatY(String value) {
+  set maskRepeatY(String value) {
     setProperty('mask-repeat-y', value, '');
   }
 
@@ -6811,7 +6811,7 @@
     getPropertyValue('mask-size');
 
   /** Sets the value of "mask-size" */
-  void set maskSize(String value) {
+  set maskSize(String value) {
     setProperty('mask-size', value, '');
   }
 
@@ -6820,7 +6820,7 @@
     getPropertyValue('mask-source-type');
 
   /** Sets the value of "mask-source-type" */
-  void set maskSourceType(String value) {
+  set maskSourceType(String value) {
     setProperty('mask-source-type', value, '');
   }
 
@@ -6829,7 +6829,7 @@
     getPropertyValue('max-height');
 
   /** Sets the value of "max-height" */
-  void set maxHeight(String value) {
+  set maxHeight(String value) {
     setProperty('max-height', value, '');
   }
 
@@ -6838,7 +6838,7 @@
     getPropertyValue('max-logical-height');
 
   /** Sets the value of "max-logical-height" */
-  void set maxLogicalHeight(String value) {
+  set maxLogicalHeight(String value) {
     setProperty('max-logical-height', value, '');
   }
 
@@ -6847,7 +6847,7 @@
     getPropertyValue('max-logical-width');
 
   /** Sets the value of "max-logical-width" */
-  void set maxLogicalWidth(String value) {
+  set maxLogicalWidth(String value) {
     setProperty('max-logical-width', value, '');
   }
 
@@ -6856,7 +6856,7 @@
     getPropertyValue('max-width');
 
   /** Sets the value of "max-width" */
-  void set maxWidth(String value) {
+  set maxWidth(String value) {
     setProperty('max-width', value, '');
   }
 
@@ -6865,7 +6865,7 @@
     getPropertyValue('max-zoom');
 
   /** Sets the value of "max-zoom" */
-  void set maxZoom(String value) {
+  set maxZoom(String value) {
     setProperty('max-zoom', value, '');
   }
 
@@ -6874,7 +6874,7 @@
     getPropertyValue('min-height');
 
   /** Sets the value of "min-height" */
-  void set minHeight(String value) {
+  set minHeight(String value) {
     setProperty('min-height', value, '');
   }
 
@@ -6883,7 +6883,7 @@
     getPropertyValue('min-logical-height');
 
   /** Sets the value of "min-logical-height" */
-  void set minLogicalHeight(String value) {
+  set minLogicalHeight(String value) {
     setProperty('min-logical-height', value, '');
   }
 
@@ -6892,7 +6892,7 @@
     getPropertyValue('min-logical-width');
 
   /** Sets the value of "min-logical-width" */
-  void set minLogicalWidth(String value) {
+  set minLogicalWidth(String value) {
     setProperty('min-logical-width', value, '');
   }
 
@@ -6901,7 +6901,7 @@
     getPropertyValue('min-width');
 
   /** Sets the value of "min-width" */
-  void set minWidth(String value) {
+  set minWidth(String value) {
     setProperty('min-width', value, '');
   }
 
@@ -6910,7 +6910,7 @@
     getPropertyValue('min-zoom');
 
   /** Sets the value of "min-zoom" */
-  void set minZoom(String value) {
+  set minZoom(String value) {
     setProperty('min-zoom', value, '');
   }
 
@@ -6919,7 +6919,7 @@
     getPropertyValue('mix-blend-mode');
 
   /** Sets the value of "mix-blend-mode" */
-  void set mixBlendMode(String value) {
+  set mixBlendMode(String value) {
     setProperty('mix-blend-mode', value, '');
   }
 
@@ -6928,7 +6928,7 @@
     getPropertyValue('object-fit');
 
   /** Sets the value of "object-fit" */
-  void set objectFit(String value) {
+  set objectFit(String value) {
     setProperty('object-fit', value, '');
   }
 
@@ -6937,7 +6937,7 @@
     getPropertyValue('object-position');
 
   /** Sets the value of "object-position" */
-  void set objectPosition(String value) {
+  set objectPosition(String value) {
     setProperty('object-position', value, '');
   }
 
@@ -6946,7 +6946,7 @@
     getPropertyValue('opacity');
 
   /** Sets the value of "opacity" */
-  void set opacity(String value) {
+  set opacity(String value) {
     setProperty('opacity', value, '');
   }
 
@@ -6955,7 +6955,7 @@
     getPropertyValue('order');
 
   /** Sets the value of "order" */
-  void set order(String value) {
+  set order(String value) {
     setProperty('order', value, '');
   }
 
@@ -6964,7 +6964,7 @@
     getPropertyValue('orientation');
 
   /** Sets the value of "orientation" */
-  void set orientation(String value) {
+  set orientation(String value) {
     setProperty('orientation', value, '');
   }
 
@@ -6973,7 +6973,7 @@
     getPropertyValue('orphans');
 
   /** Sets the value of "orphans" */
-  void set orphans(String value) {
+  set orphans(String value) {
     setProperty('orphans', value, '');
   }
 
@@ -6982,7 +6982,7 @@
     getPropertyValue('outline');
 
   /** Sets the value of "outline" */
-  void set outline(String value) {
+  set outline(String value) {
     setProperty('outline', value, '');
   }
 
@@ -6991,7 +6991,7 @@
     getPropertyValue('outline-color');
 
   /** Sets the value of "outline-color" */
-  void set outlineColor(String value) {
+  set outlineColor(String value) {
     setProperty('outline-color', value, '');
   }
 
@@ -7000,7 +7000,7 @@
     getPropertyValue('outline-offset');
 
   /** Sets the value of "outline-offset" */
-  void set outlineOffset(String value) {
+  set outlineOffset(String value) {
     setProperty('outline-offset', value, '');
   }
 
@@ -7009,7 +7009,7 @@
     getPropertyValue('outline-style');
 
   /** Sets the value of "outline-style" */
-  void set outlineStyle(String value) {
+  set outlineStyle(String value) {
     setProperty('outline-style', value, '');
   }
 
@@ -7018,7 +7018,7 @@
     getPropertyValue('outline-width');
 
   /** Sets the value of "outline-width" */
-  void set outlineWidth(String value) {
+  set outlineWidth(String value) {
     setProperty('outline-width', value, '');
   }
 
@@ -7027,7 +7027,7 @@
     getPropertyValue('overflow');
 
   /** Sets the value of "overflow" */
-  void set overflow(String value) {
+  set overflow(String value) {
     setProperty('overflow', value, '');
   }
 
@@ -7036,7 +7036,7 @@
     getPropertyValue('overflow-wrap');
 
   /** Sets the value of "overflow-wrap" */
-  void set overflowWrap(String value) {
+  set overflowWrap(String value) {
     setProperty('overflow-wrap', value, '');
   }
 
@@ -7045,7 +7045,7 @@
     getPropertyValue('overflow-x');
 
   /** Sets the value of "overflow-x" */
-  void set overflowX(String value) {
+  set overflowX(String value) {
     setProperty('overflow-x', value, '');
   }
 
@@ -7054,7 +7054,7 @@
     getPropertyValue('overflow-y');
 
   /** Sets the value of "overflow-y" */
-  void set overflowY(String value) {
+  set overflowY(String value) {
     setProperty('overflow-y', value, '');
   }
 
@@ -7063,7 +7063,7 @@
     getPropertyValue('padding');
 
   /** Sets the value of "padding" */
-  void set padding(String value) {
+  set padding(String value) {
     setProperty('padding', value, '');
   }
 
@@ -7072,7 +7072,7 @@
     getPropertyValue('padding-after');
 
   /** Sets the value of "padding-after" */
-  void set paddingAfter(String value) {
+  set paddingAfter(String value) {
     setProperty('padding-after', value, '');
   }
 
@@ -7081,7 +7081,7 @@
     getPropertyValue('padding-before');
 
   /** Sets the value of "padding-before" */
-  void set paddingBefore(String value) {
+  set paddingBefore(String value) {
     setProperty('padding-before', value, '');
   }
 
@@ -7090,7 +7090,7 @@
     getPropertyValue('padding-bottom');
 
   /** Sets the value of "padding-bottom" */
-  void set paddingBottom(String value) {
+  set paddingBottom(String value) {
     setProperty('padding-bottom', value, '');
   }
 
@@ -7099,7 +7099,7 @@
     getPropertyValue('padding-end');
 
   /** Sets the value of "padding-end" */
-  void set paddingEnd(String value) {
+  set paddingEnd(String value) {
     setProperty('padding-end', value, '');
   }
 
@@ -7108,7 +7108,7 @@
     getPropertyValue('padding-left');
 
   /** Sets the value of "padding-left" */
-  void set paddingLeft(String value) {
+  set paddingLeft(String value) {
     setProperty('padding-left', value, '');
   }
 
@@ -7117,7 +7117,7 @@
     getPropertyValue('padding-right');
 
   /** Sets the value of "padding-right" */
-  void set paddingRight(String value) {
+  set paddingRight(String value) {
     setProperty('padding-right', value, '');
   }
 
@@ -7126,7 +7126,7 @@
     getPropertyValue('padding-start');
 
   /** Sets the value of "padding-start" */
-  void set paddingStart(String value) {
+  set paddingStart(String value) {
     setProperty('padding-start', value, '');
   }
 
@@ -7135,7 +7135,7 @@
     getPropertyValue('padding-top');
 
   /** Sets the value of "padding-top" */
-  void set paddingTop(String value) {
+  set paddingTop(String value) {
     setProperty('padding-top', value, '');
   }
 
@@ -7144,7 +7144,7 @@
     getPropertyValue('page');
 
   /** Sets the value of "page" */
-  void set page(String value) {
+  set page(String value) {
     setProperty('page', value, '');
   }
 
@@ -7153,7 +7153,7 @@
     getPropertyValue('page-break-after');
 
   /** Sets the value of "page-break-after" */
-  void set pageBreakAfter(String value) {
+  set pageBreakAfter(String value) {
     setProperty('page-break-after', value, '');
   }
 
@@ -7162,7 +7162,7 @@
     getPropertyValue('page-break-before');
 
   /** Sets the value of "page-break-before" */
-  void set pageBreakBefore(String value) {
+  set pageBreakBefore(String value) {
     setProperty('page-break-before', value, '');
   }
 
@@ -7171,7 +7171,7 @@
     getPropertyValue('page-break-inside');
 
   /** Sets the value of "page-break-inside" */
-  void set pageBreakInside(String value) {
+  set pageBreakInside(String value) {
     setProperty('page-break-inside', value, '');
   }
 
@@ -7180,7 +7180,7 @@
     getPropertyValue('perspective');
 
   /** Sets the value of "perspective" */
-  void set perspective(String value) {
+  set perspective(String value) {
     setProperty('perspective', value, '');
   }
 
@@ -7189,7 +7189,7 @@
     getPropertyValue('perspective-origin');
 
   /** Sets the value of "perspective-origin" */
-  void set perspectiveOrigin(String value) {
+  set perspectiveOrigin(String value) {
     setProperty('perspective-origin', value, '');
   }
 
@@ -7198,7 +7198,7 @@
     getPropertyValue('perspective-origin-x');
 
   /** Sets the value of "perspective-origin-x" */
-  void set perspectiveOriginX(String value) {
+  set perspectiveOriginX(String value) {
     setProperty('perspective-origin-x', value, '');
   }
 
@@ -7207,7 +7207,7 @@
     getPropertyValue('perspective-origin-y');
 
   /** Sets the value of "perspective-origin-y" */
-  void set perspectiveOriginY(String value) {
+  set perspectiveOriginY(String value) {
     setProperty('perspective-origin-y', value, '');
   }
 
@@ -7216,7 +7216,7 @@
     getPropertyValue('pointer-events');
 
   /** Sets the value of "pointer-events" */
-  void set pointerEvents(String value) {
+  set pointerEvents(String value) {
     setProperty('pointer-events', value, '');
   }
 
@@ -7225,7 +7225,7 @@
     getPropertyValue('position');
 
   /** Sets the value of "position" */
-  void set position(String value) {
+  set position(String value) {
     setProperty('position', value, '');
   }
 
@@ -7234,7 +7234,7 @@
     getPropertyValue('print-color-adjust');
 
   /** Sets the value of "print-color-adjust" */
-  void set printColorAdjust(String value) {
+  set printColorAdjust(String value) {
     setProperty('print-color-adjust', value, '');
   }
 
@@ -7243,7 +7243,7 @@
     getPropertyValue('quotes');
 
   /** Sets the value of "quotes" */
-  void set quotes(String value) {
+  set quotes(String value) {
     setProperty('quotes', value, '');
   }
 
@@ -7252,7 +7252,7 @@
     getPropertyValue('resize');
 
   /** Sets the value of "resize" */
-  void set resize(String value) {
+  set resize(String value) {
     setProperty('resize', value, '');
   }
 
@@ -7261,7 +7261,7 @@
     getPropertyValue('right');
 
   /** Sets the value of "right" */
-  void set right(String value) {
+  set right(String value) {
     setProperty('right', value, '');
   }
 
@@ -7270,7 +7270,7 @@
     getPropertyValue('rtl-ordering');
 
   /** Sets the value of "rtl-ordering" */
-  void set rtlOrdering(String value) {
+  set rtlOrdering(String value) {
     setProperty('rtl-ordering', value, '');
   }
 
@@ -7279,7 +7279,7 @@
     getPropertyValue('ruby-position');
 
   /** Sets the value of "ruby-position" */
-  void set rubyPosition(String value) {
+  set rubyPosition(String value) {
     setProperty('ruby-position', value, '');
   }
 
@@ -7288,7 +7288,7 @@
     getPropertyValue('scroll-behavior');
 
   /** Sets the value of "scroll-behavior" */
-  void set scrollBehavior(String value) {
+  set scrollBehavior(String value) {
     setProperty('scroll-behavior', value, '');
   }
 
@@ -7297,7 +7297,7 @@
     getPropertyValue('shape-image-threshold');
 
   /** Sets the value of "shape-image-threshold" */
-  void set shapeImageThreshold(String value) {
+  set shapeImageThreshold(String value) {
     setProperty('shape-image-threshold', value, '');
   }
 
@@ -7306,7 +7306,7 @@
     getPropertyValue('shape-margin');
 
   /** Sets the value of "shape-margin" */
-  void set shapeMargin(String value) {
+  set shapeMargin(String value) {
     setProperty('shape-margin', value, '');
   }
 
@@ -7315,7 +7315,7 @@
     getPropertyValue('shape-outside');
 
   /** Sets the value of "shape-outside" */
-  void set shapeOutside(String value) {
+  set shapeOutside(String value) {
     setProperty('shape-outside', value, '');
   }
 
@@ -7324,7 +7324,7 @@
     getPropertyValue('size');
 
   /** Sets the value of "size" */
-  void set size(String value) {
+  set size(String value) {
     setProperty('size', value, '');
   }
 
@@ -7333,7 +7333,7 @@
     getPropertyValue('speak');
 
   /** Sets the value of "speak" */
-  void set speak(String value) {
+  set speak(String value) {
     setProperty('speak', value, '');
   }
 
@@ -7342,7 +7342,7 @@
     getPropertyValue('src');
 
   /** Sets the value of "src" */
-  void set src(String value) {
+  set src(String value) {
     setProperty('src', value, '');
   }
 
@@ -7351,7 +7351,7 @@
     getPropertyValue('tab-size');
 
   /** Sets the value of "tab-size" */
-  void set tabSize(String value) {
+  set tabSize(String value) {
     setProperty('tab-size', value, '');
   }
 
@@ -7360,7 +7360,7 @@
     getPropertyValue('table-layout');
 
   /** Sets the value of "table-layout" */
-  void set tableLayout(String value) {
+  set tableLayout(String value) {
     setProperty('table-layout', value, '');
   }
 
@@ -7369,7 +7369,7 @@
     getPropertyValue('tap-highlight-color');
 
   /** Sets the value of "tap-highlight-color" */
-  void set tapHighlightColor(String value) {
+  set tapHighlightColor(String value) {
     setProperty('tap-highlight-color', value, '');
   }
 
@@ -7378,7 +7378,7 @@
     getPropertyValue('text-align');
 
   /** Sets the value of "text-align" */
-  void set textAlign(String value) {
+  set textAlign(String value) {
     setProperty('text-align', value, '');
   }
 
@@ -7387,7 +7387,7 @@
     getPropertyValue('text-align-last');
 
   /** Sets the value of "text-align-last" */
-  void set textAlignLast(String value) {
+  set textAlignLast(String value) {
     setProperty('text-align-last', value, '');
   }
 
@@ -7396,7 +7396,7 @@
     getPropertyValue('text-combine');
 
   /** Sets the value of "text-combine" */
-  void set textCombine(String value) {
+  set textCombine(String value) {
     setProperty('text-combine', value, '');
   }
 
@@ -7405,7 +7405,7 @@
     getPropertyValue('text-decoration');
 
   /** Sets the value of "text-decoration" */
-  void set textDecoration(String value) {
+  set textDecoration(String value) {
     setProperty('text-decoration', value, '');
   }
 
@@ -7414,7 +7414,7 @@
     getPropertyValue('text-decoration-color');
 
   /** Sets the value of "text-decoration-color" */
-  void set textDecorationColor(String value) {
+  set textDecorationColor(String value) {
     setProperty('text-decoration-color', value, '');
   }
 
@@ -7423,7 +7423,7 @@
     getPropertyValue('text-decoration-line');
 
   /** Sets the value of "text-decoration-line" */
-  void set textDecorationLine(String value) {
+  set textDecorationLine(String value) {
     setProperty('text-decoration-line', value, '');
   }
 
@@ -7432,7 +7432,7 @@
     getPropertyValue('text-decoration-style');
 
   /** Sets the value of "text-decoration-style" */
-  void set textDecorationStyle(String value) {
+  set textDecorationStyle(String value) {
     setProperty('text-decoration-style', value, '');
   }
 
@@ -7441,7 +7441,7 @@
     getPropertyValue('text-decorations-in-effect');
 
   /** Sets the value of "text-decorations-in-effect" */
-  void set textDecorationsInEffect(String value) {
+  set textDecorationsInEffect(String value) {
     setProperty('text-decorations-in-effect', value, '');
   }
 
@@ -7450,7 +7450,7 @@
     getPropertyValue('text-emphasis');
 
   /** Sets the value of "text-emphasis" */
-  void set textEmphasis(String value) {
+  set textEmphasis(String value) {
     setProperty('text-emphasis', value, '');
   }
 
@@ -7459,7 +7459,7 @@
     getPropertyValue('text-emphasis-color');
 
   /** Sets the value of "text-emphasis-color" */
-  void set textEmphasisColor(String value) {
+  set textEmphasisColor(String value) {
     setProperty('text-emphasis-color', value, '');
   }
 
@@ -7468,7 +7468,7 @@
     getPropertyValue('text-emphasis-position');
 
   /** Sets the value of "text-emphasis-position" */
-  void set textEmphasisPosition(String value) {
+  set textEmphasisPosition(String value) {
     setProperty('text-emphasis-position', value, '');
   }
 
@@ -7477,7 +7477,7 @@
     getPropertyValue('text-emphasis-style');
 
   /** Sets the value of "text-emphasis-style" */
-  void set textEmphasisStyle(String value) {
+  set textEmphasisStyle(String value) {
     setProperty('text-emphasis-style', value, '');
   }
 
@@ -7486,7 +7486,7 @@
     getPropertyValue('text-fill-color');
 
   /** Sets the value of "text-fill-color" */
-  void set textFillColor(String value) {
+  set textFillColor(String value) {
     setProperty('text-fill-color', value, '');
   }
 
@@ -7495,7 +7495,7 @@
     getPropertyValue('text-indent');
 
   /** Sets the value of "text-indent" */
-  void set textIndent(String value) {
+  set textIndent(String value) {
     setProperty('text-indent', value, '');
   }
 
@@ -7504,7 +7504,7 @@
     getPropertyValue('text-justify');
 
   /** Sets the value of "text-justify" */
-  void set textJustify(String value) {
+  set textJustify(String value) {
     setProperty('text-justify', value, '');
   }
 
@@ -7513,7 +7513,7 @@
     getPropertyValue('text-line-through-color');
 
   /** Sets the value of "text-line-through-color" */
-  void set textLineThroughColor(String value) {
+  set textLineThroughColor(String value) {
     setProperty('text-line-through-color', value, '');
   }
 
@@ -7522,7 +7522,7 @@
     getPropertyValue('text-line-through-mode');
 
   /** Sets the value of "text-line-through-mode" */
-  void set textLineThroughMode(String value) {
+  set textLineThroughMode(String value) {
     setProperty('text-line-through-mode', value, '');
   }
 
@@ -7531,7 +7531,7 @@
     getPropertyValue('text-line-through-style');
 
   /** Sets the value of "text-line-through-style" */
-  void set textLineThroughStyle(String value) {
+  set textLineThroughStyle(String value) {
     setProperty('text-line-through-style', value, '');
   }
 
@@ -7540,7 +7540,7 @@
     getPropertyValue('text-line-through-width');
 
   /** Sets the value of "text-line-through-width" */
-  void set textLineThroughWidth(String value) {
+  set textLineThroughWidth(String value) {
     setProperty('text-line-through-width', value, '');
   }
 
@@ -7549,7 +7549,7 @@
     getPropertyValue('text-orientation');
 
   /** Sets the value of "text-orientation" */
-  void set textOrientation(String value) {
+  set textOrientation(String value) {
     setProperty('text-orientation', value, '');
   }
 
@@ -7558,7 +7558,7 @@
     getPropertyValue('text-overflow');
 
   /** Sets the value of "text-overflow" */
-  void set textOverflow(String value) {
+  set textOverflow(String value) {
     setProperty('text-overflow', value, '');
   }
 
@@ -7567,7 +7567,7 @@
     getPropertyValue('text-overline-color');
 
   /** Sets the value of "text-overline-color" */
-  void set textOverlineColor(String value) {
+  set textOverlineColor(String value) {
     setProperty('text-overline-color', value, '');
   }
 
@@ -7576,7 +7576,7 @@
     getPropertyValue('text-overline-mode');
 
   /** Sets the value of "text-overline-mode" */
-  void set textOverlineMode(String value) {
+  set textOverlineMode(String value) {
     setProperty('text-overline-mode', value, '');
   }
 
@@ -7585,7 +7585,7 @@
     getPropertyValue('text-overline-style');
 
   /** Sets the value of "text-overline-style" */
-  void set textOverlineStyle(String value) {
+  set textOverlineStyle(String value) {
     setProperty('text-overline-style', value, '');
   }
 
@@ -7594,7 +7594,7 @@
     getPropertyValue('text-overline-width');
 
   /** Sets the value of "text-overline-width" */
-  void set textOverlineWidth(String value) {
+  set textOverlineWidth(String value) {
     setProperty('text-overline-width', value, '');
   }
 
@@ -7603,7 +7603,7 @@
     getPropertyValue('text-rendering');
 
   /** Sets the value of "text-rendering" */
-  void set textRendering(String value) {
+  set textRendering(String value) {
     setProperty('text-rendering', value, '');
   }
 
@@ -7612,7 +7612,7 @@
     getPropertyValue('text-security');
 
   /** Sets the value of "text-security" */
-  void set textSecurity(String value) {
+  set textSecurity(String value) {
     setProperty('text-security', value, '');
   }
 
@@ -7621,7 +7621,7 @@
     getPropertyValue('text-shadow');
 
   /** Sets the value of "text-shadow" */
-  void set textShadow(String value) {
+  set textShadow(String value) {
     setProperty('text-shadow', value, '');
   }
 
@@ -7630,7 +7630,7 @@
     getPropertyValue('text-stroke');
 
   /** Sets the value of "text-stroke" */
-  void set textStroke(String value) {
+  set textStroke(String value) {
     setProperty('text-stroke', value, '');
   }
 
@@ -7639,7 +7639,7 @@
     getPropertyValue('text-stroke-color');
 
   /** Sets the value of "text-stroke-color" */
-  void set textStrokeColor(String value) {
+  set textStrokeColor(String value) {
     setProperty('text-stroke-color', value, '');
   }
 
@@ -7648,7 +7648,7 @@
     getPropertyValue('text-stroke-width');
 
   /** Sets the value of "text-stroke-width" */
-  void set textStrokeWidth(String value) {
+  set textStrokeWidth(String value) {
     setProperty('text-stroke-width', value, '');
   }
 
@@ -7657,7 +7657,7 @@
     getPropertyValue('text-transform');
 
   /** Sets the value of "text-transform" */
-  void set textTransform(String value) {
+  set textTransform(String value) {
     setProperty('text-transform', value, '');
   }
 
@@ -7666,7 +7666,7 @@
     getPropertyValue('text-underline-color');
 
   /** Sets the value of "text-underline-color" */
-  void set textUnderlineColor(String value) {
+  set textUnderlineColor(String value) {
     setProperty('text-underline-color', value, '');
   }
 
@@ -7675,7 +7675,7 @@
     getPropertyValue('text-underline-mode');
 
   /** Sets the value of "text-underline-mode" */
-  void set textUnderlineMode(String value) {
+  set textUnderlineMode(String value) {
     setProperty('text-underline-mode', value, '');
   }
 
@@ -7684,7 +7684,7 @@
     getPropertyValue('text-underline-position');
 
   /** Sets the value of "text-underline-position" */
-  void set textUnderlinePosition(String value) {
+  set textUnderlinePosition(String value) {
     setProperty('text-underline-position', value, '');
   }
 
@@ -7693,7 +7693,7 @@
     getPropertyValue('text-underline-style');
 
   /** Sets the value of "text-underline-style" */
-  void set textUnderlineStyle(String value) {
+  set textUnderlineStyle(String value) {
     setProperty('text-underline-style', value, '');
   }
 
@@ -7702,7 +7702,7 @@
     getPropertyValue('text-underline-width');
 
   /** Sets the value of "text-underline-width" */
-  void set textUnderlineWidth(String value) {
+  set textUnderlineWidth(String value) {
     setProperty('text-underline-width', value, '');
   }
 
@@ -7711,7 +7711,7 @@
     getPropertyValue('top');
 
   /** Sets the value of "top" */
-  void set top(String value) {
+  set top(String value) {
     setProperty('top', value, '');
   }
 
@@ -7720,7 +7720,7 @@
     getPropertyValue('touch-action');
 
   /** Sets the value of "touch-action" */
-  void set touchAction(String value) {
+  set touchAction(String value) {
     setProperty('touch-action', value, '');
   }
 
@@ -7729,7 +7729,7 @@
     getPropertyValue('touch-action-delay');
 
   /** Sets the value of "touch-action-delay" */
-  void set touchActionDelay(String value) {
+  set touchActionDelay(String value) {
     setProperty('touch-action-delay', value, '');
   }
 
@@ -7738,7 +7738,7 @@
     getPropertyValue('transform');
 
   /** Sets the value of "transform" */
-  void set transform(String value) {
+  set transform(String value) {
     setProperty('transform', value, '');
   }
 
@@ -7747,7 +7747,7 @@
     getPropertyValue('transform-origin');
 
   /** Sets the value of "transform-origin" */
-  void set transformOrigin(String value) {
+  set transformOrigin(String value) {
     setProperty('transform-origin', value, '');
   }
 
@@ -7756,7 +7756,7 @@
     getPropertyValue('transform-origin-x');
 
   /** Sets the value of "transform-origin-x" */
-  void set transformOriginX(String value) {
+  set transformOriginX(String value) {
     setProperty('transform-origin-x', value, '');
   }
 
@@ -7765,7 +7765,7 @@
     getPropertyValue('transform-origin-y');
 
   /** Sets the value of "transform-origin-y" */
-  void set transformOriginY(String value) {
+  set transformOriginY(String value) {
     setProperty('transform-origin-y', value, '');
   }
 
@@ -7774,7 +7774,7 @@
     getPropertyValue('transform-origin-z');
 
   /** Sets the value of "transform-origin-z" */
-  void set transformOriginZ(String value) {
+  set transformOriginZ(String value) {
     setProperty('transform-origin-z', value, '');
   }
 
@@ -7783,7 +7783,7 @@
     getPropertyValue('transform-style');
 
   /** Sets the value of "transform-style" */
-  void set transformStyle(String value) {
+  set transformStyle(String value) {
     setProperty('transform-style', value, '');
   }
 
@@ -7798,7 +7798,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  void set transition(String value) {
+  set transition(String value) {
     setProperty('transition', value, '');
   }
 
@@ -7807,7 +7807,7 @@
     getPropertyValue('transition-delay');
 
   /** Sets the value of "transition-delay" */
-  void set transitionDelay(String value) {
+  set transitionDelay(String value) {
     setProperty('transition-delay', value, '');
   }
 
@@ -7816,7 +7816,7 @@
     getPropertyValue('transition-duration');
 
   /** Sets the value of "transition-duration" */
-  void set transitionDuration(String value) {
+  set transitionDuration(String value) {
     setProperty('transition-duration', value, '');
   }
 
@@ -7825,7 +7825,7 @@
     getPropertyValue('transition-property');
 
   /** Sets the value of "transition-property" */
-  void set transitionProperty(String value) {
+  set transitionProperty(String value) {
     setProperty('transition-property', value, '');
   }
 
@@ -7834,7 +7834,7 @@
     getPropertyValue('transition-timing-function');
 
   /** Sets the value of "transition-timing-function" */
-  void set transitionTimingFunction(String value) {
+  set transitionTimingFunction(String value) {
     setProperty('transition-timing-function', value, '');
   }
 
@@ -7843,7 +7843,7 @@
     getPropertyValue('unicode-bidi');
 
   /** Sets the value of "unicode-bidi" */
-  void set unicodeBidi(String value) {
+  set unicodeBidi(String value) {
     setProperty('unicode-bidi', value, '');
   }
 
@@ -7852,7 +7852,7 @@
     getPropertyValue('unicode-range');
 
   /** Sets the value of "unicode-range" */
-  void set unicodeRange(String value) {
+  set unicodeRange(String value) {
     setProperty('unicode-range', value, '');
   }
 
@@ -7861,7 +7861,7 @@
     getPropertyValue('user-drag');
 
   /** Sets the value of "user-drag" */
-  void set userDrag(String value) {
+  set userDrag(String value) {
     setProperty('user-drag', value, '');
   }
 
@@ -7870,7 +7870,7 @@
     getPropertyValue('user-modify');
 
   /** Sets the value of "user-modify" */
-  void set userModify(String value) {
+  set userModify(String value) {
     setProperty('user-modify', value, '');
   }
 
@@ -7879,7 +7879,7 @@
     getPropertyValue('user-select');
 
   /** Sets the value of "user-select" */
-  void set userSelect(String value) {
+  set userSelect(String value) {
     setProperty('user-select', value, '');
   }
 
@@ -7888,7 +7888,7 @@
     getPropertyValue('user-zoom');
 
   /** Sets the value of "user-zoom" */
-  void set userZoom(String value) {
+  set userZoom(String value) {
     setProperty('user-zoom', value, '');
   }
 
@@ -7897,7 +7897,7 @@
     getPropertyValue('vertical-align');
 
   /** Sets the value of "vertical-align" */
-  void set verticalAlign(String value) {
+  set verticalAlign(String value) {
     setProperty('vertical-align', value, '');
   }
 
@@ -7906,7 +7906,7 @@
     getPropertyValue('visibility');
 
   /** Sets the value of "visibility" */
-  void set visibility(String value) {
+  set visibility(String value) {
     setProperty('visibility', value, '');
   }
 
@@ -7915,7 +7915,7 @@
     getPropertyValue('white-space');
 
   /** Sets the value of "white-space" */
-  void set whiteSpace(String value) {
+  set whiteSpace(String value) {
     setProperty('white-space', value, '');
   }
 
@@ -7924,7 +7924,7 @@
     getPropertyValue('widows');
 
   /** Sets the value of "widows" */
-  void set widows(String value) {
+  set widows(String value) {
     setProperty('widows', value, '');
   }
 
@@ -7933,7 +7933,7 @@
     getPropertyValue('width');
 
   /** Sets the value of "width" */
-  void set width(String value) {
+  set width(String value) {
     setProperty('width', value, '');
   }
 
@@ -7942,7 +7942,7 @@
     getPropertyValue('will-change');
 
   /** Sets the value of "will-change" */
-  void set willChange(String value) {
+  set willChange(String value) {
     setProperty('will-change', value, '');
   }
 
@@ -7951,7 +7951,7 @@
     getPropertyValue('word-break');
 
   /** Sets the value of "word-break" */
-  void set wordBreak(String value) {
+  set wordBreak(String value) {
     setProperty('word-break', value, '');
   }
 
@@ -7960,7 +7960,7 @@
     getPropertyValue('word-spacing');
 
   /** Sets the value of "word-spacing" */
-  void set wordSpacing(String value) {
+  set wordSpacing(String value) {
     setProperty('word-spacing', value, '');
   }
 
@@ -7969,7 +7969,7 @@
     getPropertyValue('word-wrap');
 
   /** Sets the value of "word-wrap" */
-  void set wordWrap(String value) {
+  set wordWrap(String value) {
     setProperty('word-wrap', value, '');
   }
 
@@ -7978,7 +7978,7 @@
     getPropertyValue('wrap-flow');
 
   /** Sets the value of "wrap-flow" */
-  void set wrapFlow(String value) {
+  set wrapFlow(String value) {
     setProperty('wrap-flow', value, '');
   }
 
@@ -7987,7 +7987,7 @@
     getPropertyValue('wrap-through');
 
   /** Sets the value of "wrap-through" */
-  void set wrapThrough(String value) {
+  set wrapThrough(String value) {
     setProperty('wrap-through', value, '');
   }
 
@@ -7996,7 +7996,7 @@
     getPropertyValue('writing-mode');
 
   /** Sets the value of "writing-mode" */
-  void set writingMode(String value) {
+  set writingMode(String value) {
     setProperty('writing-mode', value, '');
   }
 
@@ -8005,7 +8005,7 @@
     getPropertyValue('z-index');
 
   /** Sets the value of "z-index" */
-  void set zIndex(String value) {
+  set zIndex(String value) {
     setProperty('z-index', value, '');
   }
 
@@ -8014,7 +8014,7 @@
     getPropertyValue('zoom');
 
   /** Sets the value of "zoom" */
-  void set zoom(String value) {
+  set zoom(String value) {
     setProperty('zoom', value, '');
   }
 }
@@ -9232,9 +9232,10 @@
   @DocsEditable()
   Element _createElement(String localName_OR_tagName, [String typeExtension]) native;
 
+  @JSName('createElementNS')
   @DomName('Document.createElementNS')
   @DocsEditable()
-  Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) native;
+  Element _createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) native;
 
   @JSName('createEvent')
   @DomName('Document.createEvent')
@@ -9833,7 +9834,32 @@
 
   @DomName('Document.createElement')
   Element createElement(String tagName, [String typeExtension]) {
-    return _createElement(tagName, typeExtension);
+    if (typeExtension == null) {
+      return _createElement_2(tagName);
+    } else {
+      return _createElement(tagName, typeExtension);
+    }
+  }
+
+  // The two-argument version of this is automatically generated, but we need to
+  // omit the typeExtension if it's null on Firefox or we get an is="null" attribute.
+  @DomName('Document.createElement')
+  _createElement_2(String tagName) => JS('', '#.createElement(#)', this, tagName);
+
+  // The three-argument version of this is automatically generated, but we need to
+  // omit the typeExtension if it's null on Firefox or we get an is="null" attribute.
+  @DomName('Document.createElementNS')
+  _createElementNS_2(String namespaceURI, String qualifiedName) =>
+      JS('', '#.createElementNS(#, #)', this, namespaceURI, qualifiedName);
+
+  @DomName('Document.createElementNS')
+  @DocsEditable()
+  Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) {
+    if (typeExtension == null) {
+      return _createElementNS_2(namespaceURI, qualifiedName);
+    } else {
+      return _createElementNS(namespaceURI, qualifiedName, typeExtension);
+    }
   }
 
   @DomName('Document.createNodeIterator')
@@ -9887,7 +9913,7 @@
     return _docChildren;
   }
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     // Copy list first since we don't want liveness during iteration.
     List copy = new List.from(value);
     var children = this.children;
@@ -9909,14 +9935,13 @@
   ElementList<Element> querySelectorAll(String selectors) =>
     new _FrozenElementList._wrap(_querySelectorAll(selectors));
 
-
   String get innerHtml {
     final e = new Element.tag("div");
     e.append(this.clone(true));
     return e.innerHtml;
   }
 
-  void set innerHtml(String value) {
+  set innerHtml(String value) {
     this.setInnerHtml(value);
   }
 
@@ -10179,154 +10204,154 @@
   // Shadowing definition.
   num get a => JS("num", "#.a", this);
 
-  void set a(num value) {
+  set a(num value) {
     JS("void", "#.a = #", this, value);
   }
 
   // Shadowing definition.
   num get b => JS("num", "#.b", this);
 
-  void set b(num value) {
+  set b(num value) {
     JS("void", "#.b = #", this, value);
   }
 
   // Shadowing definition.
   num get c => JS("num", "#.c", this);
 
-  void set c(num value) {
+  set c(num value) {
     JS("void", "#.c = #", this, value);
   }
 
   // Shadowing definition.
   num get d => JS("num", "#.d", this);
 
-  void set d(num value) {
+  set d(num value) {
     JS("void", "#.d = #", this, value);
   }
 
   // Shadowing definition.
   num get e => JS("num", "#.e", this);
 
-  void set e(num value) {
+  set e(num value) {
     JS("void", "#.e = #", this, value);
   }
 
   // Shadowing definition.
   num get f => JS("num", "#.f", this);
 
-  void set f(num value) {
+  set f(num value) {
     JS("void", "#.f = #", this, value);
   }
 
   // Shadowing definition.
   num get m11 => JS("num", "#.m11", this);
 
-  void set m11(num value) {
+  set m11(num value) {
     JS("void", "#.m11 = #", this, value);
   }
 
   // Shadowing definition.
   num get m12 => JS("num", "#.m12", this);
 
-  void set m12(num value) {
+  set m12(num value) {
     JS("void", "#.m12 = #", this, value);
   }
 
   // Shadowing definition.
   num get m13 => JS("num", "#.m13", this);
 
-  void set m13(num value) {
+  set m13(num value) {
     JS("void", "#.m13 = #", this, value);
   }
 
   // Shadowing definition.
   num get m14 => JS("num", "#.m14", this);
 
-  void set m14(num value) {
+  set m14(num value) {
     JS("void", "#.m14 = #", this, value);
   }
 
   // Shadowing definition.
   num get m21 => JS("num", "#.m21", this);
 
-  void set m21(num value) {
+  set m21(num value) {
     JS("void", "#.m21 = #", this, value);
   }
 
   // Shadowing definition.
   num get m22 => JS("num", "#.m22", this);
 
-  void set m22(num value) {
+  set m22(num value) {
     JS("void", "#.m22 = #", this, value);
   }
 
   // Shadowing definition.
   num get m23 => JS("num", "#.m23", this);
 
-  void set m23(num value) {
+  set m23(num value) {
     JS("void", "#.m23 = #", this, value);
   }
 
   // Shadowing definition.
   num get m24 => JS("num", "#.m24", this);
 
-  void set m24(num value) {
+  set m24(num value) {
     JS("void", "#.m24 = #", this, value);
   }
 
   // Shadowing definition.
   num get m31 => JS("num", "#.m31", this);
 
-  void set m31(num value) {
+  set m31(num value) {
     JS("void", "#.m31 = #", this, value);
   }
 
   // Shadowing definition.
   num get m32 => JS("num", "#.m32", this);
 
-  void set m32(num value) {
+  set m32(num value) {
     JS("void", "#.m32 = #", this, value);
   }
 
   // Shadowing definition.
   num get m33 => JS("num", "#.m33", this);
 
-  void set m33(num value) {
+  set m33(num value) {
     JS("void", "#.m33 = #", this, value);
   }
 
   // Shadowing definition.
   num get m34 => JS("num", "#.m34", this);
 
-  void set m34(num value) {
+  set m34(num value) {
     JS("void", "#.m34 = #", this, value);
   }
 
   // Shadowing definition.
   num get m41 => JS("num", "#.m41", this);
 
-  void set m41(num value) {
+  set m41(num value) {
     JS("void", "#.m41 = #", this, value);
   }
 
   // Shadowing definition.
   num get m42 => JS("num", "#.m42", this);
 
-  void set m42(num value) {
+  set m42(num value) {
     JS("void", "#.m42 = #", this, value);
   }
 
   // Shadowing definition.
   num get m43 => JS("num", "#.m43", this);
 
-  void set m43(num value) {
+  set m43(num value) {
     JS("void", "#.m43 = #", this, value);
   }
 
   // Shadowing definition.
   num get m44 => JS("num", "#.m44", this);
 
-  void set m44(num value) {
+  set m44(num value) {
     JS("void", "#.m44 = #", this, value);
   }
 
@@ -10597,28 +10622,28 @@
   // Shadowing definition.
   num get w => JS("num", "#.w", this);
 
-  void set w(num value) {
+  set w(num value) {
     JS("void", "#.w = #", this, value);
   }
 
   // Shadowing definition.
   num get x => JS("num", "#.x", this);
 
-  void set x(num value) {
+  set x(num value) {
     JS("void", "#.x = #", this, value);
   }
 
   // Shadowing definition.
   num get y => JS("num", "#.y", this);
 
-  void set y(num value) {
+  set y(num value) {
     JS("void", "#.y = #", this, value);
   }
 
   // Shadowing definition.
   num get z => JS("num", "#.z", this);
 
-  void set z(num value) {
+  set z(num value) {
     JS("void", "#.z = #", this, value);
   }
 }
@@ -10862,7 +10887,7 @@
   // String is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -10990,7 +11015,7 @@
     _element._replaceChild(value, _childElements[index]);
   }
 
-  void set length(int newLength) {
+  set length(int newLength) {
     // TODO(jacobr): remove children when length is reduced.
     throw new UnsupportedError('Cannot resize element lists');
   }
@@ -11696,7 +11721,7 @@
     throw new UnsupportedError('Cannot modify list');
   }
 
-  void set length(int newLength) {
+  set length(int newLength) {
     throw new UnsupportedError('Cannot modify list');
   }
 
@@ -11719,7 +11744,7 @@
   CssStyleDeclarationBase get style =>
       new _CssStyleDeclarationSet(this);
 
-  void set classes(Iterable<String> value) {
+  set classes(Iterable<String> value) {
     // TODO(sra): This might be faster for Sets:
     //
     //     new _MultiElementCssClassSet(this).writeClasses(value)
@@ -12214,7 +12239,7 @@
  */
 @DomName('Element')
 @Native("Element")
-abstract class Element extends Node implements GlobalEventHandlers, ParentNode, ChildNode {
+class Element extends Node implements GlobalEventHandlers, ParentNode, ChildNode {
 
   /**
    * Creates an HTML element from a valid fragment of HTML.
@@ -12261,11 +12286,7 @@
    *     }
    *     document.registerElement('x-custom', CustomElement);
    */
-  Element.created() : super._created() {
-    // Validate that this is a custom element & perform any additional
-    // initialization.
-    _initializeCustomElement(this);
-  }
+  Element.created() : super._created();
 
   /**
    * Creates the HTML element specified by the tag name.
@@ -12446,7 +12467,7 @@
    */
   Map<String, String> get attributes => new _ElementAttributeMap(this);
 
-  void set attributes(Map<String, String> value) {
+  set attributes(Map<String, String> value) {
     Map<String, String> attributes = this.attributes;
     attributes.clear();
     for (String key in value.keys) {
@@ -12468,7 +12489,7 @@
    */
   List<Element> get children => new _ChildrenElementList._wrap(this);
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     // Copy list first since we don't want liveness during iteration.
     List copy = new List.from(value);
     var children = this.children;
@@ -12522,7 +12543,7 @@
    */
   CssClassSet get classes => new _ElementCssClassSet(this);
 
-  void set classes(Iterable<String> value) {
+  set classes(Iterable<String> value) {
     // TODO(sra): Do this without reading the classes in clear() and addAll(),
     // or writing the classes in clear().
     CssClassSet classSet = classes;
@@ -12556,7 +12577,7 @@
   Map<String, String> get dataset =>
     new _DataAttributeMap(attributes);
 
-  void set dataset(Map<String, String> value) {
+  set dataset(Map<String, String> value) {
     final data = this.dataset;
     data.clear();
     for (String key in value.keys) {
@@ -12689,18 +12710,15 @@
    *     var animation = elem.animate([
    *       {"transform": "translate(100px, -100%)"},
    *       {"transform" : "translate(400px, 500px)"}
-   *     ], 1500);  
+   *     ], 1500);
    *
    * The [frames] parameter is an Iterable<Map>, where the
    * map entries specify CSS animation effects. The
    * [timing] paramter can be a double, representing the number of milliseconds
    * for the transition, or a Map with fields corresponding to those
    * of the [Timing] object.
-   *
-   * This is not yet supported in Dartium.
   **/
-// TODO(alanknight): Correct above comment once it works in Dartium.
-  @Experimental
+  @Experimental()
   @SupportedBrowser(SupportedBrowser.CHROME, '36')
   AnimationPlayer animate(Iterable<Map<String, dynamic>> frames, [timing]) {
     if (frames is! Iterable || !(frames.every((x) => x is Map))) {
@@ -12750,7 +12768,7 @@
   // members of the component are used. The actual type is a subtype of Element.
   get xtag => _xtag != null ? _xtag : this;
 
-  void set xtag(Element value) {
+  set xtag(Element value) {
     _xtag = value;
   }
 
@@ -12869,7 +12887,7 @@
 
   @JSName('insertAdjacentText')
   void _insertAdjacentText(String where, String text) native;
-  
+
 
   /**
    * Parses text as an HTML fragment and inserts it into the DOM at the
@@ -13122,8 +13140,9 @@
     // offsetParent, "tops out" at BODY. But people could conceivably pass in
     // the document.documentElement and I want it to return an absolute offset,
     // so we have the special case checking for HTML.
-    bool foundAsParent = identical(current, parent) || parent.tagName == 'HTML';
-    if (current == null || identical(current, parent)) {
+    bool sameAsParent = identical(current, parent);
+    bool foundAsParent = sameAsParent || parent.tagName == 'HTML';
+    if (current == null || sameAsParent) {
       if (foundAsParent) return new Point(0, 0);
       throw new ArgumentError("Specified element is not a transitive offset "
           "parent of this element.");
@@ -13181,11 +13200,11 @@
     if (_parseDocument == null) {
       _parseDocument = document.implementation.createHtmlDocument('');
       _parseRange = _parseDocument.createRange();
-	
+
       // Workaround for Safari bug. Was also previously Chrome bug 229142
-      // - URIs are not resolved in new doc.	
-      var base = _parseDocument.createElement('base');	
-      base.href = document.baseUri;	
+      // - URIs are not resolved in new doc.
+      var base = _parseDocument.createElement('base');
+      base.href = document.baseUri;
       _parseDocument.head.append(base);
     }
     var contextElement;
@@ -13243,7 +13262,7 @@
    * This uses the default sanitization behavior to sanitize the HTML fragment,
    * use [setInnerHtml] to override the default behavior.
    */
-  void set innerHtml(String html) {
+  set innerHtml(String html) {
     this.setInnerHtml(html);
   }
 
@@ -13285,7 +13304,7 @@
    * used when an explicit accessor is not available.
    */
   ElementEvents get on => new ElementEvents(this);
-  
+
   /**
    * Verify if any of the attributes that we use in the sanitizer look unexpected,
    * possibly indicating DOM clobbering attacks.
@@ -13313,6 +13332,16 @@
           })(#)''', element);
   }
 
+  String get _safeTagName {
+    String result = 'element tag unavailable';
+    try {
+      if (tagName is String) {
+        result = tagName;
+      }
+    } catch (e) {}
+    return result;
+  }
+
   @DomName('Element.offsetHeight')
   @DocsEditable()
   int get offsetHeight => JS('num', '#.offsetHeight', this).round();
@@ -13355,7 +13384,7 @@
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  void set scrollLeft(int value) {
+  set scrollLeft(int value) {
     JS("void", "#.scrollLeft = #", this, value.round());
   }
 
@@ -13365,7 +13394,7 @@
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  void set scrollTop(int value) {
+  set scrollTop(int value) {
     JS("void", "#.scrollTop = #", this, value.round());
   }
 
@@ -15978,7 +16007,7 @@
   // File is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -17840,7 +17869,7 @@
   // Node is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -17960,7 +17989,7 @@
 
   @DomName('Document.selectedStylesheetSet')
   String get selectedStylesheetSet => _selectedStylesheetSet;
-  void set selectedStylesheetSet(String value) {
+  set selectedStylesheetSet(String value) {
     _selectedStylesheetSet = value;
   }
 
@@ -17971,7 +18000,7 @@
   String get title => _title;
 
   @DomName('Document.title')
-  void set title(String value) {
+  set title(String value) {
     _title = value;
   }
 
@@ -18577,6 +18606,25 @@
     return headers;
   }
 
+  /**
+   * Specify the desired `url`, and `method` to use in making the request.
+   *
+   * By default the request is done asyncronously, with no user or password
+   * authentication information. If `async` is false, the request will be send
+   * synchronously.
+   *
+   * Calling `open` again on a currently active request is equivalent to
+   * calling `abort`.
+   *
+   * Note: Most simple HTTP requests can be accomplished using the [getString],
+   * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
+   * `open` method is intended only for more complext HTTP requests where
+   * finer-grained control is needed.
+   */
+  @DomName('XMLHttpRequest.open')
+  @DocsEditable()
+  void open(String method, String url, {bool async, String user, String password}) native;
+
   // To suppress missing implicit constructor warnings.
   factory HttpRequest._() { throw new UnsupportedError("Not supported"); }
 
@@ -18833,25 +18881,6 @@
   String getResponseHeader(String header) native;
 
   /**
-   * Specify the desired `url`, and `method` to use in making the request.
-   *
-   * By default the request is done asyncronously, with no user or password
-   * authentication information. If `async` is false, the request will be send
-   * synchronously.
-   *
-   * Calling `open` again on a currently active request is equivalent to
-   * calling `abort`.
-   *
-   * Note: Most simple HTTP requests can be accomplished using the [getString],
-   * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
-   * `open` method is intended only for more complext HTTP requests where
-   * finer-grained control is needed.
-   */
-  @DomName('XMLHttpRequest.open')
-  @DocsEditable()
-  void open(String method, String url, {bool async, String user, String password}) native;
-
-  /**
    * Specify a particular MIME type (such as `text/xml`) desired for the
    * response.
    *
@@ -19543,10 +19572,10 @@
   @Creates('Null')
   final dynamic _get_valueAsDate;
 
-  void set valueAsDate(DateTime value) {
+  set valueAsDate(DateTime value) {
     this._set_valueAsDate = convertDartToNative_DateTime(value);
   }
-  void set _set_valueAsDate(/*dynamic*/ value) {
+  set _set_valueAsDate(/*dynamic*/ value) {
     JS("void", "#.valueAsDate = #", this, value);
   }
 
@@ -22661,7 +22690,7 @@
   // MimeType is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -23287,11 +23316,6 @@
   @Experimental()
   void getStorageUpdates() native;
 
-  @DomName('Navigator.isProtocolHandlerRegistered')
-  @DocsEditable()
-  @Experimental() // untriaged
-  String isProtocolHandlerRegistered(String scheme, String url) native;
-
   @DomName('Navigator.registerProtocolHandler')
   @DocsEditable()
   @Unstable()
@@ -23302,11 +23326,6 @@
   @Experimental() // untriaged
   bool sendBeacon(String url, data) native;
 
-  @DomName('Navigator.unregisterProtocolHandler')
-  @DocsEditable()
-  @Experimental() // untriaged
-  void unregisterProtocolHandler(String scheme, String url) native;
-
   // From NavigatorCPU
 
   @DomName('Navigator.hardwareConcurrency')
@@ -23658,7 +23677,7 @@
   // a local copy of childNodes is more efficient.
   int get length => _this.childNodes.length;
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError(
         "Cannot set length on immutable List.");
   }
@@ -23683,7 +23702,7 @@
     return new _ChildNodeListLazy(this);
   }
 
-  void set nodes(Iterable<Node> value) {
+  set nodes(Iterable<Node> value) {
     // Copy list first since we don't want liveness during iteration.
     // TODO(jacobr): there is a better way to do this.
     List copy = new List.from(value);
@@ -24222,7 +24241,7 @@
   // Node is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -25404,7 +25423,7 @@
   // Plugin is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -27668,7 +27687,7 @@
   }
 
   @deprecated
-  void set resetStyleInheritance(bool value) {
+  set resetStyleInheritance(bool value) {
     _shadowRootDeprecationReport();
   }
 
@@ -27680,7 +27699,7 @@
   }
 
   @deprecated
-  void set applyAuthorStyles(bool value) {
+  set applyAuthorStyles(bool value) {
     _shadowRootDeprecationReport();
   }
 }
@@ -27861,7 +27880,7 @@
   // SourceBuffer is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -28067,7 +28086,7 @@
   // SpeechGrammar is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -29932,7 +29951,7 @@
   // TextTrackCue is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -30017,7 +30036,7 @@
   // TextTrack is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -30418,7 +30437,7 @@
   // Touch is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -31632,7 +31651,7 @@
     if (view == null) {
       view = window;
     }
-    
+
     return JS('WheelEvent', 'new WheelEvent(#, #)',
         type, convertDartToNative_Dictionary(options));
 
@@ -31876,13 +31895,13 @@
    * Sets the window's location, which causes the browser to navigate to the new
    * location. [value] may be a Location object or a String.
    */
-  void set location(value) {
+  set location(value) {
     _location = value;
   }
 
   // Native getter and setter to access raw Location object.
   dynamic get _location => JS('Location|Null', '#.location', this);
-  void set _location(value) {
+  set _location(value) {
     JS('void', '#.location = #', this, value);
   }
 
@@ -32403,7 +32422,7 @@
   @Returns('Window|=Object')
   final dynamic _get_opener;
 
-  void set opener(Window value) {
+  set opener(Window value) {
     JS("void", "#.opener = #", this, value);
   }
 
@@ -33750,7 +33769,7 @@
 
   String get returnValue => _returnValue;
 
-  void set returnValue(String value) {
+  set returnValue(String value) {
     _returnValue = value;
     // FF and IE use the value as the return value, Chrome will return this from
     // the event callback function.
@@ -34455,7 +34474,7 @@
   // Shadowing definition.
   String get text => JS("String", "#.textContent", this);
 
-  void set text(String value) {
+  set text(String value) {
     JS("void", "#.textContent = #", this, value);
   }
 
@@ -34722,7 +34741,7 @@
   // Rectangle is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -34800,7 +34819,7 @@
   // CssRule is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -34866,7 +34885,7 @@
   // _CSSValue is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -34959,7 +34978,9 @@
   factory _DocumentType._() { throw new UnsupportedError("Not supported"); }
 
   // From ChildNode
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -34999,28 +35020,28 @@
   // Shadowing definition.
   num get height => JS("num", "#.height", this);
 
-  void set height(num value) {
+  set height(num value) {
     JS("void", "#.height = #", this, value);
   }
 
   // Shadowing definition.
   num get width => JS("num", "#.width", this);
 
-  void set width(num value) {
+  set width(num value) {
     JS("void", "#.width = #", this, value);
   }
 
   // Shadowing definition.
   num get x => JS("num", "#.x", this);
 
-  void set x(num value) {
+  set x(num value) {
     JS("void", "#.x = #", this, value);
   }
 
   // Shadowing definition.
   num get y => JS("num", "#.y", this);
 
-  void set y(num value) {
+  set y(num value) {
     JS("void", "#.y = #", this, value);
   }
 }
@@ -35118,7 +35139,7 @@
   // Gamepad is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -35271,7 +35292,9 @@
    * This can only be called by subclasses from their created constructor.
    */
   _HTMLFrameSetElement.created() : super.created();
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -35346,7 +35369,7 @@
   // Node is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -35593,7 +35616,9 @@
 abstract class _ServiceWorker extends EventTarget implements AbstractWorker {
   // To suppress missing implicit constructor warnings.
   factory _ServiceWorker._() { throw new UnsupportedError("Not supported"); }
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -35625,7 +35650,7 @@
   // SpeechRecognitionResult is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -35689,7 +35714,7 @@
   // StyleSheet is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -35832,7 +35857,9 @@
   factory _WorkerLocation._() { throw new UnsupportedError("Not supported"); }
 
   // From URLUtilsReadOnly
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -35852,7 +35879,9 @@
   // From NavigatorID
 
   // From NavigatorOnLine
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -36467,7 +36496,7 @@
    * `height` function in jQuery and the calculated `height` CSS value,
    * converted to a num in pixels.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     if (newHeight is Dimension) {
       if (newHeight.value < 0) newHeight = new Dimension.px(0);
       _element.style.height = newHeight.toString();
@@ -36485,7 +36514,7 @@
    * and the calculated
    * `width` CSS value, converted to a dimensionless num in pixels.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     if (newWidth is Dimension) {
       if (newWidth.value < 0) newWidth = new Dimension.px(0);
       _element.style.width = newWidth.toString();
@@ -36520,7 +36549,7 @@
    * function in jQuery and the calculated `height` CSS value, converted to a
    * num in pixels.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     _elementList.forEach((e) => e.contentEdge.height = newHeight);
   }
 
@@ -36530,7 +36559,7 @@
    * This is equivalent to the `width` function in jQuery and the calculated
    * `width` CSS value, converted to a dimensionless num in pixels.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     _elementList.forEach((e) => e.contentEdge.width = newWidth);
   }
 }
@@ -36637,7 +36666,7 @@
    *
    * Note that only the content height can actually be set via this method.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     throw new UnsupportedError("Can only set height for content rect.");
   }
 
@@ -36651,7 +36680,7 @@
    *
    * Note that only the content width can be set via this method.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     throw new UnsupportedError("Can only set width for content rect.");
   }
 
@@ -37902,11 +37931,11 @@
   }
 
   bool allowsElement(Element element) {
-    return _allowedElements.contains(element.tagName);
+    return _allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
-    var tagName = element.tagName;
+    var tagName = element._safeTagName;
     var validator = _attributeValidators['$tagName::$attributeName'];
     if (validator == null) {
       validator = _attributeValidators['*::$attributeName'];
@@ -39568,11 +39597,11 @@
   }
 
   bool allowsElement(Element element) {
-    return allowedElements.contains(element.tagName);
+    return allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
-    var tagName = element.tagName;
+    var tagName = element._safeTagName;
     if (allowedUriAttributes.contains('$tagName::$attributeName')) {
       return uriPolicy.allowsUri(value);
     } else if (allowedUriAttributes.contains('*::$attributeName')) {
@@ -39613,10 +39642,10 @@
       var isAttr = element.attributes['is'];
       if (isAttr != null) {
         return allowedElements.contains(isAttr.toUpperCase()) &&
-          allowedElements.contains(element.tagName);
+          allowedElements.contains(element._safeTagName);
       }
     }
-    return allowCustomTag && allowedElements.contains(element.tagName);
+    return allowCustomTag && allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
@@ -39672,7 +39701,7 @@
     // foreignobject tag as SvgElement. We don't want foreignobject contents
     // anyway, so just remove the whole tree outright. And we can't rely
     // on IE recognizing the SvgForeignObject type, so go by tagName. Bug 23144
-    if (element is svg.SvgElement && element.tagName == 'foreignObject') {
+    if (element is svg.SvgElement && element._safeTagName == 'foreignObject') {
       return false;
     }
     if (element is svg.SvgElement) {
@@ -39748,7 +39777,7 @@
 
   void operator []=(int index, E value) { _list[index] = value; }
 
-  void set length(int newLength) { _list.length = newLength; }
+  set length(int newLength) { _list.length = newLength; }
 
   void sort([int compare(E a, E b)]) { _list.sort(compare); }
 
@@ -40194,7 +40223,7 @@
   // properly.  Its fields and methods can only be accessed via JavaScript.
   var _location;
 
-  void set href(String val) => _setHref(_location, val);
+  set href(String val) => _setHref(_location, val);
   static void _setHref(location, val) {
     JS('void', '#.href = #', location, val);
   }
@@ -40730,7 +40759,7 @@
   /**
    * A sanitizer for trees that we trust. It does no validation and allows
    * any elements. It is also more efficient, since it can pass the text
-   * directly through to the underlying APIs without creating a document 
+   * directly through to the underlying APIs without creating a document
    * fragment to be sanitized.
    */
   static const trusted = const _TrustedHtmlTreeSanitizer();
@@ -40745,7 +40774,7 @@
 
   sanitizeTree(Node node) {}
 }
-  
+
 /**
  * Defines the policy for what types of uris are allowed for particular
  * attribute values.
@@ -40799,14 +40828,14 @@
 
   bool allowsElement(Element element) {
     if (!validator.allowsElement(element)) {
-      throw new ArgumentError(element.tagName);
+      throw new ArgumentError(element._safeTagName);
     }
     return true;
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
     if (!validator.allowsAttribute(element, attributeName, value)) {
-      throw new ArgumentError('${element.tagName}[$attributeName="$value"]');
+      throw new ArgumentError('${element._safeTagName}[$attributeName="$value"]');
     }
   }
 }
@@ -40871,10 +40900,7 @@
     try {
       elementText = element.toString();
     } catch(e) {}
-    var elementTagName = 'element tag unavailable';
-    try {
-      elementTagName = element.tagName;
-    } catch(e) {}
+    var elementTagName = element._safeTagName;
     _sanitizeElement(element, parent, corrupted, elementText, elementTagName,
         attrs, isAttr);
   }
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index 06cecb0..9925893 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -26,7 +26,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide Symbol, deprecated;
+import 'dart:_internal' hide Symbol;
 import 'dart:html_common';
 import 'dart:indexed_db';
 import 'dart:indexed_db' show indexed_dbBlinkMap;
@@ -89,7 +89,7 @@
   if (_window != null) {
     return _window;
   }
-  _window = _Utils.window();
+  _window = wrap_jso(js.context['window']);
   return _window;
 }
 
@@ -619,11 +619,680 @@
   return null;
 }
 
+// FIXME: Can we make this private?
+final htmlBlinkFunctionMap = {
+  'Animation': () => Animation.internalCreateAnimation,
+  'AnimationEffect': () => AnimationEffect.internalCreateAnimationEffect,
+  'AnimationNode': () => AnimationNode.internalCreateAnimationNode,
+  'AnimationPlayer': () => AnimationPlayer.internalCreateAnimationPlayer,
+  'AnimationPlayerEvent': () => AnimationPlayerEvent.internalCreateAnimationPlayerEvent,
+  'AnimationTimeline': () => AnimationTimeline.internalCreateAnimationTimeline,
+  '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,
+  'BeforeUnloadEvent': () => BeforeUnloadEvent.internalCreateBeforeUnloadEvent,
+  'Blob': () => Blob.internalCreateBlob,
+  'Body': () => Body.internalCreateBody,
+  'CDATASection': () => CDataSection.internalCreateCDataSection,
+  'CSS': () => Css.internalCreateCss,
+  'CSSCharsetRule': () => CssCharsetRule.internalCreateCssCharsetRule,
+  'CSSFontFaceRule': () => CssFontFaceRule.internalCreateCssFontFaceRule,
+  'CSSImportRule': () => CssImportRule.internalCreateCssImportRule,
+  'CSSKeyframeRule': () => CssKeyframeRule.internalCreateCssKeyframeRule,
+  'CSSKeyframesRule': () => CssKeyframesRule.internalCreateCssKeyframesRule,
+  'CSSMediaRule': () => CssMediaRule.internalCreateCssMediaRule,
+  'CSSPageRule': () => CssPageRule.internalCreateCssPageRule,
+  'CSSPrimitiveValue': () => _CSSPrimitiveValue.internalCreate_CSSPrimitiveValue,
+  'CSSRule': () => CssRule.internalCreateCssRule,
+  'CSSRuleList': () => _CssRuleList.internalCreate_CssRuleList,
+  'CSSStyleDeclaration': () => CssStyleDeclaration.internalCreateCssStyleDeclaration,
+  'CSSStyleRule': () => CssStyleRule.internalCreateCssStyleRule,
+  'CSSStyleSheet': () => CssStyleSheet.internalCreateCssStyleSheet,
+  'CSSSupportsRule': () => CssSupportsRule.internalCreateCssSupportsRule,
+  'CSSUnknownRule': () => _CSSUnknownRule.internalCreate_CSSUnknownRule,
+  'CSSValue': () => _CSSValue.internalCreate_CSSValue,
+  'CSSValueList': () => _CssValueList.internalCreate_CssValueList,
+  'CSSViewportRule': () => CssViewportRule.internalCreateCssViewportRule,
+  'Cache': () => _Cache.internalCreate_Cache,
+  'CacheStorage': () => CacheStorage.internalCreateCacheStorage,
+  'Canvas2DContextAttributes': () => Canvas2DContextAttributes.internalCreateCanvas2DContextAttributes,
+  'CanvasGradient': () => CanvasGradient.internalCreateCanvasGradient,
+  'CanvasPattern': () => CanvasPattern.internalCreateCanvasPattern,
+  'CanvasRenderingContext2D': () => CanvasRenderingContext2D.internalCreateCanvasRenderingContext2D,
+  'CharacterData': () => CharacterData.internalCreateCharacterData,
+  'CircularGeofencingRegion': () => CircularGeofencingRegion.internalCreateCircularGeofencingRegion,
+  'ClientRect': () => _ClientRect.internalCreate_ClientRect,
+  'ClientRectList': () => _ClientRectList.internalCreate_ClientRectList,
+  'CloseEvent': () => CloseEvent.internalCreateCloseEvent,
+  'Comment': () => Comment.internalCreateComment,
+  'CompositionEvent': () => CompositionEvent.internalCreateCompositionEvent,
+  'Console': () => Console.internalCreateConsole,
+  'ConsoleBase': () => ConsoleBase.internalCreateConsoleBase,
+  'Coordinates': () => Coordinates.internalCreateCoordinates,
+  'Counter': () => _Counter.internalCreate_Counter,
+  'Credential': () => Credential.internalCreateCredential,
+  'CredentialsContainer': () => CredentialsContainer.internalCreateCredentialsContainer,
+  '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,
+  '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,
+  '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,
+  'GeofencingRegion': () => GeofencingRegion.internalCreateGeofencingRegion,
+  'Geolocation': () => Geolocation.internalCreateGeolocation,
+  'Geoposition': () => Geoposition.internalCreateGeoposition,
+  '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,
+  'InputMethodContext': () => InputMethodContext.internalCreateInputMethodContext,
+  'InstallEvent': () => InstallEvent.internalCreateInstallEvent,
+  'Iterator': () => DomIterator.internalCreateDomIterator,
+  'KeyboardEvent': () => KeyboardEvent.internalCreateKeyboardEvent,
+  'LocalCredential': () => LocalCredential.internalCreateLocalCredential,
+  '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,
+  'MediaError': () => MediaError.internalCreateMediaError,
+  'MediaKeyError': () => MediaKeyError.internalCreateMediaKeyError,
+  'MediaKeyEvent': () => MediaKeyEvent.internalCreateMediaKeyEvent,
+  'MediaKeyMessageEvent': () => MediaKeyMessageEvent.internalCreateMediaKeyMessageEvent,
+  'MediaKeyNeededEvent': () => MediaKeyNeededEvent.internalCreateMediaKeyNeededEvent,
+  'MediaKeySession': () => MediaKeySession.internalCreateMediaKeySession,
+  'MediaKeys': () => MediaKeys.internalCreateMediaKeys,
+  'MediaList': () => MediaList.internalCreateMediaList,
+  'MediaQueryList': () => MediaQueryList.internalCreateMediaQueryList,
+  'MediaQueryListEvent': () => MediaQueryListEvent.internalCreateMediaQueryListEvent,
+  '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,
+  'NavigatorUserMediaError': () => NavigatorUserMediaError.internalCreateNavigatorUserMediaError,
+  'NetworkInformation': () => NetworkInformation.internalCreateNetworkInformation,
+  'Node': () => Node.internalCreateNode,
+  'NodeFilter': () => NodeFilter.internalCreateNodeFilter,
+  'NodeIterator': () => NodeIterator.internalCreateNodeIterator,
+  'NodeList': () => NodeList.internalCreateNodeList,
+  'Notification': () => Notification.internalCreateNotification,
+  'OverflowEvent': () => OverflowEvent.internalCreateOverflowEvent,
+  'PagePopupController': () => _PagePopupController.internalCreate_PagePopupController,
+  'PageTransitionEvent': () => PageTransitionEvent.internalCreatePageTransitionEvent,
+  'Path2D': () => Path2D.internalCreatePath2D,
+  'Performance': () => Performance.internalCreatePerformance,
+  'PerformanceEntry': () => PerformanceEntry.internalCreatePerformanceEntry,
+  'PerformanceMark': () => PerformanceMark.internalCreatePerformanceMark,
+  'PerformanceMeasure': () => PerformanceMeasure.internalCreatePerformanceMeasure,
+  'PerformanceNavigation': () => PerformanceNavigation.internalCreatePerformanceNavigation,
+  'PerformanceResourceTiming': () => PerformanceResourceTiming.internalCreatePerformanceResourceTiming,
+  'PerformanceTiming': () => PerformanceTiming.internalCreatePerformanceTiming,
+  'Plugin': () => Plugin.internalCreatePlugin,
+  'PluginArray': () => PluginArray.internalCreatePluginArray,
+  'PluginPlaceholderElement': () => PluginPlaceholderElement.internalCreatePluginPlaceholderElement,
+  'PopStateEvent': () => PopStateEvent.internalCreatePopStateEvent,
+  'PositionError': () => PositionError.internalCreatePositionError,
+  'Presentation': () => Presentation.internalCreatePresentation,
+  'ProcessingInstruction': () => ProcessingInstruction.internalCreateProcessingInstruction,
+  'ProgressEvent': () => ProgressEvent.internalCreateProgressEvent,
+  'PushEvent': () => PushEvent.internalCreatePushEvent,
+  'PushManager': () => PushManager.internalCreatePushManager,
+  'PushRegistration': () => PushRegistration.internalCreatePushRegistration,
+  'RGBColor': () => _RGBColor.internalCreate_RGBColor,
+  '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,
+  'ReadableStream': () => ReadableStream.internalCreateReadableStream,
+  'Rect': () => _Rect.internalCreate_Rect,
+  'RelatedEvent': () => RelatedEvent.internalCreateRelatedEvent,
+  'Request': () => _Request.internalCreate_Request,
+  'ResourceProgressEvent': () => ResourceProgressEvent.internalCreateResourceProgressEvent,
+  'Response': () => _Response.internalCreate_Response,
+  'Screen': () => Screen.internalCreateScreen,
+  'ScreenOrientation': () => ScreenOrientation.internalCreateScreenOrientation,
+  'SecurityPolicyViolationEvent': () => SecurityPolicyViolationEvent.internalCreateSecurityPolicyViolationEvent,
+  'Selection': () => Selection.internalCreateSelection,
+  'ServiceWorker': () => _ServiceWorker.internalCreate_ServiceWorker,
+  'ServiceWorkerClient': () => ServiceWorkerClient.internalCreateServiceWorkerClient,
+  'ServiceWorkerClients': () => ServiceWorkerClients.internalCreateServiceWorkerClients,
+  'ServiceWorkerContainer': () => ServiceWorkerContainer.internalCreateServiceWorkerContainer,
+  'ServiceWorkerGlobalScope': () => ServiceWorkerGlobalScope.internalCreateServiceWorkerGlobalScope,
+  'ServiceWorkerRegistration': () => ServiceWorkerRegistration.internalCreateServiceWorkerRegistration,
+  'ShadowRoot': () => ShadowRoot.internalCreateShadowRoot,
+  '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,
+  '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,
+  'Text': () => Text.internalCreateText,
+  'TextEvent': () => TextEvent.internalCreateTextEvent,
+  'TextMetrics': () => TextMetrics.internalCreateTextMetrics,
+  'TextTrack': () => TextTrack.internalCreateTextTrack,
+  'TextTrackCue': () => TextTrackCue.internalCreateTextTrackCue,
+  'TextTrackCueList': () => TextTrackCueList.internalCreateTextTrackCueList,
+  'TextTrackList': () => TextTrackList.internalCreateTextTrackList,
+  'TimeRanges': () => TimeRanges.internalCreateTimeRanges,
+  'Timing': () => Timing.internalCreateTiming,
+  'Touch': () => Touch.internalCreateTouch,
+  'TouchEvent': () => TouchEvent.internalCreateTouchEvent,
+  'TouchList': () => TouchList.internalCreateTouchList,
+  'TrackEvent': () => TrackEvent.internalCreateTrackEvent,
+  'TransitionEvent': () => TransitionEvent.internalCreateTransitionEvent,
+  'TreeWalker': () => TreeWalker.internalCreateTreeWalker,
+  'UIEvent': () => UIEvent.internalCreateUIEvent,
+  'URL': () => Url.internalCreateUrl,
+  'VTTCue': () => VttCue.internalCreateVttCue,
+  'VTTRegion': () => VttRegion.internalCreateVttRegion,
+  'VTTRegionList': () => VttRegionList.internalCreateVttRegionList,
+  'ValidityState': () => ValidityState.internalCreateValidityState,
+  'VideoPlaybackQuality': () => VideoPlaybackQuality.internalCreateVideoPlaybackQuality,
+  'VideoTrack': () => VideoTrack.internalCreateVideoTrack,
+  'VideoTrackList': () => VideoTrackList.internalCreateVideoTrackList,
+  'WebKitAnimationEvent': () => AnimationEvent.internalCreateAnimationEvent,
+  'WebKitCSSFilterRule': () => CssFilterRule.internalCreateCssFilterRule,
+  'WebKitCSSFilterValue': () => _WebKitCSSFilterValue.internalCreate_WebKitCSSFilterValue,
+  'WebKitCSSMatrix': () => _WebKitCSSMatrix.internalCreate_WebKitCSSMatrix,
+  'WebKitCSSTransformValue': () => _WebKitCSSTransformValue.internalCreate_WebKitCSSTransformValue,
+  'WebSocket': () => WebSocket.internalCreateWebSocket,
+  'WheelEvent': () => WheelEvent.internalCreateWheelEvent,
+  'Window': () => Window.internalCreateWindow,
+  '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,
 
-unwrap_jso(dartClass_instance) => dartClass_instance;
-wrap_jso(jsObject) => jsObject;
-wrap_jso_list(jso_nodes) => jso_nodes;
-make_dart_rectangle(r) => r;
+};
+
+// TODO(terry): We may want to move this elsewhere if html becomes
+// a package to avoid dartium depending on pkg:html.
+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;
+}
+
+
+/******************************************************************************
+ **********                                                          **********
+ **********                    JS Interop Support                    **********
+ **********                                                          **********
+ ******************************************************************************/
+
+Rectangle make_dart_rectangle(r) =>
+    r == null ? null : new Rectangle(r['left'], r['top'], r['width'], r['height']);
+
+// Need a default constructor for constructing classes with mixins that are
+// also extending NativeFieldWrapperClass2.  Defining JsoNativeFieldWrapper
+// extending NativeFieldWrapperClass2 creates a default constructor.
+class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {}
+
+// Flag to disable JS interop asserts.  Setting to false will speed up the
+// wrap_jso calls.
+bool __interop_checks = true;
+
+/** Expando for JsObject, used by every Dart class associated with a Javascript
+ *  class (e.g., DOM, WebAudio, etc.).
+ */
+
+/**
+ * Return the JsObject associated with a Dart class [dartClass_instance].
+ */
+unwrap_jso(dartClass_instance) {
+  try {
+    if (dartClass_instance != null)
+      return dartClass_instance is NativeFieldWrapperClass2 ?
+          dartClass_instance.blink_jsObject : dartClass_instance;
+    else
+      return null;
+  } catch(NoSuchMethodException) {
+    // No blink_jsObject then return the dartClass_instance is probably an
+    // array that was already converted to a Dart class e.g., Uint8ClampedList.
+    return dartClass_instance;
+  }
+}
+
+/**
+ * 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(jsObject) {
+  try {
+    if (jsObject is! js.JsObject) {
+      // JS Interop converted the object to a Dart class e.g., Uint8ClampedList.
+      return jsObject;
+    }
+    // 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;
+    }
+    var constructor = jsObject['constructor'];
+    if (__interop_checks) {
+      debug_or_assert("constructor != null", constructor != null);
+    }
+    var jsTypeName = constructor['name'];
+    if (__interop_checks) {
+      debug_or_assert("constructor != null && jsTypeName.length > 0", constructor != null && jsTypeName.length > 0);
+    }
+
+    var dartClass_instance;
+    if (jsObject.hasProperty('dart_class')) {
+      // Got a dart_class (it's a custom element) use it it's already set up.
+      dartClass_instance = jsObject['dart_class'];
+    } else {
+      var func = getHtmlCreateFunction(jsTypeName);
+      if (func != null) {
+        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}");
+    }
+  }
+
+  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;
+  }
+}
+
+class DebugAssertException implements Exception {
+  String message;
+  DebugAssertException(this.message);
+}
+
+debug_or_assert(message, expression) {
+  if (!expression) {
+    throw new DebugAssertException("$message");
+  }
+}
+
+// TODO(terry): Manage JS interop JsFunctions for each listener used for add/
+//              removeEventListener.  These JsFunctions will leak look at
+//              fixing with weak-refs in C++.  The key are the hashcodes of the
+//              user's this (this is needed for futures) and listener function.
+Map<int, Map<int, js.JsFunction>> _knownListeners = {};
+
+js.JsFunction wrap_event_listener(theObject, Function listener) {
+  var thisHashCode = theObject.hashCode;
+  var listenerHashCode = identityHashCode(listener);
+
+  _knownListeners.putIfAbsent(thisHashCode, () => new Map<int, js.JsFunction>());
+  _knownListeners[thisHashCode].putIfAbsent(listenerHashCode, () =>
+    new js.JsFunction.withThis((theObject, event) => listener(wrap_jso(event))));
+
+  return _knownListeners[thisHashCode][listenerHashCode];
+}
+
+Map<String, dynamic> convertNativeObjectToDartMap(js.JsObject jsObject) {
+  var result = new Map();
+  var keys = js.context['Object'].callMethod('keys', [jsObject]);
+  for (var key in keys) {
+    result[key] = wrap_jso(jsObject[key]);
+  }
+  return result;
+}
+
+// Converts a flat Dart map into a JavaScript object with properties this is
+// is the Dartium only version it uses dart:js.
+// TODO(alanknight): This could probably be unified with the dart2js conversions
+// code in html_common and be more general.
+convertDartToNative_Dictionary(Map dict) {
+  if (dict == null) return null;
+  var jsObject = new js.JsObject(js.context['Object']);
+  dict.forEach((String key, value) {
+    if (value is List) {
+      var jsArray = new js.JsArray();
+      value.forEach((elem) {
+        jsArray.add(elem is Map ? convertDartToNative_Dictionary(elem): elem);
+      });
+      jsObject[key] = jsArray;
+    } else {
+      jsObject[key] = value;
+    }
+  });
+  return jsObject;
+}
+
+// Converts a Dart list into a JsArray. For the Dartium version only.
+convertDartToNative_List(List input) => new js.JsArray()..addAll(input);
+
+// Conversion function place holder (currently not used in dart2js or dartium).
+List convertDartToNative_StringArray(List<String> input) => input;
+
 // 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.
@@ -670,6 +1339,18 @@
     if (href != null) e.href = href;
     return e;
   }
+
+
+  static AnchorElement internalCreateAnchorElement() {
+    return new AnchorElement._internalWrap();
+  }
+
+  factory AnchorElement._internalWrap() {
+    return new AnchorElement.internal_();
+  }
+
+  AnchorElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -683,7 +1364,7 @@
   
   @DomName('HTMLAnchorElement.download')
   @DocsEditable()
-  void set download(String value) => _blink.BlinkHTMLAnchorElement.instance.download_Setter_(unwrap_jso(this), value);
+  set download(String value) => _blink.BlinkHTMLAnchorElement.instance.download_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.hreflang')
   @DocsEditable()
@@ -691,7 +1372,7 @@
   
   @DomName('HTMLAnchorElement.hreflang')
   @DocsEditable()
-  void set hreflang(String value) => _blink.BlinkHTMLAnchorElement.instance.hreflang_Setter_(unwrap_jso(this), value);
+  set hreflang(String value) => _blink.BlinkHTMLAnchorElement.instance.hreflang_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.integrity')
   @DocsEditable()
@@ -701,7 +1382,7 @@
   @DomName('HTMLAnchorElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLAnchorElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLAnchorElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.rel')
   @DocsEditable()
@@ -709,7 +1390,7 @@
   
   @DomName('HTMLAnchorElement.rel')
   @DocsEditable()
-  void set rel(String value) => _blink.BlinkHTMLAnchorElement.instance.rel_Setter_(unwrap_jso(this), value);
+  set rel(String value) => _blink.BlinkHTMLAnchorElement.instance.rel_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.target')
   @DocsEditable()
@@ -717,7 +1398,7 @@
   
   @DomName('HTMLAnchorElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLAnchorElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLAnchorElement.instance.target_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.type')
   @DocsEditable()
@@ -725,7 +1406,7 @@
   
   @DomName('HTMLAnchorElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLAnchorElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLAnchorElement.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.hash')
   @DocsEditable()
@@ -733,7 +1414,7 @@
   
   @DomName('HTMLAnchorElement.hash')
   @DocsEditable()
-  void set hash(String value) => _blink.BlinkHTMLAnchorElement.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkHTMLAnchorElement.instance.hash_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.host')
   @DocsEditable()
@@ -741,7 +1422,7 @@
   
   @DomName('HTMLAnchorElement.host')
   @DocsEditable()
-  void set host(String value) => _blink.BlinkHTMLAnchorElement.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkHTMLAnchorElement.instance.host_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.hostname')
   @DocsEditable()
@@ -749,7 +1430,7 @@
   
   @DomName('HTMLAnchorElement.hostname')
   @DocsEditable()
-  void set hostname(String value) => _blink.BlinkHTMLAnchorElement.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkHTMLAnchorElement.instance.hostname_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.href')
   @DocsEditable()
@@ -757,7 +1438,7 @@
   
   @DomName('HTMLAnchorElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLAnchorElement.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkHTMLAnchorElement.instance.href_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.origin')
   @DocsEditable()
@@ -773,7 +1454,7 @@
   @DomName('HTMLAnchorElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value) => _blink.BlinkHTMLAnchorElement.instance.password_Setter_(unwrap_jso(this), value);
+  set password(String value) => _blink.BlinkHTMLAnchorElement.instance.password_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.pathname')
   @DocsEditable()
@@ -781,7 +1462,7 @@
   
   @DomName('HTMLAnchorElement.pathname')
   @DocsEditable()
-  void set pathname(String value) => _blink.BlinkHTMLAnchorElement.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkHTMLAnchorElement.instance.pathname_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.port')
   @DocsEditable()
@@ -789,7 +1470,7 @@
   
   @DomName('HTMLAnchorElement.port')
   @DocsEditable()
-  void set port(String value) => _blink.BlinkHTMLAnchorElement.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkHTMLAnchorElement.instance.port_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.protocol')
   @DocsEditable()
@@ -797,7 +1478,7 @@
   
   @DomName('HTMLAnchorElement.protocol')
   @DocsEditable()
-  void set protocol(String value) => _blink.BlinkHTMLAnchorElement.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkHTMLAnchorElement.instance.protocol_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.search')
   @DocsEditable()
@@ -805,7 +1486,7 @@
   
   @DomName('HTMLAnchorElement.search')
   @DocsEditable()
-  void set search(String value) => _blink.BlinkHTMLAnchorElement.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkHTMLAnchorElement.instance.search_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.username')
   @DocsEditable()
@@ -815,7 +1496,7 @@
   @DomName('HTMLAnchorElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value) => _blink.BlinkHTMLAnchorElement.instance.username_Setter_(unwrap_jso(this), value);
+  set username(String value) => _blink.BlinkHTMLAnchorElement.instance.username_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAnchorElement.toString')
   @DocsEditable()
@@ -840,17 +1521,30 @@
   @DocsEditable()
   factory Animation(Element target, List<Map> keyframes, [timingInput]) {
     if ((keyframes is List<Map> || keyframes == null) && (target is Element || target == null) && timingInput == null) {
-      return _blink.BlinkAnimation.instance.constructorCallback_2_(target, keyframes);
+      return wrap_jso(_blink.BlinkAnimation.instance.constructorCallback_2_(target, keyframes));
     }
     if ((timingInput is num || timingInput == null) && (keyframes is List<Map> || keyframes == null) && (target is Element || target == null)) {
-      return _blink.BlinkAnimation.instance.constructorCallback_3_(target, keyframes, timingInput);
+      return wrap_jso(_blink.BlinkAnimation.instance.constructorCallback_3_(target, keyframes, timingInput));
     }
     if ((timingInput is Map || timingInput == null) && (keyframes is List<Map> || keyframes == null) && (target is Element || target == null)) {
-      return _blink.BlinkAnimation.instance.constructorCallback_3_(target, keyframes, timingInput);
+      var timingInput_1 = convertDartToNative_Dictionary(timingInput);
+      return wrap_jso(_blink.BlinkAnimation.instance.constructorCallback_3_(target, keyframes, timingInput_1));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+
+  static Animation internalCreateAnimation() {
+    return new Animation._internalWrap();
+  }
+
+  factory Animation._internalWrap() {
+    return new Animation.internal_();
+  }
+
+  Animation.internal_() : super.internal_();
+
+
 }
 // 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
@@ -866,6 +1560,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationEffect._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimationEffect internalCreateAnimationEffect() {
+    return new AnimationEffect._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimationEffect._internalWrap() {
+    return new AnimationEffect.internal_();
+  }
+
+  AnimationEffect.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
@@ -883,13 +1592,25 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AnimationEvent internalCreateAnimationEvent() {
+    return new AnimationEvent._internalWrap();
+  }
+
+  factory AnimationEvent._internalWrap() {
+    return new AnimationEvent.internal_();
+  }
+
+  AnimationEvent.internal_() : super.internal_();
+
+
   @DomName('WebKitAnimationEvent.animationName')
   @DocsEditable()
   String get animationName => _blink.BlinkWebKitAnimationEvent.instance.animationName_Getter_(unwrap_jso(this));
   
   @DomName('WebKitAnimationEvent.elapsedTime')
   @DocsEditable()
-  double get elapsedTime => _blink.BlinkWebKitAnimationEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
+  num get elapsedTime => _blink.BlinkWebKitAnimationEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -906,10 +1627,25 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationNode._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimationNode internalCreateAnimationNode() {
+    return new AnimationNode._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimationNode._internalWrap() {
+    return new AnimationNode.internal_();
+  }
+
+  AnimationNode.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('AnimationNode.activeDuration')
   @DocsEditable()
   @Experimental() // untriaged
-  double get activeDuration => _blink.BlinkAnimationNode.instance.activeDuration_Getter_(unwrap_jso(this));
+  num get activeDuration => _blink.BlinkAnimationNode.instance.activeDuration_Getter_(unwrap_jso(this));
   
   @DomName('AnimationNode.currentIteration')
   @DocsEditable()
@@ -919,17 +1655,17 @@
   @DomName('AnimationNode.duration')
   @DocsEditable()
   @Experimental() // untriaged
-  double get duration => _blink.BlinkAnimationNode.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkAnimationNode.instance.duration_Getter_(unwrap_jso(this));
   
   @DomName('AnimationNode.endTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get endTime => _blink.BlinkAnimationNode.instance.endTime_Getter_(unwrap_jso(this));
+  num get endTime => _blink.BlinkAnimationNode.instance.endTime_Getter_(unwrap_jso(this));
   
   @DomName('AnimationNode.localTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get localTime => _blink.BlinkAnimationNode.instance.localTime_Getter_(unwrap_jso(this));
+  num get localTime => _blink.BlinkAnimationNode.instance.localTime_Getter_(unwrap_jso(this));
   
   @DomName('AnimationNode.player')
   @DocsEditable()
@@ -939,7 +1675,7 @@
   @DomName('AnimationNode.startTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get startTime => _blink.BlinkAnimationNode.instance.startTime_Getter_(unwrap_jso(this));
+  num get startTime => _blink.BlinkAnimationNode.instance.startTime_Getter_(unwrap_jso(this));
   
   @DomName('AnimationNode.timing')
   @DocsEditable()
@@ -961,6 +1697,18 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationPlayer._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AnimationPlayer internalCreateAnimationPlayer() {
+    return new AnimationPlayer._internalWrap();
+  }
+
+  factory AnimationPlayer._internalWrap() {
+    return new AnimationPlayer.internal_();
+  }
+
+  AnimationPlayer.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -972,7 +1720,7 @@
   @DomName('AnimationPlayer.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  void set currentTime(num value) => _blink.BlinkAnimationPlayer.instance.currentTime_Setter_(unwrap_jso(this), value);
+  set currentTime(num value) => _blink.BlinkAnimationPlayer.instance.currentTime_Setter_(unwrap_jso(this), value);
   
   @DomName('AnimationPlayer.playState')
   @DocsEditable()
@@ -987,7 +1735,7 @@
   @DomName('AnimationPlayer.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  void set playbackRate(num value) => _blink.BlinkAnimationPlayer.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkAnimationPlayer.instance.playbackRate_Setter_(unwrap_jso(this), value);
   
   @DomName('AnimationPlayer.source')
   @DocsEditable()
@@ -997,7 +1745,7 @@
   @DomName('AnimationPlayer.source')
   @DocsEditable()
   @Experimental() // untriaged
-  void set source(AnimationNode value) => _blink.BlinkAnimationPlayer.instance.source_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set source(AnimationNode value) => _blink.BlinkAnimationPlayer.instance.source_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('AnimationPlayer.startTime')
   @DocsEditable()
@@ -1007,7 +1755,7 @@
   @DomName('AnimationPlayer.startTime')
   @DocsEditable()
   @Experimental() // untriaged
-  void set startTime(num value) => _blink.BlinkAnimationPlayer.instance.startTime_Setter_(unwrap_jso(this), value);
+  set startTime(num value) => _blink.BlinkAnimationPlayer.instance.startTime_Setter_(unwrap_jso(this), value);
   
   @DomName('AnimationPlayer.cancel')
   @DocsEditable()
@@ -1049,15 +1797,27 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationPlayerEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AnimationPlayerEvent internalCreateAnimationPlayerEvent() {
+    return new AnimationPlayerEvent._internalWrap();
+  }
+
+  factory AnimationPlayerEvent._internalWrap() {
+    return new AnimationPlayerEvent.internal_();
+  }
+
+  AnimationPlayerEvent.internal_() : super.internal_();
+
+
   @DomName('AnimationPlayerEvent.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get currentTime => _blink.BlinkAnimationPlayerEvent.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkAnimationPlayerEvent.instance.currentTime_Getter_(unwrap_jso(this));
   
   @DomName('AnimationPlayerEvent.timelineTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get timelineTime => _blink.BlinkAnimationPlayerEvent.instance.timelineTime_Getter_(unwrap_jso(this));
+  num get timelineTime => _blink.BlinkAnimationPlayerEvent.instance.timelineTime_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1074,15 +1834,30 @@
   // To suppress missing implicit constructor warnings.
   factory AnimationTimeline._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimationTimeline internalCreateAnimationTimeline() {
+    return new AnimationTimeline._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimationTimeline._internalWrap() {
+    return new AnimationTimeline.internal_();
+  }
+
+  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
-  double get currentTime => _blink.BlinkAnimationTimeline.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkAnimationTimeline.instance.currentTime_Getter_(unwrap_jso(this));
   
   @DomName('AnimationTimeline.getAnimationPlayers')
   @DocsEditable()
   @Experimental() // untriaged
-  List<AnimationPlayer> getAnimationPlayers() => _blink.BlinkAnimationTimeline.instance.getAnimationPlayers_Callback_0_(unwrap_jso(this));
+  List<AnimationPlayer> getAnimationPlayers() => wrap_jso(_blink.BlinkAnimationTimeline.instance.getAnimationPlayers_Callback_0_(unwrap_jso(this)));
   
   @DomName('AnimationTimeline.play')
   @DocsEditable()
@@ -1192,6 +1967,18 @@
   @DocsEditable()
   static const EventStreamProvider<Event> updateReadyEvent = const EventStreamProvider<Event>('updateready');
 
+
+  static ApplicationCache internalCreateApplicationCache() {
+    return new ApplicationCache._internalWrap();
+  }
+
+  factory ApplicationCache._internalWrap() {
+    return new ApplicationCache.internal_();
+  }
+
+  ApplicationCache.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -1290,6 +2077,18 @@
   // To suppress missing implicit constructor warnings.
   factory ApplicationCacheErrorEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ApplicationCacheErrorEvent internalCreateApplicationCacheErrorEvent() {
+    return new ApplicationCacheErrorEvent._internalWrap();
+  }
+
+  factory ApplicationCacheErrorEvent._internalWrap() {
+    return new ApplicationCacheErrorEvent.internal_();
+  }
+
+  ApplicationCacheErrorEvent.internal_() : super.internal_();
+
+
   @DomName('ApplicationCacheErrorEvent.message')
   @DocsEditable()
   @Experimental() // untriaged
@@ -1337,6 +2136,18 @@
   @DomName('HTMLAreaElement.HTMLAreaElement')
   @DocsEditable()
   factory AreaElement() => document.createElement("area");
+
+
+  static AreaElement internalCreateAreaElement() {
+    return new AreaElement._internalWrap();
+  }
+
+  factory AreaElement._internalWrap() {
+    return new AreaElement.internal_();
+  }
+
+  AreaElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1350,7 +2161,7 @@
   
   @DomName('HTMLAreaElement.alt')
   @DocsEditable()
-  void set alt(String value) => _blink.BlinkHTMLAreaElement.instance.alt_Setter_(unwrap_jso(this), value);
+  set alt(String value) => _blink.BlinkHTMLAreaElement.instance.alt_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.coords')
   @DocsEditable()
@@ -1358,7 +2169,7 @@
   
   @DomName('HTMLAreaElement.coords')
   @DocsEditable()
-  void set coords(String value) => _blink.BlinkHTMLAreaElement.instance.coords_Setter_(unwrap_jso(this), value);
+  set coords(String value) => _blink.BlinkHTMLAreaElement.instance.coords_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.shape')
   @DocsEditable()
@@ -1366,7 +2177,7 @@
   
   @DomName('HTMLAreaElement.shape')
   @DocsEditable()
-  void set shape(String value) => _blink.BlinkHTMLAreaElement.instance.shape_Setter_(unwrap_jso(this), value);
+  set shape(String value) => _blink.BlinkHTMLAreaElement.instance.shape_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.target')
   @DocsEditable()
@@ -1374,7 +2185,7 @@
   
   @DomName('HTMLAreaElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLAreaElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLAreaElement.instance.target_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.hash')
   @DocsEditable()
@@ -1382,7 +2193,7 @@
   
   @DomName('HTMLAreaElement.hash')
   @DocsEditable()
-  void set hash(String value) => _blink.BlinkHTMLAreaElement.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkHTMLAreaElement.instance.hash_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.host')
   @DocsEditable()
@@ -1390,7 +2201,7 @@
   
   @DomName('HTMLAreaElement.host')
   @DocsEditable()
-  void set host(String value) => _blink.BlinkHTMLAreaElement.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkHTMLAreaElement.instance.host_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.hostname')
   @DocsEditable()
@@ -1398,7 +2209,7 @@
   
   @DomName('HTMLAreaElement.hostname')
   @DocsEditable()
-  void set hostname(String value) => _blink.BlinkHTMLAreaElement.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkHTMLAreaElement.instance.hostname_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.href')
   @DocsEditable()
@@ -1406,7 +2217,7 @@
   
   @DomName('HTMLAreaElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLAreaElement.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkHTMLAreaElement.instance.href_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.origin')
   @DocsEditable()
@@ -1421,7 +2232,7 @@
   @DomName('HTMLAreaElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value) => _blink.BlinkHTMLAreaElement.instance.password_Setter_(unwrap_jso(this), value);
+  set password(String value) => _blink.BlinkHTMLAreaElement.instance.password_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.pathname')
   @DocsEditable()
@@ -1429,7 +2240,7 @@
   
   @DomName('HTMLAreaElement.pathname')
   @DocsEditable()
-  void set pathname(String value) => _blink.BlinkHTMLAreaElement.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkHTMLAreaElement.instance.pathname_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.port')
   @DocsEditable()
@@ -1437,7 +2248,7 @@
   
   @DomName('HTMLAreaElement.port')
   @DocsEditable()
-  void set port(String value) => _blink.BlinkHTMLAreaElement.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkHTMLAreaElement.instance.port_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.protocol')
   @DocsEditable()
@@ -1445,7 +2256,7 @@
   
   @DomName('HTMLAreaElement.protocol')
   @DocsEditable()
-  void set protocol(String value) => _blink.BlinkHTMLAreaElement.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkHTMLAreaElement.instance.protocol_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.search')
   @DocsEditable()
@@ -1453,7 +2264,7 @@
   
   @DomName('HTMLAreaElement.search')
   @DocsEditable()
-  void set search(String value) => _blink.BlinkHTMLAreaElement.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkHTMLAreaElement.instance.search_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.username')
   @DocsEditable()
@@ -1463,7 +2274,7 @@
   @DomName('HTMLAreaElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value) => _blink.BlinkHTMLAreaElement.instance.username_Setter_(unwrap_jso(this), value);
+  set username(String value) => _blink.BlinkHTMLAreaElement.instance.username_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLAreaElement.toString')
   @DocsEditable()
@@ -1475,20 +2286,28 @@
 // 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.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('HTMLAudioElement')
 class AudioElement extends MediaElement {
-  // To suppress missing implicit constructor warnings.
-  factory AudioElement._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('HTMLAudioElement.HTMLAudioElement')
   @DocsEditable()
-  factory AudioElement([String src]) {
-    return _blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src);
+  factory AudioElement._([String src]) {
+    return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src));
   }
+
+
+  static AudioElement internalCreateAudioElement() {
+    return new AudioElement._internalWrap();
+  }
+
+  factory AudioElement._internalWrap() {
+    return new AudioElement.internal_();
+  }
+
+  AudioElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1496,6 +2315,12 @@
    */
   AudioElement.created() : super.created();
 
+  factory AudioElement([String src]) {
+    if (src == null)
+      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_0_());
+    else
+      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src));
+  }
 }
 // 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
@@ -1511,6 +2336,21 @@
   // To suppress missing implicit constructor warnings.
   factory AudioTrack._() { throw new UnsupportedError("Not supported"); }
 
+  static AudioTrack internalCreateAudioTrack() {
+    return new AudioTrack._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AudioTrack._internalWrap() {
+    return new AudioTrack.internal_();
+  }
+
+  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
@@ -1519,7 +2359,7 @@
   @DomName('AudioTrack.enabled')
   @DocsEditable()
   @Experimental() // untriaged
-  void set enabled(bool value) => _blink.BlinkAudioTrack.instance.enabled_Setter_(unwrap_jso(this), value);
+  set enabled(bool value) => _blink.BlinkAudioTrack.instance.enabled_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioTrack.id')
   @DocsEditable()
@@ -1561,6 +2401,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> changeEvent = const EventStreamProvider<Event>('change');
 
+
+  static AudioTrackList internalCreateAudioTrackList() {
+    return new AudioTrackList._internalWrap();
+  }
+
+  factory AudioTrackList._internalWrap() {
+    return new AudioTrackList.internal_();
+  }
+
+  AudioTrackList.internal_() : super.internal_();
+
+
   @DomName('AudioTrackList.length')
   @DocsEditable()
   @Experimental() // untriaged
@@ -1597,6 +2449,18 @@
   // To suppress missing implicit constructor warnings.
   factory AutocompleteErrorEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AutocompleteErrorEvent internalCreateAutocompleteErrorEvent() {
+    return new AutocompleteErrorEvent._internalWrap();
+  }
+
+  factory AutocompleteErrorEvent._internalWrap() {
+    return new AutocompleteErrorEvent.internal_();
+  }
+
+  AutocompleteErrorEvent.internal_() : super.internal_();
+
+
   @DomName('AutocompleteErrorEvent.reason')
   @DocsEditable()
   String get reason => _blink.BlinkAutocompleteErrorEvent.instance.reason_Getter_(unwrap_jso(this));
@@ -1618,6 +2482,18 @@
   @DomName('HTMLBRElement.HTMLBRElement')
   @DocsEditable()
   factory BRElement() => document.createElement("br");
+
+
+  static BRElement internalCreateBRElement() {
+    return new BRElement._internalWrap();
+  }
+
+  factory BRElement._internalWrap() {
+    return new BRElement.internal_();
+  }
+
+  BRElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1641,6 +2517,21 @@
   // To suppress missing implicit constructor warnings.
   factory BarProp._() { throw new UnsupportedError("Not supported"); }
 
+  static BarProp internalCreateBarProp() {
+    return new BarProp._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory BarProp._internalWrap() {
+    return new BarProp.internal_();
+  }
+
+  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));
@@ -1662,6 +2553,18 @@
   @DomName('HTMLBaseElement.HTMLBaseElement')
   @DocsEditable()
   factory BaseElement() => document.createElement("base");
+
+
+  static BaseElement internalCreateBaseElement() {
+    return new BaseElement._internalWrap();
+  }
+
+  factory BaseElement._internalWrap() {
+    return new BaseElement.internal_();
+  }
+
+  BaseElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1675,7 +2578,7 @@
   
   @DomName('HTMLBaseElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLBaseElement.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkHTMLBaseElement.instance.href_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLBaseElement.target')
   @DocsEditable()
@@ -1683,7 +2586,7 @@
   
   @DomName('HTMLBaseElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLBaseElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLBaseElement.instance.target_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1701,21 +2604,33 @@
   // To suppress missing implicit constructor warnings.
   factory BatteryManager._() { throw new UnsupportedError("Not supported"); }
 
+
+  static BatteryManager internalCreateBatteryManager() {
+    return new BatteryManager._internalWrap();
+  }
+
+  factory BatteryManager._internalWrap() {
+    return new BatteryManager.internal_();
+  }
+
+  BatteryManager.internal_() : super.internal_();
+
+
   @DomName('BatteryManager.charging')
   @DocsEditable()
   bool get charging => _blink.BlinkBatteryManager.instance.charging_Getter_(unwrap_jso(this));
   
   @DomName('BatteryManager.chargingTime')
   @DocsEditable()
-  double get chargingTime => _blink.BlinkBatteryManager.instance.chargingTime_Getter_(unwrap_jso(this));
+  num get chargingTime => _blink.BlinkBatteryManager.instance.chargingTime_Getter_(unwrap_jso(this));
   
   @DomName('BatteryManager.dischargingTime')
   @DocsEditable()
-  double get dischargingTime => _blink.BlinkBatteryManager.instance.dischargingTime_Getter_(unwrap_jso(this));
+  num get dischargingTime => _blink.BlinkBatteryManager.instance.dischargingTime_Getter_(unwrap_jso(this));
   
   @DomName('BatteryManager.level')
   @DocsEditable()
-  double get level => _blink.BlinkBatteryManager.instance.level_Getter_(unwrap_jso(this));
+  num get level => _blink.BlinkBatteryManager.instance.level_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1731,13 +2646,25 @@
   // To suppress missing implicit constructor warnings.
   factory BeforeUnloadEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static BeforeUnloadEvent internalCreateBeforeUnloadEvent() {
+    return new BeforeUnloadEvent._internalWrap();
+  }
+
+  factory BeforeUnloadEvent._internalWrap() {
+    return new BeforeUnloadEvent.internal_();
+  }
+
+  BeforeUnloadEvent.internal_() : super.internal_();
+
+
   @DomName('BeforeUnloadEvent.returnValue')
   @DocsEditable()
   String get returnValue => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Getter_(unwrap_jso(this));
   
   @DomName('BeforeUnloadEvent.returnValue')
   @DocsEditable()
-  void set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Setter_(unwrap_jso(this), value);
+  set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1750,12 +2677,20 @@
   // To suppress missing implicit constructor warnings.
   factory Blob._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('Blob.Blob')
-  @DocsEditable()
-  factory Blob(List blobParts, [String type, String endings]) => wrap_jso(_create(blobParts, type, endings));
+  static Blob internalCreateBlob() {
+    return new Blob._internalWrap();
+  }
 
-  @DocsEditable()
-  static Blob _create(blobParts, type, endings) => _blink.BlinkBlob.instance.constructorCallback_3_(blobParts, type, endings);
+  js.JsObject blink_jsObject;
+
+  factory Blob._internalWrap() {
+    return new Blob.internal_();
+  }
+
+  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()
@@ -1783,6 +2718,20 @@
     return wrap_jso(_blink.BlinkBlob.instance.slice_Callback_0_(unwrap_jso(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());
+    if (type == null && endings == null) {
+      return wrap_jso(_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)));
+  }
 }
 // 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
@@ -1798,6 +2747,21 @@
   // To suppress missing implicit constructor warnings.
   factory Body._() { throw new UnsupportedError("Not supported"); }
 
+  static Body internalCreateBody() {
+    return new Body._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Body._internalWrap() {
+    return new Body.internal_();
+  }
+
+  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
@@ -1806,22 +2770,22 @@
   @DomName('Body.arrayBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  Future arrayBuffer() => _blink.BlinkBody.instance.arrayBuffer_Callback_0_(unwrap_jso(this));
+  Future arrayBuffer() => wrap_jso(_blink.BlinkBody.instance.arrayBuffer_Callback_0_(unwrap_jso(this)));
   
   @DomName('Body.blob')
   @DocsEditable()
   @Experimental() // untriaged
-  Future blob() => _blink.BlinkBody.instance.blob_Callback_0_(unwrap_jso(this));
+  Future blob() => wrap_jso(_blink.BlinkBody.instance.blob_Callback_0_(unwrap_jso(this)));
   
   @DomName('Body.json')
   @DocsEditable()
   @Experimental() // untriaged
-  Future json() => _blink.BlinkBody.instance.json_Callback_0_(unwrap_jso(this));
+  Future json() => wrap_jso(_blink.BlinkBody.instance.json_Callback_0_(unwrap_jso(this)));
   
   @DomName('Body.text')
   @DocsEditable()
   @Experimental() // untriaged
-  Future text() => _blink.BlinkBody.instance.text_Callback_0_(unwrap_jso(this));
+  Future text() => wrap_jso(_blink.BlinkBody.instance.text_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1965,6 +2929,18 @@
   @DomName('HTMLBodyElement.HTMLBodyElement')
   @DocsEditable()
   factory BodyElement() => document.createElement("body");
+
+
+  static BodyElement internalCreateBodyElement() {
+    return new BodyElement._internalWrap();
+  }
+
+  factory BodyElement._internalWrap() {
+    return new BodyElement.internal_();
+  }
+
+  BodyElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2054,6 +3030,18 @@
   @DomName('HTMLButtonElement.HTMLButtonElement')
   @DocsEditable()
   factory ButtonElement() => document.createElement("button");
+
+
+  static ButtonElement internalCreateButtonElement() {
+    return new ButtonElement._internalWrap();
+  }
+
+  factory ButtonElement._internalWrap() {
+    return new ButtonElement.internal_();
+  }
+
+  ButtonElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2067,7 +3055,7 @@
   
   @DomName('HTMLButtonElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLButtonElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLButtonElement.instance.autofocus_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.disabled')
   @DocsEditable()
@@ -2075,7 +3063,7 @@
   
   @DomName('HTMLButtonElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLButtonElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLButtonElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.form')
   @DocsEditable()
@@ -2087,7 +3075,7 @@
   
   @DomName('HTMLButtonElement.formAction')
   @DocsEditable()
-  void set formAction(String value) => _blink.BlinkHTMLButtonElement.instance.formAction_Setter_(unwrap_jso(this), value);
+  set formAction(String value) => _blink.BlinkHTMLButtonElement.instance.formAction_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.formEnctype')
   @DocsEditable()
@@ -2095,7 +3083,7 @@
   
   @DomName('HTMLButtonElement.formEnctype')
   @DocsEditable()
-  void set formEnctype(String value) => _blink.BlinkHTMLButtonElement.instance.formEnctype_Setter_(unwrap_jso(this), value);
+  set formEnctype(String value) => _blink.BlinkHTMLButtonElement.instance.formEnctype_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.formMethod')
   @DocsEditable()
@@ -2103,7 +3091,7 @@
   
   @DomName('HTMLButtonElement.formMethod')
   @DocsEditable()
-  void set formMethod(String value) => _blink.BlinkHTMLButtonElement.instance.formMethod_Setter_(unwrap_jso(this), value);
+  set formMethod(String value) => _blink.BlinkHTMLButtonElement.instance.formMethod_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.formNoValidate')
   @DocsEditable()
@@ -2111,7 +3099,7 @@
   
   @DomName('HTMLButtonElement.formNoValidate')
   @DocsEditable()
-  void set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Setter_(unwrap_jso(this), value);
+  set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.formTarget')
   @DocsEditable()
@@ -2119,12 +3107,12 @@
   
   @DomName('HTMLButtonElement.formTarget')
   @DocsEditable()
-  void set formTarget(String value) => _blink.BlinkHTMLButtonElement.instance.formTarget_Setter_(unwrap_jso(this), value);
+  set formTarget(String value) => _blink.BlinkHTMLButtonElement.instance.formTarget_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLButtonElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLButtonElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLButtonElement.name')
   @DocsEditable()
@@ -2132,7 +3120,7 @@
   
   @DomName('HTMLButtonElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLButtonElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLButtonElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.type')
   @DocsEditable()
@@ -2140,7 +3128,7 @@
   
   @DomName('HTMLButtonElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLButtonElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLButtonElement.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.validationMessage')
   @DocsEditable()
@@ -2156,7 +3144,7 @@
   
   @DomName('HTMLButtonElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLButtonElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLButtonElement.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLButtonElement.willValidate')
   @DocsEditable()
@@ -2186,6 +3174,18 @@
   // To suppress missing implicit constructor warnings.
   factory CDataSection._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CDataSection internalCreateCDataSection() {
+    return new CDataSection._internalWrap();
+  }
+
+  factory CDataSection._internalWrap() {
+    return new CDataSection.internal_();
+  }
+
+  CDataSection.internal_() : super.internal_();
+
+
 }
 // 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
@@ -2201,30 +3201,45 @@
   // To suppress missing implicit constructor warnings.
   factory CacheStorage._() { throw new UnsupportedError("Not supported"); }
 
+  static CacheStorage internalCreateCacheStorage() {
+    return new CacheStorage._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CacheStorage._internalWrap() {
+    return new CacheStorage.internal_();
+  }
+
+  CacheStorage.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('CacheStorage.create')
   @DocsEditable()
   @Experimental() // untriaged
-  Future create(String cacheName) => _blink.BlinkCacheStorage.instance.create_Callback_1_(unwrap_jso(this), cacheName);
+  Future create(String cacheName) => wrap_jso(_blink.BlinkCacheStorage.instance.create_Callback_1_(unwrap_jso(this), cacheName));
   
   @DomName('CacheStorage.delete')
   @DocsEditable()
   @Experimental() // untriaged
-  Future delete(String cacheName) => _blink.BlinkCacheStorage.instance.delete_Callback_1_(unwrap_jso(this), cacheName);
+  Future delete(String cacheName) => wrap_jso(_blink.BlinkCacheStorage.instance.delete_Callback_1_(unwrap_jso(this), cacheName));
   
   @DomName('CacheStorage.get')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get(String cacheName) => _blink.BlinkCacheStorage.instance.get_Callback_1_(unwrap_jso(this), cacheName);
+  Future get(String cacheName) => wrap_jso(_blink.BlinkCacheStorage.instance.get_Callback_1_(unwrap_jso(this), cacheName));
   
   @DomName('CacheStorage.has')
   @DocsEditable()
   @Experimental() // untriaged
-  Future has(String cacheName) => _blink.BlinkCacheStorage.instance.has_Callback_1_(unwrap_jso(this), cacheName);
+  Future has(String cacheName) => wrap_jso(_blink.BlinkCacheStorage.instance.has_Callback_1_(unwrap_jso(this), cacheName));
   
   @DomName('CacheStorage.keys')
   @DocsEditable()
   @Experimental() // untriaged
-  Future keys() => _blink.BlinkCacheStorage.instance.keys_Callback_0_(unwrap_jso(this));
+  Future keys() => wrap_jso(_blink.BlinkCacheStorage.instance.keys_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2242,13 +3257,28 @@
   // To suppress missing implicit constructor warnings.
   factory Canvas2DContextAttributes._() { throw new UnsupportedError("Not supported"); }
 
+  static Canvas2DContextAttributes internalCreateCanvas2DContextAttributes() {
+    return new Canvas2DContextAttributes._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Canvas2DContextAttributes._internalWrap() {
+    return new Canvas2DContextAttributes.internal_();
+  }
+
+  Canvas2DContextAttributes.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('Canvas2DContextAttributes.alpha')
   @DocsEditable()
   bool get alpha => _blink.BlinkCanvas2DContextAttributes.instance.alpha_Getter_(unwrap_jso(this));
   
   @DomName('Canvas2DContextAttributes.alpha')
   @DocsEditable()
-  void set alpha(bool value) => _blink.BlinkCanvas2DContextAttributes.instance.alpha_Setter_(unwrap_jso(this), value);
+  set alpha(bool value) => _blink.BlinkCanvas2DContextAttributes.instance.alpha_Setter_(unwrap_jso(this), value);
   
   @DomName('Canvas2DContextAttributes.storage')
   @DocsEditable()
@@ -2258,7 +3288,7 @@
   @DomName('Canvas2DContextAttributes.storage')
   @DocsEditable()
   @Experimental() // untriaged
-  void set storage(String value) => _blink.BlinkCanvas2DContextAttributes.instance.storage_Setter_(unwrap_jso(this), value);
+  set storage(String value) => _blink.BlinkCanvas2DContextAttributes.instance.storage_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2299,6 +3329,18 @@
     if (height != null) e.height = height;
     return e;
   }
+
+
+  static CanvasElement internalCreateCanvasElement() {
+    return new CanvasElement._internalWrap();
+  }
+
+  factory CanvasElement._internalWrap() {
+    return new CanvasElement.internal_();
+  }
+
+  CanvasElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2314,7 +3356,7 @@
   /// The height of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLCanvasElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkHTMLCanvasElement.instance.height_Setter_(unwrap_jso(this), value);
   
   /// The width of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.width')
@@ -2324,11 +3366,11 @@
   /// The width of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLCanvasElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLCanvasElement.instance.width_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLCanvasElement.getContext')
   @DocsEditable()
-  Object getContext(String contextId, [Map attrs]) => wrap_jso(_blink.BlinkHTMLCanvasElement.instance.getContext_Callback_2_(unwrap_jso(this), contextId, attrs));
+  Object getContext(String contextId, [Map attrs]) => wrap_jso(_blink.BlinkHTMLCanvasElement.instance.getContext_Callback_2_(unwrap_jso(this), contextId, convertDartToNative_Dictionary(attrs)));
   
   @DomName('HTMLCanvasElement.toDataURL')
   @DocsEditable()
@@ -2464,6 +3506,21 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasGradient._() { throw new UnsupportedError("Not supported"); }
 
+  static CanvasGradient internalCreateCanvasGradient() {
+    return new CanvasGradient._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CanvasGradient._internalWrap() {
+    return new CanvasGradient.internal_();
+  }
+
+  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.
    *
@@ -2518,6 +3575,21 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasPattern._() { throw new UnsupportedError("Not supported"); }
 
+  static CanvasPattern internalCreateCanvasPattern() {
+    return new CanvasPattern._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CanvasPattern._internalWrap() {
+    return new CanvasPattern.internal_();
+  }
+
+  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
@@ -2538,6 +3610,21 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasRenderingContext2D._() { throw new UnsupportedError("Not supported"); }
 
+  static CanvasRenderingContext2D internalCreateCanvasRenderingContext2D() {
+    return new CanvasRenderingContext2D._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CanvasRenderingContext2D._internalWrap() {
+    return new CanvasRenderingContext2D.internal_();
+  }
+
+  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
@@ -2551,7 +3638,7 @@
   @DomName('CanvasRenderingContext2D.currentTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  void set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('CanvasRenderingContext2D.direction')
   @DocsEditable()
@@ -2561,15 +3648,15 @@
   @DomName('CanvasRenderingContext2D.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  void set direction(String value) => _blink.BlinkCanvasRenderingContext2D.instance.direction_Setter_(unwrap_jso(this), value);
+  set direction(String value) => _blink.BlinkCanvasRenderingContext2D.instance.direction_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.fillStyle')
   @DocsEditable()
-  Object get fillStyle => _blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Getter_(unwrap_jso(this));
+  Object get fillStyle => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Getter_(unwrap_jso(this)));
   
   @DomName('CanvasRenderingContext2D.fillStyle')
   @DocsEditable()
-  void set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('CanvasRenderingContext2D.font')
   @DocsEditable()
@@ -2577,7 +3664,7 @@
   
   @DomName('CanvasRenderingContext2D.font')
   @DocsEditable()
-  void set font(String value) => _blink.BlinkCanvasRenderingContext2D.instance.font_Setter_(unwrap_jso(this), value);
+  set font(String value) => _blink.BlinkCanvasRenderingContext2D.instance.font_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.globalAlpha')
   @DocsEditable()
@@ -2585,7 +3672,7 @@
   
   @DomName('CanvasRenderingContext2D.globalAlpha')
   @DocsEditable()
-  void set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Setter_(unwrap_jso(this), value);
+  set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.globalCompositeOperation')
   @DocsEditable()
@@ -2593,7 +3680,7 @@
   
   @DomName('CanvasRenderingContext2D.globalCompositeOperation')
   @DocsEditable()
-  void set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Setter_(unwrap_jso(this), value);
+  set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Setter_(unwrap_jso(this), value);
   
   /**
    * Whether images and patterns on this canvas will be smoothed when this
@@ -2623,7 +3710,7 @@
   @DomName('CanvasRenderingContext2D.imageSmoothingEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  void set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Setter_(unwrap_jso(this), value);
+  set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.lineCap')
   @DocsEditable()
@@ -2631,7 +3718,7 @@
   
   @DomName('CanvasRenderingContext2D.lineCap')
   @DocsEditable()
-  void set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Setter_(unwrap_jso(this), value);
+  set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   @DocsEditable()
@@ -2639,7 +3726,7 @@
   
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   @DocsEditable()
-  void set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Setter_(unwrap_jso(this), value);
+  set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.lineJoin')
   @DocsEditable()
@@ -2647,7 +3734,7 @@
   
   @DomName('CanvasRenderingContext2D.lineJoin')
   @DocsEditable()
-  void set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Setter_(unwrap_jso(this), value);
+  set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.lineWidth')
   @DocsEditable()
@@ -2655,7 +3742,7 @@
   
   @DomName('CanvasRenderingContext2D.lineWidth')
   @DocsEditable()
-  void set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Setter_(unwrap_jso(this), value);
+  set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.miterLimit')
   @DocsEditable()
@@ -2663,7 +3750,7 @@
   
   @DomName('CanvasRenderingContext2D.miterLimit')
   @DocsEditable()
-  void set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Setter_(unwrap_jso(this), value);
+  set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.shadowBlur')
   @DocsEditable()
@@ -2671,7 +3758,7 @@
   
   @DomName('CanvasRenderingContext2D.shadowBlur')
   @DocsEditable()
-  void set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Setter_(unwrap_jso(this), value);
+  set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.shadowColor')
   @DocsEditable()
@@ -2679,7 +3766,7 @@
   
   @DomName('CanvasRenderingContext2D.shadowColor')
   @DocsEditable()
-  void set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Setter_(unwrap_jso(this), value);
+  set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.shadowOffsetX')
   @DocsEditable()
@@ -2687,7 +3774,7 @@
   
   @DomName('CanvasRenderingContext2D.shadowOffsetX')
   @DocsEditable()
-  void set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Setter_(unwrap_jso(this), value);
+  set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.shadowOffsetY')
   @DocsEditable()
@@ -2695,15 +3782,15 @@
   
   @DomName('CanvasRenderingContext2D.shadowOffsetY')
   @DocsEditable()
-  void set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Setter_(unwrap_jso(this), value);
+  set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.strokeStyle')
   @DocsEditable()
-  Object get strokeStyle => _blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Getter_(unwrap_jso(this));
+  Object get strokeStyle => wrap_jso(_blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Getter_(unwrap_jso(this)));
   
   @DomName('CanvasRenderingContext2D.strokeStyle')
   @DocsEditable()
-  void set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('CanvasRenderingContext2D.textAlign')
   @DocsEditable()
@@ -2711,7 +3798,7 @@
   
   @DomName('CanvasRenderingContext2D.textAlign')
   @DocsEditable()
-  void set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Setter_(unwrap_jso(this), value);
+  set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Setter_(unwrap_jso(this), value);
   
   @DomName('CanvasRenderingContext2D.textBaseline')
   @DocsEditable()
@@ -2719,11 +3806,11 @@
   
   @DomName('CanvasRenderingContext2D.textBaseline')
   @DocsEditable()
-  void set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Setter_(unwrap_jso(this), value);
+  set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Setter_(unwrap_jso(this), value);
   
   void addHitRegion([Map options]) {
     if (options != null) {
-      _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_1_(unwrap_jso(this), options);
+      _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options));
       return;
     }
     _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_0_(unwrap_jso(this));
@@ -3312,13 +4399,25 @@
   // To suppress missing implicit constructor warnings.
   factory CharacterData._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CharacterData internalCreateCharacterData() {
+    return new CharacterData._internalWrap();
+  }
+
+  factory CharacterData._internalWrap() {
+    return new CharacterData.internal_();
+  }
+
+  CharacterData.internal_() : super.internal_();
+
+
   @DomName('CharacterData.data')
   @DocsEditable()
   String get data => _blink.BlinkCharacterData.instance.data_Getter_(unwrap_jso(this));
   
   @DomName('CharacterData.data')
   @DocsEditable()
-  void set data(String value) => _blink.BlinkCharacterData.instance.data_Setter_(unwrap_jso(this), value);
+  set data(String value) => _blink.BlinkCharacterData.instance.data_Setter_(unwrap_jso(this), value);
   
   @DomName('CharacterData.length')
   @DocsEditable()
@@ -3400,9 +4499,22 @@
   @DomName('CircularGeofencingRegion.CircularGeofencingRegion')
   @DocsEditable()
   factory CircularGeofencingRegion(Map init) {
-    return _blink.BlinkCircularGeofencingRegion.instance.constructorCallback_1_(init);
+    var init_1 = convertDartToNative_Dictionary(init);
+    return wrap_jso(_blink.BlinkCircularGeofencingRegion.instance.constructorCallback_1_(init_1));
   }
 
+
+  static CircularGeofencingRegion internalCreateCircularGeofencingRegion() {
+    return new CircularGeofencingRegion._internalWrap();
+  }
+
+  factory CircularGeofencingRegion._internalWrap() {
+    return new CircularGeofencingRegion.internal_();
+  }
+
+  CircularGeofencingRegion.internal_() : super.internal_();
+
+
   @DomName('CircularGeofencingRegion.MAX_RADIUS')
   @DocsEditable()
   @Experimental() // untriaged
@@ -3416,17 +4528,17 @@
   @DomName('CircularGeofencingRegion.latitude')
   @DocsEditable()
   @Experimental() // untriaged
-  double get latitude => _blink.BlinkCircularGeofencingRegion.instance.latitude_Getter_(unwrap_jso(this));
+  num get latitude => _blink.BlinkCircularGeofencingRegion.instance.latitude_Getter_(unwrap_jso(this));
   
   @DomName('CircularGeofencingRegion.longitude')
   @DocsEditable()
   @Experimental() // untriaged
-  double get longitude => _blink.BlinkCircularGeofencingRegion.instance.longitude_Getter_(unwrap_jso(this));
+  num get longitude => _blink.BlinkCircularGeofencingRegion.instance.longitude_Getter_(unwrap_jso(this));
   
   @DomName('CircularGeofencingRegion.radius')
   @DocsEditable()
   @Experimental() // untriaged
-  double get radius => _blink.BlinkCircularGeofencingRegion.instance.radius_Getter_(unwrap_jso(this));
+  num get radius => _blink.BlinkCircularGeofencingRegion.instance.radius_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3442,6 +4554,18 @@
   // To suppress missing implicit constructor warnings.
   factory CloseEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CloseEvent internalCreateCloseEvent() {
+    return new CloseEvent._internalWrap();
+  }
+
+  factory CloseEvent._internalWrap() {
+    return new CloseEvent.internal_();
+  }
+
+  CloseEvent.internal_() : super.internal_();
+
+
   @DomName('CloseEvent.code')
   @DocsEditable()
   int get code => _blink.BlinkCloseEvent.instance.code_Getter_(unwrap_jso(this));
@@ -3470,10 +4594,22 @@
   @DocsEditable()
   factory Comment([String data]) {
     if (data != null) {
-      return _blink.BlinkComment.instance.constructorCallback_1_(data);
+      return wrap_jso(_blink.BlinkComment.instance.constructorCallback_1_(data));
     }
-    return _blink.BlinkComment.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkComment.instance.constructorCallback_0_());
   }
+
+
+  static Comment internalCreateComment() {
+    return new Comment._internalWrap();
+  }
+
+  factory Comment._internalWrap() {
+    return new Comment.internal_();
+  }
+
+  Comment.internal_() : super.internal_();
+
 }
 // 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
@@ -3500,6 +4636,18 @@
   // To suppress missing implicit constructor warnings.
   factory CompositionEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CompositionEvent internalCreateCompositionEvent() {
+    return new CompositionEvent._internalWrap();
+  }
+
+  factory CompositionEvent._internalWrap() {
+    return new CompositionEvent.internal_();
+  }
+
+  CompositionEvent.internal_() : super.internal_();
+
+
   @DomName('CompositionEvent.activeSegmentEnd')
   @DocsEditable()
   @Experimental() // untriaged
@@ -3537,6 +4685,18 @@
   // To suppress missing implicit constructor warnings.
   factory Console._() { throw new UnsupportedError("Not supported"); }
 
+
+  static Console internalCreateConsole() {
+    return new Console._internalWrap();
+  }
+
+  factory Console._internalWrap() {
+    return new Console.internal_();
+  }
+
+  Console.internal_() : super.internal_();
+
+
   @DomName('Console.memory')
   @DocsEditable()
   @Experimental()
@@ -3557,6 +4717,21 @@
   // To suppress missing implicit constructor warnings.
   factory ConsoleBase._() { throw new UnsupportedError("Not supported"); }
 
+  static ConsoleBase internalCreateConsoleBase() {
+    return new ConsoleBase._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ConsoleBase._internalWrap() {
+    return new ConsoleBase.internal_();
+  }
+
+  ConsoleBase.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('ConsoleBase.assertCondition')
   @DocsEditable()
   @Experimental() // untriaged
@@ -3692,6 +4867,18 @@
   @DomName('HTMLContentElement.HTMLContentElement')
   @DocsEditable()
   factory ContentElement() => document.createElement("content");
+
+
+  static ContentElement internalCreateContentElement() {
+    return new ContentElement._internalWrap();
+  }
+
+  factory ContentElement._internalWrap() {
+    return new ContentElement.internal_();
+  }
+
+  ContentElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -3708,11 +4895,11 @@
   
   @DomName('HTMLContentElement.select')
   @DocsEditable()
-  void set select(String value) => _blink.BlinkHTMLContentElement.instance.select_Setter_(unwrap_jso(this), value);
+  set select(String value) => _blink.BlinkHTMLContentElement.instance.select_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLContentElement.getDistributedNodes')
   @DocsEditable()
-  List<Node> getDistributedNodes() => wrap_jso_list(_blink.BlinkHTMLContentElement.instance.getDistributedNodes_Callback_0_(unwrap_jso(this)));
+  List<Node> getDistributedNodes() => wrap_jso(_blink.BlinkHTMLContentElement.instance.getDistributedNodes_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3728,33 +4915,48 @@
   // To suppress missing implicit constructor warnings.
   factory Coordinates._() { throw new UnsupportedError("Not supported"); }
 
+  static Coordinates internalCreateCoordinates() {
+    return new Coordinates._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Coordinates._internalWrap() {
+    return new Coordinates.internal_();
+  }
+
+  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()
-  double get accuracy => _blink.BlinkCoordinates.instance.accuracy_Getter_(unwrap_jso(this));
+  num get accuracy => _blink.BlinkCoordinates.instance.accuracy_Getter_(unwrap_jso(this));
   
   @DomName('Coordinates.altitude')
   @DocsEditable()
-  double get altitude => _blink.BlinkCoordinates.instance.altitude_Getter_(unwrap_jso(this));
+  num get altitude => _blink.BlinkCoordinates.instance.altitude_Getter_(unwrap_jso(this));
   
   @DomName('Coordinates.altitudeAccuracy')
   @DocsEditable()
-  double get altitudeAccuracy => _blink.BlinkCoordinates.instance.altitudeAccuracy_Getter_(unwrap_jso(this));
+  num get altitudeAccuracy => _blink.BlinkCoordinates.instance.altitudeAccuracy_Getter_(unwrap_jso(this));
   
   @DomName('Coordinates.heading')
   @DocsEditable()
-  double get heading => _blink.BlinkCoordinates.instance.heading_Getter_(unwrap_jso(this));
+  num get heading => _blink.BlinkCoordinates.instance.heading_Getter_(unwrap_jso(this));
   
   @DomName('Coordinates.latitude')
   @DocsEditable()
-  double get latitude => _blink.BlinkCoordinates.instance.latitude_Getter_(unwrap_jso(this));
+  num get latitude => _blink.BlinkCoordinates.instance.latitude_Getter_(unwrap_jso(this));
   
   @DomName('Coordinates.longitude')
   @DocsEditable()
-  double get longitude => _blink.BlinkCoordinates.instance.longitude_Getter_(unwrap_jso(this));
+  num get longitude => _blink.BlinkCoordinates.instance.longitude_Getter_(unwrap_jso(this));
   
   @DomName('Coordinates.speed')
   @DocsEditable()
-  double get speed => _blink.BlinkCoordinates.instance.speed_Getter_(unwrap_jso(this));
+  num get speed => _blink.BlinkCoordinates.instance.speed_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3771,6 +4973,21 @@
   // To suppress missing implicit constructor warnings.
   factory Credential._() { throw new UnsupportedError("Not supported"); }
 
+  static Credential internalCreateCredential() {
+    return new Credential._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Credential._internalWrap() {
+    return new Credential.internal_();
+  }
+
+  Credential.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('Credential.avatarURL')
   @DocsEditable()
   @Experimental() // untriaged
@@ -3801,26 +5018,41 @@
   // To suppress missing implicit constructor warnings.
   factory CredentialsContainer._() { throw new UnsupportedError("Not supported"); }
 
+  static CredentialsContainer internalCreateCredentialsContainer() {
+    return new CredentialsContainer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CredentialsContainer._internalWrap() {
+    return new CredentialsContainer.internal_();
+  }
+
+  CredentialsContainer.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('CredentialsContainer.notifyFailedSignIn')
   @DocsEditable()
   @Experimental() // untriaged
-  Future notifyFailedSignIn(Credential credential) => _blink.BlinkCredentialsContainer.instance.notifyFailedSignIn_Callback_1_(unwrap_jso(this), unwrap_jso(credential));
+  Future notifyFailedSignIn(Credential credential) => wrap_jso(_blink.BlinkCredentialsContainer.instance.notifyFailedSignIn_Callback_1_(unwrap_jso(this), unwrap_jso(credential)));
   
   @DomName('CredentialsContainer.notifySignedIn')
   @DocsEditable()
   @Experimental() // untriaged
-  Future notifySignedIn(Credential credential) => _blink.BlinkCredentialsContainer.instance.notifySignedIn_Callback_1_(unwrap_jso(this), unwrap_jso(credential));
+  Future notifySignedIn(Credential credential) => wrap_jso(_blink.BlinkCredentialsContainer.instance.notifySignedIn_Callback_1_(unwrap_jso(this), unwrap_jso(credential)));
   
   @DomName('CredentialsContainer.notifySignedOut')
   @DocsEditable()
   @Experimental() // untriaged
-  Future notifySignedOut() => _blink.BlinkCredentialsContainer.instance.notifySignedOut_Callback_0_(unwrap_jso(this));
+  Future notifySignedOut() => wrap_jso(_blink.BlinkCredentialsContainer.instance.notifySignedOut_Callback_0_(unwrap_jso(this)));
   
   Future request([Map options]) {
     if (options != null) {
-      return _blink.BlinkCredentialsContainer.instance.request_Callback_1_(unwrap_jso(this), options);
+      return wrap_jso(_blink.BlinkCredentialsContainer.instance.request_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
     }
-    return _blink.BlinkCredentialsContainer.instance.request_Callback_0_(unwrap_jso(this));
+    return wrap_jso(_blink.BlinkCredentialsContainer.instance.request_Callback_0_(unwrap_jso(this)));
   }
 
 }
@@ -3841,6 +5073,21 @@
   // To suppress missing implicit constructor warnings.
   factory Crypto._() { throw new UnsupportedError("Not supported"); }
 
+  static Crypto internalCreateCrypto() {
+    return new Crypto._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Crypto._internalWrap() {
+    return new Crypto.internal_();
+  }
+
+  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;
 
@@ -3851,7 +5098,7 @@
   
   @DomName('Crypto.getRandomValues')
   @DocsEditable()
-  TypedData getRandomValues(TypedData array) => _blink.BlinkCrypto.instance.getRandomValues_Callback_1_(unwrap_jso(this), unwrap_jso(array));
+  TypedData getRandomValues(TypedData array) => wrap_jso(_blink.BlinkCrypto.instance.getRandomValues_Callback_1_(unwrap_jso(this), unwrap_jso(array)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3868,10 +5115,25 @@
   // To suppress missing implicit constructor warnings.
   factory CryptoKey._() { throw new UnsupportedError("Not supported"); }
 
+  static CryptoKey internalCreateCryptoKey() {
+    return new CryptoKey._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CryptoKey._internalWrap() {
+    return new CryptoKey.internal_();
+  }
+
+  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 => _blink.BlinkCryptoKey.instance.algorithm_Getter_(unwrap_jso(this));
+  Object get algorithm => wrap_jso(_blink.BlinkCryptoKey.instance.algorithm_Getter_(unwrap_jso(this)));
   
   @DomName('CryptoKey.extractable')
   @DocsEditable()
@@ -3904,6 +5166,21 @@
   // To suppress missing implicit constructor warnings.
   factory Css._() { throw new UnsupportedError("Not supported"); }
 
+  static Css internalCreateCss() {
+    return new Css._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Css._internalWrap() {
+    return new Css.internal_();
+  }
+
+  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()
   bool supports(String property, String value) => _blink.BlinkCSS.instance.supports_Callback_2_(unwrap_jso(this), property, value);
@@ -3928,13 +5205,25 @@
   // To suppress missing implicit constructor warnings.
   factory CssCharsetRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssCharsetRule internalCreateCssCharsetRule() {
+    return new CssCharsetRule._internalWrap();
+  }
+
+  factory CssCharsetRule._internalWrap() {
+    return new CssCharsetRule.internal_();
+  }
+
+  CssCharsetRule.internal_() : super.internal_();
+
+
   @DomName('CSSCharsetRule.encoding')
   @DocsEditable()
   String get encoding => _blink.BlinkCSSCharsetRule.instance.encoding_Getter_(unwrap_jso(this));
   
   @DomName('CSSCharsetRule.encoding')
   @DocsEditable()
-  void set encoding(String value) => _blink.BlinkCSSCharsetRule.instance.encoding_Setter_(unwrap_jso(this), value);
+  set encoding(String value) => _blink.BlinkCSSCharsetRule.instance.encoding_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3954,6 +5243,18 @@
   // To suppress missing implicit constructor warnings.
   factory CssFilterRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssFilterRule internalCreateCssFilterRule() {
+    return new CssFilterRule._internalWrap();
+  }
+
+  factory CssFilterRule._internalWrap() {
+    return new CssFilterRule.internal_();
+  }
+
+  CssFilterRule.internal_() : super.internal_();
+
+
   @DomName('WebKitCSSFilterRule.style')
   @DocsEditable()
   CssStyleDeclaration get style => wrap_jso(_blink.BlinkWebKitCSSFilterRule.instance.style_Getter_(unwrap_jso(this)));
@@ -3972,6 +5273,18 @@
   // To suppress missing implicit constructor warnings.
   factory CssFontFaceRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssFontFaceRule internalCreateCssFontFaceRule() {
+    return new CssFontFaceRule._internalWrap();
+  }
+
+  factory CssFontFaceRule._internalWrap() {
+    return new CssFontFaceRule.internal_();
+  }
+
+  CssFontFaceRule.internal_() : super.internal_();
+
+
   @DomName('CSSFontFaceRule.style')
   @DocsEditable()
   CssStyleDeclaration get style => wrap_jso(_blink.BlinkCSSFontFaceRule.instance.style_Getter_(unwrap_jso(this)));
@@ -3990,6 +5303,18 @@
   // To suppress missing implicit constructor warnings.
   factory CssImportRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssImportRule internalCreateCssImportRule() {
+    return new CssImportRule._internalWrap();
+  }
+
+  factory CssImportRule._internalWrap() {
+    return new CssImportRule.internal_();
+  }
+
+  CssImportRule.internal_() : super.internal_();
+
+
   @DomName('CSSImportRule.href')
   @DocsEditable()
   String get href => _blink.BlinkCSSImportRule.instance.href_Getter_(unwrap_jso(this));
@@ -4017,6 +5342,18 @@
   // To suppress missing implicit constructor warnings.
   factory CssKeyframeRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssKeyframeRule internalCreateCssKeyframeRule() {
+    return new CssKeyframeRule._internalWrap();
+  }
+
+  factory CssKeyframeRule._internalWrap() {
+    return new CssKeyframeRule.internal_();
+  }
+
+  CssKeyframeRule.internal_() : super.internal_();
+
+
   @DomName('CSSKeyframeRule.keyText')
   @DocsEditable()
   @Experimental() // untriaged
@@ -4025,7 +5362,7 @@
   @DomName('CSSKeyframeRule.keyText')
   @DocsEditable()
   @Experimental() // untriaged
-  void set keyText(String value) => _blink.BlinkCSSKeyframeRule.instance.keyText_Setter_(unwrap_jso(this), value);
+  set keyText(String value) => _blink.BlinkCSSKeyframeRule.instance.keyText_Setter_(unwrap_jso(this), value);
   
   @DomName('CSSKeyframeRule.style')
   @DocsEditable()
@@ -4047,10 +5384,22 @@
   // To suppress missing implicit constructor warnings.
   factory CssKeyframesRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssKeyframesRule internalCreateCssKeyframesRule() {
+    return new CssKeyframesRule._internalWrap();
+  }
+
+  factory CssKeyframesRule._internalWrap() {
+    return new CssKeyframesRule.internal_();
+  }
+
+  CssKeyframesRule.internal_() : super.internal_();
+
+
   @DomName('CSSKeyframesRule.cssRules')
   @DocsEditable()
   @Experimental() // untriaged
-  List<CssRule> get cssRules => wrap_jso_list(_blink.BlinkCSSKeyframesRule.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSKeyframesRule.instance.cssRules_Getter_(unwrap_jso(this)));
   
   @DomName('CSSKeyframesRule.name')
   @DocsEditable()
@@ -4060,12 +5409,12 @@
   @DomName('CSSKeyframesRule.name')
   @DocsEditable()
   @Experimental() // untriaged
-  void set name(String value) => _blink.BlinkCSSKeyframesRule.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkCSSKeyframesRule.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('CSSKeyframesRule.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  CssKeyframeRule __getter__(int index) => _blink.BlinkCSSKeyframesRule.instance.$__getter___Callback_1_(unwrap_jso(this), index);
+  CssKeyframeRule __getter__(int index) => wrap_jso(_blink.BlinkCSSKeyframesRule.instance.$__getter___Callback_1_(unwrap_jso(this), index));
   
   @DomName('CSSKeyframesRule.deleteRule')
   @DocsEditable()
@@ -4075,7 +5424,7 @@
   @DomName('CSSKeyframesRule.findRule')
   @DocsEditable()
   @Experimental() // untriaged
-  CssKeyframeRule findRule(String key) => _blink.BlinkCSSKeyframesRule.instance.findRule_Callback_1_(unwrap_jso(this), key);
+  CssKeyframeRule findRule(String key) => wrap_jso(_blink.BlinkCSSKeyframesRule.instance.findRule_Callback_1_(unwrap_jso(this), key));
   
   @DomName('CSSKeyframesRule.insertRule')
   @DocsEditable()
@@ -4096,9 +5445,21 @@
   // To suppress missing implicit constructor warnings.
   factory CssMediaRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssMediaRule internalCreateCssMediaRule() {
+    return new CssMediaRule._internalWrap();
+  }
+
+  factory CssMediaRule._internalWrap() {
+    return new CssMediaRule.internal_();
+  }
+
+  CssMediaRule.internal_() : super.internal_();
+
+
   @DomName('CSSMediaRule.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => wrap_jso_list(_blink.BlinkCSSMediaRule.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSMediaRule.instance.cssRules_Getter_(unwrap_jso(this)));
   
   @DomName('CSSMediaRule.media')
   @DocsEditable()
@@ -4126,13 +5487,25 @@
   // To suppress missing implicit constructor warnings.
   factory CssPageRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssPageRule internalCreateCssPageRule() {
+    return new CssPageRule._internalWrap();
+  }
+
+  factory CssPageRule._internalWrap() {
+    return new CssPageRule.internal_();
+  }
+
+  CssPageRule.internal_() : super.internal_();
+
+
   @DomName('CSSPageRule.selectorText')
   @DocsEditable()
   String get selectorText => _blink.BlinkCSSPageRule.instance.selectorText_Getter_(unwrap_jso(this));
   
   @DomName('CSSPageRule.selectorText')
   @DocsEditable()
-  void set selectorText(String value) => _blink.BlinkCSSPageRule.instance.selectorText_Setter_(unwrap_jso(this), value);
+  set selectorText(String value) => _blink.BlinkCSSPageRule.instance.selectorText_Setter_(unwrap_jso(this), value);
   
   @DomName('CSSPageRule.style')
   @DocsEditable()
@@ -4152,6 +5525,21 @@
   // To suppress missing implicit constructor warnings.
   factory CssRule._() { throw new UnsupportedError("Not supported"); }
 
+  static CssRule internalCreateCssRule() {
+    return new CssRule._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CssRule._internalWrap() {
+    return new CssRule.internal_();
+  }
+
+  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;
@@ -4219,7 +5607,7 @@
   
   @DomName('CSSRule.cssText')
   @DocsEditable()
-  void set cssText(String value) => _blink.BlinkCSSRule.instance.cssText_Setter_(unwrap_jso(this), value);
+  set cssText(String value) => _blink.BlinkCSSRule.instance.cssText_Setter_(unwrap_jso(this), value);
   
   @DomName('CSSRule.parentRule')
   @DocsEditable()
@@ -4247,7 +5635,7 @@
 
 
 @DomName('CSSStyleDeclaration')
-class CssStyleDeclaration  extends NativeFieldWrapperClass2 with
+class CssStyleDeclaration  extends JsoNativeFieldWrapper with
     CssStyleDeclarationBase  {
   factory CssStyleDeclaration() => new CssStyleDeclaration.css('');
 
@@ -4293,7 +5681,7 @@
   }
 
   bool _hasProperty(String propertyName) =>
-      _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, propertyName);
+      _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(unwrap_jso(this), propertyName) != null;
 
   @DomName('CSSStyleDeclaration.setProperty')
   void setProperty(String propertyName, String value, [String priority]) {
@@ -4337,13 +5725,28 @@
   // To suppress missing implicit constructor warnings.
   factory CssStyleDeclaration._() { throw new UnsupportedError("Not supported"); }
 
+  static CssStyleDeclaration internalCreateCssStyleDeclaration() {
+    return new CssStyleDeclaration._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CssStyleDeclaration._internalWrap() {
+    return new CssStyleDeclaration.internal_();
+  }
+
+  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));
   
   @DomName('CSSStyleDeclaration.cssText')
   @DocsEditable()
-  void set cssText(String value) => _blink.BlinkCSSStyleDeclaration.instance.cssText_Setter_(unwrap_jso(this), value);
+  set cssText(String value) => _blink.BlinkCSSStyleDeclaration.instance.cssText_Setter_(unwrap_jso(this), value);
   
   @DomName('CSSStyleDeclaration.length')
   @DocsEditable()
@@ -4416,16 +5819,18 @@
   // items in the MEMBERS set if you want that functionality.
 }
 
-abstract class CssStyleDeclarationBase {
-  String getPropertyValue(String propertyName);
-  void setProperty(String propertyName, String value, [String priority]);
+class CssStyleDeclarationBase {
+  String getPropertyValue(String propertyName) =>
+    throw new StateError('getProperty not overridden in dart:html');
+  void setProperty(String propertyName, String value, [String priority]) =>
+    throw new StateError('setProperty not overridden in dart:html');
 
   /** Gets the value of "align-content" */
   String get alignContent =>
     getPropertyValue('align-content');
 
   /** Sets the value of "align-content" */
-  void set alignContent(String value) {
+  set alignContent(String value) {
     setProperty('align-content', value, '');
   }
 
@@ -4434,7 +5839,7 @@
     getPropertyValue('align-items');
 
   /** Sets the value of "align-items" */
-  void set alignItems(String value) {
+  set alignItems(String value) {
     setProperty('align-items', value, '');
   }
 
@@ -4443,7 +5848,7 @@
     getPropertyValue('align-self');
 
   /** Sets the value of "align-self" */
-  void set alignSelf(String value) {
+  set alignSelf(String value) {
     setProperty('align-self', value, '');
   }
 
@@ -4452,7 +5857,7 @@
     getPropertyValue('animation');
 
   /** Sets the value of "animation" */
-  void set animation(String value) {
+  set animation(String value) {
     setProperty('animation', value, '');
   }
 
@@ -4461,7 +5866,7 @@
     getPropertyValue('animation-delay');
 
   /** Sets the value of "animation-delay" */
-  void set animationDelay(String value) {
+  set animationDelay(String value) {
     setProperty('animation-delay', value, '');
   }
 
@@ -4470,7 +5875,7 @@
     getPropertyValue('animation-direction');
 
   /** Sets the value of "animation-direction" */
-  void set animationDirection(String value) {
+  set animationDirection(String value) {
     setProperty('animation-direction', value, '');
   }
 
@@ -4479,7 +5884,7 @@
     getPropertyValue('animation-duration');
 
   /** Sets the value of "animation-duration" */
-  void set animationDuration(String value) {
+  set animationDuration(String value) {
     setProperty('animation-duration', value, '');
   }
 
@@ -4488,7 +5893,7 @@
     getPropertyValue('animation-fill-mode');
 
   /** Sets the value of "animation-fill-mode" */
-  void set animationFillMode(String value) {
+  set animationFillMode(String value) {
     setProperty('animation-fill-mode', value, '');
   }
 
@@ -4497,7 +5902,7 @@
     getPropertyValue('animation-iteration-count');
 
   /** Sets the value of "animation-iteration-count" */
-  void set animationIterationCount(String value) {
+  set animationIterationCount(String value) {
     setProperty('animation-iteration-count', value, '');
   }
 
@@ -4506,7 +5911,7 @@
     getPropertyValue('animation-name');
 
   /** Sets the value of "animation-name" */
-  void set animationName(String value) {
+  set animationName(String value) {
     setProperty('animation-name', value, '');
   }
 
@@ -4515,7 +5920,7 @@
     getPropertyValue('animation-play-state');
 
   /** Sets the value of "animation-play-state" */
-  void set animationPlayState(String value) {
+  set animationPlayState(String value) {
     setProperty('animation-play-state', value, '');
   }
 
@@ -4524,7 +5929,7 @@
     getPropertyValue('animation-timing-function');
 
   /** Sets the value of "animation-timing-function" */
-  void set animationTimingFunction(String value) {
+  set animationTimingFunction(String value) {
     setProperty('animation-timing-function', value, '');
   }
 
@@ -4533,7 +5938,7 @@
     getPropertyValue('app-region');
 
   /** Sets the value of "app-region" */
-  void set appRegion(String value) {
+  set appRegion(String value) {
     setProperty('app-region', value, '');
   }
 
@@ -4542,7 +5947,7 @@
     getPropertyValue('appearance');
 
   /** Sets the value of "appearance" */
-  void set appearance(String value) {
+  set appearance(String value) {
     setProperty('appearance', value, '');
   }
 
@@ -4551,7 +5956,7 @@
     getPropertyValue('aspect-ratio');
 
   /** Sets the value of "aspect-ratio" */
-  void set aspectRatio(String value) {
+  set aspectRatio(String value) {
     setProperty('aspect-ratio', value, '');
   }
 
@@ -4560,7 +5965,7 @@
     getPropertyValue('backface-visibility');
 
   /** Sets the value of "backface-visibility" */
-  void set backfaceVisibility(String value) {
+  set backfaceVisibility(String value) {
     setProperty('backface-visibility', value, '');
   }
 
@@ -4569,7 +5974,7 @@
     getPropertyValue('background');
 
   /** Sets the value of "background" */
-  void set background(String value) {
+  set background(String value) {
     setProperty('background', value, '');
   }
 
@@ -4578,7 +5983,7 @@
     getPropertyValue('background-attachment');
 
   /** Sets the value of "background-attachment" */
-  void set backgroundAttachment(String value) {
+  set backgroundAttachment(String value) {
     setProperty('background-attachment', value, '');
   }
 
@@ -4587,7 +5992,7 @@
     getPropertyValue('background-blend-mode');
 
   /** Sets the value of "background-blend-mode" */
-  void set backgroundBlendMode(String value) {
+  set backgroundBlendMode(String value) {
     setProperty('background-blend-mode', value, '');
   }
 
@@ -4596,7 +6001,7 @@
     getPropertyValue('background-clip');
 
   /** Sets the value of "background-clip" */
-  void set backgroundClip(String value) {
+  set backgroundClip(String value) {
     setProperty('background-clip', value, '');
   }
 
@@ -4605,7 +6010,7 @@
     getPropertyValue('background-color');
 
   /** Sets the value of "background-color" */
-  void set backgroundColor(String value) {
+  set backgroundColor(String value) {
     setProperty('background-color', value, '');
   }
 
@@ -4614,7 +6019,7 @@
     getPropertyValue('background-composite');
 
   /** Sets the value of "background-composite" */
-  void set backgroundComposite(String value) {
+  set backgroundComposite(String value) {
     setProperty('background-composite', value, '');
   }
 
@@ -4623,7 +6028,7 @@
     getPropertyValue('background-image');
 
   /** Sets the value of "background-image" */
-  void set backgroundImage(String value) {
+  set backgroundImage(String value) {
     setProperty('background-image', value, '');
   }
 
@@ -4632,7 +6037,7 @@
     getPropertyValue('background-origin');
 
   /** Sets the value of "background-origin" */
-  void set backgroundOrigin(String value) {
+  set backgroundOrigin(String value) {
     setProperty('background-origin', value, '');
   }
 
@@ -4641,7 +6046,7 @@
     getPropertyValue('background-position');
 
   /** Sets the value of "background-position" */
-  void set backgroundPosition(String value) {
+  set backgroundPosition(String value) {
     setProperty('background-position', value, '');
   }
 
@@ -4650,7 +6055,7 @@
     getPropertyValue('background-position-x');
 
   /** Sets the value of "background-position-x" */
-  void set backgroundPositionX(String value) {
+  set backgroundPositionX(String value) {
     setProperty('background-position-x', value, '');
   }
 
@@ -4659,7 +6064,7 @@
     getPropertyValue('background-position-y');
 
   /** Sets the value of "background-position-y" */
-  void set backgroundPositionY(String value) {
+  set backgroundPositionY(String value) {
     setProperty('background-position-y', value, '');
   }
 
@@ -4668,7 +6073,7 @@
     getPropertyValue('background-repeat');
 
   /** Sets the value of "background-repeat" */
-  void set backgroundRepeat(String value) {
+  set backgroundRepeat(String value) {
     setProperty('background-repeat', value, '');
   }
 
@@ -4677,7 +6082,7 @@
     getPropertyValue('background-repeat-x');
 
   /** Sets the value of "background-repeat-x" */
-  void set backgroundRepeatX(String value) {
+  set backgroundRepeatX(String value) {
     setProperty('background-repeat-x', value, '');
   }
 
@@ -4686,7 +6091,7 @@
     getPropertyValue('background-repeat-y');
 
   /** Sets the value of "background-repeat-y" */
-  void set backgroundRepeatY(String value) {
+  set backgroundRepeatY(String value) {
     setProperty('background-repeat-y', value, '');
   }
 
@@ -4695,7 +6100,7 @@
     getPropertyValue('background-size');
 
   /** Sets the value of "background-size" */
-  void set backgroundSize(String value) {
+  set backgroundSize(String value) {
     setProperty('background-size', value, '');
   }
 
@@ -4704,7 +6109,7 @@
     getPropertyValue('border');
 
   /** Sets the value of "border" */
-  void set border(String value) {
+  set border(String value) {
     setProperty('border', value, '');
   }
 
@@ -4713,7 +6118,7 @@
     getPropertyValue('border-after');
 
   /** Sets the value of "border-after" */
-  void set borderAfter(String value) {
+  set borderAfter(String value) {
     setProperty('border-after', value, '');
   }
 
@@ -4722,7 +6127,7 @@
     getPropertyValue('border-after-color');
 
   /** Sets the value of "border-after-color" */
-  void set borderAfterColor(String value) {
+  set borderAfterColor(String value) {
     setProperty('border-after-color', value, '');
   }
 
@@ -4731,7 +6136,7 @@
     getPropertyValue('border-after-style');
 
   /** Sets the value of "border-after-style" */
-  void set borderAfterStyle(String value) {
+  set borderAfterStyle(String value) {
     setProperty('border-after-style', value, '');
   }
 
@@ -4740,7 +6145,7 @@
     getPropertyValue('border-after-width');
 
   /** Sets the value of "border-after-width" */
-  void set borderAfterWidth(String value) {
+  set borderAfterWidth(String value) {
     setProperty('border-after-width', value, '');
   }
 
@@ -4749,7 +6154,7 @@
     getPropertyValue('border-before');
 
   /** Sets the value of "border-before" */
-  void set borderBefore(String value) {
+  set borderBefore(String value) {
     setProperty('border-before', value, '');
   }
 
@@ -4758,7 +6163,7 @@
     getPropertyValue('border-before-color');
 
   /** Sets the value of "border-before-color" */
-  void set borderBeforeColor(String value) {
+  set borderBeforeColor(String value) {
     setProperty('border-before-color', value, '');
   }
 
@@ -4767,7 +6172,7 @@
     getPropertyValue('border-before-style');
 
   /** Sets the value of "border-before-style" */
-  void set borderBeforeStyle(String value) {
+  set borderBeforeStyle(String value) {
     setProperty('border-before-style', value, '');
   }
 
@@ -4776,7 +6181,7 @@
     getPropertyValue('border-before-width');
 
   /** Sets the value of "border-before-width" */
-  void set borderBeforeWidth(String value) {
+  set borderBeforeWidth(String value) {
     setProperty('border-before-width', value, '');
   }
 
@@ -4785,7 +6190,7 @@
     getPropertyValue('border-bottom');
 
   /** Sets the value of "border-bottom" */
-  void set borderBottom(String value) {
+  set borderBottom(String value) {
     setProperty('border-bottom', value, '');
   }
 
@@ -4794,7 +6199,7 @@
     getPropertyValue('border-bottom-color');
 
   /** Sets the value of "border-bottom-color" */
-  void set borderBottomColor(String value) {
+  set borderBottomColor(String value) {
     setProperty('border-bottom-color', value, '');
   }
 
@@ -4803,7 +6208,7 @@
     getPropertyValue('border-bottom-left-radius');
 
   /** Sets the value of "border-bottom-left-radius" */
-  void set borderBottomLeftRadius(String value) {
+  set borderBottomLeftRadius(String value) {
     setProperty('border-bottom-left-radius', value, '');
   }
 
@@ -4812,7 +6217,7 @@
     getPropertyValue('border-bottom-right-radius');
 
   /** Sets the value of "border-bottom-right-radius" */
-  void set borderBottomRightRadius(String value) {
+  set borderBottomRightRadius(String value) {
     setProperty('border-bottom-right-radius', value, '');
   }
 
@@ -4821,7 +6226,7 @@
     getPropertyValue('border-bottom-style');
 
   /** Sets the value of "border-bottom-style" */
-  void set borderBottomStyle(String value) {
+  set borderBottomStyle(String value) {
     setProperty('border-bottom-style', value, '');
   }
 
@@ -4830,7 +6235,7 @@
     getPropertyValue('border-bottom-width');
 
   /** Sets the value of "border-bottom-width" */
-  void set borderBottomWidth(String value) {
+  set borderBottomWidth(String value) {
     setProperty('border-bottom-width', value, '');
   }
 
@@ -4839,7 +6244,7 @@
     getPropertyValue('border-collapse');
 
   /** Sets the value of "border-collapse" */
-  void set borderCollapse(String value) {
+  set borderCollapse(String value) {
     setProperty('border-collapse', value, '');
   }
 
@@ -4848,7 +6253,7 @@
     getPropertyValue('border-color');
 
   /** Sets the value of "border-color" */
-  void set borderColor(String value) {
+  set borderColor(String value) {
     setProperty('border-color', value, '');
   }
 
@@ -4857,7 +6262,7 @@
     getPropertyValue('border-end');
 
   /** Sets the value of "border-end" */
-  void set borderEnd(String value) {
+  set borderEnd(String value) {
     setProperty('border-end', value, '');
   }
 
@@ -4866,7 +6271,7 @@
     getPropertyValue('border-end-color');
 
   /** Sets the value of "border-end-color" */
-  void set borderEndColor(String value) {
+  set borderEndColor(String value) {
     setProperty('border-end-color', value, '');
   }
 
@@ -4875,7 +6280,7 @@
     getPropertyValue('border-end-style');
 
   /** Sets the value of "border-end-style" */
-  void set borderEndStyle(String value) {
+  set borderEndStyle(String value) {
     setProperty('border-end-style', value, '');
   }
 
@@ -4884,7 +6289,7 @@
     getPropertyValue('border-end-width');
 
   /** Sets the value of "border-end-width" */
-  void set borderEndWidth(String value) {
+  set borderEndWidth(String value) {
     setProperty('border-end-width', value, '');
   }
 
@@ -4893,7 +6298,7 @@
     getPropertyValue('border-fit');
 
   /** Sets the value of "border-fit" */
-  void set borderFit(String value) {
+  set borderFit(String value) {
     setProperty('border-fit', value, '');
   }
 
@@ -4902,7 +6307,7 @@
     getPropertyValue('border-horizontal-spacing');
 
   /** Sets the value of "border-horizontal-spacing" */
-  void set borderHorizontalSpacing(String value) {
+  set borderHorizontalSpacing(String value) {
     setProperty('border-horizontal-spacing', value, '');
   }
 
@@ -4911,7 +6316,7 @@
     getPropertyValue('border-image');
 
   /** Sets the value of "border-image" */
-  void set borderImage(String value) {
+  set borderImage(String value) {
     setProperty('border-image', value, '');
   }
 
@@ -4920,7 +6325,7 @@
     getPropertyValue('border-image-outset');
 
   /** Sets the value of "border-image-outset" */
-  void set borderImageOutset(String value) {
+  set borderImageOutset(String value) {
     setProperty('border-image-outset', value, '');
   }
 
@@ -4929,7 +6334,7 @@
     getPropertyValue('border-image-repeat');
 
   /** Sets the value of "border-image-repeat" */
-  void set borderImageRepeat(String value) {
+  set borderImageRepeat(String value) {
     setProperty('border-image-repeat', value, '');
   }
 
@@ -4938,7 +6343,7 @@
     getPropertyValue('border-image-slice');
 
   /** Sets the value of "border-image-slice" */
-  void set borderImageSlice(String value) {
+  set borderImageSlice(String value) {
     setProperty('border-image-slice', value, '');
   }
 
@@ -4947,7 +6352,7 @@
     getPropertyValue('border-image-source');
 
   /** Sets the value of "border-image-source" */
-  void set borderImageSource(String value) {
+  set borderImageSource(String value) {
     setProperty('border-image-source', value, '');
   }
 
@@ -4956,7 +6361,7 @@
     getPropertyValue('border-image-width');
 
   /** Sets the value of "border-image-width" */
-  void set borderImageWidth(String value) {
+  set borderImageWidth(String value) {
     setProperty('border-image-width', value, '');
   }
 
@@ -4965,7 +6370,7 @@
     getPropertyValue('border-left');
 
   /** Sets the value of "border-left" */
-  void set borderLeft(String value) {
+  set borderLeft(String value) {
     setProperty('border-left', value, '');
   }
 
@@ -4974,7 +6379,7 @@
     getPropertyValue('border-left-color');
 
   /** Sets the value of "border-left-color" */
-  void set borderLeftColor(String value) {
+  set borderLeftColor(String value) {
     setProperty('border-left-color', value, '');
   }
 
@@ -4983,7 +6388,7 @@
     getPropertyValue('border-left-style');
 
   /** Sets the value of "border-left-style" */
-  void set borderLeftStyle(String value) {
+  set borderLeftStyle(String value) {
     setProperty('border-left-style', value, '');
   }
 
@@ -4992,7 +6397,7 @@
     getPropertyValue('border-left-width');
 
   /** Sets the value of "border-left-width" */
-  void set borderLeftWidth(String value) {
+  set borderLeftWidth(String value) {
     setProperty('border-left-width', value, '');
   }
 
@@ -5001,7 +6406,7 @@
     getPropertyValue('border-radius');
 
   /** Sets the value of "border-radius" */
-  void set borderRadius(String value) {
+  set borderRadius(String value) {
     setProperty('border-radius', value, '');
   }
 
@@ -5010,7 +6415,7 @@
     getPropertyValue('border-right');
 
   /** Sets the value of "border-right" */
-  void set borderRight(String value) {
+  set borderRight(String value) {
     setProperty('border-right', value, '');
   }
 
@@ -5019,7 +6424,7 @@
     getPropertyValue('border-right-color');
 
   /** Sets the value of "border-right-color" */
-  void set borderRightColor(String value) {
+  set borderRightColor(String value) {
     setProperty('border-right-color', value, '');
   }
 
@@ -5028,7 +6433,7 @@
     getPropertyValue('border-right-style');
 
   /** Sets the value of "border-right-style" */
-  void set borderRightStyle(String value) {
+  set borderRightStyle(String value) {
     setProperty('border-right-style', value, '');
   }
 
@@ -5037,7 +6442,7 @@
     getPropertyValue('border-right-width');
 
   /** Sets the value of "border-right-width" */
-  void set borderRightWidth(String value) {
+  set borderRightWidth(String value) {
     setProperty('border-right-width', value, '');
   }
 
@@ -5046,7 +6451,7 @@
     getPropertyValue('border-spacing');
 
   /** Sets the value of "border-spacing" */
-  void set borderSpacing(String value) {
+  set borderSpacing(String value) {
     setProperty('border-spacing', value, '');
   }
 
@@ -5055,7 +6460,7 @@
     getPropertyValue('border-start');
 
   /** Sets the value of "border-start" */
-  void set borderStart(String value) {
+  set borderStart(String value) {
     setProperty('border-start', value, '');
   }
 
@@ -5064,7 +6469,7 @@
     getPropertyValue('border-start-color');
 
   /** Sets the value of "border-start-color" */
-  void set borderStartColor(String value) {
+  set borderStartColor(String value) {
     setProperty('border-start-color', value, '');
   }
 
@@ -5073,7 +6478,7 @@
     getPropertyValue('border-start-style');
 
   /** Sets the value of "border-start-style" */
-  void set borderStartStyle(String value) {
+  set borderStartStyle(String value) {
     setProperty('border-start-style', value, '');
   }
 
@@ -5082,7 +6487,7 @@
     getPropertyValue('border-start-width');
 
   /** Sets the value of "border-start-width" */
-  void set borderStartWidth(String value) {
+  set borderStartWidth(String value) {
     setProperty('border-start-width', value, '');
   }
 
@@ -5091,7 +6496,7 @@
     getPropertyValue('border-style');
 
   /** Sets the value of "border-style" */
-  void set borderStyle(String value) {
+  set borderStyle(String value) {
     setProperty('border-style', value, '');
   }
 
@@ -5100,7 +6505,7 @@
     getPropertyValue('border-top');
 
   /** Sets the value of "border-top" */
-  void set borderTop(String value) {
+  set borderTop(String value) {
     setProperty('border-top', value, '');
   }
 
@@ -5109,7 +6514,7 @@
     getPropertyValue('border-top-color');
 
   /** Sets the value of "border-top-color" */
-  void set borderTopColor(String value) {
+  set borderTopColor(String value) {
     setProperty('border-top-color', value, '');
   }
 
@@ -5118,7 +6523,7 @@
     getPropertyValue('border-top-left-radius');
 
   /** Sets the value of "border-top-left-radius" */
-  void set borderTopLeftRadius(String value) {
+  set borderTopLeftRadius(String value) {
     setProperty('border-top-left-radius', value, '');
   }
 
@@ -5127,7 +6532,7 @@
     getPropertyValue('border-top-right-radius');
 
   /** Sets the value of "border-top-right-radius" */
-  void set borderTopRightRadius(String value) {
+  set borderTopRightRadius(String value) {
     setProperty('border-top-right-radius', value, '');
   }
 
@@ -5136,7 +6541,7 @@
     getPropertyValue('border-top-style');
 
   /** Sets the value of "border-top-style" */
-  void set borderTopStyle(String value) {
+  set borderTopStyle(String value) {
     setProperty('border-top-style', value, '');
   }
 
@@ -5145,7 +6550,7 @@
     getPropertyValue('border-top-width');
 
   /** Sets the value of "border-top-width" */
-  void set borderTopWidth(String value) {
+  set borderTopWidth(String value) {
     setProperty('border-top-width', value, '');
   }
 
@@ -5154,7 +6559,7 @@
     getPropertyValue('border-vertical-spacing');
 
   /** Sets the value of "border-vertical-spacing" */
-  void set borderVerticalSpacing(String value) {
+  set borderVerticalSpacing(String value) {
     setProperty('border-vertical-spacing', value, '');
   }
 
@@ -5163,7 +6568,7 @@
     getPropertyValue('border-width');
 
   /** Sets the value of "border-width" */
-  void set borderWidth(String value) {
+  set borderWidth(String value) {
     setProperty('border-width', value, '');
   }
 
@@ -5172,7 +6577,7 @@
     getPropertyValue('bottom');
 
   /** Sets the value of "bottom" */
-  void set bottom(String value) {
+  set bottom(String value) {
     setProperty('bottom', value, '');
   }
 
@@ -5181,7 +6586,7 @@
     getPropertyValue('box-align');
 
   /** Sets the value of "box-align" */
-  void set boxAlign(String value) {
+  set boxAlign(String value) {
     setProperty('box-align', value, '');
   }
 
@@ -5190,7 +6595,7 @@
     getPropertyValue('box-decoration-break');
 
   /** Sets the value of "box-decoration-break" */
-  void set boxDecorationBreak(String value) {
+  set boxDecorationBreak(String value) {
     setProperty('box-decoration-break', value, '');
   }
 
@@ -5199,7 +6604,7 @@
     getPropertyValue('box-direction');
 
   /** Sets the value of "box-direction" */
-  void set boxDirection(String value) {
+  set boxDirection(String value) {
     setProperty('box-direction', value, '');
   }
 
@@ -5208,7 +6613,7 @@
     getPropertyValue('box-flex');
 
   /** Sets the value of "box-flex" */
-  void set boxFlex(String value) {
+  set boxFlex(String value) {
     setProperty('box-flex', value, '');
   }
 
@@ -5217,7 +6622,7 @@
     getPropertyValue('box-flex-group');
 
   /** Sets the value of "box-flex-group" */
-  void set boxFlexGroup(String value) {
+  set boxFlexGroup(String value) {
     setProperty('box-flex-group', value, '');
   }
 
@@ -5226,7 +6631,7 @@
     getPropertyValue('box-lines');
 
   /** Sets the value of "box-lines" */
-  void set boxLines(String value) {
+  set boxLines(String value) {
     setProperty('box-lines', value, '');
   }
 
@@ -5235,7 +6640,7 @@
     getPropertyValue('box-ordinal-group');
 
   /** Sets the value of "box-ordinal-group" */
-  void set boxOrdinalGroup(String value) {
+  set boxOrdinalGroup(String value) {
     setProperty('box-ordinal-group', value, '');
   }
 
@@ -5244,7 +6649,7 @@
     getPropertyValue('box-orient');
 
   /** Sets the value of "box-orient" */
-  void set boxOrient(String value) {
+  set boxOrient(String value) {
     setProperty('box-orient', value, '');
   }
 
@@ -5253,7 +6658,7 @@
     getPropertyValue('box-pack');
 
   /** Sets the value of "box-pack" */
-  void set boxPack(String value) {
+  set boxPack(String value) {
     setProperty('box-pack', value, '');
   }
 
@@ -5262,7 +6667,7 @@
     getPropertyValue('box-reflect');
 
   /** Sets the value of "box-reflect" */
-  void set boxReflect(String value) {
+  set boxReflect(String value) {
     setProperty('box-reflect', value, '');
   }
 
@@ -5271,7 +6676,7 @@
     getPropertyValue('box-shadow');
 
   /** Sets the value of "box-shadow" */
-  void set boxShadow(String value) {
+  set boxShadow(String value) {
     setProperty('box-shadow', value, '');
   }
 
@@ -5280,7 +6685,7 @@
     getPropertyValue('box-sizing');
 
   /** Sets the value of "box-sizing" */
-  void set boxSizing(String value) {
+  set boxSizing(String value) {
     setProperty('box-sizing', value, '');
   }
 
@@ -5289,7 +6694,7 @@
     getPropertyValue('caption-side');
 
   /** Sets the value of "caption-side" */
-  void set captionSide(String value) {
+  set captionSide(String value) {
     setProperty('caption-side', value, '');
   }
 
@@ -5298,7 +6703,7 @@
     getPropertyValue('clear');
 
   /** Sets the value of "clear" */
-  void set clear(String value) {
+  set clear(String value) {
     setProperty('clear', value, '');
   }
 
@@ -5307,7 +6712,7 @@
     getPropertyValue('clip');
 
   /** Sets the value of "clip" */
-  void set clip(String value) {
+  set clip(String value) {
     setProperty('clip', value, '');
   }
 
@@ -5316,7 +6721,7 @@
     getPropertyValue('clip-path');
 
   /** Sets the value of "clip-path" */
-  void set clipPath(String value) {
+  set clipPath(String value) {
     setProperty('clip-path', value, '');
   }
 
@@ -5325,7 +6730,7 @@
     getPropertyValue('color');
 
   /** Sets the value of "color" */
-  void set color(String value) {
+  set color(String value) {
     setProperty('color', value, '');
   }
 
@@ -5334,7 +6739,7 @@
     getPropertyValue('column-break-after');
 
   /** Sets the value of "column-break-after" */
-  void set columnBreakAfter(String value) {
+  set columnBreakAfter(String value) {
     setProperty('column-break-after', value, '');
   }
 
@@ -5343,7 +6748,7 @@
     getPropertyValue('column-break-before');
 
   /** Sets the value of "column-break-before" */
-  void set columnBreakBefore(String value) {
+  set columnBreakBefore(String value) {
     setProperty('column-break-before', value, '');
   }
 
@@ -5352,7 +6757,7 @@
     getPropertyValue('column-break-inside');
 
   /** Sets the value of "column-break-inside" */
-  void set columnBreakInside(String value) {
+  set columnBreakInside(String value) {
     setProperty('column-break-inside', value, '');
   }
 
@@ -5361,7 +6766,7 @@
     getPropertyValue('column-count');
 
   /** Sets the value of "column-count" */
-  void set columnCount(String value) {
+  set columnCount(String value) {
     setProperty('column-count', value, '');
   }
 
@@ -5370,7 +6775,7 @@
     getPropertyValue('column-fill');
 
   /** Sets the value of "column-fill" */
-  void set columnFill(String value) {
+  set columnFill(String value) {
     setProperty('column-fill', value, '');
   }
 
@@ -5379,7 +6784,7 @@
     getPropertyValue('column-gap');
 
   /** Sets the value of "column-gap" */
-  void set columnGap(String value) {
+  set columnGap(String value) {
     setProperty('column-gap', value, '');
   }
 
@@ -5388,7 +6793,7 @@
     getPropertyValue('column-rule');
 
   /** Sets the value of "column-rule" */
-  void set columnRule(String value) {
+  set columnRule(String value) {
     setProperty('column-rule', value, '');
   }
 
@@ -5397,7 +6802,7 @@
     getPropertyValue('column-rule-color');
 
   /** Sets the value of "column-rule-color" */
-  void set columnRuleColor(String value) {
+  set columnRuleColor(String value) {
     setProperty('column-rule-color', value, '');
   }
 
@@ -5406,7 +6811,7 @@
     getPropertyValue('column-rule-style');
 
   /** Sets the value of "column-rule-style" */
-  void set columnRuleStyle(String value) {
+  set columnRuleStyle(String value) {
     setProperty('column-rule-style', value, '');
   }
 
@@ -5415,7 +6820,7 @@
     getPropertyValue('column-rule-width');
 
   /** Sets the value of "column-rule-width" */
-  void set columnRuleWidth(String value) {
+  set columnRuleWidth(String value) {
     setProperty('column-rule-width', value, '');
   }
 
@@ -5424,7 +6829,7 @@
     getPropertyValue('column-span');
 
   /** Sets the value of "column-span" */
-  void set columnSpan(String value) {
+  set columnSpan(String value) {
     setProperty('column-span', value, '');
   }
 
@@ -5433,7 +6838,7 @@
     getPropertyValue('column-width');
 
   /** Sets the value of "column-width" */
-  void set columnWidth(String value) {
+  set columnWidth(String value) {
     setProperty('column-width', value, '');
   }
 
@@ -5442,7 +6847,7 @@
     getPropertyValue('columns');
 
   /** Sets the value of "columns" */
-  void set columns(String value) {
+  set columns(String value) {
     setProperty('columns', value, '');
   }
 
@@ -5451,7 +6856,7 @@
     getPropertyValue('content');
 
   /** Sets the value of "content" */
-  void set content(String value) {
+  set content(String value) {
     setProperty('content', value, '');
   }
 
@@ -5460,7 +6865,7 @@
     getPropertyValue('counter-increment');
 
   /** Sets the value of "counter-increment" */
-  void set counterIncrement(String value) {
+  set counterIncrement(String value) {
     setProperty('counter-increment', value, '');
   }
 
@@ -5469,7 +6874,7 @@
     getPropertyValue('counter-reset');
 
   /** Sets the value of "counter-reset" */
-  void set counterReset(String value) {
+  set counterReset(String value) {
     setProperty('counter-reset', value, '');
   }
 
@@ -5478,7 +6883,7 @@
     getPropertyValue('cursor');
 
   /** Sets the value of "cursor" */
-  void set cursor(String value) {
+  set cursor(String value) {
     setProperty('cursor', value, '');
   }
 
@@ -5487,7 +6892,7 @@
     getPropertyValue('direction');
 
   /** Sets the value of "direction" */
-  void set direction(String value) {
+  set direction(String value) {
     setProperty('direction', value, '');
   }
 
@@ -5496,7 +6901,7 @@
     getPropertyValue('display');
 
   /** Sets the value of "display" */
-  void set display(String value) {
+  set display(String value) {
     setProperty('display', value, '');
   }
 
@@ -5505,7 +6910,7 @@
     getPropertyValue('empty-cells');
 
   /** Sets the value of "empty-cells" */
-  void set emptyCells(String value) {
+  set emptyCells(String value) {
     setProperty('empty-cells', value, '');
   }
 
@@ -5514,7 +6919,7 @@
     getPropertyValue('filter');
 
   /** Sets the value of "filter" */
-  void set filter(String value) {
+  set filter(String value) {
     setProperty('filter', value, '');
   }
 
@@ -5523,7 +6928,7 @@
     getPropertyValue('flex');
 
   /** Sets the value of "flex" */
-  void set flex(String value) {
+  set flex(String value) {
     setProperty('flex', value, '');
   }
 
@@ -5532,7 +6937,7 @@
     getPropertyValue('flex-basis');
 
   /** Sets the value of "flex-basis" */
-  void set flexBasis(String value) {
+  set flexBasis(String value) {
     setProperty('flex-basis', value, '');
   }
 
@@ -5541,7 +6946,7 @@
     getPropertyValue('flex-direction');
 
   /** Sets the value of "flex-direction" */
-  void set flexDirection(String value) {
+  set flexDirection(String value) {
     setProperty('flex-direction', value, '');
   }
 
@@ -5550,7 +6955,7 @@
     getPropertyValue('flex-flow');
 
   /** Sets the value of "flex-flow" */
-  void set flexFlow(String value) {
+  set flexFlow(String value) {
     setProperty('flex-flow', value, '');
   }
 
@@ -5559,7 +6964,7 @@
     getPropertyValue('flex-grow');
 
   /** Sets the value of "flex-grow" */
-  void set flexGrow(String value) {
+  set flexGrow(String value) {
     setProperty('flex-grow', value, '');
   }
 
@@ -5568,7 +6973,7 @@
     getPropertyValue('flex-shrink');
 
   /** Sets the value of "flex-shrink" */
-  void set flexShrink(String value) {
+  set flexShrink(String value) {
     setProperty('flex-shrink', value, '');
   }
 
@@ -5577,7 +6982,7 @@
     getPropertyValue('flex-wrap');
 
   /** Sets the value of "flex-wrap" */
-  void set flexWrap(String value) {
+  set flexWrap(String value) {
     setProperty('flex-wrap', value, '');
   }
 
@@ -5586,7 +6991,7 @@
     getPropertyValue('float');
 
   /** Sets the value of "float" */
-  void set float(String value) {
+  set float(String value) {
     setProperty('float', value, '');
   }
 
@@ -5595,7 +7000,7 @@
     getPropertyValue('font');
 
   /** Sets the value of "font" */
-  void set font(String value) {
+  set font(String value) {
     setProperty('font', value, '');
   }
 
@@ -5604,7 +7009,7 @@
     getPropertyValue('font-family');
 
   /** Sets the value of "font-family" */
-  void set fontFamily(String value) {
+  set fontFamily(String value) {
     setProperty('font-family', value, '');
   }
 
@@ -5613,7 +7018,7 @@
     getPropertyValue('font-feature-settings');
 
   /** Sets the value of "font-feature-settings" */
-  void set fontFeatureSettings(String value) {
+  set fontFeatureSettings(String value) {
     setProperty('font-feature-settings', value, '');
   }
 
@@ -5622,7 +7027,7 @@
     getPropertyValue('font-kerning');
 
   /** Sets the value of "font-kerning" */
-  void set fontKerning(String value) {
+  set fontKerning(String value) {
     setProperty('font-kerning', value, '');
   }
 
@@ -5631,7 +7036,7 @@
     getPropertyValue('font-size');
 
   /** Sets the value of "font-size" */
-  void set fontSize(String value) {
+  set fontSize(String value) {
     setProperty('font-size', value, '');
   }
 
@@ -5640,7 +7045,7 @@
     getPropertyValue('font-size-delta');
 
   /** Sets the value of "font-size-delta" */
-  void set fontSizeDelta(String value) {
+  set fontSizeDelta(String value) {
     setProperty('font-size-delta', value, '');
   }
 
@@ -5649,7 +7054,7 @@
     getPropertyValue('font-smoothing');
 
   /** Sets the value of "font-smoothing" */
-  void set fontSmoothing(String value) {
+  set fontSmoothing(String value) {
     setProperty('font-smoothing', value, '');
   }
 
@@ -5658,7 +7063,7 @@
     getPropertyValue('font-stretch');
 
   /** Sets the value of "font-stretch" */
-  void set fontStretch(String value) {
+  set fontStretch(String value) {
     setProperty('font-stretch', value, '');
   }
 
@@ -5667,7 +7072,7 @@
     getPropertyValue('font-style');
 
   /** Sets the value of "font-style" */
-  void set fontStyle(String value) {
+  set fontStyle(String value) {
     setProperty('font-style', value, '');
   }
 
@@ -5676,7 +7081,7 @@
     getPropertyValue('font-variant');
 
   /** Sets the value of "font-variant" */
-  void set fontVariant(String value) {
+  set fontVariant(String value) {
     setProperty('font-variant', value, '');
   }
 
@@ -5685,7 +7090,7 @@
     getPropertyValue('font-variant-ligatures');
 
   /** Sets the value of "font-variant-ligatures" */
-  void set fontVariantLigatures(String value) {
+  set fontVariantLigatures(String value) {
     setProperty('font-variant-ligatures', value, '');
   }
 
@@ -5694,7 +7099,7 @@
     getPropertyValue('font-weight');
 
   /** Sets the value of "font-weight" */
-  void set fontWeight(String value) {
+  set fontWeight(String value) {
     setProperty('font-weight', value, '');
   }
 
@@ -5703,7 +7108,7 @@
     getPropertyValue('grid');
 
   /** Sets the value of "grid" */
-  void set grid(String value) {
+  set grid(String value) {
     setProperty('grid', value, '');
   }
 
@@ -5712,7 +7117,7 @@
     getPropertyValue('grid-area');
 
   /** Sets the value of "grid-area" */
-  void set gridArea(String value) {
+  set gridArea(String value) {
     setProperty('grid-area', value, '');
   }
 
@@ -5721,7 +7126,7 @@
     getPropertyValue('grid-auto-columns');
 
   /** Sets the value of "grid-auto-columns" */
-  void set gridAutoColumns(String value) {
+  set gridAutoColumns(String value) {
     setProperty('grid-auto-columns', value, '');
   }
 
@@ -5730,7 +7135,7 @@
     getPropertyValue('grid-auto-flow');
 
   /** Sets the value of "grid-auto-flow" */
-  void set gridAutoFlow(String value) {
+  set gridAutoFlow(String value) {
     setProperty('grid-auto-flow', value, '');
   }
 
@@ -5739,7 +7144,7 @@
     getPropertyValue('grid-auto-rows');
 
   /** Sets the value of "grid-auto-rows" */
-  void set gridAutoRows(String value) {
+  set gridAutoRows(String value) {
     setProperty('grid-auto-rows', value, '');
   }
 
@@ -5748,7 +7153,7 @@
     getPropertyValue('grid-column');
 
   /** Sets the value of "grid-column" */
-  void set gridColumn(String value) {
+  set gridColumn(String value) {
     setProperty('grid-column', value, '');
   }
 
@@ -5757,7 +7162,7 @@
     getPropertyValue('grid-column-end');
 
   /** Sets the value of "grid-column-end" */
-  void set gridColumnEnd(String value) {
+  set gridColumnEnd(String value) {
     setProperty('grid-column-end', value, '');
   }
 
@@ -5766,7 +7171,7 @@
     getPropertyValue('grid-column-start');
 
   /** Sets the value of "grid-column-start" */
-  void set gridColumnStart(String value) {
+  set gridColumnStart(String value) {
     setProperty('grid-column-start', value, '');
   }
 
@@ -5775,7 +7180,7 @@
     getPropertyValue('grid-row');
 
   /** Sets the value of "grid-row" */
-  void set gridRow(String value) {
+  set gridRow(String value) {
     setProperty('grid-row', value, '');
   }
 
@@ -5784,7 +7189,7 @@
     getPropertyValue('grid-row-end');
 
   /** Sets the value of "grid-row-end" */
-  void set gridRowEnd(String value) {
+  set gridRowEnd(String value) {
     setProperty('grid-row-end', value, '');
   }
 
@@ -5793,7 +7198,7 @@
     getPropertyValue('grid-row-start');
 
   /** Sets the value of "grid-row-start" */
-  void set gridRowStart(String value) {
+  set gridRowStart(String value) {
     setProperty('grid-row-start', value, '');
   }
 
@@ -5802,7 +7207,7 @@
     getPropertyValue('grid-template');
 
   /** Sets the value of "grid-template" */
-  void set gridTemplate(String value) {
+  set gridTemplate(String value) {
     setProperty('grid-template', value, '');
   }
 
@@ -5811,7 +7216,7 @@
     getPropertyValue('grid-template-areas');
 
   /** Sets the value of "grid-template-areas" */
-  void set gridTemplateAreas(String value) {
+  set gridTemplateAreas(String value) {
     setProperty('grid-template-areas', value, '');
   }
 
@@ -5820,7 +7225,7 @@
     getPropertyValue('grid-template-columns');
 
   /** Sets the value of "grid-template-columns" */
-  void set gridTemplateColumns(String value) {
+  set gridTemplateColumns(String value) {
     setProperty('grid-template-columns', value, '');
   }
 
@@ -5829,7 +7234,7 @@
     getPropertyValue('grid-template-rows');
 
   /** Sets the value of "grid-template-rows" */
-  void set gridTemplateRows(String value) {
+  set gridTemplateRows(String value) {
     setProperty('grid-template-rows', value, '');
   }
 
@@ -5838,7 +7243,7 @@
     getPropertyValue('height');
 
   /** Sets the value of "height" */
-  void set height(String value) {
+  set height(String value) {
     setProperty('height', value, '');
   }
 
@@ -5847,7 +7252,7 @@
     getPropertyValue('highlight');
 
   /** Sets the value of "highlight" */
-  void set highlight(String value) {
+  set highlight(String value) {
     setProperty('highlight', value, '');
   }
 
@@ -5856,7 +7261,7 @@
     getPropertyValue('hyphenate-character');
 
   /** Sets the value of "hyphenate-character" */
-  void set hyphenateCharacter(String value) {
+  set hyphenateCharacter(String value) {
     setProperty('hyphenate-character', value, '');
   }
 
@@ -5865,7 +7270,7 @@
     getPropertyValue('image-rendering');
 
   /** Sets the value of "image-rendering" */
-  void set imageRendering(String value) {
+  set imageRendering(String value) {
     setProperty('image-rendering', value, '');
   }
 
@@ -5874,7 +7279,7 @@
     getPropertyValue('isolation');
 
   /** Sets the value of "isolation" */
-  void set isolation(String value) {
+  set isolation(String value) {
     setProperty('isolation', value, '');
   }
 
@@ -5883,7 +7288,7 @@
     getPropertyValue('justify-content');
 
   /** Sets the value of "justify-content" */
-  void set justifyContent(String value) {
+  set justifyContent(String value) {
     setProperty('justify-content', value, '');
   }
 
@@ -5892,7 +7297,7 @@
     getPropertyValue('justify-self');
 
   /** Sets the value of "justify-self" */
-  void set justifySelf(String value) {
+  set justifySelf(String value) {
     setProperty('justify-self', value, '');
   }
 
@@ -5901,7 +7306,7 @@
     getPropertyValue('left');
 
   /** Sets the value of "left" */
-  void set left(String value) {
+  set left(String value) {
     setProperty('left', value, '');
   }
 
@@ -5910,7 +7315,7 @@
     getPropertyValue('letter-spacing');
 
   /** Sets the value of "letter-spacing" */
-  void set letterSpacing(String value) {
+  set letterSpacing(String value) {
     setProperty('letter-spacing', value, '');
   }
 
@@ -5919,7 +7324,7 @@
     getPropertyValue('line-box-contain');
 
   /** Sets the value of "line-box-contain" */
-  void set lineBoxContain(String value) {
+  set lineBoxContain(String value) {
     setProperty('line-box-contain', value, '');
   }
 
@@ -5928,7 +7333,7 @@
     getPropertyValue('line-break');
 
   /** Sets the value of "line-break" */
-  void set lineBreak(String value) {
+  set lineBreak(String value) {
     setProperty('line-break', value, '');
   }
 
@@ -5937,7 +7342,7 @@
     getPropertyValue('line-clamp');
 
   /** Sets the value of "line-clamp" */
-  void set lineClamp(String value) {
+  set lineClamp(String value) {
     setProperty('line-clamp', value, '');
   }
 
@@ -5946,7 +7351,7 @@
     getPropertyValue('line-height');
 
   /** Sets the value of "line-height" */
-  void set lineHeight(String value) {
+  set lineHeight(String value) {
     setProperty('line-height', value, '');
   }
 
@@ -5955,7 +7360,7 @@
     getPropertyValue('list-style');
 
   /** Sets the value of "list-style" */
-  void set listStyle(String value) {
+  set listStyle(String value) {
     setProperty('list-style', value, '');
   }
 
@@ -5964,7 +7369,7 @@
     getPropertyValue('list-style-image');
 
   /** Sets the value of "list-style-image" */
-  void set listStyleImage(String value) {
+  set listStyleImage(String value) {
     setProperty('list-style-image', value, '');
   }
 
@@ -5973,7 +7378,7 @@
     getPropertyValue('list-style-position');
 
   /** Sets the value of "list-style-position" */
-  void set listStylePosition(String value) {
+  set listStylePosition(String value) {
     setProperty('list-style-position', value, '');
   }
 
@@ -5982,7 +7387,7 @@
     getPropertyValue('list-style-type');
 
   /** Sets the value of "list-style-type" */
-  void set listStyleType(String value) {
+  set listStyleType(String value) {
     setProperty('list-style-type', value, '');
   }
 
@@ -5991,7 +7396,7 @@
     getPropertyValue('locale');
 
   /** Sets the value of "locale" */
-  void set locale(String value) {
+  set locale(String value) {
     setProperty('locale', value, '');
   }
 
@@ -6000,7 +7405,7 @@
     getPropertyValue('logical-height');
 
   /** Sets the value of "logical-height" */
-  void set logicalHeight(String value) {
+  set logicalHeight(String value) {
     setProperty('logical-height', value, '');
   }
 
@@ -6009,7 +7414,7 @@
     getPropertyValue('logical-width');
 
   /** Sets the value of "logical-width" */
-  void set logicalWidth(String value) {
+  set logicalWidth(String value) {
     setProperty('logical-width', value, '');
   }
 
@@ -6018,7 +7423,7 @@
     getPropertyValue('margin');
 
   /** Sets the value of "margin" */
-  void set margin(String value) {
+  set margin(String value) {
     setProperty('margin', value, '');
   }
 
@@ -6027,7 +7432,7 @@
     getPropertyValue('margin-after');
 
   /** Sets the value of "margin-after" */
-  void set marginAfter(String value) {
+  set marginAfter(String value) {
     setProperty('margin-after', value, '');
   }
 
@@ -6036,7 +7441,7 @@
     getPropertyValue('margin-after-collapse');
 
   /** Sets the value of "margin-after-collapse" */
-  void set marginAfterCollapse(String value) {
+  set marginAfterCollapse(String value) {
     setProperty('margin-after-collapse', value, '');
   }
 
@@ -6045,7 +7450,7 @@
     getPropertyValue('margin-before');
 
   /** Sets the value of "margin-before" */
-  void set marginBefore(String value) {
+  set marginBefore(String value) {
     setProperty('margin-before', value, '');
   }
 
@@ -6054,7 +7459,7 @@
     getPropertyValue('margin-before-collapse');
 
   /** Sets the value of "margin-before-collapse" */
-  void set marginBeforeCollapse(String value) {
+  set marginBeforeCollapse(String value) {
     setProperty('margin-before-collapse', value, '');
   }
 
@@ -6063,7 +7468,7 @@
     getPropertyValue('margin-bottom');
 
   /** Sets the value of "margin-bottom" */
-  void set marginBottom(String value) {
+  set marginBottom(String value) {
     setProperty('margin-bottom', value, '');
   }
 
@@ -6072,7 +7477,7 @@
     getPropertyValue('margin-bottom-collapse');
 
   /** Sets the value of "margin-bottom-collapse" */
-  void set marginBottomCollapse(String value) {
+  set marginBottomCollapse(String value) {
     setProperty('margin-bottom-collapse', value, '');
   }
 
@@ -6081,7 +7486,7 @@
     getPropertyValue('margin-collapse');
 
   /** Sets the value of "margin-collapse" */
-  void set marginCollapse(String value) {
+  set marginCollapse(String value) {
     setProperty('margin-collapse', value, '');
   }
 
@@ -6090,7 +7495,7 @@
     getPropertyValue('margin-end');
 
   /** Sets the value of "margin-end" */
-  void set marginEnd(String value) {
+  set marginEnd(String value) {
     setProperty('margin-end', value, '');
   }
 
@@ -6099,7 +7504,7 @@
     getPropertyValue('margin-left');
 
   /** Sets the value of "margin-left" */
-  void set marginLeft(String value) {
+  set marginLeft(String value) {
     setProperty('margin-left', value, '');
   }
 
@@ -6108,7 +7513,7 @@
     getPropertyValue('margin-right');
 
   /** Sets the value of "margin-right" */
-  void set marginRight(String value) {
+  set marginRight(String value) {
     setProperty('margin-right', value, '');
   }
 
@@ -6117,7 +7522,7 @@
     getPropertyValue('margin-start');
 
   /** Sets the value of "margin-start" */
-  void set marginStart(String value) {
+  set marginStart(String value) {
     setProperty('margin-start', value, '');
   }
 
@@ -6126,7 +7531,7 @@
     getPropertyValue('margin-top');
 
   /** Sets the value of "margin-top" */
-  void set marginTop(String value) {
+  set marginTop(String value) {
     setProperty('margin-top', value, '');
   }
 
@@ -6135,7 +7540,7 @@
     getPropertyValue('margin-top-collapse');
 
   /** Sets the value of "margin-top-collapse" */
-  void set marginTopCollapse(String value) {
+  set marginTopCollapse(String value) {
     setProperty('margin-top-collapse', value, '');
   }
 
@@ -6144,7 +7549,7 @@
     getPropertyValue('mask');
 
   /** Sets the value of "mask" */
-  void set mask(String value) {
+  set mask(String value) {
     setProperty('mask', value, '');
   }
 
@@ -6153,7 +7558,7 @@
     getPropertyValue('mask-box-image');
 
   /** Sets the value of "mask-box-image" */
-  void set maskBoxImage(String value) {
+  set maskBoxImage(String value) {
     setProperty('mask-box-image', value, '');
   }
 
@@ -6162,7 +7567,7 @@
     getPropertyValue('mask-box-image-outset');
 
   /** Sets the value of "mask-box-image-outset" */
-  void set maskBoxImageOutset(String value) {
+  set maskBoxImageOutset(String value) {
     setProperty('mask-box-image-outset', value, '');
   }
 
@@ -6171,7 +7576,7 @@
     getPropertyValue('mask-box-image-repeat');
 
   /** Sets the value of "mask-box-image-repeat" */
-  void set maskBoxImageRepeat(String value) {
+  set maskBoxImageRepeat(String value) {
     setProperty('mask-box-image-repeat', value, '');
   }
 
@@ -6180,7 +7585,7 @@
     getPropertyValue('mask-box-image-slice');
 
   /** Sets the value of "mask-box-image-slice" */
-  void set maskBoxImageSlice(String value) {
+  set maskBoxImageSlice(String value) {
     setProperty('mask-box-image-slice', value, '');
   }
 
@@ -6189,7 +7594,7 @@
     getPropertyValue('mask-box-image-source');
 
   /** Sets the value of "mask-box-image-source" */
-  void set maskBoxImageSource(String value) {
+  set maskBoxImageSource(String value) {
     setProperty('mask-box-image-source', value, '');
   }
 
@@ -6198,7 +7603,7 @@
     getPropertyValue('mask-box-image-width');
 
   /** Sets the value of "mask-box-image-width" */
-  void set maskBoxImageWidth(String value) {
+  set maskBoxImageWidth(String value) {
     setProperty('mask-box-image-width', value, '');
   }
 
@@ -6207,7 +7612,7 @@
     getPropertyValue('mask-clip');
 
   /** Sets the value of "mask-clip" */
-  void set maskClip(String value) {
+  set maskClip(String value) {
     setProperty('mask-clip', value, '');
   }
 
@@ -6216,7 +7621,7 @@
     getPropertyValue('mask-composite');
 
   /** Sets the value of "mask-composite" */
-  void set maskComposite(String value) {
+  set maskComposite(String value) {
     setProperty('mask-composite', value, '');
   }
 
@@ -6225,7 +7630,7 @@
     getPropertyValue('mask-image');
 
   /** Sets the value of "mask-image" */
-  void set maskImage(String value) {
+  set maskImage(String value) {
     setProperty('mask-image', value, '');
   }
 
@@ -6234,7 +7639,7 @@
     getPropertyValue('mask-origin');
 
   /** Sets the value of "mask-origin" */
-  void set maskOrigin(String value) {
+  set maskOrigin(String value) {
     setProperty('mask-origin', value, '');
   }
 
@@ -6243,7 +7648,7 @@
     getPropertyValue('mask-position');
 
   /** Sets the value of "mask-position" */
-  void set maskPosition(String value) {
+  set maskPosition(String value) {
     setProperty('mask-position', value, '');
   }
 
@@ -6252,7 +7657,7 @@
     getPropertyValue('mask-position-x');
 
   /** Sets the value of "mask-position-x" */
-  void set maskPositionX(String value) {
+  set maskPositionX(String value) {
     setProperty('mask-position-x', value, '');
   }
 
@@ -6261,7 +7666,7 @@
     getPropertyValue('mask-position-y');
 
   /** Sets the value of "mask-position-y" */
-  void set maskPositionY(String value) {
+  set maskPositionY(String value) {
     setProperty('mask-position-y', value, '');
   }
 
@@ -6270,7 +7675,7 @@
     getPropertyValue('mask-repeat');
 
   /** Sets the value of "mask-repeat" */
-  void set maskRepeat(String value) {
+  set maskRepeat(String value) {
     setProperty('mask-repeat', value, '');
   }
 
@@ -6279,7 +7684,7 @@
     getPropertyValue('mask-repeat-x');
 
   /** Sets the value of "mask-repeat-x" */
-  void set maskRepeatX(String value) {
+  set maskRepeatX(String value) {
     setProperty('mask-repeat-x', value, '');
   }
 
@@ -6288,7 +7693,7 @@
     getPropertyValue('mask-repeat-y');
 
   /** Sets the value of "mask-repeat-y" */
-  void set maskRepeatY(String value) {
+  set maskRepeatY(String value) {
     setProperty('mask-repeat-y', value, '');
   }
 
@@ -6297,7 +7702,7 @@
     getPropertyValue('mask-size');
 
   /** Sets the value of "mask-size" */
-  void set maskSize(String value) {
+  set maskSize(String value) {
     setProperty('mask-size', value, '');
   }
 
@@ -6306,7 +7711,7 @@
     getPropertyValue('mask-source-type');
 
   /** Sets the value of "mask-source-type" */
-  void set maskSourceType(String value) {
+  set maskSourceType(String value) {
     setProperty('mask-source-type', value, '');
   }
 
@@ -6315,7 +7720,7 @@
     getPropertyValue('max-height');
 
   /** Sets the value of "max-height" */
-  void set maxHeight(String value) {
+  set maxHeight(String value) {
     setProperty('max-height', value, '');
   }
 
@@ -6324,7 +7729,7 @@
     getPropertyValue('max-logical-height');
 
   /** Sets the value of "max-logical-height" */
-  void set maxLogicalHeight(String value) {
+  set maxLogicalHeight(String value) {
     setProperty('max-logical-height', value, '');
   }
 
@@ -6333,7 +7738,7 @@
     getPropertyValue('max-logical-width');
 
   /** Sets the value of "max-logical-width" */
-  void set maxLogicalWidth(String value) {
+  set maxLogicalWidth(String value) {
     setProperty('max-logical-width', value, '');
   }
 
@@ -6342,7 +7747,7 @@
     getPropertyValue('max-width');
 
   /** Sets the value of "max-width" */
-  void set maxWidth(String value) {
+  set maxWidth(String value) {
     setProperty('max-width', value, '');
   }
 
@@ -6351,7 +7756,7 @@
     getPropertyValue('max-zoom');
 
   /** Sets the value of "max-zoom" */
-  void set maxZoom(String value) {
+  set maxZoom(String value) {
     setProperty('max-zoom', value, '');
   }
 
@@ -6360,7 +7765,7 @@
     getPropertyValue('min-height');
 
   /** Sets the value of "min-height" */
-  void set minHeight(String value) {
+  set minHeight(String value) {
     setProperty('min-height', value, '');
   }
 
@@ -6369,7 +7774,7 @@
     getPropertyValue('min-logical-height');
 
   /** Sets the value of "min-logical-height" */
-  void set minLogicalHeight(String value) {
+  set minLogicalHeight(String value) {
     setProperty('min-logical-height', value, '');
   }
 
@@ -6378,7 +7783,7 @@
     getPropertyValue('min-logical-width');
 
   /** Sets the value of "min-logical-width" */
-  void set minLogicalWidth(String value) {
+  set minLogicalWidth(String value) {
     setProperty('min-logical-width', value, '');
   }
 
@@ -6387,7 +7792,7 @@
     getPropertyValue('min-width');
 
   /** Sets the value of "min-width" */
-  void set minWidth(String value) {
+  set minWidth(String value) {
     setProperty('min-width', value, '');
   }
 
@@ -6396,7 +7801,7 @@
     getPropertyValue('min-zoom');
 
   /** Sets the value of "min-zoom" */
-  void set minZoom(String value) {
+  set minZoom(String value) {
     setProperty('min-zoom', value, '');
   }
 
@@ -6405,7 +7810,7 @@
     getPropertyValue('mix-blend-mode');
 
   /** Sets the value of "mix-blend-mode" */
-  void set mixBlendMode(String value) {
+  set mixBlendMode(String value) {
     setProperty('mix-blend-mode', value, '');
   }
 
@@ -6414,7 +7819,7 @@
     getPropertyValue('object-fit');
 
   /** Sets the value of "object-fit" */
-  void set objectFit(String value) {
+  set objectFit(String value) {
     setProperty('object-fit', value, '');
   }
 
@@ -6423,7 +7828,7 @@
     getPropertyValue('object-position');
 
   /** Sets the value of "object-position" */
-  void set objectPosition(String value) {
+  set objectPosition(String value) {
     setProperty('object-position', value, '');
   }
 
@@ -6432,7 +7837,7 @@
     getPropertyValue('opacity');
 
   /** Sets the value of "opacity" */
-  void set opacity(String value) {
+  set opacity(String value) {
     setProperty('opacity', value, '');
   }
 
@@ -6441,7 +7846,7 @@
     getPropertyValue('order');
 
   /** Sets the value of "order" */
-  void set order(String value) {
+  set order(String value) {
     setProperty('order', value, '');
   }
 
@@ -6450,7 +7855,7 @@
     getPropertyValue('orientation');
 
   /** Sets the value of "orientation" */
-  void set orientation(String value) {
+  set orientation(String value) {
     setProperty('orientation', value, '');
   }
 
@@ -6459,7 +7864,7 @@
     getPropertyValue('orphans');
 
   /** Sets the value of "orphans" */
-  void set orphans(String value) {
+  set orphans(String value) {
     setProperty('orphans', value, '');
   }
 
@@ -6468,7 +7873,7 @@
     getPropertyValue('outline');
 
   /** Sets the value of "outline" */
-  void set outline(String value) {
+  set outline(String value) {
     setProperty('outline', value, '');
   }
 
@@ -6477,7 +7882,7 @@
     getPropertyValue('outline-color');
 
   /** Sets the value of "outline-color" */
-  void set outlineColor(String value) {
+  set outlineColor(String value) {
     setProperty('outline-color', value, '');
   }
 
@@ -6486,7 +7891,7 @@
     getPropertyValue('outline-offset');
 
   /** Sets the value of "outline-offset" */
-  void set outlineOffset(String value) {
+  set outlineOffset(String value) {
     setProperty('outline-offset', value, '');
   }
 
@@ -6495,7 +7900,7 @@
     getPropertyValue('outline-style');
 
   /** Sets the value of "outline-style" */
-  void set outlineStyle(String value) {
+  set outlineStyle(String value) {
     setProperty('outline-style', value, '');
   }
 
@@ -6504,7 +7909,7 @@
     getPropertyValue('outline-width');
 
   /** Sets the value of "outline-width" */
-  void set outlineWidth(String value) {
+  set outlineWidth(String value) {
     setProperty('outline-width', value, '');
   }
 
@@ -6513,7 +7918,7 @@
     getPropertyValue('overflow');
 
   /** Sets the value of "overflow" */
-  void set overflow(String value) {
+  set overflow(String value) {
     setProperty('overflow', value, '');
   }
 
@@ -6522,7 +7927,7 @@
     getPropertyValue('overflow-wrap');
 
   /** Sets the value of "overflow-wrap" */
-  void set overflowWrap(String value) {
+  set overflowWrap(String value) {
     setProperty('overflow-wrap', value, '');
   }
 
@@ -6531,7 +7936,7 @@
     getPropertyValue('overflow-x');
 
   /** Sets the value of "overflow-x" */
-  void set overflowX(String value) {
+  set overflowX(String value) {
     setProperty('overflow-x', value, '');
   }
 
@@ -6540,7 +7945,7 @@
     getPropertyValue('overflow-y');
 
   /** Sets the value of "overflow-y" */
-  void set overflowY(String value) {
+  set overflowY(String value) {
     setProperty('overflow-y', value, '');
   }
 
@@ -6549,7 +7954,7 @@
     getPropertyValue('padding');
 
   /** Sets the value of "padding" */
-  void set padding(String value) {
+  set padding(String value) {
     setProperty('padding', value, '');
   }
 
@@ -6558,7 +7963,7 @@
     getPropertyValue('padding-after');
 
   /** Sets the value of "padding-after" */
-  void set paddingAfter(String value) {
+  set paddingAfter(String value) {
     setProperty('padding-after', value, '');
   }
 
@@ -6567,7 +7972,7 @@
     getPropertyValue('padding-before');
 
   /** Sets the value of "padding-before" */
-  void set paddingBefore(String value) {
+  set paddingBefore(String value) {
     setProperty('padding-before', value, '');
   }
 
@@ -6576,7 +7981,7 @@
     getPropertyValue('padding-bottom');
 
   /** Sets the value of "padding-bottom" */
-  void set paddingBottom(String value) {
+  set paddingBottom(String value) {
     setProperty('padding-bottom', value, '');
   }
 
@@ -6585,7 +7990,7 @@
     getPropertyValue('padding-end');
 
   /** Sets the value of "padding-end" */
-  void set paddingEnd(String value) {
+  set paddingEnd(String value) {
     setProperty('padding-end', value, '');
   }
 
@@ -6594,7 +7999,7 @@
     getPropertyValue('padding-left');
 
   /** Sets the value of "padding-left" */
-  void set paddingLeft(String value) {
+  set paddingLeft(String value) {
     setProperty('padding-left', value, '');
   }
 
@@ -6603,7 +8008,7 @@
     getPropertyValue('padding-right');
 
   /** Sets the value of "padding-right" */
-  void set paddingRight(String value) {
+  set paddingRight(String value) {
     setProperty('padding-right', value, '');
   }
 
@@ -6612,7 +8017,7 @@
     getPropertyValue('padding-start');
 
   /** Sets the value of "padding-start" */
-  void set paddingStart(String value) {
+  set paddingStart(String value) {
     setProperty('padding-start', value, '');
   }
 
@@ -6621,7 +8026,7 @@
     getPropertyValue('padding-top');
 
   /** Sets the value of "padding-top" */
-  void set paddingTop(String value) {
+  set paddingTop(String value) {
     setProperty('padding-top', value, '');
   }
 
@@ -6630,7 +8035,7 @@
     getPropertyValue('page');
 
   /** Sets the value of "page" */
-  void set page(String value) {
+  set page(String value) {
     setProperty('page', value, '');
   }
 
@@ -6639,7 +8044,7 @@
     getPropertyValue('page-break-after');
 
   /** Sets the value of "page-break-after" */
-  void set pageBreakAfter(String value) {
+  set pageBreakAfter(String value) {
     setProperty('page-break-after', value, '');
   }
 
@@ -6648,7 +8053,7 @@
     getPropertyValue('page-break-before');
 
   /** Sets the value of "page-break-before" */
-  void set pageBreakBefore(String value) {
+  set pageBreakBefore(String value) {
     setProperty('page-break-before', value, '');
   }
 
@@ -6657,7 +8062,7 @@
     getPropertyValue('page-break-inside');
 
   /** Sets the value of "page-break-inside" */
-  void set pageBreakInside(String value) {
+  set pageBreakInside(String value) {
     setProperty('page-break-inside', value, '');
   }
 
@@ -6666,7 +8071,7 @@
     getPropertyValue('perspective');
 
   /** Sets the value of "perspective" */
-  void set perspective(String value) {
+  set perspective(String value) {
     setProperty('perspective', value, '');
   }
 
@@ -6675,7 +8080,7 @@
     getPropertyValue('perspective-origin');
 
   /** Sets the value of "perspective-origin" */
-  void set perspectiveOrigin(String value) {
+  set perspectiveOrigin(String value) {
     setProperty('perspective-origin', value, '');
   }
 
@@ -6684,7 +8089,7 @@
     getPropertyValue('perspective-origin-x');
 
   /** Sets the value of "perspective-origin-x" */
-  void set perspectiveOriginX(String value) {
+  set perspectiveOriginX(String value) {
     setProperty('perspective-origin-x', value, '');
   }
 
@@ -6693,7 +8098,7 @@
     getPropertyValue('perspective-origin-y');
 
   /** Sets the value of "perspective-origin-y" */
-  void set perspectiveOriginY(String value) {
+  set perspectiveOriginY(String value) {
     setProperty('perspective-origin-y', value, '');
   }
 
@@ -6702,7 +8107,7 @@
     getPropertyValue('pointer-events');
 
   /** Sets the value of "pointer-events" */
-  void set pointerEvents(String value) {
+  set pointerEvents(String value) {
     setProperty('pointer-events', value, '');
   }
 
@@ -6711,7 +8116,7 @@
     getPropertyValue('position');
 
   /** Sets the value of "position" */
-  void set position(String value) {
+  set position(String value) {
     setProperty('position', value, '');
   }
 
@@ -6720,7 +8125,7 @@
     getPropertyValue('print-color-adjust');
 
   /** Sets the value of "print-color-adjust" */
-  void set printColorAdjust(String value) {
+  set printColorAdjust(String value) {
     setProperty('print-color-adjust', value, '');
   }
 
@@ -6729,7 +8134,7 @@
     getPropertyValue('quotes');
 
   /** Sets the value of "quotes" */
-  void set quotes(String value) {
+  set quotes(String value) {
     setProperty('quotes', value, '');
   }
 
@@ -6738,7 +8143,7 @@
     getPropertyValue('resize');
 
   /** Sets the value of "resize" */
-  void set resize(String value) {
+  set resize(String value) {
     setProperty('resize', value, '');
   }
 
@@ -6747,7 +8152,7 @@
     getPropertyValue('right');
 
   /** Sets the value of "right" */
-  void set right(String value) {
+  set right(String value) {
     setProperty('right', value, '');
   }
 
@@ -6756,7 +8161,7 @@
     getPropertyValue('rtl-ordering');
 
   /** Sets the value of "rtl-ordering" */
-  void set rtlOrdering(String value) {
+  set rtlOrdering(String value) {
     setProperty('rtl-ordering', value, '');
   }
 
@@ -6765,7 +8170,7 @@
     getPropertyValue('ruby-position');
 
   /** Sets the value of "ruby-position" */
-  void set rubyPosition(String value) {
+  set rubyPosition(String value) {
     setProperty('ruby-position', value, '');
   }
 
@@ -6774,7 +8179,7 @@
     getPropertyValue('scroll-behavior');
 
   /** Sets the value of "scroll-behavior" */
-  void set scrollBehavior(String value) {
+  set scrollBehavior(String value) {
     setProperty('scroll-behavior', value, '');
   }
 
@@ -6783,7 +8188,7 @@
     getPropertyValue('shape-image-threshold');
 
   /** Sets the value of "shape-image-threshold" */
-  void set shapeImageThreshold(String value) {
+  set shapeImageThreshold(String value) {
     setProperty('shape-image-threshold', value, '');
   }
 
@@ -6792,7 +8197,7 @@
     getPropertyValue('shape-margin');
 
   /** Sets the value of "shape-margin" */
-  void set shapeMargin(String value) {
+  set shapeMargin(String value) {
     setProperty('shape-margin', value, '');
   }
 
@@ -6801,7 +8206,7 @@
     getPropertyValue('shape-outside');
 
   /** Sets the value of "shape-outside" */
-  void set shapeOutside(String value) {
+  set shapeOutside(String value) {
     setProperty('shape-outside', value, '');
   }
 
@@ -6810,7 +8215,7 @@
     getPropertyValue('size');
 
   /** Sets the value of "size" */
-  void set size(String value) {
+  set size(String value) {
     setProperty('size', value, '');
   }
 
@@ -6819,7 +8224,7 @@
     getPropertyValue('speak');
 
   /** Sets the value of "speak" */
-  void set speak(String value) {
+  set speak(String value) {
     setProperty('speak', value, '');
   }
 
@@ -6828,7 +8233,7 @@
     getPropertyValue('src');
 
   /** Sets the value of "src" */
-  void set src(String value) {
+  set src(String value) {
     setProperty('src', value, '');
   }
 
@@ -6837,7 +8242,7 @@
     getPropertyValue('tab-size');
 
   /** Sets the value of "tab-size" */
-  void set tabSize(String value) {
+  set tabSize(String value) {
     setProperty('tab-size', value, '');
   }
 
@@ -6846,7 +8251,7 @@
     getPropertyValue('table-layout');
 
   /** Sets the value of "table-layout" */
-  void set tableLayout(String value) {
+  set tableLayout(String value) {
     setProperty('table-layout', value, '');
   }
 
@@ -6855,7 +8260,7 @@
     getPropertyValue('tap-highlight-color');
 
   /** Sets the value of "tap-highlight-color" */
-  void set tapHighlightColor(String value) {
+  set tapHighlightColor(String value) {
     setProperty('tap-highlight-color', value, '');
   }
 
@@ -6864,7 +8269,7 @@
     getPropertyValue('text-align');
 
   /** Sets the value of "text-align" */
-  void set textAlign(String value) {
+  set textAlign(String value) {
     setProperty('text-align', value, '');
   }
 
@@ -6873,7 +8278,7 @@
     getPropertyValue('text-align-last');
 
   /** Sets the value of "text-align-last" */
-  void set textAlignLast(String value) {
+  set textAlignLast(String value) {
     setProperty('text-align-last', value, '');
   }
 
@@ -6882,7 +8287,7 @@
     getPropertyValue('text-combine');
 
   /** Sets the value of "text-combine" */
-  void set textCombine(String value) {
+  set textCombine(String value) {
     setProperty('text-combine', value, '');
   }
 
@@ -6891,7 +8296,7 @@
     getPropertyValue('text-decoration');
 
   /** Sets the value of "text-decoration" */
-  void set textDecoration(String value) {
+  set textDecoration(String value) {
     setProperty('text-decoration', value, '');
   }
 
@@ -6900,7 +8305,7 @@
     getPropertyValue('text-decoration-color');
 
   /** Sets the value of "text-decoration-color" */
-  void set textDecorationColor(String value) {
+  set textDecorationColor(String value) {
     setProperty('text-decoration-color', value, '');
   }
 
@@ -6909,7 +8314,7 @@
     getPropertyValue('text-decoration-line');
 
   /** Sets the value of "text-decoration-line" */
-  void set textDecorationLine(String value) {
+  set textDecorationLine(String value) {
     setProperty('text-decoration-line', value, '');
   }
 
@@ -6918,7 +8323,7 @@
     getPropertyValue('text-decoration-style');
 
   /** Sets the value of "text-decoration-style" */
-  void set textDecorationStyle(String value) {
+  set textDecorationStyle(String value) {
     setProperty('text-decoration-style', value, '');
   }
 
@@ -6927,7 +8332,7 @@
     getPropertyValue('text-decorations-in-effect');
 
   /** Sets the value of "text-decorations-in-effect" */
-  void set textDecorationsInEffect(String value) {
+  set textDecorationsInEffect(String value) {
     setProperty('text-decorations-in-effect', value, '');
   }
 
@@ -6936,7 +8341,7 @@
     getPropertyValue('text-emphasis');
 
   /** Sets the value of "text-emphasis" */
-  void set textEmphasis(String value) {
+  set textEmphasis(String value) {
     setProperty('text-emphasis', value, '');
   }
 
@@ -6945,7 +8350,7 @@
     getPropertyValue('text-emphasis-color');
 
   /** Sets the value of "text-emphasis-color" */
-  void set textEmphasisColor(String value) {
+  set textEmphasisColor(String value) {
     setProperty('text-emphasis-color', value, '');
   }
 
@@ -6954,7 +8359,7 @@
     getPropertyValue('text-emphasis-position');
 
   /** Sets the value of "text-emphasis-position" */
-  void set textEmphasisPosition(String value) {
+  set textEmphasisPosition(String value) {
     setProperty('text-emphasis-position', value, '');
   }
 
@@ -6963,7 +8368,7 @@
     getPropertyValue('text-emphasis-style');
 
   /** Sets the value of "text-emphasis-style" */
-  void set textEmphasisStyle(String value) {
+  set textEmphasisStyle(String value) {
     setProperty('text-emphasis-style', value, '');
   }
 
@@ -6972,7 +8377,7 @@
     getPropertyValue('text-fill-color');
 
   /** Sets the value of "text-fill-color" */
-  void set textFillColor(String value) {
+  set textFillColor(String value) {
     setProperty('text-fill-color', value, '');
   }
 
@@ -6981,7 +8386,7 @@
     getPropertyValue('text-indent');
 
   /** Sets the value of "text-indent" */
-  void set textIndent(String value) {
+  set textIndent(String value) {
     setProperty('text-indent', value, '');
   }
 
@@ -6990,7 +8395,7 @@
     getPropertyValue('text-justify');
 
   /** Sets the value of "text-justify" */
-  void set textJustify(String value) {
+  set textJustify(String value) {
     setProperty('text-justify', value, '');
   }
 
@@ -6999,7 +8404,7 @@
     getPropertyValue('text-line-through-color');
 
   /** Sets the value of "text-line-through-color" */
-  void set textLineThroughColor(String value) {
+  set textLineThroughColor(String value) {
     setProperty('text-line-through-color', value, '');
   }
 
@@ -7008,7 +8413,7 @@
     getPropertyValue('text-line-through-mode');
 
   /** Sets the value of "text-line-through-mode" */
-  void set textLineThroughMode(String value) {
+  set textLineThroughMode(String value) {
     setProperty('text-line-through-mode', value, '');
   }
 
@@ -7017,7 +8422,7 @@
     getPropertyValue('text-line-through-style');
 
   /** Sets the value of "text-line-through-style" */
-  void set textLineThroughStyle(String value) {
+  set textLineThroughStyle(String value) {
     setProperty('text-line-through-style', value, '');
   }
 
@@ -7026,7 +8431,7 @@
     getPropertyValue('text-line-through-width');
 
   /** Sets the value of "text-line-through-width" */
-  void set textLineThroughWidth(String value) {
+  set textLineThroughWidth(String value) {
     setProperty('text-line-through-width', value, '');
   }
 
@@ -7035,7 +8440,7 @@
     getPropertyValue('text-orientation');
 
   /** Sets the value of "text-orientation" */
-  void set textOrientation(String value) {
+  set textOrientation(String value) {
     setProperty('text-orientation', value, '');
   }
 
@@ -7044,7 +8449,7 @@
     getPropertyValue('text-overflow');
 
   /** Sets the value of "text-overflow" */
-  void set textOverflow(String value) {
+  set textOverflow(String value) {
     setProperty('text-overflow', value, '');
   }
 
@@ -7053,7 +8458,7 @@
     getPropertyValue('text-overline-color');
 
   /** Sets the value of "text-overline-color" */
-  void set textOverlineColor(String value) {
+  set textOverlineColor(String value) {
     setProperty('text-overline-color', value, '');
   }
 
@@ -7062,7 +8467,7 @@
     getPropertyValue('text-overline-mode');
 
   /** Sets the value of "text-overline-mode" */
-  void set textOverlineMode(String value) {
+  set textOverlineMode(String value) {
     setProperty('text-overline-mode', value, '');
   }
 
@@ -7071,7 +8476,7 @@
     getPropertyValue('text-overline-style');
 
   /** Sets the value of "text-overline-style" */
-  void set textOverlineStyle(String value) {
+  set textOverlineStyle(String value) {
     setProperty('text-overline-style', value, '');
   }
 
@@ -7080,7 +8485,7 @@
     getPropertyValue('text-overline-width');
 
   /** Sets the value of "text-overline-width" */
-  void set textOverlineWidth(String value) {
+  set textOverlineWidth(String value) {
     setProperty('text-overline-width', value, '');
   }
 
@@ -7089,7 +8494,7 @@
     getPropertyValue('text-rendering');
 
   /** Sets the value of "text-rendering" */
-  void set textRendering(String value) {
+  set textRendering(String value) {
     setProperty('text-rendering', value, '');
   }
 
@@ -7098,7 +8503,7 @@
     getPropertyValue('text-security');
 
   /** Sets the value of "text-security" */
-  void set textSecurity(String value) {
+  set textSecurity(String value) {
     setProperty('text-security', value, '');
   }
 
@@ -7107,7 +8512,7 @@
     getPropertyValue('text-shadow');
 
   /** Sets the value of "text-shadow" */
-  void set textShadow(String value) {
+  set textShadow(String value) {
     setProperty('text-shadow', value, '');
   }
 
@@ -7116,7 +8521,7 @@
     getPropertyValue('text-stroke');
 
   /** Sets the value of "text-stroke" */
-  void set textStroke(String value) {
+  set textStroke(String value) {
     setProperty('text-stroke', value, '');
   }
 
@@ -7125,7 +8530,7 @@
     getPropertyValue('text-stroke-color');
 
   /** Sets the value of "text-stroke-color" */
-  void set textStrokeColor(String value) {
+  set textStrokeColor(String value) {
     setProperty('text-stroke-color', value, '');
   }
 
@@ -7134,7 +8539,7 @@
     getPropertyValue('text-stroke-width');
 
   /** Sets the value of "text-stroke-width" */
-  void set textStrokeWidth(String value) {
+  set textStrokeWidth(String value) {
     setProperty('text-stroke-width', value, '');
   }
 
@@ -7143,7 +8548,7 @@
     getPropertyValue('text-transform');
 
   /** Sets the value of "text-transform" */
-  void set textTransform(String value) {
+  set textTransform(String value) {
     setProperty('text-transform', value, '');
   }
 
@@ -7152,7 +8557,7 @@
     getPropertyValue('text-underline-color');
 
   /** Sets the value of "text-underline-color" */
-  void set textUnderlineColor(String value) {
+  set textUnderlineColor(String value) {
     setProperty('text-underline-color', value, '');
   }
 
@@ -7161,7 +8566,7 @@
     getPropertyValue('text-underline-mode');
 
   /** Sets the value of "text-underline-mode" */
-  void set textUnderlineMode(String value) {
+  set textUnderlineMode(String value) {
     setProperty('text-underline-mode', value, '');
   }
 
@@ -7170,7 +8575,7 @@
     getPropertyValue('text-underline-position');
 
   /** Sets the value of "text-underline-position" */
-  void set textUnderlinePosition(String value) {
+  set textUnderlinePosition(String value) {
     setProperty('text-underline-position', value, '');
   }
 
@@ -7179,7 +8584,7 @@
     getPropertyValue('text-underline-style');
 
   /** Sets the value of "text-underline-style" */
-  void set textUnderlineStyle(String value) {
+  set textUnderlineStyle(String value) {
     setProperty('text-underline-style', value, '');
   }
 
@@ -7188,7 +8593,7 @@
     getPropertyValue('text-underline-width');
 
   /** Sets the value of "text-underline-width" */
-  void set textUnderlineWidth(String value) {
+  set textUnderlineWidth(String value) {
     setProperty('text-underline-width', value, '');
   }
 
@@ -7197,7 +8602,7 @@
     getPropertyValue('top');
 
   /** Sets the value of "top" */
-  void set top(String value) {
+  set top(String value) {
     setProperty('top', value, '');
   }
 
@@ -7206,7 +8611,7 @@
     getPropertyValue('touch-action');
 
   /** Sets the value of "touch-action" */
-  void set touchAction(String value) {
+  set touchAction(String value) {
     setProperty('touch-action', value, '');
   }
 
@@ -7215,7 +8620,7 @@
     getPropertyValue('touch-action-delay');
 
   /** Sets the value of "touch-action-delay" */
-  void set touchActionDelay(String value) {
+  set touchActionDelay(String value) {
     setProperty('touch-action-delay', value, '');
   }
 
@@ -7224,7 +8629,7 @@
     getPropertyValue('transform');
 
   /** Sets the value of "transform" */
-  void set transform(String value) {
+  set transform(String value) {
     setProperty('transform', value, '');
   }
 
@@ -7233,7 +8638,7 @@
     getPropertyValue('transform-origin');
 
   /** Sets the value of "transform-origin" */
-  void set transformOrigin(String value) {
+  set transformOrigin(String value) {
     setProperty('transform-origin', value, '');
   }
 
@@ -7242,7 +8647,7 @@
     getPropertyValue('transform-origin-x');
 
   /** Sets the value of "transform-origin-x" */
-  void set transformOriginX(String value) {
+  set transformOriginX(String value) {
     setProperty('transform-origin-x', value, '');
   }
 
@@ -7251,7 +8656,7 @@
     getPropertyValue('transform-origin-y');
 
   /** Sets the value of "transform-origin-y" */
-  void set transformOriginY(String value) {
+  set transformOriginY(String value) {
     setProperty('transform-origin-y', value, '');
   }
 
@@ -7260,7 +8665,7 @@
     getPropertyValue('transform-origin-z');
 
   /** Sets the value of "transform-origin-z" */
-  void set transformOriginZ(String value) {
+  set transformOriginZ(String value) {
     setProperty('transform-origin-z', value, '');
   }
 
@@ -7269,7 +8674,7 @@
     getPropertyValue('transform-style');
 
   /** Sets the value of "transform-style" */
-  void set transformStyle(String value) {
+  set transformStyle(String value) {
     setProperty('transform-style', value, '');
   }
 
@@ -7284,7 +8689,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  void set transition(String value) {
+  set transition(String value) {
     setProperty('transition', value, '');
   }
 
@@ -7293,7 +8698,7 @@
     getPropertyValue('transition-delay');
 
   /** Sets the value of "transition-delay" */
-  void set transitionDelay(String value) {
+  set transitionDelay(String value) {
     setProperty('transition-delay', value, '');
   }
 
@@ -7302,7 +8707,7 @@
     getPropertyValue('transition-duration');
 
   /** Sets the value of "transition-duration" */
-  void set transitionDuration(String value) {
+  set transitionDuration(String value) {
     setProperty('transition-duration', value, '');
   }
 
@@ -7311,7 +8716,7 @@
     getPropertyValue('transition-property');
 
   /** Sets the value of "transition-property" */
-  void set transitionProperty(String value) {
+  set transitionProperty(String value) {
     setProperty('transition-property', value, '');
   }
 
@@ -7320,7 +8725,7 @@
     getPropertyValue('transition-timing-function');
 
   /** Sets the value of "transition-timing-function" */
-  void set transitionTimingFunction(String value) {
+  set transitionTimingFunction(String value) {
     setProperty('transition-timing-function', value, '');
   }
 
@@ -7329,7 +8734,7 @@
     getPropertyValue('unicode-bidi');
 
   /** Sets the value of "unicode-bidi" */
-  void set unicodeBidi(String value) {
+  set unicodeBidi(String value) {
     setProperty('unicode-bidi', value, '');
   }
 
@@ -7338,7 +8743,7 @@
     getPropertyValue('unicode-range');
 
   /** Sets the value of "unicode-range" */
-  void set unicodeRange(String value) {
+  set unicodeRange(String value) {
     setProperty('unicode-range', value, '');
   }
 
@@ -7347,7 +8752,7 @@
     getPropertyValue('user-drag');
 
   /** Sets the value of "user-drag" */
-  void set userDrag(String value) {
+  set userDrag(String value) {
     setProperty('user-drag', value, '');
   }
 
@@ -7356,7 +8761,7 @@
     getPropertyValue('user-modify');
 
   /** Sets the value of "user-modify" */
-  void set userModify(String value) {
+  set userModify(String value) {
     setProperty('user-modify', value, '');
   }
 
@@ -7365,7 +8770,7 @@
     getPropertyValue('user-select');
 
   /** Sets the value of "user-select" */
-  void set userSelect(String value) {
+  set userSelect(String value) {
     setProperty('user-select', value, '');
   }
 
@@ -7374,7 +8779,7 @@
     getPropertyValue('user-zoom');
 
   /** Sets the value of "user-zoom" */
-  void set userZoom(String value) {
+  set userZoom(String value) {
     setProperty('user-zoom', value, '');
   }
 
@@ -7383,7 +8788,7 @@
     getPropertyValue('vertical-align');
 
   /** Sets the value of "vertical-align" */
-  void set verticalAlign(String value) {
+  set verticalAlign(String value) {
     setProperty('vertical-align', value, '');
   }
 
@@ -7392,7 +8797,7 @@
     getPropertyValue('visibility');
 
   /** Sets the value of "visibility" */
-  void set visibility(String value) {
+  set visibility(String value) {
     setProperty('visibility', value, '');
   }
 
@@ -7401,7 +8806,7 @@
     getPropertyValue('white-space');
 
   /** Sets the value of "white-space" */
-  void set whiteSpace(String value) {
+  set whiteSpace(String value) {
     setProperty('white-space', value, '');
   }
 
@@ -7410,7 +8815,7 @@
     getPropertyValue('widows');
 
   /** Sets the value of "widows" */
-  void set widows(String value) {
+  set widows(String value) {
     setProperty('widows', value, '');
   }
 
@@ -7419,7 +8824,7 @@
     getPropertyValue('width');
 
   /** Sets the value of "width" */
-  void set width(String value) {
+  set width(String value) {
     setProperty('width', value, '');
   }
 
@@ -7428,7 +8833,7 @@
     getPropertyValue('will-change');
 
   /** Sets the value of "will-change" */
-  void set willChange(String value) {
+  set willChange(String value) {
     setProperty('will-change', value, '');
   }
 
@@ -7437,7 +8842,7 @@
     getPropertyValue('word-break');
 
   /** Sets the value of "word-break" */
-  void set wordBreak(String value) {
+  set wordBreak(String value) {
     setProperty('word-break', value, '');
   }
 
@@ -7446,7 +8851,7 @@
     getPropertyValue('word-spacing');
 
   /** Sets the value of "word-spacing" */
-  void set wordSpacing(String value) {
+  set wordSpacing(String value) {
     setProperty('word-spacing', value, '');
   }
 
@@ -7455,7 +8860,7 @@
     getPropertyValue('word-wrap');
 
   /** Sets the value of "word-wrap" */
-  void set wordWrap(String value) {
+  set wordWrap(String value) {
     setProperty('word-wrap', value, '');
   }
 
@@ -7464,7 +8869,7 @@
     getPropertyValue('wrap-flow');
 
   /** Sets the value of "wrap-flow" */
-  void set wrapFlow(String value) {
+  set wrapFlow(String value) {
     setProperty('wrap-flow', value, '');
   }
 
@@ -7473,7 +8878,7 @@
     getPropertyValue('wrap-through');
 
   /** Sets the value of "wrap-through" */
-  void set wrapThrough(String value) {
+  set wrapThrough(String value) {
     setProperty('wrap-through', value, '');
   }
 
@@ -7482,7 +8887,7 @@
     getPropertyValue('writing-mode');
 
   /** Sets the value of "writing-mode" */
-  void set writingMode(String value) {
+  set writingMode(String value) {
     setProperty('writing-mode', value, '');
   }
 
@@ -7491,7 +8896,7 @@
     getPropertyValue('z-index');
 
   /** Sets the value of "z-index" */
-  void set zIndex(String value) {
+  set zIndex(String value) {
     setProperty('z-index', value, '');
   }
 
@@ -7500,7 +8905,7 @@
     getPropertyValue('zoom');
 
   /** Sets the value of "zoom" */
-  void set zoom(String value) {
+  set zoom(String value) {
     setProperty('zoom', value, '');
   }
 }
@@ -7517,13 +8922,25 @@
   // To suppress missing implicit constructor warnings.
   factory CssStyleRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssStyleRule internalCreateCssStyleRule() {
+    return new CssStyleRule._internalWrap();
+  }
+
+  factory CssStyleRule._internalWrap() {
+    return new CssStyleRule.internal_();
+  }
+
+  CssStyleRule.internal_() : super.internal_();
+
+
   @DomName('CSSStyleRule.selectorText')
   @DocsEditable()
   String get selectorText => _blink.BlinkCSSStyleRule.instance.selectorText_Getter_(unwrap_jso(this));
   
   @DomName('CSSStyleRule.selectorText')
   @DocsEditable()
-  void set selectorText(String value) => _blink.BlinkCSSStyleRule.instance.selectorText_Setter_(unwrap_jso(this), value);
+  set selectorText(String value) => _blink.BlinkCSSStyleRule.instance.selectorText_Setter_(unwrap_jso(this), value);
   
   @DomName('CSSStyleRule.style')
   @DocsEditable()
@@ -7543,9 +8960,21 @@
   // To suppress missing implicit constructor warnings.
   factory CssStyleSheet._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssStyleSheet internalCreateCssStyleSheet() {
+    return new CssStyleSheet._internalWrap();
+  }
+
+  factory CssStyleSheet._internalWrap() {
+    return new CssStyleSheet.internal_();
+  }
+
+  CssStyleSheet.internal_() : super.internal_();
+
+
   @DomName('CSSStyleSheet.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => wrap_jso_list(_blink.BlinkCSSStyleSheet.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSStyleSheet.instance.cssRules_Getter_(unwrap_jso(this)));
   
   @DomName('CSSStyleSheet.ownerRule')
   @DocsEditable()
@@ -7554,7 +8983,7 @@
   @DomName('CSSStyleSheet.rules')
   @DocsEditable()
   @Experimental() // non-standard
-  List<CssRule> get rules => wrap_jso_list(_blink.BlinkCSSStyleSheet.instance.rules_Getter_(unwrap_jso(this)));
+  List<CssRule> get rules => wrap_jso(_blink.BlinkCSSStyleSheet.instance.rules_Getter_(unwrap_jso(this)));
   
   int addRule(String selector, String style, [int index]) {
     if (index != null) {
@@ -7593,13 +9022,25 @@
   // To suppress missing implicit constructor warnings.
   factory CssSupportsRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssSupportsRule internalCreateCssSupportsRule() {
+    return new CssSupportsRule._internalWrap();
+  }
+
+  factory CssSupportsRule._internalWrap() {
+    return new CssSupportsRule.internal_();
+  }
+
+  CssSupportsRule.internal_() : super.internal_();
+
+
   @DomName('CSSSupportsRule.conditionText')
   @DocsEditable()
   String get conditionText => _blink.BlinkCSSSupportsRule.instance.conditionText_Getter_(unwrap_jso(this));
   
   @DomName('CSSSupportsRule.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => wrap_jso_list(_blink.BlinkCSSSupportsRule.instance.cssRules_Getter_(unwrap_jso(this)));
+  List<CssRule> get cssRules => wrap_jso(_blink.BlinkCSSSupportsRule.instance.cssRules_Getter_(unwrap_jso(this)));
   
   @DomName('CSSSupportsRule.deleteRule')
   @DocsEditable()
@@ -7624,6 +9065,18 @@
   // To suppress missing implicit constructor warnings.
   factory CssViewportRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CssViewportRule internalCreateCssViewportRule() {
+    return new CssViewportRule._internalWrap();
+  }
+
+  factory CssViewportRule._internalWrap() {
+    return new CssViewportRule.internal_();
+  }
+
+  CssViewportRule.internal_() : super.internal_();
+
+
   @DomName('CSSViewportRule.style')
   @DocsEditable()
   @Experimental() // untriaged
@@ -7673,9 +9126,21 @@
   // To suppress missing implicit constructor warnings.
   factory CustomEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CustomEvent internalCreateCustomEvent() {
+    return new CustomEvent._internalWrap();
+  }
+
+  factory CustomEvent._internalWrap() {
+    return new CustomEvent.internal_();
+  }
+
+  CustomEvent.internal_() : super.internal_();
+
+
   @DomName('CustomEvent.detail')
   @DocsEditable()
-  Object get _detail => _blink.BlinkCustomEvent.instance.detail_Getter_(unwrap_jso(this));
+  Object get _detail => wrap_jso(_blink.BlinkCustomEvent.instance.detail_Getter_(unwrap_jso(this)));
   
   @DomName('CustomEvent.initCustomEvent')
   @DocsEditable()
@@ -7698,6 +9163,18 @@
   @DomName('HTMLDListElement.HTMLDListElement')
   @DocsEditable()
   factory DListElement() => document.createElement("dl");
+
+
+  static DListElement internalCreateDListElement() {
+    return new DListElement._internalWrap();
+  }
+
+  factory DListElement._internalWrap() {
+    return new DListElement.internal_();
+  }
+
+  DListElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7726,6 +9203,18 @@
   @DomName('HTMLDataListElement.HTMLDataListElement')
   @DocsEditable()
   factory DataListElement() => document.createElement("datalist");
+
+
+  static DataListElement internalCreateDataListElement() {
+    return new DataListElement._internalWrap();
+  }
+
+  factory DataListElement._internalWrap() {
+    return new DataListElement.internal_();
+  }
+
+  DataListElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7738,7 +9227,7 @@
 
   @DomName('HTMLDataListElement.options')
   @DocsEditable()
-  List<Node> get options => wrap_jso_list(_blink.BlinkHTMLDataListElement.instance.options_Getter_(unwrap_jso(this)));
+  List<Node> get options => wrap_jso(_blink.BlinkHTMLDataListElement.instance.options_Getter_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7755,6 +9244,21 @@
   // To suppress missing implicit constructor warnings.
   factory DataTransfer._() { throw new UnsupportedError("Not supported"); }
 
+  static DataTransfer internalCreateDataTransfer() {
+    return new DataTransfer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DataTransfer._internalWrap() {
+    return new DataTransfer.internal_();
+  }
+
+  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
@@ -7763,7 +9267,7 @@
   @DomName('DataTransfer.dropEffect')
   @DocsEditable()
   @Experimental() // untriaged
-  void set dropEffect(String value) => _blink.BlinkDataTransfer.instance.dropEffect_Setter_(unwrap_jso(this), value);
+  set dropEffect(String value) => _blink.BlinkDataTransfer.instance.dropEffect_Setter_(unwrap_jso(this), value);
   
   @DomName('DataTransfer.effectAllowed')
   @DocsEditable()
@@ -7773,12 +9277,12 @@
   @DomName('DataTransfer.effectAllowed')
   @DocsEditable()
   @Experimental() // untriaged
-  void set effectAllowed(String value) => _blink.BlinkDataTransfer.instance.effectAllowed_Setter_(unwrap_jso(this), value);
+  set effectAllowed(String value) => _blink.BlinkDataTransfer.instance.effectAllowed_Setter_(unwrap_jso(this), value);
   
   @DomName('DataTransfer.files')
   @DocsEditable()
   @Experimental() // untriaged
-  List<File> get files => wrap_jso_list(_blink.BlinkDataTransfer.instance.files_Getter_(unwrap_jso(this)));
+  List<File> get files => wrap_jso(_blink.BlinkDataTransfer.instance.files_Getter_(unwrap_jso(this)));
   
   @DomName('DataTransfer.items')
   @DocsEditable()
@@ -7830,6 +9334,21 @@
   // To suppress missing implicit constructor warnings.
   factory DataTransferItem._() { throw new UnsupportedError("Not supported"); }
 
+  static DataTransferItem internalCreateDataTransferItem() {
+    return new DataTransferItem._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DataTransferItem._internalWrap() {
+    return new DataTransferItem.internal_();
+  }
+
+  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));
@@ -7844,7 +9363,7 @@
   
   @DomName('DataTransferItem.getAsString')
   @DocsEditable()
-  void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.instance.getAsString_Callback_1_(unwrap_jso(this), unwrap_jso(callback));
+  void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.instance.getAsString_Callback_1_(unwrap_jso(this), unwrap_jso((data) => callback(data)));
   
   Future<String> getAsString() {
     var completer = new Completer<String>();
@@ -7874,6 +9393,21 @@
   // To suppress missing implicit constructor warnings.
   factory DataTransferItemList._() { throw new UnsupportedError("Not supported"); }
 
+  static DataTransferItemList internalCreateDataTransferItemList() {
+    return new DataTransferItemList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DataTransferItemList._internalWrap() {
+    return new DataTransferItemList.internal_();
+  }
+
+  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));
@@ -7952,6 +9486,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message');
 
+
+  static DedicatedWorkerGlobalScope internalCreateDedicatedWorkerGlobalScope() {
+    return new DedicatedWorkerGlobalScope._internalWrap();
+  }
+
+  factory DedicatedWorkerGlobalScope._internalWrap() {
+    return new DedicatedWorkerGlobalScope.internal_();
+  }
+
+  DedicatedWorkerGlobalScope.internal_() : super.internal_();
+
+
   @DomName('DedicatedWorkerGlobalScope.postMessage')
   @DocsEditable()
   @Experimental() // untriaged
@@ -7978,6 +9524,21 @@
   // To suppress missing implicit constructor warnings.
   factory DeprecatedStorageInfo._() { throw new UnsupportedError("Not supported"); }
 
+  static DeprecatedStorageInfo internalCreateDeprecatedStorageInfo() {
+    return new DeprecatedStorageInfo._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DeprecatedStorageInfo._internalWrap() {
+    return new DeprecatedStorageInfo.internal_();
+  }
+
+  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
@@ -7990,11 +9551,11 @@
 
   void queryUsageAndQuota(int storageType, [StorageUsageCallback usageCallback, StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_3_(unwrap_jso(this), storageType, unwrap_jso(usageCallback), unwrap_jso(errorCallback));
+      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_3_(unwrap_jso(this), storageType, unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
     if (usageCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_2_(unwrap_jso(this), storageType, unwrap_jso(usageCallback));
+      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_2_(unwrap_jso(this), storageType, unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)));
       return;
     }
     _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_1_(unwrap_jso(this), storageType);
@@ -8003,11 +9564,11 @@
 
   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(quotaCallback), unwrap_jso(errorCallback));
+      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_4_(unwrap_jso(this), storageType, newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
     if (quotaCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_3_(unwrap_jso(this), storageType, newQuotaInBytes, unwrap_jso(quotaCallback));
+      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_3_(unwrap_jso(this), storageType, newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)));
       return;
     }
     _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_2_(unwrap_jso(this), storageType, newQuotaInBytes);
@@ -8029,22 +9590,37 @@
   // To suppress missing implicit constructor warnings.
   factory DeprecatedStorageQuota._() { throw new UnsupportedError("Not supported"); }
 
+  static DeprecatedStorageQuota internalCreateDeprecatedStorageQuota() {
+    return new DeprecatedStorageQuota._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DeprecatedStorageQuota._internalWrap() {
+    return new DeprecatedStorageQuota.internal_();
+  }
+
+  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(usageCallback), unwrap_jso(errorCallback));
+      _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_2_(unwrap_jso(this), unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_1_(unwrap_jso(this), unwrap_jso(usageCallback));
+    _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_1_(unwrap_jso(this), unwrap_jso((currentUsageInBytes, currentQuotaInBytes) => usageCallback(currentUsageInBytes, currentQuotaInBytes)));
     return;
   }
 
   void requestQuota(int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_3_(unwrap_jso(this), newQuotaInBytes, unwrap_jso(quotaCallback), unwrap_jso(errorCallback));
+      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_3_(unwrap_jso(this), newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
     if (quotaCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_2_(unwrap_jso(this), newQuotaInBytes, unwrap_jso(quotaCallback));
+      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_2_(unwrap_jso(this), newQuotaInBytes, unwrap_jso((grantedQuotaInBytes) => quotaCallback(grantedQuotaInBytes)));
       return;
     }
     _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_1_(unwrap_jso(this), newQuotaInBytes);
@@ -8071,6 +9647,18 @@
   @DomName('HTMLDetailsElement.HTMLDetailsElement')
   @DocsEditable()
   factory DetailsElement() => document.createElement("details");
+
+
+  static DetailsElement internalCreateDetailsElement() {
+    return new DetailsElement._internalWrap();
+  }
+
+  factory DetailsElement._internalWrap() {
+    return new DetailsElement.internal_();
+  }
+
+  DetailsElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -8087,7 +9675,7 @@
   
   @DomName('HTMLDetailsElement.open')
   @DocsEditable()
-  void set open(bool value) => _blink.BlinkHTMLDetailsElement.instance.open_Setter_(unwrap_jso(this), value);
+  set open(bool value) => _blink.BlinkHTMLDetailsElement.instance.open_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8105,17 +9693,32 @@
   // To suppress missing implicit constructor warnings.
   factory DeviceAcceleration._() { throw new UnsupportedError("Not supported"); }
 
+  static DeviceAcceleration internalCreateDeviceAcceleration() {
+    return new DeviceAcceleration._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DeviceAcceleration._internalWrap() {
+    return new DeviceAcceleration.internal_();
+  }
+
+  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()
-  double get x => _blink.BlinkDeviceAcceleration.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDeviceAcceleration.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('DeviceAcceleration.y')
   @DocsEditable()
-  double get y => _blink.BlinkDeviceAcceleration.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDeviceAcceleration.instance.y_Getter_(unwrap_jso(this));
   
   @DomName('DeviceAcceleration.z')
   @DocsEditable()
-  double get z => _blink.BlinkDeviceAcceleration.instance.z_Getter_(unwrap_jso(this));
+  num get z => _blink.BlinkDeviceAcceleration.instance.z_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8132,10 +9735,22 @@
   // To suppress missing implicit constructor warnings.
   factory DeviceLightEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DeviceLightEvent internalCreateDeviceLightEvent() {
+    return new DeviceLightEvent._internalWrap();
+  }
+
+  factory DeviceLightEvent._internalWrap() {
+    return new DeviceLightEvent.internal_();
+  }
+
+  DeviceLightEvent.internal_() : super.internal_();
+
+
   @DomName('DeviceLightEvent.value')
   @DocsEditable()
   @Experimental() // untriaged
-  double get value => _blink.BlinkDeviceLightEvent.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkDeviceLightEvent.instance.value_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8153,6 +9768,18 @@
   // To suppress missing implicit constructor warnings.
   factory DeviceMotionEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DeviceMotionEvent internalCreateDeviceMotionEvent() {
+    return new DeviceMotionEvent._internalWrap();
+  }
+
+  factory DeviceMotionEvent._internalWrap() {
+    return new DeviceMotionEvent.internal_();
+  }
+
+  DeviceMotionEvent.internal_() : super.internal_();
+
+
   @DomName('DeviceMotionEvent.acceleration')
   @DocsEditable()
   DeviceAcceleration get acceleration => wrap_jso(_blink.BlinkDeviceMotionEvent.instance.acceleration_Getter_(unwrap_jso(this)));
@@ -8163,7 +9790,7 @@
   
   @DomName('DeviceMotionEvent.interval')
   @DocsEditable()
-  double get interval => _blink.BlinkDeviceMotionEvent.instance.interval_Getter_(unwrap_jso(this));
+  num get interval => _blink.BlinkDeviceMotionEvent.instance.interval_Getter_(unwrap_jso(this));
   
   @DomName('DeviceMotionEvent.rotationRate')
   @DocsEditable()
@@ -8196,21 +9823,33 @@
   // To suppress missing implicit constructor warnings.
   factory DeviceOrientationEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DeviceOrientationEvent internalCreateDeviceOrientationEvent() {
+    return new DeviceOrientationEvent._internalWrap();
+  }
+
+  factory DeviceOrientationEvent._internalWrap() {
+    return new DeviceOrientationEvent.internal_();
+  }
+
+  DeviceOrientationEvent.internal_() : super.internal_();
+
+
   @DomName('DeviceOrientationEvent.absolute')
   @DocsEditable()
   bool get absolute => _blink.BlinkDeviceOrientationEvent.instance.absolute_Getter_(unwrap_jso(this));
   
   @DomName('DeviceOrientationEvent.alpha')
   @DocsEditable()
-  double get alpha => _blink.BlinkDeviceOrientationEvent.instance.alpha_Getter_(unwrap_jso(this));
+  num get alpha => _blink.BlinkDeviceOrientationEvent.instance.alpha_Getter_(unwrap_jso(this));
   
   @DomName('DeviceOrientationEvent.beta')
   @DocsEditable()
-  double get beta => _blink.BlinkDeviceOrientationEvent.instance.beta_Getter_(unwrap_jso(this));
+  num get beta => _blink.BlinkDeviceOrientationEvent.instance.beta_Getter_(unwrap_jso(this));
   
   @DomName('DeviceOrientationEvent.gamma')
   @DocsEditable()
-  double get gamma => _blink.BlinkDeviceOrientationEvent.instance.gamma_Getter_(unwrap_jso(this));
+  num get gamma => _blink.BlinkDeviceOrientationEvent.instance.gamma_Getter_(unwrap_jso(this));
   
   @DomName('DeviceOrientationEvent.initDeviceOrientationEvent')
   @DocsEditable()
@@ -8232,17 +9871,32 @@
   // To suppress missing implicit constructor warnings.
   factory DeviceRotationRate._() { throw new UnsupportedError("Not supported"); }
 
+  static DeviceRotationRate internalCreateDeviceRotationRate() {
+    return new DeviceRotationRate._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DeviceRotationRate._internalWrap() {
+    return new DeviceRotationRate.internal_();
+  }
+
+  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()
-  double get alpha => _blink.BlinkDeviceRotationRate.instance.alpha_Getter_(unwrap_jso(this));
+  num get alpha => _blink.BlinkDeviceRotationRate.instance.alpha_Getter_(unwrap_jso(this));
   
   @DomName('DeviceRotationRate.beta')
   @DocsEditable()
-  double get beta => _blink.BlinkDeviceRotationRate.instance.beta_Getter_(unwrap_jso(this));
+  num get beta => _blink.BlinkDeviceRotationRate.instance.beta_Getter_(unwrap_jso(this));
   
   @DomName('DeviceRotationRate.gamma')
   @DocsEditable()
-  double get gamma => _blink.BlinkDeviceRotationRate.instance.gamma_Getter_(unwrap_jso(this));
+  num get gamma => _blink.BlinkDeviceRotationRate.instance.gamma_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8258,6 +9912,18 @@
 class DialogElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory DialogElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static DialogElement internalCreateDialogElement() {
+    return new DialogElement._internalWrap();
+  }
+
+  factory DialogElement._internalWrap() {
+    return new DialogElement.internal_();
+  }
+
+  DialogElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -8271,7 +9937,7 @@
   
   @DomName('HTMLDialogElement.open')
   @DocsEditable()
-  void set open(bool value) => _blink.BlinkHTMLDialogElement.instance.open_Setter_(unwrap_jso(this), value);
+  set open(bool value) => _blink.BlinkHTMLDialogElement.instance.open_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLDialogElement.returnValue')
   @DocsEditable()
@@ -8281,7 +9947,7 @@
   @DomName('HTMLDialogElement.returnValue')
   @DocsEditable()
   @Experimental() // untriaged
-  void set returnValue(String value) => _blink.BlinkHTMLDialogElement.instance.returnValue_Setter_(unwrap_jso(this), value);
+  set returnValue(String value) => _blink.BlinkHTMLDialogElement.instance.returnValue_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLDialogElement.close')
   @DocsEditable()
@@ -8345,21 +10011,33 @@
   // To suppress missing implicit constructor warnings.
   factory DirectoryEntry._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DirectoryEntry internalCreateDirectoryEntry() {
+    return new DirectoryEntry._internalWrap();
+  }
+
+  factory DirectoryEntry._internalWrap() {
+    return new DirectoryEntry.internal_();
+  }
+
+  DirectoryEntry.internal_() : super.internal_();
+
+
   @DomName('DirectoryEntry.createReader')
   @DocsEditable()
   DirectoryReader createReader() => wrap_jso(_blink.BlinkDirectoryEntry.instance.createReader_Callback_0_(unwrap_jso(this)));
   
   void __getDirectory(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_4_(unwrap_jso(this), path, options, unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _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))));
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_3_(unwrap_jso(this), path, options, unwrap_jso(successCallback));
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_3_(unwrap_jso(this), path, convertDartToNative_Dictionary(options), unwrap_jso((entry) => successCallback(wrap_jso(entry))));
       return;
     }
     if (options != null) {
-      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_2_(unwrap_jso(this), path, options);
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_2_(unwrap_jso(this), path, convertDartToNative_Dictionary(options));
       return;
     }
     _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_1_(unwrap_jso(this), path);
@@ -8376,15 +10054,15 @@
 
   void __getFile(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.getFile_Callback_4_(unwrap_jso(this), path, options, unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _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))));
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.getFile_Callback_3_(unwrap_jso(this), path, options, unwrap_jso(successCallback));
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_3_(unwrap_jso(this), path, convertDartToNative_Dictionary(options), unwrap_jso((entry) => successCallback(wrap_jso(entry))));
       return;
     }
     if (options != null) {
-      _blink.BlinkDirectoryEntry.instance.getFile_Callback_2_(unwrap_jso(this), path, options);
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_2_(unwrap_jso(this), path, convertDartToNative_Dictionary(options));
       return;
     }
     _blink.BlinkDirectoryEntry.instance.getFile_Callback_1_(unwrap_jso(this), path);
@@ -8401,10 +10079,10 @@
 
   void _removeRecursively(VoidCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_2_(unwrap_jso(this), unwrap_jso(() => successCallback()), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_1_(unwrap_jso(this), unwrap_jso(() => successCallback()));
     return;
   }
 
@@ -8432,12 +10110,27 @@
   // To suppress missing implicit constructor warnings.
   factory DirectoryReader._() { throw new UnsupportedError("Not supported"); }
 
+  static DirectoryReader internalCreateDirectoryReader() {
+    return new DirectoryReader._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DirectoryReader._internalWrap() {
+    return new DirectoryReader.internal_();
+  }
+
+  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(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkDirectoryReader.instance.readEntries_Callback_2_(unwrap_jso(this), unwrap_jso((entries) => successCallback(entries)), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkDirectoryReader.instance.readEntries_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    _blink.BlinkDirectoryReader.instance.readEntries_Callback_1_(unwrap_jso(this), unwrap_jso((entries) => successCallback(entries)));
     return;
   }
 
@@ -8488,6 +10181,18 @@
   @DomName('HTMLDivElement.HTMLDivElement')
   @DocsEditable()
   factory DivElement() => document.createElement("div");
+
+
+  static DivElement internalCreateDivElement() {
+    return new DivElement._internalWrap();
+  }
+
+  factory DivElement._internalWrap() {
+    return new DivElement.internal_();
+  }
+
+  DivElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -8560,6 +10265,18 @@
   @DocsEditable()
   static const EventStreamProvider<Event> selectionChangeEvent = const EventStreamProvider<Event>('selectionchange');
 
+
+  static Document internalCreateDocument() {
+    return new Document._internalWrap();
+  }
+
+  factory Document._internalWrap() {
+    return new Document.internal_();
+  }
+
+  Document.internal_() : super.internal_();
+
+
   @DomName('Document.activeElement')
   @DocsEditable()
   @Experimental() // untriaged
@@ -8571,7 +10288,7 @@
   
   @DomName('Document.body')
   @DocsEditable()
-  void set _body(HtmlElement value) => _blink.BlinkDocument.instance.body_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set _body(HtmlElement value) => _blink.BlinkDocument.instance.body_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('Document.contentType')
   @DocsEditable()
@@ -8584,7 +10301,7 @@
   
   @DomName('Document.cookie')
   @DocsEditable()
-  void set cookie(String value) => _blink.BlinkDocument.instance.cookie_Setter_(unwrap_jso(this), value);
+  set cookie(String value) => _blink.BlinkDocument.instance.cookie_Setter_(unwrap_jso(this), value);
   
   @DomName('Document.currentScript')
   @DocsEditable()
@@ -8663,11 +10380,11 @@
   
   @DomName('Document.selectedStylesheetSet')
   @DocsEditable()
-  void set _selectedStylesheetSet(String value) => _blink.BlinkDocument.instance.selectedStylesheetSet_Setter_(unwrap_jso(this), value);
+  set _selectedStylesheetSet(String value) => _blink.BlinkDocument.instance.selectedStylesheetSet_Setter_(unwrap_jso(this), value);
   
   @DomName('Document.styleSheets')
   @DocsEditable()
-  List<StyleSheet> get _styleSheets => wrap_jso_list(_blink.BlinkDocument.instance.styleSheets_Getter_(unwrap_jso(this)));
+  List<StyleSheet> get _styleSheets => wrap_jso(_blink.BlinkDocument.instance.styleSheets_Getter_(unwrap_jso(this)));
   
   @DomName('Document.timeline')
   @DocsEditable()
@@ -8680,7 +10397,7 @@
   
   @DomName('Document.title')
   @DocsEditable()
-  void set _title(String value) => _blink.BlinkDocument.instance.title_Setter_(unwrap_jso(this), value);
+  set _title(String value) => _blink.BlinkDocument.instance.title_Setter_(unwrap_jso(this), value);
   
   @DomName('Document.visibilityState')
   @DocsEditable()
@@ -8739,7 +10456,7 @@
   
   @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]) => wrap_jso(_blink.BlinkDocument.instance.createElementNS_Callback_3_(unwrap_jso(this), namespaceURI, qualifiedName, typeExtension));
   
   @DomName('Document.createEvent')
   @DocsEditable()
@@ -8809,15 +10526,15 @@
   
   @DomName('Document.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String classNames) => wrap_jso_list(_blink.BlinkDocument.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), classNames));
+  List<Node> getElementsByClassName(String classNames) => wrap_jso(_blink.BlinkDocument.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), classNames));
   
   @DomName('Document.getElementsByName')
   @DocsEditable()
-  List<Node> getElementsByName(String elementName) => wrap_jso_list(_blink.BlinkDocument.instance.getElementsByName_Callback_1_(unwrap_jso(this), elementName));
+  List<Node> getElementsByName(String elementName) => wrap_jso(_blink.BlinkDocument.instance.getElementsByName_Callback_1_(unwrap_jso(this), elementName));
   
   @DomName('Document.getElementsByTagName')
   @DocsEditable()
-  List<Node> getElementsByTagName(String localName) => wrap_jso_list(_blink.BlinkDocument.instance.getElementsByTagName_Callback_1_(unwrap_jso(this), localName));
+  List<Node> getElementsByTagName(String localName) => wrap_jso(_blink.BlinkDocument.instance.getElementsByTagName_Callback_1_(unwrap_jso(this), localName));
   
   Node importNode(Node node, [bool deep]) {
     if (deep != null) {
@@ -8865,7 +10582,7 @@
   
   @DomName('Document.children')
   @DocsEditable()
-  List<Node> get _children => wrap_jso_list(_blink.BlinkDocument.instance.children_Getter_(unwrap_jso(this)));
+  List<Node> get _children => wrap_jso(_blink.BlinkDocument.instance.children_Getter_(unwrap_jso(this)));
   
   @DomName('Document.firstElementChild')
   @DocsEditable()
@@ -8898,7 +10615,7 @@
   
   @DomName('Document.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => wrap_jso_list(_blink.BlinkDocument.instance.querySelectorAll_Callback_1_(unwrap_jso(this), selectors));
+  List<Node> _querySelectorAll(String selectors) => wrap_jso(_blink.BlinkDocument.instance.querySelectorAll_Callback_1_(unwrap_jso(this), selectors));
   
   /// Stream of `abort` events handled by this [Document].
   @DomName('Document.onabort')
@@ -9323,12 +11040,45 @@
 
   @DomName('Document.createElement')
   Element createElement(String tagName, [String typeExtension]) {
-    if (typeExtension != null) {  
-      return _createElement(tagName, typeExtension);  
-    } else {  
-      // Fast-path for Dartium when typeExtension is not needed.  
-      return _Utils.createElement(this, tagName); 
-    } 
+    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;
+
+    if (newElement['dart_class'] != null) {
+      wrapped = newElement['dart_class'];         // Here's our Dart class.
+      wrapped.blink_jsObject = newElement;
+    } else {
+      wrapped = wrap_jso(newElement);
+      if (wrapped == null) {
+        wrapped = wrap_jso_custom_element(newElement);
+      }
+    }
+
+    return wrapped;
+  }
+
+  @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;
+
+    if (newElement['dart_class'] != null) {
+      wrapped = newElement['dart_class'];         // Here's our Dart class.
+      wrapped.blink_jsObject = newElement;
+    } else {
+      wrapped = wrap_jso(newElement);
+      if (wrapped == null) {
+        wrapped = wrap_jso_custom_element(newElement);
+      }
+    }
+
+    return wrapped;
   }
 
 }
@@ -9367,7 +11117,7 @@
     return _docChildren;
   }
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     // Copy list first since we don't want liveness during iteration.
     List copy = new List.from(value);
     var children = this.children;
@@ -9389,14 +11139,13 @@
   ElementList<Element> querySelectorAll(String selectors) =>
     new _FrozenElementList._wrap(_querySelectorAll(selectors));
 
-
   String get innerHtml {
     final e = new Element.tag("div");
     e.append(this.clone(true));
     return e.innerHtml;
   }
 
-  void set innerHtml(String value) {
+  set innerHtml(String value) {
     this.setInnerHtml(value);
   }
 
@@ -9451,6 +11200,18 @@
   // To suppress missing implicit constructor warnings.
   factory DocumentFragment._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DocumentFragment internalCreateDocumentFragment() {
+    return new DocumentFragment._internalWrap();
+  }
+
+  factory DocumentFragment._internalWrap() {
+    return new DocumentFragment.internal_();
+  }
+
+  DocumentFragment.internal_() : super.internal_();
+
+
   @DomName('DocumentFragment.getElementById')
   @DocsEditable()
   @Experimental() // untriaged
@@ -9486,7 +11247,7 @@
   
   @DomName('DocumentFragment.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => wrap_jso_list(_blink.BlinkDocumentFragment.instance.querySelectorAll_Callback_1_(unwrap_jso(this), selectors));
+  List<Node> _querySelectorAll(String selectors) => wrap_jso(_blink.BlinkDocumentFragment.instance.querySelectorAll_Callback_1_(unwrap_jso(this), selectors));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9505,9 +11266,24 @@
   @DomName('DOMError.DOMError')
   @DocsEditable()
   factory DomError(String name, [String message]) {
-    return _blink.BlinkDOMError.instance.constructorCallback_2_(name, message);
+    return wrap_jso(_blink.BlinkDOMError.instance.constructorCallback_2_(name, message));
   }
 
+  static DomError internalCreateDomError() {
+    return new DomError._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomError._internalWrap() {
+    return new DomError.internal_();
+  }
+
+  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
@@ -9549,21 +11325,47 @@
   static const String INVALID_NODE_TYPE = 'InvalidNodeTypeError';
   static const String DATA_CLONE = 'DataCloneError';
 
+  String _name;
+  String _message;
+
   // To suppress missing implicit constructor warnings.
   factory DomException._() { throw new UnsupportedError("Not supported"); }
 
+  static DomException internalCreateDomException() {
+    return new DomException._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomException._internalWrap() {
+    return new DomException.internal_();
+  }
+
+  DomException.internal_() { }
+
+  DomException.jsInterop(String m) {
+    var name_index = m.indexOf(': ');
+    if (name_index < 0) {
+      _name = "";
+      _message = m;
+    } else {
+      _name = m.substring(0, name_index);
+      _message = m.substring(name_index + 1).trim();
+    }
+  }
+
   @DomName('DOMException.message')
   @DocsEditable()
-  String get message => _blink.BlinkDOMException.instance.message_Getter_(unwrap_jso(this));
-  
+  String get message => _message;
+
   @DomName('DOMException.name')
   @DocsEditable()
-  String get name => _blink.BlinkDOMException.instance.name_Getter_(unwrap_jso(this));
-  
+  String get name => _name;
+
   @DomName('DOMException.toString')
   @DocsEditable()
-  String toString() => _blink.BlinkDOMException.instance.toString_Callback_0_(unwrap_jso(this));
-  
+  String toString() => "${_name}: $_message";
+
 }
 // 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
@@ -9578,13 +11380,28 @@
   // To suppress missing implicit constructor warnings.
   factory DomImplementation._() { throw new UnsupportedError("Not supported"); }
 
+  static DomImplementation internalCreateDomImplementation() {
+    return new DomImplementation._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomImplementation._internalWrap() {
+    return new DomImplementation.internal_();
+  }
+
+  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) => _blink.BlinkDOMImplementation.instance.createDocument_Callback_3_(unwrap_jso(this), namespaceURI, qualifiedName, unwrap_jso(doctype));
+  XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) => wrap_jso(_blink.BlinkDOMImplementation.instance.createDocument_Callback_3_(unwrap_jso(this), namespaceURI, qualifiedName, unwrap_jso(doctype)));
   
   @DomName('DOMImplementation.createDocumentType')
   @DocsEditable()
-  _DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) => _blink.BlinkDOMImplementation.instance.createDocumentType_Callback_3_(unwrap_jso(this), qualifiedName, publicId, systemId);
+  _DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) => wrap_jso(_blink.BlinkDOMImplementation.instance.createDocumentType_Callback_3_(unwrap_jso(this), qualifiedName, publicId, systemId));
   
   @DomName('DOMImplementation.createHTMLDocument')
   @DocsEditable()
@@ -9609,11 +11426,26 @@
   // To suppress missing implicit constructor warnings.
   factory DomIterator._() { throw new UnsupportedError("Not supported"); }
 
+  static DomIterator internalCreateDomIterator() {
+    return new DomIterator._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomIterator._internalWrap() {
+    return new DomIterator.internal_();
+  }
+
+  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 _blink.BlinkIterator.instance.next_Callback_1_(unwrap_jso(this), value);
+      return wrap_jso(_blink.BlinkIterator.instance.next_Callback_1_(unwrap_jso(this), value));
     }
-    return _blink.BlinkIterator.instance.next_Callback_0_(unwrap_jso(this));
+    return wrap_jso(_blink.BlinkIterator.instance.next_Callback_0_(unwrap_jso(this)));
   }
 
 }
@@ -9635,14 +11467,26 @@
   @DocsEditable()
   factory DomMatrix([DomMatrixReadOnly other]) {
     if (other == null) {
-      return _blink.BlinkDOMMatrix.instance.constructorCallback_0_();
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.constructorCallback_0_());
     }
     if ((other is DomMatrixReadOnly || other == null)) {
-      return _blink.BlinkDOMMatrix.instance.constructorCallback_1_(other);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.constructorCallback_1_(other));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+
+  static DomMatrix internalCreateDomMatrix() {
+    return new DomMatrix._internalWrap();
+  }
+
+  factory DomMatrix._internalWrap() {
+    return new DomMatrix.internal_();
+  }
+
+  DomMatrix.internal_() : super.internal_();
+
+
   @DomName('DOMMatrix.a')
   @DocsEditable()
   @Experimental() // untriaged
@@ -9651,7 +11495,7 @@
   @DomName('DOMMatrix.a')
   @DocsEditable()
   @Experimental() // untriaged
-  void set a(num value) => _blink.BlinkDOMMatrix.instance.a_Setter_(unwrap_jso(this), value);
+  set a(num value) => _blink.BlinkDOMMatrix.instance.a_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.b')
   @DocsEditable()
@@ -9661,7 +11505,7 @@
   @DomName('DOMMatrix.b')
   @DocsEditable()
   @Experimental() // untriaged
-  void set b(num value) => _blink.BlinkDOMMatrix.instance.b_Setter_(unwrap_jso(this), value);
+  set b(num value) => _blink.BlinkDOMMatrix.instance.b_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.c')
   @DocsEditable()
@@ -9671,7 +11515,7 @@
   @DomName('DOMMatrix.c')
   @DocsEditable()
   @Experimental() // untriaged
-  void set c(num value) => _blink.BlinkDOMMatrix.instance.c_Setter_(unwrap_jso(this), value);
+  set c(num value) => _blink.BlinkDOMMatrix.instance.c_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.d')
   @DocsEditable()
@@ -9681,7 +11525,7 @@
   @DomName('DOMMatrix.d')
   @DocsEditable()
   @Experimental() // untriaged
-  void set d(num value) => _blink.BlinkDOMMatrix.instance.d_Setter_(unwrap_jso(this), value);
+  set d(num value) => _blink.BlinkDOMMatrix.instance.d_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.e')
   @DocsEditable()
@@ -9691,7 +11535,7 @@
   @DomName('DOMMatrix.e')
   @DocsEditable()
   @Experimental() // untriaged
-  void set e(num value) => _blink.BlinkDOMMatrix.instance.e_Setter_(unwrap_jso(this), value);
+  set e(num value) => _blink.BlinkDOMMatrix.instance.e_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.f')
   @DocsEditable()
@@ -9701,7 +11545,7 @@
   @DomName('DOMMatrix.f')
   @DocsEditable()
   @Experimental() // untriaged
-  void set f(num value) => _blink.BlinkDOMMatrix.instance.f_Setter_(unwrap_jso(this), value);
+  set f(num value) => _blink.BlinkDOMMatrix.instance.f_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m11')
   @DocsEditable()
@@ -9711,7 +11555,7 @@
   @DomName('DOMMatrix.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m11(num value) => _blink.BlinkDOMMatrix.instance.m11_Setter_(unwrap_jso(this), value);
+  set m11(num value) => _blink.BlinkDOMMatrix.instance.m11_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m12')
   @DocsEditable()
@@ -9721,7 +11565,7 @@
   @DomName('DOMMatrix.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m12(num value) => _blink.BlinkDOMMatrix.instance.m12_Setter_(unwrap_jso(this), value);
+  set m12(num value) => _blink.BlinkDOMMatrix.instance.m12_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m13')
   @DocsEditable()
@@ -9731,7 +11575,7 @@
   @DomName('DOMMatrix.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m13(num value) => _blink.BlinkDOMMatrix.instance.m13_Setter_(unwrap_jso(this), value);
+  set m13(num value) => _blink.BlinkDOMMatrix.instance.m13_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m14')
   @DocsEditable()
@@ -9741,7 +11585,7 @@
   @DomName('DOMMatrix.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m14(num value) => _blink.BlinkDOMMatrix.instance.m14_Setter_(unwrap_jso(this), value);
+  set m14(num value) => _blink.BlinkDOMMatrix.instance.m14_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m21')
   @DocsEditable()
@@ -9751,7 +11595,7 @@
   @DomName('DOMMatrix.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m21(num value) => _blink.BlinkDOMMatrix.instance.m21_Setter_(unwrap_jso(this), value);
+  set m21(num value) => _blink.BlinkDOMMatrix.instance.m21_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m22')
   @DocsEditable()
@@ -9761,7 +11605,7 @@
   @DomName('DOMMatrix.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m22(num value) => _blink.BlinkDOMMatrix.instance.m22_Setter_(unwrap_jso(this), value);
+  set m22(num value) => _blink.BlinkDOMMatrix.instance.m22_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m23')
   @DocsEditable()
@@ -9771,7 +11615,7 @@
   @DomName('DOMMatrix.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m23(num value) => _blink.BlinkDOMMatrix.instance.m23_Setter_(unwrap_jso(this), value);
+  set m23(num value) => _blink.BlinkDOMMatrix.instance.m23_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m24')
   @DocsEditable()
@@ -9781,7 +11625,7 @@
   @DomName('DOMMatrix.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m24(num value) => _blink.BlinkDOMMatrix.instance.m24_Setter_(unwrap_jso(this), value);
+  set m24(num value) => _blink.BlinkDOMMatrix.instance.m24_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m31')
   @DocsEditable()
@@ -9791,7 +11635,7 @@
   @DomName('DOMMatrix.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m31(num value) => _blink.BlinkDOMMatrix.instance.m31_Setter_(unwrap_jso(this), value);
+  set m31(num value) => _blink.BlinkDOMMatrix.instance.m31_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m32')
   @DocsEditable()
@@ -9801,7 +11645,7 @@
   @DomName('DOMMatrix.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m32(num value) => _blink.BlinkDOMMatrix.instance.m32_Setter_(unwrap_jso(this), value);
+  set m32(num value) => _blink.BlinkDOMMatrix.instance.m32_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m33')
   @DocsEditable()
@@ -9811,7 +11655,7 @@
   @DomName('DOMMatrix.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m33(num value) => _blink.BlinkDOMMatrix.instance.m33_Setter_(unwrap_jso(this), value);
+  set m33(num value) => _blink.BlinkDOMMatrix.instance.m33_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m34')
   @DocsEditable()
@@ -9821,7 +11665,7 @@
   @DomName('DOMMatrix.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m34(num value) => _blink.BlinkDOMMatrix.instance.m34_Setter_(unwrap_jso(this), value);
+  set m34(num value) => _blink.BlinkDOMMatrix.instance.m34_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m41')
   @DocsEditable()
@@ -9831,7 +11675,7 @@
   @DomName('DOMMatrix.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m41(num value) => _blink.BlinkDOMMatrix.instance.m41_Setter_(unwrap_jso(this), value);
+  set m41(num value) => _blink.BlinkDOMMatrix.instance.m41_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m42')
   @DocsEditable()
@@ -9841,7 +11685,7 @@
   @DomName('DOMMatrix.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m42(num value) => _blink.BlinkDOMMatrix.instance.m42_Setter_(unwrap_jso(this), value);
+  set m42(num value) => _blink.BlinkDOMMatrix.instance.m42_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m43')
   @DocsEditable()
@@ -9851,7 +11695,7 @@
   @DomName('DOMMatrix.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m43(num value) => _blink.BlinkDOMMatrix.instance.m43_Setter_(unwrap_jso(this), value);
+  set m43(num value) => _blink.BlinkDOMMatrix.instance.m43_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.m44')
   @DocsEditable()
@@ -9861,65 +11705,65 @@
   @DomName('DOMMatrix.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m44(num value) => _blink.BlinkDOMMatrix.instance.m44_Setter_(unwrap_jso(this), value);
+  set m44(num value) => _blink.BlinkDOMMatrix.instance.m44_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMMatrix.multiplySelf')
   @DocsEditable()
   @Experimental() // untriaged
-  DomMatrix multiplySelf(DomMatrix other) => _blink.BlinkDOMMatrix.instance.multiplySelf_Callback_1_(unwrap_jso(this), unwrap_jso(other));
+  DomMatrix multiplySelf(DomMatrix other) => wrap_jso(_blink.BlinkDOMMatrix.instance.multiplySelf_Callback_1_(unwrap_jso(this), unwrap_jso(other)));
   
   @DomName('DOMMatrix.preMultiplySelf')
   @DocsEditable()
   @Experimental() // untriaged
-  DomMatrix preMultiplySelf(DomMatrix other) => _blink.BlinkDOMMatrix.instance.preMultiplySelf_Callback_1_(unwrap_jso(this), unwrap_jso(other));
+  DomMatrix preMultiplySelf(DomMatrix other) => wrap_jso(_blink.BlinkDOMMatrix.instance.preMultiplySelf_Callback_1_(unwrap_jso(this), unwrap_jso(other)));
   
   DomMatrix scale3dSelf(num scale, [num ox, num oy, num oz]) {
     if (oz != null) {
-      return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_4_(unwrap_jso(this), scale, ox, oy, oz);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_4_(unwrap_jso(this), scale, ox, oy, oz));
     }
     if (oy != null) {
-      return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_3_(unwrap_jso(this), scale, ox, oy);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_3_(unwrap_jso(this), scale, ox, oy));
     }
     if (ox != null) {
-      return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_2_(unwrap_jso(this), scale, ox);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_2_(unwrap_jso(this), scale, ox));
     }
-    return _blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_1_(unwrap_jso(this), scale);
+    return wrap_jso(_blink.BlinkDOMMatrix.instance.scale3dSelf_Callback_1_(unwrap_jso(this), scale));
   }
 
   DomMatrix scaleNonUniformSelf(num sx, [num sy, num sz, num ox, num oy, num oz]) {
     if (oz != null) {
-      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_6_(unwrap_jso(this), sx, sy, sz, ox, oy, oz);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_6_(unwrap_jso(this), sx, sy, sz, ox, oy, oz));
     }
     if (oy != null) {
-      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_5_(unwrap_jso(this), sx, sy, sz, ox, oy);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_5_(unwrap_jso(this), sx, sy, sz, ox, oy));
     }
     if (ox != null) {
-      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_4_(unwrap_jso(this), sx, sy, sz, ox);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_4_(unwrap_jso(this), sx, sy, sz, ox));
     }
     if (sz != null) {
-      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_3_(unwrap_jso(this), sx, sy, sz);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_3_(unwrap_jso(this), sx, sy, sz));
     }
     if (sy != null) {
-      return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_2_(unwrap_jso(this), sx, sy);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_2_(unwrap_jso(this), sx, sy));
     }
-    return _blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_1_(unwrap_jso(this), sx);
+    return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleNonUniformSelf_Callback_1_(unwrap_jso(this), sx));
   }
 
   DomMatrix scaleSelf(num scale, [num ox, num oy]) {
     if (oy != null) {
-      return _blink.BlinkDOMMatrix.instance.scaleSelf_Callback_3_(unwrap_jso(this), scale, ox, oy);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleSelf_Callback_3_(unwrap_jso(this), scale, ox, oy));
     }
     if (ox != null) {
-      return _blink.BlinkDOMMatrix.instance.scaleSelf_Callback_2_(unwrap_jso(this), scale, ox);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleSelf_Callback_2_(unwrap_jso(this), scale, ox));
     }
-    return _blink.BlinkDOMMatrix.instance.scaleSelf_Callback_1_(unwrap_jso(this), scale);
+    return wrap_jso(_blink.BlinkDOMMatrix.instance.scaleSelf_Callback_1_(unwrap_jso(this), scale));
   }
 
   DomMatrix translateSelf(num tx, num ty, [num tz]) {
     if (tz != null) {
-      return _blink.BlinkDOMMatrix.instance.translateSelf_Callback_3_(unwrap_jso(this), tx, ty, tz);
+      return wrap_jso(_blink.BlinkDOMMatrix.instance.translateSelf_Callback_3_(unwrap_jso(this), tx, ty, tz));
     }
-    return _blink.BlinkDOMMatrix.instance.translateSelf_Callback_2_(unwrap_jso(this), tx, ty);
+    return wrap_jso(_blink.BlinkDOMMatrix.instance.translateSelf_Callback_2_(unwrap_jso(this), tx, ty));
   }
 
 }
@@ -9937,35 +11781,50 @@
   // To suppress missing implicit constructor warnings.
   factory DomMatrixReadOnly._() { throw new UnsupportedError("Not supported"); }
 
+  static DomMatrixReadOnly internalCreateDomMatrixReadOnly() {
+    return new DomMatrixReadOnly._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomMatrixReadOnly._internalWrap() {
+    return new DomMatrixReadOnly.internal_();
+  }
+
+  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
-  double get a => _blink.BlinkDOMMatrixReadOnly.instance.a_Getter_(unwrap_jso(this));
+  num get a => _blink.BlinkDOMMatrixReadOnly.instance.a_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.b')
   @DocsEditable()
   @Experimental() // untriaged
-  double get b => _blink.BlinkDOMMatrixReadOnly.instance.b_Getter_(unwrap_jso(this));
+  num get b => _blink.BlinkDOMMatrixReadOnly.instance.b_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.c')
   @DocsEditable()
   @Experimental() // untriaged
-  double get c => _blink.BlinkDOMMatrixReadOnly.instance.c_Getter_(unwrap_jso(this));
+  num get c => _blink.BlinkDOMMatrixReadOnly.instance.c_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.d')
   @DocsEditable()
   @Experimental() // untriaged
-  double get d => _blink.BlinkDOMMatrixReadOnly.instance.d_Getter_(unwrap_jso(this));
+  num get d => _blink.BlinkDOMMatrixReadOnly.instance.d_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.e')
   @DocsEditable()
   @Experimental() // untriaged
-  double get e => _blink.BlinkDOMMatrixReadOnly.instance.e_Getter_(unwrap_jso(this));
+  num get e => _blink.BlinkDOMMatrixReadOnly.instance.e_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.f')
   @DocsEditable()
   @Experimental() // untriaged
-  double get f => _blink.BlinkDOMMatrixReadOnly.instance.f_Getter_(unwrap_jso(this));
+  num get f => _blink.BlinkDOMMatrixReadOnly.instance.f_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.is2D')
   @DocsEditable()
@@ -9980,128 +11839,128 @@
   @DomName('DOMMatrixReadOnly.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m11 => _blink.BlinkDOMMatrixReadOnly.instance.m11_Getter_(unwrap_jso(this));
+  num get m11 => _blink.BlinkDOMMatrixReadOnly.instance.m11_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m12 => _blink.BlinkDOMMatrixReadOnly.instance.m12_Getter_(unwrap_jso(this));
+  num get m12 => _blink.BlinkDOMMatrixReadOnly.instance.m12_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m13 => _blink.BlinkDOMMatrixReadOnly.instance.m13_Getter_(unwrap_jso(this));
+  num get m13 => _blink.BlinkDOMMatrixReadOnly.instance.m13_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m14 => _blink.BlinkDOMMatrixReadOnly.instance.m14_Getter_(unwrap_jso(this));
+  num get m14 => _blink.BlinkDOMMatrixReadOnly.instance.m14_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m21 => _blink.BlinkDOMMatrixReadOnly.instance.m21_Getter_(unwrap_jso(this));
+  num get m21 => _blink.BlinkDOMMatrixReadOnly.instance.m21_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m22 => _blink.BlinkDOMMatrixReadOnly.instance.m22_Getter_(unwrap_jso(this));
+  num get m22 => _blink.BlinkDOMMatrixReadOnly.instance.m22_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m23 => _blink.BlinkDOMMatrixReadOnly.instance.m23_Getter_(unwrap_jso(this));
+  num get m23 => _blink.BlinkDOMMatrixReadOnly.instance.m23_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m24 => _blink.BlinkDOMMatrixReadOnly.instance.m24_Getter_(unwrap_jso(this));
+  num get m24 => _blink.BlinkDOMMatrixReadOnly.instance.m24_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m31 => _blink.BlinkDOMMatrixReadOnly.instance.m31_Getter_(unwrap_jso(this));
+  num get m31 => _blink.BlinkDOMMatrixReadOnly.instance.m31_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m32 => _blink.BlinkDOMMatrixReadOnly.instance.m32_Getter_(unwrap_jso(this));
+  num get m32 => _blink.BlinkDOMMatrixReadOnly.instance.m32_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m33 => _blink.BlinkDOMMatrixReadOnly.instance.m33_Getter_(unwrap_jso(this));
+  num get m33 => _blink.BlinkDOMMatrixReadOnly.instance.m33_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m34 => _blink.BlinkDOMMatrixReadOnly.instance.m34_Getter_(unwrap_jso(this));
+  num get m34 => _blink.BlinkDOMMatrixReadOnly.instance.m34_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m41 => _blink.BlinkDOMMatrixReadOnly.instance.m41_Getter_(unwrap_jso(this));
+  num get m41 => _blink.BlinkDOMMatrixReadOnly.instance.m41_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m42 => _blink.BlinkDOMMatrixReadOnly.instance.m42_Getter_(unwrap_jso(this));
+  num get m42 => _blink.BlinkDOMMatrixReadOnly.instance.m42_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m43 => _blink.BlinkDOMMatrixReadOnly.instance.m43_Getter_(unwrap_jso(this));
+  num get m43 => _blink.BlinkDOMMatrixReadOnly.instance.m43_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m44 => _blink.BlinkDOMMatrixReadOnly.instance.m44_Getter_(unwrap_jso(this));
+  num get m44 => _blink.BlinkDOMMatrixReadOnly.instance.m44_Getter_(unwrap_jso(this));
   
   @DomName('DOMMatrixReadOnly.multiply')
   @DocsEditable()
   @Experimental() // untriaged
-  DomMatrix multiply(DomMatrix other) => _blink.BlinkDOMMatrixReadOnly.instance.multiply_Callback_1_(unwrap_jso(this), unwrap_jso(other));
+  DomMatrix multiply(DomMatrix other) => wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.multiply_Callback_1_(unwrap_jso(this), unwrap_jso(other)));
   
   DomMatrix scale(num scale, [num ox, num oy]) {
     if (oy != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_3_(unwrap_jso(this), scale, ox, oy);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_3_(unwrap_jso(this), scale, ox, oy));
     }
     if (ox != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_2_(unwrap_jso(this), scale, ox);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_2_(unwrap_jso(this), scale, ox));
     }
-    return _blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_1_(unwrap_jso(this), scale);
+    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale_Callback_1_(unwrap_jso(this), scale));
   }
 
   DomMatrix scale3d(num scale, [num ox, num oy, num oz]) {
     if (oz != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_4_(unwrap_jso(this), scale, ox, oy, oz);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_4_(unwrap_jso(this), scale, ox, oy, oz));
     }
     if (oy != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_3_(unwrap_jso(this), scale, ox, oy);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_3_(unwrap_jso(this), scale, ox, oy));
     }
     if (ox != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_2_(unwrap_jso(this), scale, ox);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_2_(unwrap_jso(this), scale, ox));
     }
-    return _blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_1_(unwrap_jso(this), scale);
+    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scale3d_Callback_1_(unwrap_jso(this), scale));
   }
 
   DomMatrix scaleNonUniform(num sx, [num sy, num sz, num ox, num oy, num oz]) {
     if (oz != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_6_(unwrap_jso(this), sx, sy, sz, ox, oy, oz);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_6_(unwrap_jso(this), sx, sy, sz, ox, oy, oz));
     }
     if (oy != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_5_(unwrap_jso(this), sx, sy, sz, ox, oy);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_5_(unwrap_jso(this), sx, sy, sz, ox, oy));
     }
     if (ox != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_4_(unwrap_jso(this), sx, sy, sz, ox);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_4_(unwrap_jso(this), sx, sy, sz, ox));
     }
     if (sz != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_3_(unwrap_jso(this), sx, sy, sz);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_3_(unwrap_jso(this), sx, sy, sz));
     }
     if (sy != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_2_(unwrap_jso(this), sx, sy);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_2_(unwrap_jso(this), sx, sy));
     }
-    return _blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_1_(unwrap_jso(this), sx);
+    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.scaleNonUniform_Callback_1_(unwrap_jso(this), sx));
   }
 
   @DomName('DOMMatrixReadOnly.toFloat32Array')
@@ -10116,9 +11975,9 @@
   
   DomMatrix translate(num tx, num ty, [num tz]) {
     if (tz != null) {
-      return _blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_3_(unwrap_jso(this), tx, ty, tz);
+      return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_3_(unwrap_jso(this), tx, ty, tz));
     }
-    return _blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_2_(unwrap_jso(this), tx, ty);
+    return wrap_jso(_blink.BlinkDOMMatrixReadOnly.instance.translate_Callback_2_(unwrap_jso(this), tx, ty));
   }
 
 }
@@ -10138,9 +11997,24 @@
   @DomName('DOMParser.DOMParser')
   @DocsEditable()
   factory DomParser() {
-    return _blink.BlinkDOMParser.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkDOMParser.instance.constructorCallback_0_());
   }
 
+  static DomParser internalCreateDomParser() {
+    return new DomParser._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomParser._internalWrap() {
+    return new DomParser.internal_();
+  }
+
+  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 contentType) => wrap_jso(_blink.BlinkDOMParser.instance.parseFromString_Callback_2_(unwrap_jso(this), str, contentType));
@@ -10164,23 +12038,36 @@
   @DocsEditable()
   factory DomPoint([point_OR_x, num y, num z, num w]) {
     if (point_OR_x == null && y == null && z == null && w == null) {
-      return _blink.BlinkDOMPoint.instance.constructorCallback_0_();
+      return wrap_jso(_blink.BlinkDOMPoint.instance.constructorCallback_0_());
     }
     if ((point_OR_x is Map || point_OR_x == null) && y == null && z == null && w == null) {
-      return _blink.BlinkDOMPoint.instance.constructorCallback_1_(point_OR_x);
+      var point_1 = convertDartToNative_Dictionary(point_OR_x);
+      return wrap_jso(_blink.BlinkDOMPoint.instance.constructorCallback_1_(point_1));
     }
     if ((y is num || y == null) && (point_OR_x is num || point_OR_x == null) && z == null && w == null) {
-      return _blink.BlinkDOMPoint.instance.constructorCallback_2_(point_OR_x, y);
+      return wrap_jso(_blink.BlinkDOMPoint.instance.constructorCallback_2_(point_OR_x, y));
     }
     if ((z is num || z == null) && (y is num || y == null) && (point_OR_x is num || point_OR_x == null) && w == null) {
-      return _blink.BlinkDOMPoint.instance.constructorCallback_3_(point_OR_x, y, z);
+      return wrap_jso(_blink.BlinkDOMPoint.instance.constructorCallback_3_(point_OR_x, y, z));
     }
     if ((w is num || w == null) && (z is num || z == null) && (y is num || y == null) && (point_OR_x is num || point_OR_x == null)) {
-      return _blink.BlinkDOMPoint.instance.constructorCallback_4_(point_OR_x, y, z, w);
+      return wrap_jso(_blink.BlinkDOMPoint.instance.constructorCallback_4_(point_OR_x, y, z, w));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+
+  static DomPoint internalCreateDomPoint() {
+    return new DomPoint._internalWrap();
+  }
+
+  factory DomPoint._internalWrap() {
+    return new DomPoint.internal_();
+  }
+
+  DomPoint.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -10192,7 +12079,7 @@
   @DomName('DOMPoint.w')
   @DocsEditable()
   @Experimental() // untriaged
-  void set w(num value) => _blink.BlinkDOMPoint.instance.w_Setter_(unwrap_jso(this), value);
+  set w(num value) => _blink.BlinkDOMPoint.instance.w_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMPoint.x')
   @DocsEditable()
@@ -10202,7 +12089,7 @@
   @DomName('DOMPoint.x')
   @DocsEditable()
   @Experimental() // untriaged
-  void set x(num value) => _blink.BlinkDOMPoint.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkDOMPoint.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMPoint.y')
   @DocsEditable()
@@ -10212,7 +12099,7 @@
   @DomName('DOMPoint.y')
   @DocsEditable()
   @Experimental() // untriaged
-  void set y(num value) => _blink.BlinkDOMPoint.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkDOMPoint.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMPoint.z')
   @DocsEditable()
@@ -10222,7 +12109,7 @@
   @DomName('DOMPoint.z')
   @DocsEditable()
   @Experimental() // untriaged
-  void set z(num value) => _blink.BlinkDOMPoint.instance.z_Setter_(unwrap_jso(this), value);
+  set z(num value) => _blink.BlinkDOMPoint.instance.z_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10242,28 +12129,43 @@
   @DomName('DOMPointReadOnly.DOMPointReadOnly')
   @DocsEditable()
   factory DomPointReadOnly(num x, num y, num z, num w) {
-    return _blink.BlinkDOMPointReadOnly.instance.constructorCallback_4_(x, y, z, w);
+    return wrap_jso(_blink.BlinkDOMPointReadOnly.instance.constructorCallback_4_(x, y, z, w));
   }
 
+  static DomPointReadOnly internalCreateDomPointReadOnly() {
+    return new DomPointReadOnly._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomPointReadOnly._internalWrap() {
+    return new DomPointReadOnly.internal_();
+  }
+
+  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
-  double get w => _blink.BlinkDOMPointReadOnly.instance.w_Getter_(unwrap_jso(this));
+  num get w => _blink.BlinkDOMPointReadOnly.instance.w_Getter_(unwrap_jso(this));
   
   @DomName('DOMPointReadOnly.x')
   @DocsEditable()
   @Experimental() // untriaged
-  double get x => _blink.BlinkDOMPointReadOnly.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDOMPointReadOnly.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('DOMPointReadOnly.y')
   @DocsEditable()
   @Experimental() // untriaged
-  double get y => _blink.BlinkDOMPointReadOnly.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDOMPointReadOnly.instance.y_Getter_(unwrap_jso(this));
   
   @DomName('DOMPointReadOnly.z')
   @DocsEditable()
   @Experimental() // untriaged
-  double get z => _blink.BlinkDOMPointReadOnly.instance.z_Getter_(unwrap_jso(this));
+  num get z => _blink.BlinkDOMPointReadOnly.instance.z_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -10371,48 +12273,61 @@
   @DomName('DOMRectReadOnly.DOMRectReadOnly')
   @DocsEditable()
   factory DomRectReadOnly(num x, num y, num width, num height) {
-    return _blink.BlinkDOMRectReadOnly.instance.constructorCallback_4_(x, y, width, height);
+    return wrap_jso(_blink.BlinkDOMRectReadOnly.instance.constructorCallback_4_(x, y, width, height));
   }
 
+  static DomRectReadOnly internalCreateDomRectReadOnly() {
+    return new DomRectReadOnly._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomRectReadOnly._internalWrap() {
+    return new DomRectReadOnly.internal_();
+  }
+
+  DomRectReadOnly.internal_() { }
+
+
   @DomName('DOMRectReadOnly.bottom')
   @DocsEditable()
   @Experimental() // untriaged
-  double get bottom => _blink.BlinkDOMRectReadOnly.instance.bottom_Getter_(unwrap_jso(this));
+  num get bottom => _blink.BlinkDOMRectReadOnly.instance.bottom_Getter_(unwrap_jso(this));
   
   @DomName('DOMRectReadOnly.height')
   @DocsEditable()
   @Experimental() // untriaged
-  double get height => _blink.BlinkDOMRectReadOnly.instance.height_Getter_(unwrap_jso(this));
+  num get height => _blink.BlinkDOMRectReadOnly.instance.height_Getter_(unwrap_jso(this));
   
   @DomName('DOMRectReadOnly.left')
   @DocsEditable()
   @Experimental() // untriaged
-  double get left => _blink.BlinkDOMRectReadOnly.instance.left_Getter_(unwrap_jso(this));
+  num get left => _blink.BlinkDOMRectReadOnly.instance.left_Getter_(unwrap_jso(this));
   
   @DomName('DOMRectReadOnly.right')
   @DocsEditable()
   @Experimental() // untriaged
-  double get right => _blink.BlinkDOMRectReadOnly.instance.right_Getter_(unwrap_jso(this));
+  num get right => _blink.BlinkDOMRectReadOnly.instance.right_Getter_(unwrap_jso(this));
   
   @DomName('DOMRectReadOnly.top')
   @DocsEditable()
   @Experimental() // untriaged
-  double get top => _blink.BlinkDOMRectReadOnly.instance.top_Getter_(unwrap_jso(this));
+  num get top => _blink.BlinkDOMRectReadOnly.instance.top_Getter_(unwrap_jso(this));
   
   @DomName('DOMRectReadOnly.width')
   @DocsEditable()
   @Experimental() // untriaged
-  double get width => _blink.BlinkDOMRectReadOnly.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkDOMRectReadOnly.instance.width_Getter_(unwrap_jso(this));
   
   @DomName('DOMRectReadOnly.x')
   @DocsEditable()
   @Experimental() // untriaged
-  double get x => _blink.BlinkDOMRectReadOnly.instance.x_Getter_(unwrap_jso(this));
+  num get x => _blink.BlinkDOMRectReadOnly.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('DOMRectReadOnly.y')
   @DocsEditable()
   @Experimental() // untriaged
-  double get y => _blink.BlinkDOMRectReadOnly.instance.y_Getter_(unwrap_jso(this));
+  num get y => _blink.BlinkDOMRectReadOnly.instance.y_Getter_(unwrap_jso(this));
   }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10428,13 +12343,25 @@
   // To suppress missing implicit constructor warnings.
   factory DomSettableTokenList._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DomSettableTokenList internalCreateDomSettableTokenList() {
+    return new DomSettableTokenList._internalWrap();
+  }
+
+  factory DomSettableTokenList._internalWrap() {
+    return new DomSettableTokenList.internal_();
+  }
+
+  DomSettableTokenList.internal_() : super.internal_();
+
+
   @DomName('DOMSettableTokenList.value')
   @DocsEditable()
   String get value => _blink.BlinkDOMSettableTokenList.instance.value_Getter_(unwrap_jso(this));
   
   @DomName('DOMSettableTokenList.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkDOMSettableTokenList.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkDOMSettableTokenList.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMSettableTokenList.__getter__')
   @DocsEditable()
@@ -10450,10 +12377,25 @@
 
 @DocsEditable()
 @DomName('DOMStringList')
-class DomStringList extends NativeFieldWrapperClass2 with ListMixin<String>, ImmutableListMixin<String> implements List<String> {
+class DomStringList extends JsoNativeFieldWrapper with ListMixin<String>, ImmutableListMixin<String> implements List<String> {
   // To suppress missing implicit constructor warnings.
   factory DomStringList._() { throw new UnsupportedError("Not supported"); }
 
+  static DomStringList internalCreateDomStringList() {
+    return new DomStringList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomStringList._internalWrap() {
+    return new DomStringList.internal_();
+  }
+
+  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));
@@ -10465,7 +12407,7 @@
   }
 
   String _nativeIndexedGetter(int index) => _blink.BlinkDOMStringList.instance.item_Callback_1_(unwrap_jso(this), index);
- 
+
   void operator[]=(int index, String value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -10473,7 +12415,7 @@
   // String is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -10522,7 +12464,7 @@
 
 @DocsEditable()
 @DomName('DOMStringMap')
-abstract class DomStringMap extends NativeFieldWrapperClass2 {
+class DomStringMap extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory DomStringMap._() { throw new UnsupportedError("Not supported"); }
 
@@ -10572,6 +12514,21 @@
   // To suppress missing implicit constructor warnings.
   factory DomTokenList._() { throw new UnsupportedError("Not supported"); }
 
+  static DomTokenList internalCreateDomTokenList() {
+    return new DomTokenList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomTokenList._internalWrap() {
+    return new DomTokenList.internal_();
+  }
+
+  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));
@@ -10636,7 +12593,7 @@
     _element._replaceChild(value, _childElements[index]);
   }
 
-  void set length(int newLength) {
+  set length(int newLength) {
     // TODO(jacobr): remove children when length is reduced.
     throw new UnsupportedError('Cannot resize element lists');
   }
@@ -10700,7 +12657,8 @@
   bool remove(Object object) {
     if (object is Element) {
       Element element = object;
-      if (identical(element.parentNode, _element)) {
+      // We aren't preserving identity of nodes in JSINTEROP mode
+      if (element.parentNode == _element) {
         _element._removeChild(element);
         return true;
       }
@@ -11332,7 +13290,11 @@
     implements ElementList, NodeListWrapper {
   final List<Node> _nodeList;
 
-  _FrozenElementList._wrap(this._nodeList);
+  var dartClass_instance;
+
+  _FrozenElementList._wrap(this._nodeList) {
+      this.dartClass_instance = this._nodeList;
+  }
 
   int get length => _nodeList.length;
 
@@ -11342,7 +13304,7 @@
     throw new UnsupportedError('Cannot modify list');
   }
 
-  void set length(int newLength) {
+  set length(int newLength) {
     throw new UnsupportedError('Cannot modify list');
   }
 
@@ -11365,7 +13327,7 @@
   CssStyleDeclarationBase get style =>
       new _CssStyleDeclarationSet(this);
 
-  void set classes(Iterable<String> value) {
+  set classes(Iterable<String> value) {
     // TODO(sra): This might be faster for Sets:
     //
     //     new _MultiElementCssClassSet(this).writeClasses(value)
@@ -11859,7 +13821,7 @@
  * An abstract class, which all HTML elements extend.
  */
 @DomName('Element')
-abstract class Element extends Node implements GlobalEventHandlers, ParentNode, ChildNode {
+class Element extends Node implements GlobalEventHandlers, ParentNode, ChildNode {
 
   /**
    * Creates an HTML element from a valid fragment of HTML.
@@ -11906,11 +13868,7 @@
    *     }
    *     document.registerElement('x-custom', CustomElement);
    */
-  Element.created() : super._created() {
-    // Validate that this is a custom element & perform any additional
-    // initialization.
-    _initializeCustomElement(this);
-  }
+  Element.created() : super._created();
 
   /**
    * Creates the HTML element specified by the tag name.
@@ -12091,7 +14049,7 @@
    */
   Map<String, String> get attributes => new _ElementAttributeMap(this);
 
-  void set attributes(Map<String, String> value) {
+  set attributes(Map<String, String> value) {
     Map<String, String> attributes = this.attributes;
     attributes.clear();
     for (String key in value.keys) {
@@ -12113,7 +14071,7 @@
    */
   List<Element> get children => new _ChildrenElementList._wrap(this);
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     // Copy list first since we don't want liveness during iteration.
     List copy = new List.from(value);
     var children = this.children;
@@ -12167,7 +14125,7 @@
    */
   CssClassSet get classes => new _ElementCssClassSet(this);
 
-  void set classes(Iterable<String> value) {
+  set classes(Iterable<String> value) {
     // TODO(sra): Do this without reading the classes in clear() and addAll(),
     // or writing the classes in clear().
     CssClassSet classSet = classes;
@@ -12201,7 +14159,7 @@
   Map<String, String> get dataset =>
     new _DataAttributeMap(attributes);
 
-  void set dataset(Map<String, String> value) {
+  set dataset(Map<String, String> value) {
     final data = this.dataset;
     data.clear();
     for (String key in value.keys) {
@@ -12321,6 +14279,49 @@
   void leftView() {}
 
   /**
+   * Creates a new AnimationEffect object whose target element is the object
+   * on which the method is called, and calls the play() method of the
+   * AnimationTimeline object of the document timeline of the node document
+   * of the element, passing the newly created AnimationEffect as the argument
+   * to the method. Returns an AnimationPlayer for the effect.
+   *
+   * Examples
+   *
+   *     var animation = elem.animate([{"opacity": 75}, {"opacity": 0}], 200);
+   *
+   *     var animation = elem.animate([
+   *       {"transform": "translate(100px, -100%)"},
+   *       {"transform" : "translate(400px, 500px)"}
+   *     ], 1500);
+   *
+   * The [frames] parameter is an Iterable<Map>, where the
+   * map entries specify CSS animation effects. The
+   * [timing] paramter can be a double, representing the number of milliseconds
+   * for the transition, or a Map with fields corresponding to those
+   * of the [Timing] object.
+  **/
+  @Experimental()
+  @SupportedBrowser(SupportedBrowser.CHROME, '36')
+  AnimationPlayer animate(Iterable<Map<String, dynamic>> frames, [timing]) {
+    if (frames is! Iterable || !(frames.every((x) => x is Map))) {
+      throw new ArgumentError("The frames parameter should be a List of Maps "
+          "with frame information");
+    }
+    var convertedFrames = frames;
+    if (convertedFrames is Iterable) {
+      convertedFrames = convertDartToNative_List(
+          frames.map(convertDartToNative_Dictionary).toList());
+    }
+    var convertedTiming = timing;
+    if (convertedTiming is Map) {
+      convertedTiming = convertDartToNative_Dictionary(convertedTiming);
+    }
+    return convertedTiming == null
+      ? _animate(convertedFrames)
+      : _animate(convertedFrames, convertedTiming);
+  }
+
+  /**
    * Called by the DOM whenever an attribute on this has been changed.
    */
   void attributeChanged(String name, String oldValue, String newValue) {}
@@ -12345,7 +14346,7 @@
   // members of the component are used. The actual type is a subtype of Element.
   get xtag => _xtag != null ? _xtag : this;
 
-  void set xtag(Element value) {
+  set xtag(Element value) {
     _xtag = value;
   }
 
@@ -12579,8 +14580,9 @@
     // offsetParent, "tops out" at BODY. But people could conceivably pass in
     // the document.documentElement and I want it to return an absolute offset,
     // so we have the special case checking for HTML.
-    bool foundAsParent = identical(current, parent) || parent.tagName == 'HTML';
-    if (current == null || identical(current, parent)) {
+    bool sameAsParent = current == parent;
+    bool foundAsParent = sameAsParent || parent.tagName == 'HTML';
+    if (current == null || sameAsParent) {
       if (foundAsParent) return new Point(0, 0);
       throw new ArgumentError("Specified element is not a transitive offset "
           "parent of this element.");
@@ -12638,11 +14640,11 @@
     if (_parseDocument == null) {
       _parseDocument = document.implementation.createHtmlDocument('');
       _parseRange = _parseDocument.createRange();
-	
+
       // Workaround for Safari bug. Was also previously Chrome bug 229142
-      // - URIs are not resolved in new doc.	
-      var base = _parseDocument.createElement('base');	
-      base.href = document.baseUri;	
+      // - URIs are not resolved in new doc.
+      var base = _parseDocument.createElement('base');
+      base.href = document.baseUri;
       _parseDocument.head.append(base);
     }
     var contextElement;
@@ -12700,7 +14702,7 @@
    * This uses the default sanitization behavior to sanitize the HTML fragment,
    * use [setInnerHtml] to override the default behavior.
    */
-  void set innerHtml(String html) {
+  set innerHtml(String html) {
     this.setInnerHtml(html);
   }
 
@@ -12742,71 +14744,109 @@
    * used when an explicit accessor is not available.
    */
   ElementEvents get on => new ElementEvents(this);
-  
+
   /**
    * Verify if any of the attributes that we use in the sanitizer look unexpected,
    * possibly indicating DOM clobbering attacks.
    *
    * Those attributes are: attributes, lastChild, children, previousNode and tagName.
    */
-  // Dartium isn't affected by these attacks, because it goes directly to the C++ API.
-  static bool _hasCorruptedAttributes(Element element) => false;
+
+  static var _namedNodeMap = js.context["NamedNodeMap"];
+  static var _htmlCollection = js.context["HTMLCollection"];
+  static var _nodeList = js.context["NodeList"];
+
+  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;
+      }
+    }
+    return false;
+  }
+
+  String get _safeTagName {
+    String result = 'element tag unavailable';
+    try {
+      if (tagName is String) {
+        result = tagName;
+      }
+    } catch (e) {}
+    return result;
+  }
+
+  // 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));
 
   @DomName('Element.offsetHeight')
   @DocsEditable()
-  int get offsetHeight => _blink.BlinkElement.offsetHeight_Getter(this).round();
+  int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.offsetLeft')
   @DocsEditable()
-  int get offsetLeft => _blink.BlinkElement.offsetLeft_Getter(this).round();
+  int get offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.offsetTop')
   @DocsEditable()
-  int get offsetTop => _blink.BlinkElement.offsetTop_Getter(this).round();
+  int get offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.offsetWidth')
   @DocsEditable()
-  int get offsetWidth => _blink.BlinkElement.offsetWidth_Getter(this).round();
+  int get offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.clientHeight')
   @DocsEditable()
-  int get clientHeight => _blink.BlinkElement.clientHeight_Getter(this).round();
+  int get clientHeight => _blink.BlinkElement.instance.clientHeight_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.clientLeft')
   @DocsEditable()
-  int get clientLeft => _blink.BlinkElement.clientLeft_Getter(this).round();
+  int get clientLeft => _blink.BlinkElement.instance.clientLeft_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.clientTop')
   @DocsEditable()
-  int get clientTop => _blink.BlinkElement.clientTop_Getter(this).round();
+  int get clientTop => _blink.BlinkElement.instance.clientTop_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.clientWidth')
   @DocsEditable()
-  int get clientWidth => _blink.BlinkElement.clientWidth_Getter(this).round();
+  int get clientWidth => _blink.BlinkElement.instance.clientWidth_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.scrollHeight')
   @DocsEditable()
-  int get scrollHeight => _blink.BlinkElement.scrollHeight_Getter(this).round();
+  int get scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  int get scrollLeft => _blink.BlinkElement.scrollLeft_Getter(this).round();
+  int get scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  void set scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter(this, value.round());
+  set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value.round());
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  int get scrollTop => _blink.BlinkElement.scrollTop_Getter(this).round();
+  int get scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(unwrap_jso(this)).round();
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  void set scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter(this, value.round());
+  set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value.round());
 
   @DomName('Element.scrollWidth')
   @DocsEditable()
-  int get scrollWidth => _blink.BlinkElement.scrollWidth_Getter(this).round();
+  int get scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(unwrap_jso(this)).round();
 
   // To suppress missing implicit constructor warnings.
   factory Element._() { throw new UnsupportedError("Not supported"); }
@@ -13479,6 +15519,18 @@
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
   static const EventStreamProvider<Event> fullscreenErrorEvent = const EventStreamProvider<Event>('webkitfullscreenerror');
 
+
+  static Element internalCreateElement() {
+    return new Element._internalWrap();
+  }
+
+  factory Element._internalWrap() {
+    return new Element.internal_();
+  }
+
+  Element.internal_() : super.internal_();
+
+
   String contentEditable;
 
   MenuElement contextMenu;
@@ -13489,8 +15541,6 @@
 
   bool hidden;
 
-  bool get isContentEditable;
-
   String lang;
 
   bool spellcheck;
@@ -13503,8 +15553,6 @@
 
   String dropzone;
 
-  void click();
-
   @DomName('Element.attributes')
   @DocsEditable()
   _NamedNodeMap get _attributes => wrap_jso(_blink.BlinkElement.instance.attributes_Getter_(unwrap_jso(this)));
@@ -13515,7 +15563,7 @@
   
   @DomName('Element.className')
   @DocsEditable()
-  void set className(String value) => _blink.BlinkElement.instance.className_Setter_(unwrap_jso(this), value);
+  set className(String value) => _blink.BlinkElement.instance.className_Setter_(unwrap_jso(this), value);
   
   @DomName('Element.clientHeight')
   @DocsEditable()
@@ -13539,7 +15587,7 @@
   
   @DomName('Element.id')
   @DocsEditable()
-  void set id(String value) => _blink.BlinkElement.instance.id_Setter_(unwrap_jso(this), value);
+  set id(String value) => _blink.BlinkElement.instance.id_Setter_(unwrap_jso(this), value);
   
   @DomName('Element.innerHTML')
   @DocsEditable()
@@ -13547,7 +15595,7 @@
   
   @DomName('Element.innerHTML')
   @DocsEditable()
-  void set _innerHtml(String value) => _blink.BlinkElement.instance.innerHTML_Setter_(unwrap_jso(this), value);
+  set _innerHtml(String value) => _blink.BlinkElement.instance.innerHTML_Setter_(unwrap_jso(this), value);
   
   @DomName('Element.localName')
   @DocsEditable()
@@ -13593,7 +15641,7 @@
   
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  void set _scrollLeft(num value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value);
+  set _scrollLeft(num value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value);
   
   @DomName('Element.scrollTop')
   @DocsEditable()
@@ -13601,7 +15649,7 @@
   
   @DomName('Element.scrollTop')
   @DocsEditable()
-  void set _scrollTop(num value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value);
+  set _scrollTop(num value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value);
   
   @DomName('Element.scrollWidth')
   @DocsEditable()
@@ -13624,7 +15672,7 @@
   @DomName('Element.animate')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationPlayer animate(Object effect, [Object timing]) => wrap_jso(_blink.BlinkElement.instance.animate_Callback_2_(unwrap_jso(this), effect, timing));
+  AnimationPlayer _animate(Object effect, [Object timing]) => wrap_jso(_blink.BlinkElement.instance.animate_Callback_2_(unwrap_jso(this), effect, timing));
   
   @DomName('Element.blur')
   @DocsEditable()
@@ -13644,7 +15692,7 @@
   @DomName('Element.getAnimationPlayers')
   @DocsEditable()
   @Experimental() // untriaged
-  List<AnimationPlayer> getAnimationPlayers() => _blink.BlinkElement.instance.getAnimationPlayers_Callback_0_(unwrap_jso(this));
+  List<AnimationPlayer> getAnimationPlayers() => wrap_jso(_blink.BlinkElement.instance.getAnimationPlayers_Callback_0_(unwrap_jso(this)));
   
   @DomName('Element.getAttribute')
   @DocsEditable()
@@ -13688,7 +15736,7 @@
    */
   @DomName('Element.getClientRects')
   @DocsEditable()
-  List<Rectangle> getClientRects() => _blink.BlinkElement.instance.getClientRects_Callback_0_(unwrap_jso(this));
+  List<Rectangle> getClientRects() => wrap_jso(_blink.BlinkElement.instance.getClientRects_Callback_0_(unwrap_jso(this)));
   
   /**
    * Returns a list of shadow DOM insertion points to which this element is
@@ -13703,7 +15751,7 @@
   @DomName('Element.getDestinationInsertionPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDestinationInsertionPoints() => wrap_jso_list(_blink.BlinkElement.instance.getDestinationInsertionPoints_Callback_0_(unwrap_jso(this)));
+  List<Node> getDestinationInsertionPoints() => wrap_jso(_blink.BlinkElement.instance.getDestinationInsertionPoints_Callback_0_(unwrap_jso(this)));
   
   /**
    * Returns a list of nodes with the given class name inside this element.
@@ -13718,11 +15766,11 @@
    */
   @DomName('Element.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String classNames) => wrap_jso_list(_blink.BlinkElement.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), classNames));
+  List<Node> getElementsByClassName(String classNames) => wrap_jso(_blink.BlinkElement.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), classNames));
   
   @DomName('Element.getElementsByTagName')
   @DocsEditable()
-  List<Node> _getElementsByTagName(String name) => wrap_jso_list(_blink.BlinkElement.instance.getElementsByTagName_Callback_1_(unwrap_jso(this), name));
+  List<Node> _getElementsByTagName(String name) => wrap_jso(_blink.BlinkElement.instance.getElementsByTagName_Callback_1_(unwrap_jso(this), name));
   
   @DomName('Element.hasAttribute')
   @DocsEditable()
@@ -13814,7 +15862,7 @@
   
   @DomName('Element.children')
   @DocsEditable()
-  List<Node> get _children => wrap_jso_list(_blink.BlinkElement.instance.children_Getter_(unwrap_jso(this)));
+  List<Node> get _children => wrap_jso(_blink.BlinkElement.instance.children_Getter_(unwrap_jso(this)));
   
   @DomName('Element.firstElementChild')
   @DocsEditable()
@@ -13846,7 +15894,7 @@
   
   @DomName('Element.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => wrap_jso_list(_blink.BlinkElement.instance.querySelectorAll_Callback_1_(unwrap_jso(this), selectors));
+  List<Node> _querySelectorAll(String selectors) => wrap_jso(_blink.BlinkElement.instance.querySelectorAll_Callback_1_(unwrap_jso(this), selectors));
   
   /// Stream of `abort` events handled by this [Element].
   @DomName('Element.onabort')
@@ -14360,6 +16408,18 @@
   @DomName('HTMLEmbedElement.HTMLEmbedElement')
   @DocsEditable()
   factory EmbedElement() => document.createElement("embed");
+
+
+  static EmbedElement internalCreateEmbedElement() {
+    return new EmbedElement._internalWrap();
+  }
+
+  factory EmbedElement._internalWrap() {
+    return new EmbedElement.internal_();
+  }
+
+  EmbedElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -14376,7 +16436,7 @@
   
   @DomName('HTMLEmbedElement.height')
   @DocsEditable()
-  void set height(String value) => _blink.BlinkHTMLEmbedElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(String value) => _blink.BlinkHTMLEmbedElement.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLEmbedElement.integrity')
   @DocsEditable()
@@ -14386,7 +16446,7 @@
   @DomName('HTMLEmbedElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLEmbedElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLEmbedElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLEmbedElement.name')
   @DocsEditable()
@@ -14394,7 +16454,7 @@
   
   @DomName('HTMLEmbedElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLEmbedElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLEmbedElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLEmbedElement.src')
   @DocsEditable()
@@ -14402,7 +16462,7 @@
   
   @DomName('HTMLEmbedElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLEmbedElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLEmbedElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLEmbedElement.type')
   @DocsEditable()
@@ -14410,7 +16470,7 @@
   
   @DomName('HTMLEmbedElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLEmbedElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLEmbedElement.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLEmbedElement.width')
   @DocsEditable()
@@ -14418,7 +16478,7 @@
   
   @DomName('HTMLEmbedElement.width')
   @DocsEditable()
-  void set width(String value) => _blink.BlinkHTMLEmbedElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(String value) => _blink.BlinkHTMLEmbedElement.instance.width_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLEmbedElement.__getter__')
   @DocsEditable()
@@ -14455,6 +16515,21 @@
   // To suppress missing implicit constructor warnings.
   factory Entry._() { throw new UnsupportedError("Not supported"); }
 
+  static Entry internalCreateEntry() {
+    return new Entry._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Entry._internalWrap() {
+    return new Entry.internal_();
+  }
+
+  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)));
@@ -14477,11 +16552,11 @@
   
   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(successCallback), unwrap_jso(errorCallback));
+      _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))));
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.instance.copyTo_Callback_3_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso(successCallback));
+      _blink.BlinkEntry.instance.copyTo_Callback_3_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
       return;
     }
     if (name != null) {
@@ -14502,10 +16577,10 @@
 
   void _getMetadata(MetadataCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.instance.getMetadata_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkEntry.instance.getMetadata_Callback_2_(unwrap_jso(this), unwrap_jso((metadata) => successCallback(wrap_jso(metadata))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkEntry.instance.getMetadata_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    _blink.BlinkEntry.instance.getMetadata_Callback_1_(unwrap_jso(this), unwrap_jso((metadata) => successCallback(wrap_jso(metadata))));
     return;
   }
 
@@ -14519,11 +16594,11 @@
 
   void _getParent([_EntryCallback successCallback, _ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.instance.getParent_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkEntry.instance.getParent_Callback_2_(unwrap_jso(this), unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.instance.getParent_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+      _blink.BlinkEntry.instance.getParent_Callback_1_(unwrap_jso(this), unwrap_jso((entry) => successCallback(wrap_jso(entry))));
       return;
     }
     _blink.BlinkEntry.instance.getParent_Callback_0_(unwrap_jso(this));
@@ -14540,11 +16615,11 @@
 
   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(successCallback), unwrap_jso(errorCallback));
+      _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))));
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.instance.moveTo_Callback_3_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso(successCallback));
+      _blink.BlinkEntry.instance.moveTo_Callback_3_(unwrap_jso(this), unwrap_jso(parent), name, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
       return;
     }
     if (name != null) {
@@ -14565,10 +16640,10 @@
 
   void _remove(VoidCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.instance.remove_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkEntry.instance.remove_Callback_2_(unwrap_jso(this), unwrap_jso(() => successCallback()), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkEntry.instance.remove_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    _blink.BlinkEntry.instance.remove_Callback_1_(unwrap_jso(this), unwrap_jso(() => successCallback()));
     return;
   }
 
@@ -14621,6 +16696,18 @@
   // To suppress missing implicit constructor warnings.
   factory ErrorEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ErrorEvent internalCreateErrorEvent() {
+    return new ErrorEvent._internalWrap();
+  }
+
+  factory ErrorEvent._internalWrap() {
+    return new ErrorEvent.internal_();
+  }
+
+  ErrorEvent.internal_() : super.internal_();
+
+
   @DomName('ErrorEvent.colno')
   @DocsEditable()
   @Experimental() // untriaged
@@ -14629,7 +16716,7 @@
   @DomName('ErrorEvent.error')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get error => _blink.BlinkErrorEvent.instance.error_Getter_(unwrap_jso(this));
+  Object get error => wrap_jso(_blink.BlinkErrorEvent.instance.error_Getter_(unwrap_jso(this)));
   
   @DomName('ErrorEvent.filename')
   @DocsEditable()
@@ -14705,6 +16792,21 @@
   // To suppress missing implicit constructor warnings.
   factory Event._() { throw new UnsupportedError("Not supported"); }
 
+  static Event internalCreateEvent() {
+    return new Event._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Event._internalWrap() {
+    return new Event.internal_();
+  }
+
+  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.
    *
@@ -14793,7 +16895,7 @@
   @DocsEditable()
   // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event
   @Experimental()
-  List<Node> get path => wrap_jso_list(_blink.BlinkEvent.instance.path_Getter_(unwrap_jso(this)));
+  List<Node> get path => wrap_jso(_blink.BlinkEvent.instance.path_Getter_(unwrap_jso(this)));
   
   @DomName('Event.target')
   @DocsEditable()
@@ -14876,11 +16978,24 @@
   @DocsEditable()
   static EventSource _factoryEventSource(String url, [Map eventSourceInit]) {
     if (eventSourceInit != null) {
-      return _blink.BlinkEventSource.instance.constructorCallback_2_(url, eventSourceInit);
+      var eventSourceInit_1 = convertDartToNative_Dictionary(eventSourceInit);
+      return wrap_jso(_blink.BlinkEventSource.instance.constructorCallback_2_(url, eventSourceInit_1));
     }
-    return _blink.BlinkEventSource.instance.constructorCallback_1_(url);
+    return wrap_jso(_blink.BlinkEventSource.instance.constructorCallback_1_(url));
   }
 
+
+  static EventSource internalCreateEventSource() {
+    return new EventSource._internalWrap();
+  }
+
+  factory EventSource._internalWrap() {
+    return new EventSource.internal_();
+  }
+
+  EventSource.internal_() : super.internal_();
+
+
   @DomName('EventSource.CLOSED')
   @DocsEditable()
   static const int CLOSED = 2;
@@ -15019,6 +17134,10 @@
 @DomName('EventTarget')
 class EventTarget extends NativeFieldWrapperClass2 {
 
+  // Default constructor to allow other classes e.g. GlobalEventHandlers to be
+  // constructed using _internalWrap when mapping Blink object to Dart class.
+  EventTarget();
+
   // Custom element created callback.
   EventTarget._created();
 
@@ -15049,13 +17168,28 @@
   // To suppress missing implicit constructor warnings.
   factory EventTarget._() { throw new UnsupportedError("Not supported"); }
 
+  static EventTarget internalCreateEventTarget() {
+    return new EventTarget._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory EventTarget._internalWrap() {
+    return new EventTarget.internal_();
+  }
+
+  EventTarget.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   void _addEventListener([String type, EventListener listener, bool useCapture]) {
     if (useCapture != null) {
-      _blink.BlinkEventTarget.instance.addEventListener_Callback_3_(unwrap_jso(this), type, unwrap_jso(listener), useCapture);
+      _blink.BlinkEventTarget.instance.addEventListener_Callback_3_(unwrap_jso(this), type, wrap_event_listener(this, listener), useCapture);
       return;
     }
     if (listener != null) {
-      _blink.BlinkEventTarget.instance.addEventListener_Callback_2_(unwrap_jso(this), type, unwrap_jso(listener));
+      _blink.BlinkEventTarget.instance.addEventListener_Callback_2_(unwrap_jso(this), type, wrap_event_listener(this, listener));
       return;
     }
     if (type != null) {
@@ -15072,11 +17206,11 @@
   
   void _removeEventListener([String type, EventListener listener, bool useCapture]) {
     if (useCapture != null) {
-      _blink.BlinkEventTarget.instance.removeEventListener_Callback_3_(unwrap_jso(this), type, unwrap_jso(listener), useCapture);
+      _blink.BlinkEventTarget.instance.removeEventListener_Callback_3_(unwrap_jso(this), type, _knownListeners[this.hashCode][identityHashCode(listener)], useCapture);
       return;
     }
     if (listener != null) {
-      _blink.BlinkEventTarget.instance.removeEventListener_Callback_2_(unwrap_jso(this), type, unwrap_jso(listener));
+      _blink.BlinkEventTarget.instance.removeEventListener_Callback_2_(unwrap_jso(this), type, _knownListeners[this.hashCode][identityHashCode(listener)]);
       return;
     }
     if (type != null) {
@@ -15102,6 +17236,18 @@
   // To suppress missing implicit constructor warnings.
   factory ExtendableEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ExtendableEvent internalCreateExtendableEvent() {
+    return new ExtendableEvent._internalWrap();
+  }
+
+  factory ExtendableEvent._internalWrap() {
+    return new ExtendableEvent.internal_();
+  }
+
+  ExtendableEvent.internal_() : super.internal_();
+
+
   @DomName('ExtendableEvent.waitUntil')
   @DocsEditable()
   @Experimental() // untriaged
@@ -15125,9 +17271,21 @@
   @DomName('FederatedCredential.FederatedCredential')
   @DocsEditable()
   factory FederatedCredential(String id, String name, String avatarURL, String federation) {
-    return _blink.BlinkFederatedCredential.instance.constructorCallback_4_(id, name, avatarURL, federation);
+    return wrap_jso(_blink.BlinkFederatedCredential.instance.constructorCallback_4_(id, name, avatarURL, federation));
   }
 
+
+  static FederatedCredential internalCreateFederatedCredential() {
+    return new FederatedCredential._internalWrap();
+  }
+
+  factory FederatedCredential._internalWrap() {
+    return new FederatedCredential.internal_();
+  }
+
+  FederatedCredential.internal_() : super.internal_();
+
+
   @DomName('FederatedCredential.federation')
   @DocsEditable()
   @Experimental() // untriaged
@@ -15148,6 +17306,18 @@
   // To suppress missing implicit constructor warnings.
   factory FetchEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static FetchEvent internalCreateFetchEvent() {
+    return new FetchEvent._internalWrap();
+  }
+
+  factory FetchEvent._internalWrap() {
+    return new FetchEvent.internal_();
+  }
+
+  FetchEvent.internal_() : super.internal_();
+
+
   @DomName('FetchEvent.isReload')
   @DocsEditable()
   @Experimental() // untriaged
@@ -15181,6 +17351,18 @@
   @DomName('HTMLFieldSetElement.HTMLFieldSetElement')
   @DocsEditable()
   factory FieldSetElement() => document.createElement("fieldset");
+
+
+  static FieldSetElement internalCreateFieldSetElement() {
+    return new FieldSetElement._internalWrap();
+  }
+
+  factory FieldSetElement._internalWrap() {
+    return new FieldSetElement.internal_();
+  }
+
+  FieldSetElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -15194,11 +17376,11 @@
   
   @DomName('HTMLFieldSetElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFieldSetElement.elements')
   @DocsEditable()
-  List<Node> get elements => wrap_jso_list(_blink.BlinkHTMLFieldSetElement.instance.elements_Getter_(unwrap_jso(this)));
+  List<Node> get elements => wrap_jso(_blink.BlinkHTMLFieldSetElement.instance.elements_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLFieldSetElement.form')
   @DocsEditable()
@@ -15210,7 +17392,7 @@
   
   @DomName('HTMLFieldSetElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLFieldSetElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLFieldSetElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFieldSetElement.type')
   @DocsEditable()
@@ -15250,6 +17432,18 @@
   // To suppress missing implicit constructor warnings.
   factory File._() { throw new UnsupportedError("Not supported"); }
 
+
+  static File internalCreateFile() {
+    return new File._internalWrap();
+  }
+
+  factory File._internalWrap() {
+    return new File.internal_();
+  }
+
+  File.internal_() : super.internal_();
+
+
   @DomName('File.lastModified')
   @DocsEditable()
   @Experimental() // untriaged
@@ -15298,12 +17492,24 @@
   // To suppress missing implicit constructor warnings.
   factory FileEntry._() { throw new UnsupportedError("Not supported"); }
 
+
+  static FileEntry internalCreateFileEntry() {
+    return new FileEntry._internalWrap();
+  }
+
+  factory FileEntry._internalWrap() {
+    return new FileEntry.internal_();
+  }
+
+  FileEntry.internal_() : super.internal_();
+
+
   void _createWriter(_FileWriterCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkFileEntry.instance.createWriter_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkFileEntry.instance.createWriter_Callback_2_(unwrap_jso(this), unwrap_jso((fileWriter) => successCallback(wrap_jso(fileWriter))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkFileEntry.instance.createWriter_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    _blink.BlinkFileEntry.instance.createWriter_Callback_1_(unwrap_jso(this), unwrap_jso((fileWriter) => successCallback(wrap_jso(fileWriter))));
     return;
   }
 
@@ -15317,10 +17523,10 @@
 
   void _file(_FileCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkFileEntry.instance.file_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkFileEntry.instance.file_Callback_2_(unwrap_jso(this), unwrap_jso((file) => successCallback(wrap_jso(file))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkFileEntry.instance.file_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    _blink.BlinkFileEntry.instance.file_Callback_1_(unwrap_jso(this), unwrap_jso((file) => successCallback(wrap_jso(file))));
     return;
   }
 
@@ -15348,6 +17554,18 @@
   // To suppress missing implicit constructor warnings.
   factory FileError._() { throw new UnsupportedError("Not supported"); }
 
+
+  static FileError internalCreateFileError() {
+    return new FileError._internalWrap();
+  }
+
+  factory FileError._internalWrap() {
+    return new FileError.internal_();
+  }
+
+  FileError.internal_() : super.internal_();
+
+
   @DomName('FileError.ABORT_ERR')
   @DocsEditable()
   static const int ABORT_ERR = 3;
@@ -15410,10 +17628,25 @@
 
 @DocsEditable()
 @DomName('FileList')
-class FileList extends NativeFieldWrapperClass2 with ListMixin<File>, ImmutableListMixin<File> implements List<File> {
+class FileList extends JsoNativeFieldWrapper with ListMixin<File>, ImmutableListMixin<File> implements List<File> {
   // To suppress missing implicit constructor warnings.
   factory FileList._() { throw new UnsupportedError("Not supported"); }
 
+  static FileList internalCreateFileList() {
+    return new FileList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory FileList._internalWrap() {
+    return new FileList.internal_();
+  }
+
+  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));
@@ -15425,7 +17658,7 @@
   }
 
   File _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkFileList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, File value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -15433,7 +17666,7 @@
   // File is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -15481,7 +17714,7 @@
   @DomName('FileReader.result')
   @DocsEditable()
   Object get result {
-    var res = _blink.BlinkFileReader.result_Getter(unwrap_jso(this));
+    var res = _blink.BlinkFileReader.instance.result_Getter_(unwrap_jso(this));
     if (res is ByteBuffer) {
       return new Uint8List.view(res);
     }
@@ -15554,9 +17787,21 @@
   @DomName('FileReader.FileReader')
   @DocsEditable()
   factory FileReader() {
-    return _blink.BlinkFileReader.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkFileReader.instance.constructorCallback_0_());
   }
 
+
+  static FileReader internalCreateFileReader() {
+    return new FileReader._internalWrap();
+  }
+
+  factory FileReader._internalWrap() {
+    return new FileReader.internal_();
+  }
+
+  FileReader.internal_() : super.internal_();
+
+
   @DomName('FileReader.DONE')
   @DocsEditable()
   static const int DONE = 2;
@@ -15579,7 +17824,7 @@
   
   @DomName('FileReader.result')
   @DocsEditable()
-  Object get _result => _blink.BlinkFileReader.instance.result_Getter_(unwrap_jso(this));
+  Object get _result => wrap_jso(_blink.BlinkFileReader.instance.result_Getter_(unwrap_jso(this)));
   
   @DomName('FileReader.abort')
   @DocsEditable()
@@ -15647,6 +17892,21 @@
   // To suppress missing implicit constructor warnings.
   factory FileStream._() { throw new UnsupportedError("Not supported"); }
 
+  static FileStream internalCreateFileStream() {
+    return new FileStream._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory FileStream._internalWrap() {
+    return new FileStream.internal_();
+  }
+
+  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
@@ -15669,6 +17929,21 @@
   // To suppress missing implicit constructor warnings.
   factory FileSystem._() { throw new UnsupportedError("Not supported"); }
 
+  static FileSystem internalCreateFileSystem() {
+    return new FileSystem._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory FileSystem._internalWrap() {
+    return new FileSystem.internal_();
+  }
+
+  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;
 
@@ -15767,6 +18042,18 @@
   @DocsEditable()
   static const EventStreamProvider<ProgressEvent> writeStartEvent = const EventStreamProvider<ProgressEvent>('writestart');
 
+
+  static FileWriter internalCreateFileWriter() {
+    return new FileWriter._internalWrap();
+  }
+
+  factory FileWriter._internalWrap() {
+    return new FileWriter.internal_();
+  }
+
+  FileWriter.internal_() : super.internal_();
+
+
   @DomName('FileWriter.DONE')
   @DocsEditable()
   static const int DONE = 2;
@@ -15866,6 +18153,18 @@
   // To suppress missing implicit constructor warnings.
   factory FocusEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static FocusEvent internalCreateFocusEvent() {
+    return new FocusEvent._internalWrap();
+  }
+
+  factory FocusEvent._internalWrap() {
+    return new FocusEvent.internal_();
+  }
+
+  FocusEvent.internal_() : super.internal_();
+
+
   @DomName('FocusEvent.relatedTarget')
   @DocsEditable()
   EventTarget get relatedTarget => wrap_jso(_blink.BlinkFocusEvent.instance.relatedTarget_Getter_(unwrap_jso(this)));
@@ -15889,26 +18188,44 @@
   @DocsEditable()
   factory FontFace(String family, source, [Map descriptors]) {
     if ((source is String || source == null) && (family is String || family == null) && descriptors == null) {
-      return _blink.BlinkFontFace.instance.constructorCallback_2_(family, source);
+      return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_2_(family, source));
     }
     if ((descriptors is Map || descriptors == null) && (source is String || source == null) && (family is String || family == null)) {
-      return _blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors);
+      var descriptors_1 = convertDartToNative_Dictionary(descriptors);
+      return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors_1));
     }
     if ((source is TypedData || source == null) && (family is String || family == null) && descriptors == null) {
-      return _blink.BlinkFontFace.instance.constructorCallback_2_(family, source);
+      return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_2_(family, source));
     }
     if ((descriptors is Map || descriptors == null) && (source is TypedData || source == null) && (family is String || family == null)) {
-      return _blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors);
+      var descriptors_1 = convertDartToNative_Dictionary(descriptors);
+      return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors_1));
     }
     if ((source is ByteBuffer || source == null) && (family is String || family == null) && descriptors == null) {
-      return _blink.BlinkFontFace.instance.constructorCallback_2_(family, source);
+      return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_2_(family, source));
     }
     if ((descriptors is Map || descriptors == null) && (source is ByteBuffer || source == null) && (family is String || family == null)) {
-      return _blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors);
+      var descriptors_1 = convertDartToNative_Dictionary(descriptors);
+      return wrap_jso(_blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors_1));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+  static FontFace internalCreateFontFace() {
+    return new FontFace._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory FontFace._internalWrap() {
+    return new FontFace.internal_();
+  }
+
+  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
@@ -15917,7 +18234,7 @@
   @DomName('FontFace.family')
   @DocsEditable()
   @Experimental() // untriaged
-  void set family(String value) => _blink.BlinkFontFace.instance.family_Setter_(unwrap_jso(this), value);
+  set family(String value) => _blink.BlinkFontFace.instance.family_Setter_(unwrap_jso(this), value);
   
   @DomName('FontFace.featureSettings')
   @DocsEditable()
@@ -15927,12 +18244,12 @@
   @DomName('FontFace.featureSettings')
   @DocsEditable()
   @Experimental() // untriaged
-  void set featureSettings(String value) => _blink.BlinkFontFace.instance.featureSettings_Setter_(unwrap_jso(this), value);
+  set featureSettings(String value) => _blink.BlinkFontFace.instance.featureSettings_Setter_(unwrap_jso(this), value);
   
   @DomName('FontFace.loaded')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get loaded => _blink.BlinkFontFace.instance.loaded_Getter_(unwrap_jso(this));
+  Future get loaded => wrap_jso(_blink.BlinkFontFace.instance.loaded_Getter_(unwrap_jso(this)));
   
   @DomName('FontFace.status')
   @DocsEditable()
@@ -15947,7 +18264,7 @@
   @DomName('FontFace.stretch')
   @DocsEditable()
   @Experimental() // untriaged
-  void set stretch(String value) => _blink.BlinkFontFace.instance.stretch_Setter_(unwrap_jso(this), value);
+  set stretch(String value) => _blink.BlinkFontFace.instance.stretch_Setter_(unwrap_jso(this), value);
   
   @DomName('FontFace.style')
   @DocsEditable()
@@ -15957,7 +18274,7 @@
   @DomName('FontFace.style')
   @DocsEditable()
   @Experimental() // untriaged
-  void set style(String value) => _blink.BlinkFontFace.instance.style_Setter_(unwrap_jso(this), value);
+  set style(String value) => _blink.BlinkFontFace.instance.style_Setter_(unwrap_jso(this), value);
   
   @DomName('FontFace.unicodeRange')
   @DocsEditable()
@@ -15967,7 +18284,7 @@
   @DomName('FontFace.unicodeRange')
   @DocsEditable()
   @Experimental() // untriaged
-  void set unicodeRange(String value) => _blink.BlinkFontFace.instance.unicodeRange_Setter_(unwrap_jso(this), value);
+  set unicodeRange(String value) => _blink.BlinkFontFace.instance.unicodeRange_Setter_(unwrap_jso(this), value);
   
   @DomName('FontFace.variant')
   @DocsEditable()
@@ -15977,7 +18294,7 @@
   @DomName('FontFace.variant')
   @DocsEditable()
   @Experimental() // untriaged
-  void set variant(String value) => _blink.BlinkFontFace.instance.variant_Setter_(unwrap_jso(this), value);
+  set variant(String value) => _blink.BlinkFontFace.instance.variant_Setter_(unwrap_jso(this), value);
   
   @DomName('FontFace.weight')
   @DocsEditable()
@@ -15987,12 +18304,12 @@
   @DomName('FontFace.weight')
   @DocsEditable()
   @Experimental() // untriaged
-  void set weight(String value) => _blink.BlinkFontFace.instance.weight_Setter_(unwrap_jso(this), value);
+  set weight(String value) => _blink.BlinkFontFace.instance.weight_Setter_(unwrap_jso(this), value);
   
   @DomName('FontFace.load')
   @DocsEditable()
   @Experimental() // untriaged
-  Future load() => _blink.BlinkFontFace.instance.load_Callback_0_(unwrap_jso(this));
+  Future load() => wrap_jso(_blink.BlinkFontFace.instance.load_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16009,6 +18326,18 @@
   // To suppress missing implicit constructor warnings.
   factory FontFaceSet._() { throw new UnsupportedError("Not supported"); }
 
+
+  static FontFaceSet internalCreateFontFaceSet() {
+    return new FontFaceSet._internalWrap();
+  }
+
+  factory FontFaceSet._internalWrap() {
+    return new FontFaceSet.internal_();
+  }
+
+  FontFaceSet.internal_() : super.internal_();
+
+
   @DomName('FontFaceSet.size')
   @DocsEditable()
   @Experimental() // untriaged
@@ -16043,10 +18372,10 @@
   
   void forEach(FontFaceSetForEachCallback callback, [Object thisArg]) {
     if (thisArg != null) {
-      _blink.BlinkFontFaceSet.instance.forEach_Callback_2_(unwrap_jso(this), unwrap_jso(callback), thisArg);
+      _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);
       return;
     }
-    _blink.BlinkFontFaceSet.instance.forEach_Callback_1_(unwrap_jso(this), unwrap_jso(callback));
+    _blink.BlinkFontFaceSet.instance.forEach_Callback_1_(unwrap_jso(this), unwrap_jso((fontFace, fontFaceAgain, set) => callback(wrap_jso(fontFace), wrap_jso(fontFaceAgain), wrap_jso(set))));
     return;
   }
 
@@ -16080,6 +18409,18 @@
   // To suppress missing implicit constructor warnings.
   factory FontFaceSetLoadEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static FontFaceSetLoadEvent internalCreateFontFaceSetLoadEvent() {
+    return new FontFaceSetLoadEvent._internalWrap();
+  }
+
+  factory FontFaceSetLoadEvent._internalWrap() {
+    return new FontFaceSetLoadEvent.internal_();
+  }
+
+  FontFaceSetLoadEvent.internal_() : super.internal_();
+
+
   @DomName('FontFaceSetLoadEvent.fontfaces')
   @DocsEditable()
   @Experimental() // untriaged
@@ -16108,7 +18449,22 @@
   factory FormData([FormElement form]) => wrap_jso(_create(form));
 
   @DocsEditable()
-  static FormData _create(form) => _blink.BlinkFormData.instance.constructorCallback_1_(form);
+  static FormData _create(form) => wrap_jso(_blink.BlinkFormData.instance.constructorCallback_1_(form));
+
+  static FormData internalCreateFormData() {
+    return new FormData._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory FormData._internalWrap() {
+    return new FormData.internal_();
+  }
+
+  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;
@@ -16138,6 +18494,18 @@
   @DomName('HTMLFormElement.HTMLFormElement')
   @DocsEditable()
   factory FormElement() => document.createElement("form");
+
+
+  static FormElement internalCreateFormElement() {
+    return new FormElement._internalWrap();
+  }
+
+  factory FormElement._internalWrap() {
+    return new FormElement.internal_();
+  }
+
+  FormElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -16151,7 +18519,7 @@
   
   @DomName('HTMLFormElement.acceptCharset')
   @DocsEditable()
-  void set acceptCharset(String value) => _blink.BlinkHTMLFormElement.instance.acceptCharset_Setter_(unwrap_jso(this), value);
+  set acceptCharset(String value) => _blink.BlinkHTMLFormElement.instance.acceptCharset_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.action')
   @DocsEditable()
@@ -16159,7 +18527,7 @@
   
   @DomName('HTMLFormElement.action')
   @DocsEditable()
-  void set action(String value) => _blink.BlinkHTMLFormElement.instance.action_Setter_(unwrap_jso(this), value);
+  set action(String value) => _blink.BlinkHTMLFormElement.instance.action_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.autocomplete')
   @DocsEditable()
@@ -16171,7 +18539,7 @@
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute
   @Experimental()
-  void set autocomplete(String value) => _blink.BlinkHTMLFormElement.instance.autocomplete_Setter_(unwrap_jso(this), value);
+  set autocomplete(String value) => _blink.BlinkHTMLFormElement.instance.autocomplete_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.encoding')
   @DocsEditable()
@@ -16179,7 +18547,7 @@
   
   @DomName('HTMLFormElement.encoding')
   @DocsEditable()
-  void set encoding(String value) => _blink.BlinkHTMLFormElement.instance.encoding_Setter_(unwrap_jso(this), value);
+  set encoding(String value) => _blink.BlinkHTMLFormElement.instance.encoding_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.enctype')
   @DocsEditable()
@@ -16187,7 +18555,7 @@
   
   @DomName('HTMLFormElement.enctype')
   @DocsEditable()
-  void set enctype(String value) => _blink.BlinkHTMLFormElement.instance.enctype_Setter_(unwrap_jso(this), value);
+  set enctype(String value) => _blink.BlinkHTMLFormElement.instance.enctype_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.length')
   @DocsEditable()
@@ -16199,7 +18567,7 @@
   
   @DomName('HTMLFormElement.method')
   @DocsEditable()
-  void set method(String value) => _blink.BlinkHTMLFormElement.instance.method_Setter_(unwrap_jso(this), value);
+  set method(String value) => _blink.BlinkHTMLFormElement.instance.method_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.name')
   @DocsEditable()
@@ -16207,7 +18575,7 @@
   
   @DomName('HTMLFormElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLFormElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLFormElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.noValidate')
   @DocsEditable()
@@ -16215,7 +18583,7 @@
   
   @DomName('HTMLFormElement.noValidate')
   @DocsEditable()
-  void set noValidate(bool value) => _blink.BlinkHTMLFormElement.instance.noValidate_Setter_(unwrap_jso(this), value);
+  set noValidate(bool value) => _blink.BlinkHTMLFormElement.instance.noValidate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLFormElement.target')
   @DocsEditable()
@@ -16223,14 +18591,14 @@
   
   @DomName('HTMLFormElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLFormElement.instance.target_Setter_(unwrap_jso(this), value);
+  set target(String value) => _blink.BlinkHTMLFormElement.instance.target_Setter_(unwrap_jso(this), value);
   
   Element __getter__(index_OR_name) {
     if ((index_OR_name is int || index_OR_name == null)) {
       return wrap_jso(_blink.BlinkHTMLFormElement.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name)));
     }
     if ((index_OR_name is String || index_OR_name == null)) {
-      return _blink.BlinkHTMLFormElement.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name));
+      return wrap_jso(_blink.BlinkHTMLFormElement.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name)));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -16243,7 +18611,7 @@
   @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), details);
+  void requestAutocomplete(Map details) => _blink.BlinkHTMLFormElement.instance.requestAutocomplete_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(details));
   
   @DomName('HTMLFormElement.reset')
   @DocsEditable()
@@ -16269,6 +18637,21 @@
   // To suppress missing implicit constructor warnings.
   factory Gamepad._() { throw new UnsupportedError("Not supported"); }
 
+  static Gamepad internalCreateGamepad() {
+    return new Gamepad._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Gamepad._internalWrap() {
+    return new Gamepad.internal_();
+  }
+
+  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 => _blink.BlinkGamepad.instance.axes_Getter_(unwrap_jso(this));
@@ -16310,6 +18693,21 @@
   // To suppress missing implicit constructor warnings.
   factory GamepadButton._() { throw new UnsupportedError("Not supported"); }
 
+  static GamepadButton internalCreateGamepadButton() {
+    return new GamepadButton._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory GamepadButton._internalWrap() {
+    return new GamepadButton.internal_();
+  }
+
+  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
@@ -16318,7 +18716,7 @@
   @DomName('GamepadButton.value')
   @DocsEditable()
   @Experimental() // untriaged
-  double get value => _blink.BlinkGamepadButton.instance.value_Getter_(unwrap_jso(this));
+  num get value => _blink.BlinkGamepadButton.instance.value_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16335,6 +18733,18 @@
   // To suppress missing implicit constructor warnings.
   factory GamepadEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static GamepadEvent internalCreateGamepadEvent() {
+    return new GamepadEvent._internalWrap();
+  }
+
+  factory GamepadEvent._internalWrap() {
+    return new GamepadEvent.internal_();
+  }
+
+  GamepadEvent.internal_() : super.internal_();
+
+
   @DomName('GamepadEvent.gamepad')
   @DocsEditable()
   @Experimental() // untriaged
@@ -16355,20 +18765,35 @@
   // To suppress missing implicit constructor warnings.
   factory Geofencing._() { throw new UnsupportedError("Not supported"); }
 
+  static Geofencing internalCreateGeofencing() {
+    return new Geofencing._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Geofencing._internalWrap() {
+    return new Geofencing.internal_();
+  }
+
+  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() => _blink.BlinkGeofencing.instance.getRegisteredRegions_Callback_0_(unwrap_jso(this));
+  Future getRegisteredRegions() => wrap_jso(_blink.BlinkGeofencing.instance.getRegisteredRegions_Callback_0_(unwrap_jso(this)));
   
   @DomName('Geofencing.registerRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  Future registerRegion(GeofencingRegion region) => _blink.BlinkGeofencing.instance.registerRegion_Callback_1_(unwrap_jso(this), unwrap_jso(region));
+  Future registerRegion(GeofencingRegion region) => wrap_jso(_blink.BlinkGeofencing.instance.registerRegion_Callback_1_(unwrap_jso(this), unwrap_jso(region)));
   
   @DomName('Geofencing.unregisterRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregisterRegion(String regionId) => _blink.BlinkGeofencing.instance.unregisterRegion_Callback_1_(unwrap_jso(this), regionId);
+  Future unregisterRegion(String regionId) => wrap_jso(_blink.BlinkGeofencing.instance.unregisterRegion_Callback_1_(unwrap_jso(this), regionId));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16385,6 +18810,21 @@
   // To suppress missing implicit constructor warnings.
   factory GeofencingRegion._() { throw new UnsupportedError("Not supported"); }
 
+  static GeofencingRegion internalCreateGeofencingRegion() {
+    return new GeofencingRegion._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory GeofencingRegion._internalWrap() {
+    return new GeofencingRegion.internal_();
+  }
+
+  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
@@ -16474,31 +18914,46 @@
   // To suppress missing implicit constructor warnings.
   factory Geolocation._() { throw new UnsupportedError("Not supported"); }
 
+  static Geolocation internalCreateGeolocation() {
+    return new Geolocation._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Geolocation._internalWrap() {
+    return new Geolocation.internal_();
+  }
+
+  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 _getCurrentPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) {
     if (options != null) {
-      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_3_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback), options);
+      _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));
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_2_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_1_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))));
     return;
   }
 
   int _watchPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) {
     if (options != null) {
-      return _blink.BlinkGeolocation.instance.watchPosition_Callback_3_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback), options);
+      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));
     }
     if (errorCallback != null) {
-      return _blink.BlinkGeolocation.instance.watchPosition_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      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_1_(unwrap_jso(this), unwrap_jso(successCallback));
+    return _blink.BlinkGeolocation.instance.watchPosition_Callback_1_(unwrap_jso(this), unwrap_jso((position) => successCallback(wrap_jso(position))));
   }
 }
 
@@ -16516,6 +18971,21 @@
   // To suppress missing implicit constructor warnings.
   factory Geoposition._() { throw new UnsupportedError("Not supported"); }
 
+  static Geoposition internalCreateGeoposition() {
+    return new Geoposition._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Geoposition._internalWrap() {
+    return new Geoposition.internal_();
+  }
+
+  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)));
@@ -17076,6 +19546,18 @@
   @DomName('HTMLHRElement.HTMLHRElement')
   @DocsEditable()
   factory HRElement() => document.createElement("hr");
+
+
+  static HRElement internalCreateHRElement() {
+    return new HRElement._internalWrap();
+  }
+
+  factory HRElement._internalWrap() {
+    return new HRElement.internal_();
+  }
+
+  HRElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -17091,7 +19573,7 @@
   @DomName('HTMLHRElement.color')
   @DocsEditable()
   @Experimental() // untriaged
-  void set color(String value) => _blink.BlinkHTMLHRElement.instance.color_Setter_(unwrap_jso(this), value);
+  set color(String value) => _blink.BlinkHTMLHRElement.instance.color_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -17116,6 +19598,18 @@
   // To suppress missing implicit constructor warnings.
   factory HashChangeEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static HashChangeEvent internalCreateHashChangeEvent() {
+    return new HashChangeEvent._internalWrap();
+  }
+
+  factory HashChangeEvent._internalWrap() {
+    return new HashChangeEvent.internal_();
+  }
+
+  HashChangeEvent.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -17148,6 +19642,18 @@
   @DomName('HTMLHeadElement.HTMLHeadElement')
   @DocsEditable()
   factory HeadElement() => document.createElement("head");
+
+
+  static HeadElement internalCreateHeadElement() {
+    return new HeadElement._internalWrap();
+  }
+
+  factory HeadElement._internalWrap() {
+    return new HeadElement.internal_();
+  }
+
+  HeadElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -17174,17 +19680,33 @@
   @DocsEditable()
   factory Headers([input]) {
     if (input == null) {
-      return _blink.BlinkHeaders.instance.constructorCallback_0_();
+      return wrap_jso(_blink.BlinkHeaders.instance.constructorCallback_0_());
     }
     if ((input is Headers || input == null)) {
-      return _blink.BlinkHeaders.instance.constructorCallback_1_(input);
+      return wrap_jso(_blink.BlinkHeaders.instance.constructorCallback_1_(input));
     }
     if ((input is Map || input == null)) {
-      return _blink.BlinkHeaders.instance.constructorCallback_1_(input);
+      var input_1 = convertDartToNative_Dictionary(input);
+      return wrap_jso(_blink.BlinkHeaders.instance.constructorCallback_1_(input_1));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+  static Headers internalCreateHeaders() {
+    return new Headers._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Headers._internalWrap() {
+    return new Headers.internal_();
+  }
+
+  Headers.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('Headers.size')
   @DocsEditable()
   @Experimental() // untriaged
@@ -17192,10 +19714,10 @@
   
   void forEach(HeadersForEachCallback callback, [Object thisArg]) {
     if (thisArg != null) {
-      _blink.BlinkHeaders.instance.forEach_Callback_2_(unwrap_jso(this), unwrap_jso(callback), thisArg);
+      _blink.BlinkHeaders.instance.forEach_Callback_2_(unwrap_jso(this), unwrap_jso((String value, String key, map) => callback(value, key, wrap_jso(map))), thisArg);
       return;
     }
-    _blink.BlinkHeaders.instance.forEach_Callback_1_(unwrap_jso(this), unwrap_jso(callback));
+    _blink.BlinkHeaders.instance.forEach_Callback_1_(unwrap_jso(this), unwrap_jso((String value, String key, map) => callback(value, key, wrap_jso(map))));
     return;
   }
 
@@ -17246,6 +19768,18 @@
   @DomName('HTMLHeadingElement.HTMLHeadingElement')
   @DocsEditable()
   factory HeadingElement.h6() => document.createElement("h6");
+
+
+  static HeadingElement internalCreateHeadingElement() {
+    return new HeadingElement._internalWrap();
+  }
+
+  factory HeadingElement._internalWrap() {
+    return new HeadingElement.internal_();
+  }
+
+  HeadingElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -17275,6 +19809,21 @@
   // To suppress missing implicit constructor warnings.
   factory History._() { throw new UnsupportedError("Not supported"); }
 
+  static History internalCreateHistory() {
+    return new History._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory History._internalWrap() {
+    return new History.internal_();
+  }
+
+  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));
@@ -17320,10 +19869,25 @@
 
 @DocsEditable()
 @DomName('HTMLCollection')
-class HtmlCollection extends NativeFieldWrapperClass2 with ListMixin<Node>, ImmutableListMixin<Node> implements List<Node> {
+class HtmlCollection extends JsoNativeFieldWrapper with ListMixin<Node>, ImmutableListMixin<Node> implements List<Node> {
   // To suppress missing implicit constructor warnings.
   factory HtmlCollection._() { throw new UnsupportedError("Not supported"); }
 
+  static HtmlCollection internalCreateHtmlCollection() {
+    return new HtmlCollection._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory HtmlCollection._internalWrap() {
+    return new HtmlCollection.internal_();
+  }
+
+  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));
@@ -17335,7 +19899,7 @@
   }
 
   Node _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkHTMLCollection.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, Node value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -17343,7 +19907,7 @@
   // Node is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -17396,11 +19960,23 @@
   factory HtmlDocument._() { throw new UnsupportedError("Not supported"); }
 
 
+  static HtmlDocument internalCreateHtmlDocument() {
+    return new HtmlDocument._internalWrap();
+  }
+
+  factory HtmlDocument._internalWrap() {
+    return new HtmlDocument.internal_();
+  }
+
+  HtmlDocument.internal_() : super.internal_();
+
+
+
   @DomName('Document.body')
   BodyElement get body => _body;
 
   @DomName('Document.body')
-  void set body(BodyElement value) {
+  set body(BodyElement value) {
     _body = value;
   }
 
@@ -17467,7 +20043,7 @@
 
   @DomName('Document.selectedStylesheetSet')
   String get selectedStylesheetSet => _selectedStylesheetSet;
-  void set selectedStylesheetSet(String value) {
+  set selectedStylesheetSet(String value) {
     _selectedStylesheetSet = value;
   }
 
@@ -17478,7 +20054,7 @@
   String get title => _title;
 
   @DomName('Document.title')
-  void set title(String value) {
+  set title(String value) {
     _title = value;
   }
 
@@ -17559,6 +20135,39 @@
   @Experimental()
   String get visibilityState => _webkitVisibilityState;
 
+  /**
+   * Internal routine to find the DOM JS class name being extended for custom
+   * elements.
+   */
+  String _getJSClassName(ClassMirror classMirror) {
+    var jsClassName = null;
+    var isElement = false;
+
+    while (classMirror.superclass != null) {
+      var fullName = classMirror.superclass.qualifiedName;
+      isElement = isElement || (fullName == #dart.dom.html.Element);
+
+      var domLibrary = MirrorSystem.getName(fullName).startsWith('dart.dom.');
+      if (jsClassName == null && domLibrary) {
+        // Lookup JS class name (if not found).
+        var metadatas = classMirror.metadata;
+        for (var metadata in metadatas) {
+          var metaDataMirror = metadata.reflectee;
+          var metaType = reflectClass(metaDataMirror.runtimeType);
+          if (MirrorSystem.getName(metaType.simpleName) == 'DomName' &&
+              metaDataMirror.name.startsWith('HTML')) {
+            jsClassName = metadata.reflectee.name;
+          }
+        }
+      }
+
+      classMirror = classMirror.superclass;
+    }
+
+    // If we're an element then everything is okay.
+    return isElement ? jsClassName : null;
+  }
+
   @Experimental()
   /**
    * Register a custom subclass of Element to be instantiatable by the DOM.
@@ -17603,7 +20212,73 @@
    */
   void registerElement(String tag, Type customElementClass,
       {String extendsTag}) {
-    _Utils.register(this, tag, customElementClass, extendsTag);
+    // TODO(terry): Need to handle the extendsTag.
+
+    // Figure out which DOM class is being extended from the user's Dart class.
+    var classMirror = reflectClass(customElementClass);
+    var jsClassName = _getJSClassName(classMirror);
+    if (jsClassName == null) {
+      // Only components derived from HTML* can be extended.
+      throw new DomException.jsInterop("HierarchyRequestError: Only HTML elements can be customized.");
+    }
+
+    // Start the hookup the JS way create an <x-foo> element that extends the
+    // <x-base> custom element. Inherit its prototype and signal what tag is
+    // inherited:
+    //
+    //     var myProto = Object.create(HTMLElement.prototype);
+    //     var myElement = document.registerElement('x-foo', {prototype: myProto});
+    var baseElement = js.context[jsClassName];
+    if (baseElement == null) {
+      // Couldn't find the HTML element so use a generic one.
+      baseElement = js.context['HTMLElement'];
+    }
+    var elemProto = js.context['Object'].callMethod("create", [baseElement['prototype']]);
+
+    // TODO(terry): Hack to stop recursion re-creating custom element when the
+    //              created() constructor of the custom element does e.g.,
+    //
+    //                  MyElement.created() : super.created() {
+    //                    this.innerHtml = "<b>I'm an x-foo-with-markup!</b>";
+    //                  }
+    //
+    //              sanitizing causes custom element to created recursively
+    //              until stack overflow.
+    //
+    //              See https://github.com/dart-lang/sdk/issues/23666
+    int creating = 0;
+    elemProto['createdCallback'] = new js.JsFunction.withThis(($this) {
+      if (_getJSClassName(reflectClass(customElementClass).superclass) != null && creating < 2) {
+        creating++;
+
+        var dartClass = _blink.Blink_Utils.constructElement(customElementClass, $this);
+
+        // 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. 
+        $this['dart_class'] = dartClass;
+
+        creating--;
+      }
+    });
+    elemProto['attributeChangedCallback'] = new js.JsFunction.withThis(($this, attrName, oldVal, newVal) {
+      if ($this["dart_class"] != null && $this['dart_class'].attributeChanged != null) {
+        $this['dart_class'].attributeChanged(attrName, oldVal, newVal);
+      }
+    });
+    elemProto['attachedCallback'] = new js.JsFunction.withThis(($this) {
+      if ($this["dart_class"] != null && $this['dart_class'].attached != null) {
+        $this['dart_class'].attached();
+      }
+    });
+    elemProto['detachedCallback'] = new js.JsFunction.withThis(($this) {
+      if ($this["dart_class"] != null && $this['dart_class'].detached != null) {
+        $this['dart_class'].detached();
+      }
+    });
+    // document.registerElement('x-foo', {prototype: elemProto, extends: extendsTag});
+    var jsMap = new js.JsObject.jsify({'prototype': elemProto, 'extends': extendsTag});
+    js.context['document'].callMethod('registerElement', [tag, jsMap]);
   }
 
   /** *Deprecated*: use [registerElement] instead. */
@@ -17924,6 +20599,18 @@
   @DocsEditable()
   @Experimental() // untriaged
   static const EventStreamProvider<Event> waitingEvent = const EventStreamProvider<Event>('waiting');
+
+
+  static HtmlElement internalCreateHtmlElement() {
+    return new HtmlElement._internalWrap();
+  }
+
+  factory HtmlElement._internalWrap() {
+    return new HtmlElement.internal_();
+  }
+
+  HtmlElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -17937,7 +20624,7 @@
   
   @DomName('HTMLElement.contentEditable')
   @DocsEditable()
-  void set contentEditable(String value) => _blink.BlinkHTMLElement.instance.contentEditable_Setter_(unwrap_jso(this), value);
+  set contentEditable(String value) => _blink.BlinkHTMLElement.instance.contentEditable_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.contextMenu')
   @DocsEditable()
@@ -17947,7 +20634,7 @@
   @DomName('HTMLElement.contextMenu')
   @DocsEditable()
   @Experimental() // untriaged
-  void set contextMenu(MenuElement value) => _blink.BlinkHTMLElement.instance.contextMenu_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set contextMenu(MenuElement value) => _blink.BlinkHTMLElement.instance.contextMenu_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('HTMLElement.dir')
   @DocsEditable()
@@ -17955,7 +20642,7 @@
   
   @DomName('HTMLElement.dir')
   @DocsEditable()
-  void set dir(String value) => _blink.BlinkHTMLElement.instance.dir_Setter_(unwrap_jso(this), value);
+  set dir(String value) => _blink.BlinkHTMLElement.instance.dir_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.draggable')
   @DocsEditable()
@@ -17963,7 +20650,7 @@
   
   @DomName('HTMLElement.draggable')
   @DocsEditable()
-  void set draggable(bool value) => _blink.BlinkHTMLElement.instance.draggable_Setter_(unwrap_jso(this), value);
+  set draggable(bool value) => _blink.BlinkHTMLElement.instance.draggable_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.hidden')
   @DocsEditable()
@@ -17971,7 +20658,7 @@
   
   @DomName('HTMLElement.hidden')
   @DocsEditable()
-  void set hidden(bool value) => _blink.BlinkHTMLElement.instance.hidden_Setter_(unwrap_jso(this), value);
+  set hidden(bool value) => _blink.BlinkHTMLElement.instance.hidden_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.inputMethodContext')
   @DocsEditable()
@@ -17988,7 +20675,7 @@
   
   @DomName('HTMLElement.lang')
   @DocsEditable()
-  void set lang(String value) => _blink.BlinkHTMLElement.instance.lang_Setter_(unwrap_jso(this), value);
+  set lang(String value) => _blink.BlinkHTMLElement.instance.lang_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.spellcheck')
   @DocsEditable()
@@ -18000,7 +20687,7 @@
   @DocsEditable()
   // http://blog.whatwg.org/the-road-to-html-5-spellchecking
   @Experimental() // nonstandard
-  void set spellcheck(bool value) => _blink.BlinkHTMLElement.instance.spellcheck_Setter_(unwrap_jso(this), value);
+  set spellcheck(bool value) => _blink.BlinkHTMLElement.instance.spellcheck_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.tabIndex')
   @DocsEditable()
@@ -18008,7 +20695,7 @@
   
   @DomName('HTMLElement.tabIndex')
   @DocsEditable()
-  void set tabIndex(int value) => _blink.BlinkHTMLElement.instance.tabIndex_Setter_(unwrap_jso(this), value);
+  set tabIndex(int value) => _blink.BlinkHTMLElement.instance.tabIndex_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.title')
   @DocsEditable()
@@ -18016,7 +20703,7 @@
   
   @DomName('HTMLElement.title')
   @DocsEditable()
-  void set title(String value) => _blink.BlinkHTMLElement.instance.title_Setter_(unwrap_jso(this), value);
+  set title(String value) => _blink.BlinkHTMLElement.instance.title_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.translate')
   @DocsEditable()
@@ -18024,7 +20711,7 @@
   
   @DomName('HTMLElement.translate')
   @DocsEditable()
-  void set translate(bool value) => _blink.BlinkHTMLElement.instance.translate_Setter_(unwrap_jso(this), value);
+  set translate(bool value) => _blink.BlinkHTMLElement.instance.translate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.webkitdropzone')
   @DocsEditable()
@@ -18040,7 +20727,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute
-  void set dropzone(String value) => _blink.BlinkHTMLElement.instance.webkitdropzone_Setter_(unwrap_jso(this), value);
+  set dropzone(String value) => _blink.BlinkHTMLElement.instance.webkitdropzone_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLElement.click')
   @DocsEditable()
@@ -18320,6 +21007,18 @@
   // To suppress missing implicit constructor warnings.
   factory HtmlFormControlsCollection._() { throw new UnsupportedError("Not supported"); }
 
+
+  static HtmlFormControlsCollection internalCreateHtmlFormControlsCollection() {
+    return new HtmlFormControlsCollection._internalWrap();
+  }
+
+  factory HtmlFormControlsCollection._internalWrap() {
+    return new HtmlFormControlsCollection.internal_();
+  }
+
+  HtmlFormControlsCollection.internal_() : super.internal_();
+
+
   @DomName('HTMLFormControlsCollection.namedItem')
   @DocsEditable()
   Object namedItem(String name) => wrap_jso(_blink.BlinkHTMLFormControlsCollection.instance.namedItem_Callback_1_(unwrap_jso(this), name));
@@ -18341,6 +21040,18 @@
   @DomName('HTMLHtmlElement.HTMLHtmlElement')
   @DocsEditable()
   factory HtmlHtmlElement() => document.createElement("html");
+
+
+  static HtmlHtmlElement internalCreateHtmlHtmlElement() {
+    return new HtmlHtmlElement._internalWrap();
+  }
+
+  factory HtmlHtmlElement._internalWrap() {
+    return new HtmlHtmlElement.internal_();
+  }
+
+  HtmlHtmlElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -18362,6 +21073,18 @@
   // To suppress missing implicit constructor warnings.
   factory HtmlOptionsCollection._() { throw new UnsupportedError("Not supported"); }
 
+
+  static HtmlOptionsCollection internalCreateHtmlOptionsCollection() {
+    return new HtmlOptionsCollection._internalWrap();
+  }
+
+  factory HtmlOptionsCollection._internalWrap() {
+    return new HtmlOptionsCollection.internal_();
+  }
+
+  HtmlOptionsCollection.internal_() : super.internal_();
+
+
 }
 // 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
@@ -18699,6 +21422,31 @@
     return headers;
   }
 
+  /**
+   * Specify the desired `url`, and `method` to use in making the request.
+   *
+   * By default the request is done asyncronously, with no user or password
+   * authentication information. If `async` is false, the request will be send
+   * synchronously.
+   *
+   * Calling `open` again on a currently active request is equivalent to
+   * calling `abort`.
+   *
+   * Note: Most simple HTTP requests can be accomplished using the [getString],
+   * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
+   * `open` method is intended only for more complext HTTP requests where
+   * finer-grained control is needed.
+   */
+  @DomName('XMLHttpRequest.open')
+  @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);
+    } else {
+      _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(unwrap_jso(this), method, url, async, user, password);
+    }
+  }
+
   // To suppress missing implicit constructor warnings.
   factory HttpRequest._() { throw new UnsupportedError("Not supported"); }
 
@@ -18733,7 +21481,19 @@
   factory HttpRequest() => wrap_jso(_create());
 
   @DocsEditable()
-  static HttpRequest _create() => _blink.BlinkXMLHttpRequest.instance.constructorCallback_0_();
+  static HttpRequest _create() => wrap_jso(_blink.BlinkXMLHttpRequest.instance.constructorCallback_0_());
+
+
+  static HttpRequest internalCreateHttpRequest() {
+    return new HttpRequest._internalWrap();
+  }
+
+  factory HttpRequest._internalWrap() {
+    return new HttpRequest.internal_();
+  }
+
+  HttpRequest.internal_() : super.internal_();
+
 
   @DomName('XMLHttpRequest.DONE')
   @DocsEditable()
@@ -18804,7 +21564,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  Object get response => _blink.BlinkXMLHttpRequest.instance.response_Getter_(unwrap_jso(this));
+  Object get response => wrap_jso(_blink.BlinkXMLHttpRequest.instance.response_Getter_(unwrap_jso(this)));
   
   /**
    * The response in String form or empty String on failure.
@@ -18839,7 +21599,7 @@
    */
   @DomName('XMLHttpRequest.responseType')
   @DocsEditable()
-  void set responseType(String value) => _blink.BlinkXMLHttpRequest.instance.responseType_Setter_(unwrap_jso(this), value);
+  set responseType(String value) => _blink.BlinkXMLHttpRequest.instance.responseType_Setter_(unwrap_jso(this), value);
   
   @DomName('XMLHttpRequest.responseURL')
   @DocsEditable()
@@ -18913,7 +21673,7 @@
   @DomName('XMLHttpRequest.timeout')
   @DocsEditable()
   @Experimental() // untriaged
-  void set timeout(int value) => _blink.BlinkXMLHttpRequest.instance.timeout_Setter_(unwrap_jso(this), value);
+  set timeout(int value) => _blink.BlinkXMLHttpRequest.instance.timeout_Setter_(unwrap_jso(this), value);
   
   /**
    * [EventTarget] that can hold listeners to track the progress of the request.
@@ -18942,7 +21702,7 @@
    */
   @DomName('XMLHttpRequest.withCredentials')
   @DocsEditable()
-  void set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.instance.withCredentials_Setter_(unwrap_jso(this), value);
+  set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.instance.withCredentials_Setter_(unwrap_jso(this), value);
   
   /**
    * Stop the current request.
@@ -18982,25 +21742,6 @@
   String getResponseHeader(String header) => _blink.BlinkXMLHttpRequest.instance.getResponseHeader_Callback_1_(unwrap_jso(this), header);
   
   /**
-   * Specify the desired `url`, and `method` to use in making the request.
-   *
-   * By default the request is done asyncronously, with no user or password
-   * authentication information. If `async` is false, the request will be send
-   * synchronously.
-   *
-   * Calling `open` again on a currently active request is equivalent to
-   * calling `abort`.
-   *
-   * Note: Most simple HTTP requests can be accomplished using the [getString],
-   * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
-   * `open` method is intended only for more complext HTTP requests where
-   * finer-grained control is needed.
-   */
-  @DomName('XMLHttpRequest.open')
-  @DocsEditable()
-  void open(String method, String url, {bool async, String user, String password}) => _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(unwrap_jso(this), method, url, async, user, password);
-  
-  /**
    * Specify a particular MIME type (such as `text/xml`) desired for the
    * response.
    *
@@ -19155,6 +21896,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<ProgressEvent> timeoutEvent = const EventStreamProvider<ProgressEvent>('timeout');
 
+
+  static HttpRequestEventTarget internalCreateHttpRequestEventTarget() {
+    return new HttpRequestEventTarget._internalWrap();
+  }
+
+  factory HttpRequestEventTarget._internalWrap() {
+    return new HttpRequestEventTarget.internal_();
+  }
+
+  HttpRequestEventTarget.internal_() : super.internal_();
+
+
   /// Stream of `abort` events handled by this [HttpRequestEventTarget].
   @DomName('XMLHttpRequestEventTarget.onabort')
   @DocsEditable()
@@ -19221,6 +21974,18 @@
   // To suppress missing implicit constructor warnings.
   factory HttpRequestUpload._() { throw new UnsupportedError("Not supported"); }
 
+
+  static HttpRequestUpload internalCreateHttpRequestUpload() {
+    return new HttpRequestUpload._internalWrap();
+  }
+
+  factory HttpRequestUpload._internalWrap() {
+    return new HttpRequestUpload.internal_();
+  }
+
+  HttpRequestUpload.internal_() : super.internal_();
+
+
 }
 // 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
@@ -19238,6 +22003,18 @@
   @DomName('HTMLIFrameElement.HTMLIFrameElement')
   @DocsEditable()
   factory IFrameElement() => document.createElement("iframe");
+
+
+  static IFrameElement internalCreateIFrameElement() {
+    return new IFrameElement._internalWrap();
+  }
+
+  factory IFrameElement._internalWrap() {
+    return new IFrameElement.internal_();
+  }
+
+  IFrameElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -19253,7 +22030,7 @@
   @DomName('HTMLIFrameElement.allowFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  void set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Setter_(unwrap_jso(this), value);
+  set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLIFrameElement.contentWindow')
   @DocsEditable()
@@ -19265,7 +22042,7 @@
   
   @DomName('HTMLIFrameElement.height')
   @DocsEditable()
-  void set height(String value) => _blink.BlinkHTMLIFrameElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(String value) => _blink.BlinkHTMLIFrameElement.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLIFrameElement.integrity')
   @DocsEditable()
@@ -19275,7 +22052,7 @@
   @DomName('HTMLIFrameElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLIFrameElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLIFrameElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLIFrameElement.name')
   @DocsEditable()
@@ -19283,7 +22060,7 @@
   
   @DomName('HTMLIFrameElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLIFrameElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLIFrameElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLIFrameElement.sandbox')
   @DocsEditable()
@@ -19291,7 +22068,7 @@
   
   @DomName('HTMLIFrameElement.sandbox')
   @DocsEditable()
-  void set sandbox(String value) => _blink.BlinkHTMLIFrameElement.instance.sandbox_Setter_(unwrap_jso(this), value);
+  set sandbox(String value) => _blink.BlinkHTMLIFrameElement.instance.sandbox_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLIFrameElement.src')
   @DocsEditable()
@@ -19299,7 +22076,7 @@
   
   @DomName('HTMLIFrameElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLIFrameElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLIFrameElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLIFrameElement.srcdoc')
   @DocsEditable()
@@ -19307,7 +22084,7 @@
   
   @DomName('HTMLIFrameElement.srcdoc')
   @DocsEditable()
-  void set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Setter_(unwrap_jso(this), value);
+  set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLIFrameElement.width')
   @DocsEditable()
@@ -19315,7 +22092,7 @@
   
   @DomName('HTMLIFrameElement.width')
   @DocsEditable()
-  void set width(String value) => _blink.BlinkHTMLIFrameElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(String value) => _blink.BlinkHTMLIFrameElement.instance.width_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19332,6 +22109,21 @@
   // To suppress missing implicit constructor warnings.
   factory ImageBitmap._() { throw new UnsupportedError("Not supported"); }
 
+  static ImageBitmap internalCreateImageBitmap() {
+    return new ImageBitmap._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ImageBitmap._internalWrap() {
+    return new ImageBitmap.internal_();
+  }
+
+  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
@@ -19365,17 +22157,32 @@
   @DocsEditable()
   factory ImageData(data_OR_width, int height_OR_width, [int height]) {
     if ((height_OR_width is int || height_OR_width == null) && (data_OR_width is int || data_OR_width == null) && height == null) {
-      return _blink.BlinkImageData.instance.constructorCallback_2_(data_OR_width, height_OR_width);
+      return wrap_jso(_blink.BlinkImageData.instance.constructorCallback_2_(data_OR_width, height_OR_width));
     }
     if ((height is int || height == null) && (height_OR_width is int || height_OR_width == null) && (data_OR_width is Uint8ClampedList || data_OR_width == null)) {
-      return _blink.BlinkImageData.instance.constructorCallback_3_(data_OR_width, height_OR_width, height);
+      return wrap_jso(_blink.BlinkImageData.instance.constructorCallback_3_(data_OR_width, height_OR_width, height));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+  static ImageData internalCreateImageData() {
+    return new ImageData._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ImageData._internalWrap() {
+    return new ImageData.internal_();
+  }
+
+  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_(unwrap_jso(this));
   
   @DomName('ImageData.height')
   @DocsEditable()
@@ -19405,6 +22212,18 @@
     if (height != null) e.height = height;
     return e;
   }
+
+
+  static ImageElement internalCreateImageElement() {
+    return new ImageElement._internalWrap();
+  }
+
+  factory ImageElement._internalWrap() {
+    return new ImageElement.internal_();
+  }
+
+  ImageElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -19418,7 +22237,7 @@
   
   @DomName('HTMLImageElement.alt')
   @DocsEditable()
-  void set alt(String value) => _blink.BlinkHTMLImageElement.instance.alt_Setter_(unwrap_jso(this), value);
+  set alt(String value) => _blink.BlinkHTMLImageElement.instance.alt_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.complete')
   @DocsEditable()
@@ -19430,7 +22249,7 @@
   
   @DomName('HTMLImageElement.crossOrigin')
   @DocsEditable()
-  void set crossOrigin(String value) => _blink.BlinkHTMLImageElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLImageElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.currentSrc')
   @DocsEditable()
@@ -19443,7 +22262,7 @@
   
   @DomName('HTMLImageElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLImageElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkHTMLImageElement.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.integrity')
   @DocsEditable()
@@ -19453,7 +22272,7 @@
   @DomName('HTMLImageElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLImageElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLImageElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.isMap')
   @DocsEditable()
@@ -19461,7 +22280,7 @@
   
   @DomName('HTMLImageElement.isMap')
   @DocsEditable()
-  void set isMap(bool value) => _blink.BlinkHTMLImageElement.instance.isMap_Setter_(unwrap_jso(this), value);
+  set isMap(bool value) => _blink.BlinkHTMLImageElement.instance.isMap_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.naturalHeight')
   @DocsEditable()
@@ -19479,7 +22298,7 @@
   @DomName('HTMLImageElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  void set sizes(String value) => _blink.BlinkHTMLImageElement.instance.sizes_Setter_(unwrap_jso(this), value);
+  set sizes(String value) => _blink.BlinkHTMLImageElement.instance.sizes_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.src')
   @DocsEditable()
@@ -19487,7 +22306,7 @@
   
   @DomName('HTMLImageElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLImageElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLImageElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.srcset')
   @DocsEditable()
@@ -19497,7 +22316,7 @@
   @DomName('HTMLImageElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  void set srcset(String value) => _blink.BlinkHTMLImageElement.instance.srcset_Setter_(unwrap_jso(this), value);
+  set srcset(String value) => _blink.BlinkHTMLImageElement.instance.srcset_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.useMap')
   @DocsEditable()
@@ -19505,7 +22324,7 @@
   
   @DomName('HTMLImageElement.useMap')
   @DocsEditable()
-  void set useMap(String value) => _blink.BlinkHTMLImageElement.instance.useMap_Setter_(unwrap_jso(this), value);
+  set useMap(String value) => _blink.BlinkHTMLImageElement.instance.useMap_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLImageElement.width')
   @DocsEditable()
@@ -19513,7 +22332,7 @@
   
   @DomName('HTMLImageElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLImageElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLImageElement.instance.width_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19530,6 +22349,21 @@
   // To suppress missing implicit constructor warnings.
   factory InjectedScriptHost._() { throw new UnsupportedError("Not supported"); }
 
+  static InjectedScriptHost internalCreateInjectedScriptHost() {
+    return new InjectedScriptHost._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory InjectedScriptHost._internalWrap() {
+    return new InjectedScriptHost.internal_();
+  }
+
+  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
@@ -19578,6 +22412,18 @@
 
   // To suppress missing implicit constructor warnings.
   factory InputElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static InputElement internalCreateInputElement() {
+    return new InputElement._internalWrap();
+  }
+
+  factory InputElement._internalWrap() {
+    return new InputElement.internal_();
+  }
+
+  InputElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -19591,7 +22437,7 @@
   
   @DomName('HTMLInputElement.accept')
   @DocsEditable()
-  void set accept(String value) => _blink.BlinkHTMLInputElement.instance.accept_Setter_(unwrap_jso(this), value);
+  set accept(String value) => _blink.BlinkHTMLInputElement.instance.accept_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.alt')
   @DocsEditable()
@@ -19599,7 +22445,7 @@
   
   @DomName('HTMLInputElement.alt')
   @DocsEditable()
-  void set alt(String value) => _blink.BlinkHTMLInputElement.instance.alt_Setter_(unwrap_jso(this), value);
+  set alt(String value) => _blink.BlinkHTMLInputElement.instance.alt_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.autocomplete')
   @DocsEditable()
@@ -19607,7 +22453,7 @@
   
   @DomName('HTMLInputElement.autocomplete')
   @DocsEditable()
-  void set autocomplete(String value) => _blink.BlinkHTMLInputElement.instance.autocomplete_Setter_(unwrap_jso(this), value);
+  set autocomplete(String value) => _blink.BlinkHTMLInputElement.instance.autocomplete_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.autofocus')
   @DocsEditable()
@@ -19615,7 +22461,7 @@
   
   @DomName('HTMLInputElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLInputElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLInputElement.instance.autofocus_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.capture')
   @DocsEditable()
@@ -19625,7 +22471,7 @@
   @DomName('HTMLInputElement.capture')
   @DocsEditable()
   @Experimental() // untriaged
-  void set capture(bool value) => _blink.BlinkHTMLInputElement.instance.capture_Setter_(unwrap_jso(this), value);
+  set capture(bool value) => _blink.BlinkHTMLInputElement.instance.capture_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.checked')
   @DocsEditable()
@@ -19633,7 +22479,7 @@
   
   @DomName('HTMLInputElement.checked')
   @DocsEditable()
-  void set checked(bool value) => _blink.BlinkHTMLInputElement.instance.checked_Setter_(unwrap_jso(this), value);
+  set checked(bool value) => _blink.BlinkHTMLInputElement.instance.checked_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.defaultChecked')
   @DocsEditable()
@@ -19641,7 +22487,7 @@
   
   @DomName('HTMLInputElement.defaultChecked')
   @DocsEditable()
-  void set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.instance.defaultChecked_Setter_(unwrap_jso(this), value);
+  set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.instance.defaultChecked_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.defaultValue')
   @DocsEditable()
@@ -19649,7 +22495,7 @@
   
   @DomName('HTMLInputElement.defaultValue')
   @DocsEditable()
-  void set defaultValue(String value) => _blink.BlinkHTMLInputElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
+  set defaultValue(String value) => _blink.BlinkHTMLInputElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.dirName')
   @DocsEditable()
@@ -19657,7 +22503,7 @@
   
   @DomName('HTMLInputElement.dirName')
   @DocsEditable()
-  void set dirName(String value) => _blink.BlinkHTMLInputElement.instance.dirName_Setter_(unwrap_jso(this), value);
+  set dirName(String value) => _blink.BlinkHTMLInputElement.instance.dirName_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.disabled')
   @DocsEditable()
@@ -19665,15 +22511,15 @@
   
   @DomName('HTMLInputElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLInputElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLInputElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.files')
   @DocsEditable()
-  List<File> get files => wrap_jso_list(_blink.BlinkHTMLInputElement.instance.files_Getter_(unwrap_jso(this)));
+  List<File> get files => wrap_jso(_blink.BlinkHTMLInputElement.instance.files_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLInputElement.files')
   @DocsEditable()
-  void 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_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('HTMLInputElement.form')
   @DocsEditable()
@@ -19685,7 +22531,7 @@
   
   @DomName('HTMLInputElement.formAction')
   @DocsEditable()
-  void set formAction(String value) => _blink.BlinkHTMLInputElement.instance.formAction_Setter_(unwrap_jso(this), value);
+  set formAction(String value) => _blink.BlinkHTMLInputElement.instance.formAction_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.formEnctype')
   @DocsEditable()
@@ -19693,7 +22539,7 @@
   
   @DomName('HTMLInputElement.formEnctype')
   @DocsEditable()
-  void set formEnctype(String value) => _blink.BlinkHTMLInputElement.instance.formEnctype_Setter_(unwrap_jso(this), value);
+  set formEnctype(String value) => _blink.BlinkHTMLInputElement.instance.formEnctype_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.formMethod')
   @DocsEditable()
@@ -19701,7 +22547,7 @@
   
   @DomName('HTMLInputElement.formMethod')
   @DocsEditable()
-  void set formMethod(String value) => _blink.BlinkHTMLInputElement.instance.formMethod_Setter_(unwrap_jso(this), value);
+  set formMethod(String value) => _blink.BlinkHTMLInputElement.instance.formMethod_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.formNoValidate')
   @DocsEditable()
@@ -19709,7 +22555,7 @@
   
   @DomName('HTMLInputElement.formNoValidate')
   @DocsEditable()
-  void set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.instance.formNoValidate_Setter_(unwrap_jso(this), value);
+  set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.instance.formNoValidate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.formTarget')
   @DocsEditable()
@@ -19717,7 +22563,7 @@
   
   @DomName('HTMLInputElement.formTarget')
   @DocsEditable()
-  void set formTarget(String value) => _blink.BlinkHTMLInputElement.instance.formTarget_Setter_(unwrap_jso(this), value);
+  set formTarget(String value) => _blink.BlinkHTMLInputElement.instance.formTarget_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.height')
   @DocsEditable()
@@ -19725,7 +22571,7 @@
   
   @DomName('HTMLInputElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLInputElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkHTMLInputElement.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.incremental')
   @DocsEditable()
@@ -19737,7 +22583,7 @@
   @DocsEditable()
   // http://www.w3.org/TR/html-markup/input.search.html
   @Experimental()
-  void set incremental(bool value) => _blink.BlinkHTMLInputElement.instance.incremental_Setter_(unwrap_jso(this), value);
+  set incremental(bool value) => _blink.BlinkHTMLInputElement.instance.incremental_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.indeterminate')
   @DocsEditable()
@@ -19745,7 +22591,7 @@
   
   @DomName('HTMLInputElement.indeterminate')
   @DocsEditable()
-  void set indeterminate(bool value) => _blink.BlinkHTMLInputElement.instance.indeterminate_Setter_(unwrap_jso(this), value);
+  set indeterminate(bool value) => _blink.BlinkHTMLInputElement.instance.indeterminate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.inputMode')
   @DocsEditable()
@@ -19755,11 +22601,11 @@
   @DomName('HTMLInputElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  void set inputMode(String value) => _blink.BlinkHTMLInputElement.instance.inputMode_Setter_(unwrap_jso(this), value);
+  set inputMode(String value) => _blink.BlinkHTMLInputElement.instance.inputMode_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.labels')
   @DocsEditable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLInputElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLInputElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLInputElement.list')
   @DocsEditable()
@@ -19771,7 +22617,7 @@
   
   @DomName('HTMLInputElement.max')
   @DocsEditable()
-  void set max(String value) => _blink.BlinkHTMLInputElement.instance.max_Setter_(unwrap_jso(this), value);
+  set max(String value) => _blink.BlinkHTMLInputElement.instance.max_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.maxLength')
   @DocsEditable()
@@ -19779,7 +22625,7 @@
   
   @DomName('HTMLInputElement.maxLength')
   @DocsEditable()
-  void set maxLength(int value) => _blink.BlinkHTMLInputElement.instance.maxLength_Setter_(unwrap_jso(this), value);
+  set maxLength(int value) => _blink.BlinkHTMLInputElement.instance.maxLength_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.min')
   @DocsEditable()
@@ -19787,7 +22633,7 @@
   
   @DomName('HTMLInputElement.min')
   @DocsEditable()
-  void set min(String value) => _blink.BlinkHTMLInputElement.instance.min_Setter_(unwrap_jso(this), value);
+  set min(String value) => _blink.BlinkHTMLInputElement.instance.min_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.multiple')
   @DocsEditable()
@@ -19795,7 +22641,7 @@
   
   @DomName('HTMLInputElement.multiple')
   @DocsEditable()
-  void set multiple(bool value) => _blink.BlinkHTMLInputElement.instance.multiple_Setter_(unwrap_jso(this), value);
+  set multiple(bool value) => _blink.BlinkHTMLInputElement.instance.multiple_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.name')
   @DocsEditable()
@@ -19803,7 +22649,7 @@
   
   @DomName('HTMLInputElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLInputElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLInputElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.pattern')
   @DocsEditable()
@@ -19811,7 +22657,7 @@
   
   @DomName('HTMLInputElement.pattern')
   @DocsEditable()
-  void set pattern(String value) => _blink.BlinkHTMLInputElement.instance.pattern_Setter_(unwrap_jso(this), value);
+  set pattern(String value) => _blink.BlinkHTMLInputElement.instance.pattern_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.placeholder')
   @DocsEditable()
@@ -19819,7 +22665,7 @@
   
   @DomName('HTMLInputElement.placeholder')
   @DocsEditable()
-  void set placeholder(String value) => _blink.BlinkHTMLInputElement.instance.placeholder_Setter_(unwrap_jso(this), value);
+  set placeholder(String value) => _blink.BlinkHTMLInputElement.instance.placeholder_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.readOnly')
   @DocsEditable()
@@ -19827,7 +22673,7 @@
   
   @DomName('HTMLInputElement.readOnly')
   @DocsEditable()
-  void set readOnly(bool value) => _blink.BlinkHTMLInputElement.instance.readOnly_Setter_(unwrap_jso(this), value);
+  set readOnly(bool value) => _blink.BlinkHTMLInputElement.instance.readOnly_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.required')
   @DocsEditable()
@@ -19835,7 +22681,7 @@
   
   @DomName('HTMLInputElement.required')
   @DocsEditable()
-  void set required(bool value) => _blink.BlinkHTMLInputElement.instance.required_Setter_(unwrap_jso(this), value);
+  set required(bool value) => _blink.BlinkHTMLInputElement.instance.required_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.selectionDirection')
   @DocsEditable()
@@ -19843,7 +22689,7 @@
   
   @DomName('HTMLInputElement.selectionDirection')
   @DocsEditable()
-  void set selectionDirection(String value) => _blink.BlinkHTMLInputElement.instance.selectionDirection_Setter_(unwrap_jso(this), value);
+  set selectionDirection(String value) => _blink.BlinkHTMLInputElement.instance.selectionDirection_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.selectionEnd')
   @DocsEditable()
@@ -19851,7 +22697,7 @@
   
   @DomName('HTMLInputElement.selectionEnd')
   @DocsEditable()
-  void set selectionEnd(int value) => _blink.BlinkHTMLInputElement.instance.selectionEnd_Setter_(unwrap_jso(this), value);
+  set selectionEnd(int value) => _blink.BlinkHTMLInputElement.instance.selectionEnd_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.selectionStart')
   @DocsEditable()
@@ -19859,7 +22705,7 @@
   
   @DomName('HTMLInputElement.selectionStart')
   @DocsEditable()
-  void set selectionStart(int value) => _blink.BlinkHTMLInputElement.instance.selectionStart_Setter_(unwrap_jso(this), value);
+  set selectionStart(int value) => _blink.BlinkHTMLInputElement.instance.selectionStart_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.size')
   @DocsEditable()
@@ -19867,7 +22713,7 @@
   
   @DomName('HTMLInputElement.size')
   @DocsEditable()
-  void set size(int value) => _blink.BlinkHTMLInputElement.instance.size_Setter_(unwrap_jso(this), value);
+  set size(int value) => _blink.BlinkHTMLInputElement.instance.size_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.src')
   @DocsEditable()
@@ -19875,7 +22721,7 @@
   
   @DomName('HTMLInputElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLInputElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLInputElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.step')
   @DocsEditable()
@@ -19883,7 +22729,7 @@
   
   @DomName('HTMLInputElement.step')
   @DocsEditable()
-  void set step(String value) => _blink.BlinkHTMLInputElement.instance.step_Setter_(unwrap_jso(this), value);
+  set step(String value) => _blink.BlinkHTMLInputElement.instance.step_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.type')
   @DocsEditable()
@@ -19891,7 +22737,7 @@
   
   @DomName('HTMLInputElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLInputElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLInputElement.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.validationMessage')
   @DocsEditable()
@@ -19907,7 +22753,7 @@
   
   @DomName('HTMLInputElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLInputElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLInputElement.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.valueAsDate')
   @DocsEditable()
@@ -19915,7 +22761,7 @@
   
   @DomName('HTMLInputElement.valueAsDate')
   @DocsEditable()
-  void set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.instance.valueAsDate_Setter_(unwrap_jso(this), value);
+  set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.instance.valueAsDate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.valueAsNumber')
   @DocsEditable()
@@ -19923,7 +22769,7 @@
   
   @DomName('HTMLInputElement.valueAsNumber')
   @DocsEditable()
-  void set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Setter_(unwrap_jso(this), value);
+  set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.webkitEntries')
   @DocsEditable()
@@ -19947,7 +22793,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
-  void set directory(bool value) => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Setter_(unwrap_jso(this), value);
+  set directory(bool value) => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.width')
   @DocsEditable()
@@ -19955,7 +22801,7 @@
   
   @DomName('HTMLInputElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLInputElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLInputElement.instance.width_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLInputElement.willValidate')
   @DocsEditable()
@@ -20587,6 +23433,18 @@
   // To suppress missing implicit constructor warnings.
   factory InputMethodContext._() { throw new UnsupportedError("Not supported"); }
 
+
+  static InputMethodContext internalCreateInputMethodContext() {
+    return new InputMethodContext._internalWrap();
+  }
+
+  factory InputMethodContext._internalWrap() {
+    return new InputMethodContext.internal_();
+  }
+
+  InputMethodContext.internal_() : super.internal_();
+
+
   @DomName('InputMethodContext.compositionEndOffset')
   @DocsEditable()
   @Experimental() // untriaged
@@ -20625,10 +23483,22 @@
   // To suppress missing implicit constructor warnings.
   factory InstallEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static InstallEvent internalCreateInstallEvent() {
+    return new InstallEvent._internalWrap();
+  }
+
+  factory InstallEvent._internalWrap() {
+    return new InstallEvent.internal_();
+  }
+
+  InstallEvent.internal_() : super.internal_();
+
+
   @DomName('InstallEvent.reloadAll')
   @DocsEditable()
   @Experimental() // untriaged
-  Future reloadAll() => _blink.BlinkInstallEvent.instance.reloadAll_Callback_0_(unwrap_jso(this));
+  Future reloadAll() => wrap_jso(_blink.BlinkInstallEvent.instance.reloadAll_Callback_0_(unwrap_jso(this)));
   
   @DomName('InstallEvent.replace')
   @DocsEditable()
@@ -20665,6 +23535,18 @@
   // To suppress missing implicit constructor warnings.
   factory KeyboardEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static KeyboardEvent internalCreateKeyboardEvent() {
+    return new KeyboardEvent._internalWrap();
+  }
+
+  factory KeyboardEvent._internalWrap() {
+    return new KeyboardEvent.internal_();
+  }
+
+  KeyboardEvent.internal_() : super.internal_();
+
+
   @DomName('KeyboardEvent.DOM_KEY_LOCATION_LEFT')
   @DocsEditable()
   @Experimental() // untriaged
@@ -20751,6 +23633,18 @@
   @DomName('HTMLKeygenElement.HTMLKeygenElement')
   @DocsEditable()
   factory KeygenElement() => document.createElement("keygen");
+
+
+  static KeygenElement internalCreateKeygenElement() {
+    return new KeygenElement._internalWrap();
+  }
+
+  factory KeygenElement._internalWrap() {
+    return new KeygenElement.internal_();
+  }
+
+  KeygenElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -20767,7 +23661,7 @@
   
   @DomName('HTMLKeygenElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.instance.autofocus_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLKeygenElement.challenge')
   @DocsEditable()
@@ -20775,7 +23669,7 @@
   
   @DomName('HTMLKeygenElement.challenge')
   @DocsEditable()
-  void set challenge(String value) => _blink.BlinkHTMLKeygenElement.instance.challenge_Setter_(unwrap_jso(this), value);
+  set challenge(String value) => _blink.BlinkHTMLKeygenElement.instance.challenge_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLKeygenElement.disabled')
   @DocsEditable()
@@ -20783,7 +23677,7 @@
   
   @DomName('HTMLKeygenElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLKeygenElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLKeygenElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLKeygenElement.form')
   @DocsEditable()
@@ -20795,12 +23689,12 @@
   
   @DomName('HTMLKeygenElement.keytype')
   @DocsEditable()
-  void set keytype(String value) => _blink.BlinkHTMLKeygenElement.instance.keytype_Setter_(unwrap_jso(this), value);
+  set keytype(String value) => _blink.BlinkHTMLKeygenElement.instance.keytype_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLKeygenElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLKeygenElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLKeygenElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLKeygenElement.name')
   @DocsEditable()
@@ -20808,7 +23702,7 @@
   
   @DomName('HTMLKeygenElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLKeygenElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLKeygenElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLKeygenElement.type')
   @DocsEditable()
@@ -20851,6 +23745,18 @@
   @DomName('HTMLLIElement.HTMLLIElement')
   @DocsEditable()
   factory LIElement() => document.createElement("li");
+
+
+  static LIElement internalCreateLIElement() {
+    return new LIElement._internalWrap();
+  }
+
+  factory LIElement._internalWrap() {
+    return new LIElement.internal_();
+  }
+
+  LIElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -20864,7 +23770,7 @@
   
   @DomName('HTMLLIElement.value')
   @DocsEditable()
-  void set value(int value) => _blink.BlinkHTMLLIElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(int value) => _blink.BlinkHTMLLIElement.instance.value_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20883,6 +23789,18 @@
   @DomName('HTMLLabelElement.HTMLLabelElement')
   @DocsEditable()
   factory LabelElement() => document.createElement("label");
+
+
+  static LabelElement internalCreateLabelElement() {
+    return new LabelElement._internalWrap();
+  }
+
+  factory LabelElement._internalWrap() {
+    return new LabelElement.internal_();
+  }
+
+  LabelElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -20904,7 +23822,7 @@
   
   @DomName('HTMLLabelElement.htmlFor')
   @DocsEditable()
-  void set htmlFor(String value) => _blink.BlinkHTMLLabelElement.instance.htmlFor_Setter_(unwrap_jso(this), value);
+  set htmlFor(String value) => _blink.BlinkHTMLLabelElement.instance.htmlFor_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20923,6 +23841,18 @@
   @DomName('HTMLLegendElement.HTMLLegendElement')
   @DocsEditable()
   factory LegendElement() => document.createElement("legend");
+
+
+  static LegendElement internalCreateLegendElement() {
+    return new LegendElement._internalWrap();
+  }
+
+  factory LegendElement._internalWrap() {
+    return new LegendElement.internal_();
+  }
+
+  LegendElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -20949,6 +23879,18 @@
   @DomName('HTMLLinkElement.HTMLLinkElement')
   @DocsEditable()
   factory LinkElement() => document.createElement("link");
+
+
+  static LinkElement internalCreateLinkElement() {
+    return new LinkElement._internalWrap();
+  }
+
+  factory LinkElement._internalWrap() {
+    return new LinkElement.internal_();
+  }
+
+  LinkElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -20964,7 +23906,7 @@
   @DomName('HTMLLinkElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  void set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLLinkElement.disabled')
   @DocsEditable()
@@ -20972,7 +23914,7 @@
   
   @DomName('HTMLLinkElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLLinkElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLLinkElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLLinkElement.href')
   @DocsEditable()
@@ -20980,7 +23922,7 @@
   
   @DomName('HTMLLinkElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLLinkElement.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkHTMLLinkElement.instance.href_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLLinkElement.hreflang')
   @DocsEditable()
@@ -20988,7 +23930,7 @@
   
   @DomName('HTMLLinkElement.hreflang')
   @DocsEditable()
-  void set hreflang(String value) => _blink.BlinkHTMLLinkElement.instance.hreflang_Setter_(unwrap_jso(this), value);
+  set hreflang(String value) => _blink.BlinkHTMLLinkElement.instance.hreflang_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLLinkElement.import')
   @DocsEditable()
@@ -21004,7 +23946,7 @@
   @DomName('HTMLLinkElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLLinkElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLLinkElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLLinkElement.media')
   @DocsEditable()
@@ -21012,7 +23954,7 @@
   
   @DomName('HTMLLinkElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkHTMLLinkElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkHTMLLinkElement.instance.media_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLLinkElement.rel')
   @DocsEditable()
@@ -21020,7 +23962,7 @@
   
   @DomName('HTMLLinkElement.rel')
   @DocsEditable()
-  void set rel(String value) => _blink.BlinkHTMLLinkElement.instance.rel_Setter_(unwrap_jso(this), value);
+  set rel(String value) => _blink.BlinkHTMLLinkElement.instance.rel_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLLinkElement.sheet')
   @DocsEditable()
@@ -21036,7 +23978,7 @@
   
   @DomName('HTMLLinkElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLLinkElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLLinkElement.instance.type_Setter_(unwrap_jso(this), value);
   
 
     /// Checks if HTML imports are supported on the current platform.
@@ -21061,9 +24003,21 @@
   @DomName('LocalCredential.LocalCredential')
   @DocsEditable()
   factory LocalCredential(String id, String name, String avatarURL, String password) {
-    return _blink.BlinkLocalCredential.instance.constructorCallback_4_(id, name, avatarURL, password);
+    return wrap_jso(_blink.BlinkLocalCredential.instance.constructorCallback_4_(id, name, avatarURL, password));
   }
 
+
+  static LocalCredential internalCreateLocalCredential() {
+    return new LocalCredential._internalWrap();
+  }
+
+  factory LocalCredential._internalWrap() {
+    return new LocalCredential.internal_();
+  }
+
+  LocalCredential.internal_() : super.internal_();
+
+
   @DomName('LocalCredential.password')
   @DocsEditable()
   @Experimental() // untriaged
@@ -21081,6 +24035,21 @@
   // To suppress missing implicit constructor warnings.
   factory Location._() { throw new UnsupportedError("Not supported"); }
 
+  static Location internalCreateLocation() {
+    return new Location._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Location._internalWrap() {
+    return new Location.internal_();
+  }
+
+  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
@@ -21092,7 +24061,7 @@
   
   @DomName('Location.hash')
   @DocsEditable()
-  void set hash(String value) => _blink.BlinkLocation.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkLocation.instance.hash_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.host')
   @DocsEditable()
@@ -21100,7 +24069,7 @@
   
   @DomName('Location.host')
   @DocsEditable()
-  void set host(String value) => _blink.BlinkLocation.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkLocation.instance.host_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.hostname')
   @DocsEditable()
@@ -21108,7 +24077,7 @@
   
   @DomName('Location.hostname')
   @DocsEditable()
-  void set hostname(String value) => _blink.BlinkLocation.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkLocation.instance.hostname_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.href')
   @DocsEditable()
@@ -21116,7 +24085,7 @@
   
   @DomName('Location.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkLocation.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkLocation.instance.href_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.origin')
   @DocsEditable()
@@ -21130,7 +24099,7 @@
   
   @DomName('Location.pathname')
   @DocsEditable()
-  void set pathname(String value) => _blink.BlinkLocation.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkLocation.instance.pathname_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.port')
   @DocsEditable()
@@ -21138,7 +24107,7 @@
   
   @DomName('Location.port')
   @DocsEditable()
-  void set port(String value) => _blink.BlinkLocation.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkLocation.instance.port_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.protocol')
   @DocsEditable()
@@ -21146,7 +24115,7 @@
   
   @DomName('Location.protocol')
   @DocsEditable()
-  void set protocol(String value) => _blink.BlinkLocation.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkLocation.instance.protocol_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.search')
   @DocsEditable()
@@ -21154,7 +24123,7 @@
   
   @DomName('Location.search')
   @DocsEditable()
-  void set search(String value) => _blink.BlinkLocation.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkLocation.instance.search_Setter_(unwrap_jso(this), value);
   
   @DomName('Location.assign')
   @DocsEditable()
@@ -21212,6 +24181,18 @@
   @DomName('HTMLMapElement.HTMLMapElement')
   @DocsEditable()
   factory MapElement() => document.createElement("map");
+
+
+  static MapElement internalCreateMapElement() {
+    return new MapElement._internalWrap();
+  }
+
+  factory MapElement._internalWrap() {
+    return new MapElement.internal_();
+  }
+
+  MapElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -21221,7 +24202,7 @@
 
   @DomName('HTMLMapElement.areas')
   @DocsEditable()
-  List<Node> get areas => wrap_jso_list(_blink.BlinkHTMLMapElement.instance.areas_Getter_(unwrap_jso(this)));
+  List<Node> get areas => wrap_jso(_blink.BlinkHTMLMapElement.instance.areas_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLMapElement.name')
   @DocsEditable()
@@ -21229,7 +24210,7 @@
   
   @DomName('HTMLMapElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLMapElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLMapElement.instance.name_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21250,9 +24231,21 @@
   @DomName('MediaController.MediaController')
   @DocsEditable()
   factory MediaController() {
-    return _blink.BlinkMediaController.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkMediaController.instance.constructorCallback_0_());
   }
 
+
+  static MediaController internalCreateMediaController() {
+    return new MediaController._internalWrap();
+  }
+
+  factory MediaController._internalWrap() {
+    return new MediaController.internal_();
+  }
+
+  MediaController.internal_() : super.internal_();
+
+
   @DomName('MediaController.buffered')
   @DocsEditable()
   TimeRanges get buffered => wrap_jso(_blink.BlinkMediaController.instance.buffered_Getter_(unwrap_jso(this)));
@@ -21263,7 +24256,7 @@
   
   @DomName('MediaController.currentTime')
   @DocsEditable()
-  void set currentTime(num value) => _blink.BlinkMediaController.instance.currentTime_Setter_(unwrap_jso(this), value);
+  set currentTime(num value) => _blink.BlinkMediaController.instance.currentTime_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaController.defaultPlaybackRate')
   @DocsEditable()
@@ -21271,11 +24264,11 @@
   
   @DomName('MediaController.defaultPlaybackRate')
   @DocsEditable()
-  void set defaultPlaybackRate(num value) => _blink.BlinkMediaController.instance.defaultPlaybackRate_Setter_(unwrap_jso(this), value);
+  set defaultPlaybackRate(num value) => _blink.BlinkMediaController.instance.defaultPlaybackRate_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaController.duration')
   @DocsEditable()
-  double get duration => _blink.BlinkMediaController.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkMediaController.instance.duration_Getter_(unwrap_jso(this));
   
   @DomName('MediaController.muted')
   @DocsEditable()
@@ -21283,7 +24276,7 @@
   
   @DomName('MediaController.muted')
   @DocsEditable()
-  void set muted(bool value) => _blink.BlinkMediaController.instance.muted_Setter_(unwrap_jso(this), value);
+  set muted(bool value) => _blink.BlinkMediaController.instance.muted_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaController.paused')
   @DocsEditable()
@@ -21295,7 +24288,7 @@
   
   @DomName('MediaController.playbackRate')
   @DocsEditable()
-  void set playbackRate(num value) => _blink.BlinkMediaController.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkMediaController.instance.playbackRate_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaController.playbackState')
   @DocsEditable()
@@ -21315,7 +24308,7 @@
   
   @DomName('MediaController.volume')
   @DocsEditable()
-  void set volume(num value) => _blink.BlinkMediaController.instance.volume_Setter_(unwrap_jso(this), value);
+  set volume(num value) => _blink.BlinkMediaController.instance.volume_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaController.pause')
   @DocsEditable()
@@ -21344,6 +24337,21 @@
   // To suppress missing implicit constructor warnings.
   factory MediaDeviceInfo._() { throw new UnsupportedError("Not supported"); }
 
+  static MediaDeviceInfo internalCreateMediaDeviceInfo() {
+    return new MediaDeviceInfo._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MediaDeviceInfo._internalWrap() {
+    return new MediaDeviceInfo.internal_();
+  }
+
+  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
@@ -21444,6 +24452,18 @@
   @Experimental()
   // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded
   static const EventStreamProvider<MediaKeyEvent> needKeyEvent = const EventStreamProvider<MediaKeyEvent>('webkitneedkey');
+
+
+  static MediaElement internalCreateMediaElement() {
+    return new MediaElement._internalWrap();
+  }
+
+  factory MediaElement._internalWrap() {
+    return new MediaElement.internal_();
+  }
+
+  MediaElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -21498,7 +24518,7 @@
   
   @DomName('HTMLMediaElement.autoplay')
   @DocsEditable()
-  void set autoplay(bool value) => _blink.BlinkHTMLMediaElement.instance.autoplay_Setter_(unwrap_jso(this), value);
+  set autoplay(bool value) => _blink.BlinkHTMLMediaElement.instance.autoplay_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.buffered')
   @DocsEditable()
@@ -21510,7 +24530,7 @@
   
   @DomName('HTMLMediaElement.controller')
   @DocsEditable()
-  void set controller(MediaController value) => _blink.BlinkHTMLMediaElement.instance.controller_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set controller(MediaController value) => _blink.BlinkHTMLMediaElement.instance.controller_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('HTMLMediaElement.controls')
   @DocsEditable()
@@ -21518,7 +24538,7 @@
   
   @DomName('HTMLMediaElement.controls')
   @DocsEditable()
-  void set controls(bool value) => _blink.BlinkHTMLMediaElement.instance.controls_Setter_(unwrap_jso(this), value);
+  set controls(bool value) => _blink.BlinkHTMLMediaElement.instance.controls_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.crossOrigin')
   @DocsEditable()
@@ -21528,7 +24548,7 @@
   @DomName('HTMLMediaElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  void set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.currentSrc')
   @DocsEditable()
@@ -21540,7 +24560,7 @@
   
   @DomName('HTMLMediaElement.currentTime')
   @DocsEditable()
-  void set currentTime(num value) => _blink.BlinkHTMLMediaElement.instance.currentTime_Setter_(unwrap_jso(this), value);
+  set currentTime(num value) => _blink.BlinkHTMLMediaElement.instance.currentTime_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.defaultMuted')
   @DocsEditable()
@@ -21548,7 +24568,7 @@
   
   @DomName('HTMLMediaElement.defaultMuted')
   @DocsEditable()
-  void set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Setter_(unwrap_jso(this), value);
+  set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.defaultPlaybackRate')
   @DocsEditable()
@@ -21556,11 +24576,11 @@
   
   @DomName('HTMLMediaElement.defaultPlaybackRate')
   @DocsEditable()
-  void set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Setter_(unwrap_jso(this), value);
+  set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.duration')
   @DocsEditable()
-  double get duration => _blink.BlinkHTMLMediaElement.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkHTMLMediaElement.instance.duration_Getter_(unwrap_jso(this));
   
   @DomName('HTMLMediaElement.ended')
   @DocsEditable()
@@ -21578,7 +24598,7 @@
   @DomName('HTMLMediaElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLMediaElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLMediaElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.loop')
   @DocsEditable()
@@ -21586,7 +24606,7 @@
   
   @DomName('HTMLMediaElement.loop')
   @DocsEditable()
-  void set loop(bool value) => _blink.BlinkHTMLMediaElement.instance.loop_Setter_(unwrap_jso(this), value);
+  set loop(bool value) => _blink.BlinkHTMLMediaElement.instance.loop_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.mediaGroup')
   @DocsEditable()
@@ -21594,7 +24614,7 @@
   
   @DomName('HTMLMediaElement.mediaGroup')
   @DocsEditable()
-  void set mediaGroup(String value) => _blink.BlinkHTMLMediaElement.instance.mediaGroup_Setter_(unwrap_jso(this), value);
+  set mediaGroup(String value) => _blink.BlinkHTMLMediaElement.instance.mediaGroup_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.mediaKeys')
   @DocsEditable()
@@ -21608,7 +24628,7 @@
   
   @DomName('HTMLMediaElement.muted')
   @DocsEditable()
-  void set muted(bool value) => _blink.BlinkHTMLMediaElement.instance.muted_Setter_(unwrap_jso(this), value);
+  set muted(bool value) => _blink.BlinkHTMLMediaElement.instance.muted_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.networkState')
   @DocsEditable()
@@ -21624,7 +24644,7 @@
   
   @DomName('HTMLMediaElement.playbackRate')
   @DocsEditable()
-  void set playbackRate(num value) => _blink.BlinkHTMLMediaElement.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkHTMLMediaElement.instance.playbackRate_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.played')
   @DocsEditable()
@@ -21636,7 +24656,7 @@
   
   @DomName('HTMLMediaElement.preload')
   @DocsEditable()
-  void set preload(String value) => _blink.BlinkHTMLMediaElement.instance.preload_Setter_(unwrap_jso(this), value);
+  set preload(String value) => _blink.BlinkHTMLMediaElement.instance.preload_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.readyState')
   @DocsEditable()
@@ -21656,7 +24676,7 @@
   
   @DomName('HTMLMediaElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLMediaElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLMediaElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.textTracks')
   @DocsEditable()
@@ -21675,7 +24695,7 @@
   
   @DomName('HTMLMediaElement.volume')
   @DocsEditable()
-  void set volume(num value) => _blink.BlinkHTMLMediaElement.instance.volume_Setter_(unwrap_jso(this), value);
+  set volume(num value) => _blink.BlinkHTMLMediaElement.instance.volume_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMediaElement.webkitAudioDecodedByteCount')
   @DocsEditable()
@@ -21725,7 +24745,7 @@
   @DomName('HTMLMediaElement.setMediaKeys')
   @DocsEditable()
   @Experimental() // untriaged
-  Future setMediaKeys(MediaKeys mediaKeys) => _blink.BlinkHTMLMediaElement.instance.setMediaKeys_Callback_1_(unwrap_jso(this), unwrap_jso(mediaKeys));
+  Future setMediaKeys(MediaKeys mediaKeys) => wrap_jso(_blink.BlinkHTMLMediaElement.instance.setMediaKeys_Callback_1_(unwrap_jso(this), unwrap_jso(mediaKeys)));
   
   void addKey(String keySystem, Uint8List key, [Uint8List initData, String sessionId]) {
     if (initData != null) {
@@ -21796,6 +24816,21 @@
   // To suppress missing implicit constructor warnings.
   factory MediaError._() { throw new UnsupportedError("Not supported"); }
 
+  static MediaError internalCreateMediaError() {
+    return new MediaError._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MediaError._internalWrap() {
+    return new MediaError.internal_();
+  }
+
+  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;
@@ -21838,6 +24873,21 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeyError._() { throw new UnsupportedError("Not supported"); }
 
+  static MediaKeyError internalCreateMediaKeyError() {
+    return new MediaKeyError._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MediaKeyError._internalWrap() {
+    return new MediaKeyError.internal_();
+  }
+
+  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;
@@ -21887,6 +24937,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeyEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaKeyEvent internalCreateMediaKeyEvent() {
+    return new MediaKeyEvent._internalWrap();
+  }
+
+  factory MediaKeyEvent._internalWrap() {
+    return new MediaKeyEvent.internal_();
+  }
+
+  MediaKeyEvent.internal_() : super.internal_();
+
+
   @DomName('MediaKeyEvent.defaultURL')
   @DocsEditable()
   String get defaultUrl => _blink.BlinkMediaKeyEvent.instance.defaultURL_Getter_(unwrap_jso(this));
@@ -21897,7 +24959,7 @@
   
   @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_(unwrap_jso(this));
   
   @DomName('MediaKeyEvent.keySystem')
   @DocsEditable()
@@ -21905,7 +24967,7 @@
   
   @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_(unwrap_jso(this));
   
   @DomName('MediaKeyEvent.sessionId')
   @DocsEditable()
@@ -21931,13 +24993,25 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeyMessageEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaKeyMessageEvent internalCreateMediaKeyMessageEvent() {
+    return new MediaKeyMessageEvent._internalWrap();
+  }
+
+  factory MediaKeyMessageEvent._internalWrap() {
+    return new MediaKeyMessageEvent.internal_();
+  }
+
+  MediaKeyMessageEvent.internal_() : super.internal_();
+
+
   @DomName('MediaKeyMessageEvent.destinationURL')
   @DocsEditable()
   String get destinationUrl => _blink.BlinkMediaKeyMessageEvent.instance.destinationURL_Getter_(unwrap_jso(this));
   
   @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_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21955,6 +25029,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeyNeededEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaKeyNeededEvent internalCreateMediaKeyNeededEvent() {
+    return new MediaKeyNeededEvent._internalWrap();
+  }
+
+  factory MediaKeyNeededEvent._internalWrap() {
+    return new MediaKeyNeededEvent.internal_();
+  }
+
+  MediaKeyNeededEvent.internal_() : super.internal_();
+
+
   @DomName('MediaKeyNeededEvent.contentType')
   @DocsEditable()
   @Experimental() // untriaged
@@ -21962,7 +25048,7 @@
   
   @DomName('MediaKeyNeededEvent.initData')
   @DocsEditable()
-  Uint8List get initData => wrap_jso(_blink.BlinkMediaKeyNeededEvent.instance.initData_Getter_(unwrap_jso(this)));
+  Uint8List get initData => _blink.BlinkMediaKeyNeededEvent.instance.initData_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21980,10 +25066,22 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeySession._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaKeySession internalCreateMediaKeySession() {
+    return new MediaKeySession._internalWrap();
+  }
+
+  factory MediaKeySession._internalWrap() {
+    return new MediaKeySession.internal_();
+  }
+
+  MediaKeySession.internal_() : super.internal_();
+
+
   @DomName('MediaKeySession.closed')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get closed => _blink.BlinkMediaKeySession.instance.closed_Getter_(unwrap_jso(this));
+  Future get closed => wrap_jso(_blink.BlinkMediaKeySession.instance.closed_Getter_(unwrap_jso(this)));
   
   @DomName('MediaKeySession.error')
   @DocsEditable()
@@ -21999,10 +25097,10 @@
   
   Future generateRequest(String initDataType, initData) {
     if ((initData is TypedData) && (initDataType is String)) {
-      return _blink.BlinkMediaKeySession.instance.generateRequest_Callback_2_(unwrap_jso(this), initDataType, unwrap_jso(initData));
+      return wrap_jso(_blink.BlinkMediaKeySession.instance.generateRequest_Callback_2_(unwrap_jso(this), initDataType, unwrap_jso(initData)));
     }
     if ((initData is ByteBuffer) && (initDataType is String)) {
-      return _blink.BlinkMediaKeySession.instance.generateRequest_Callback_2_(unwrap_jso(this), initDataType, unwrap_jso(initData));
+      return wrap_jso(_blink.BlinkMediaKeySession.instance.generateRequest_Callback_2_(unwrap_jso(this), initDataType, unwrap_jso(initData)));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -22010,14 +25108,14 @@
   @DomName('MediaKeySession.release')
   @DocsEditable()
   @Experimental() // untriaged
-  Future release() => _blink.BlinkMediaKeySession.instance.release_Callback_0_(unwrap_jso(this));
+  Future release() => wrap_jso(_blink.BlinkMediaKeySession.instance.release_Callback_0_(unwrap_jso(this)));
   
   Future _update(response) {
     if ((response is TypedData)) {
-      return _blink.BlinkMediaKeySession.instance.update_Callback_1_(unwrap_jso(this), unwrap_jso(response));
+      return wrap_jso(_blink.BlinkMediaKeySession.instance.update_Callback_1_(unwrap_jso(this), unwrap_jso(response)));
     }
     if ((response is ByteBuffer)) {
-      return _blink.BlinkMediaKeySession.instance.update_Callback_1_(unwrap_jso(this), unwrap_jso(response));
+      return wrap_jso(_blink.BlinkMediaKeySession.instance.update_Callback_1_(unwrap_jso(this), unwrap_jso(response)));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -22038,6 +25136,21 @@
   // To suppress missing implicit constructor warnings.
   factory MediaKeys._() { throw new UnsupportedError("Not supported"); }
 
+  static MediaKeys internalCreateMediaKeys() {
+    return new MediaKeys._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MediaKeys._internalWrap() {
+    return new MediaKeys.internal_();
+  }
+
+  MediaKeys.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('MediaKeys.keySystem')
   @DocsEditable()
   String get keySystem => _blink.BlinkMediaKeys.instance.keySystem_Getter_(unwrap_jso(this));
@@ -22045,7 +25158,7 @@
   @DomName('MediaKeys.create')
   @DocsEditable()
   @Experimental() // untriaged
-  static Future create(String keySystem) => _blink.BlinkMediaKeys.instance.create_Callback_1_(keySystem);
+  static Future create(String keySystem) => wrap_jso(_blink.BlinkMediaKeys.instance.create_Callback_1_(keySystem));
   
   MediaKeySession _createSession([String sessionType]) {
     if (sessionType != null) {
@@ -22074,6 +25187,21 @@
   // To suppress missing implicit constructor warnings.
   factory MediaList._() { throw new UnsupportedError("Not supported"); }
 
+  static MediaList internalCreateMediaList() {
+    return new MediaList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MediaList._internalWrap() {
+    return new MediaList.internal_();
+  }
+
+  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));
@@ -22084,7 +25212,7 @@
   
   @DomName('MediaList.mediaText')
   @DocsEditable()
-  void set mediaText(String value) => _blink.BlinkMediaList.instance.mediaText_Setter_(unwrap_jso(this), value);
+  set mediaText(String value) => _blink.BlinkMediaList.instance.mediaText_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaList.appendMedium')
   @DocsEditable()
@@ -22118,6 +25246,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> changeEvent = const EventStreamProvider<Event>('change');
 
+
+  static MediaQueryList internalCreateMediaQueryList() {
+    return new MediaQueryList._internalWrap();
+  }
+
+  factory MediaQueryList._internalWrap() {
+    return new MediaQueryList.internal_();
+  }
+
+  MediaQueryList.internal_() : super.internal_();
+
+
   @DomName('MediaQueryList.matches')
   @DocsEditable()
   bool get matches => _blink.BlinkMediaQueryList.instance.matches_Getter_(unwrap_jso(this));
@@ -22128,7 +25268,7 @@
   
   @DomName('MediaQueryList.addListener')
   @DocsEditable()
-  void addListener(EventListener listener) => _blink.BlinkMediaQueryList.instance.addListener_Callback_1_(unwrap_jso(this), unwrap_jso(listener));
+  void addListener(EventListener listener) => _blink.BlinkMediaQueryList.instance.addListener_Callback_1_(unwrap_jso(this), unwrap_jso((event) => listener(wrap_jso(event))));
   
   @DomName('MediaQueryList.removeListener')
   @DocsEditable()
@@ -22154,6 +25294,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaQueryListEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaQueryListEvent internalCreateMediaQueryListEvent() {
+    return new MediaQueryListEvent._internalWrap();
+  }
+
+  factory MediaQueryListEvent._internalWrap() {
+    return new MediaQueryListEvent.internal_();
+  }
+
+  MediaQueryListEvent.internal_() : super.internal_();
+
+
   @DomName('MediaQueryListEvent.matches')
   @DocsEditable()
   @Experimental() // untriaged
@@ -22185,9 +25337,21 @@
   @DomName('MediaSource.MediaSource')
   @DocsEditable()
   factory MediaSource() {
-    return _blink.BlinkMediaSource.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkMediaSource.instance.constructorCallback_0_());
   }
 
+
+  static MediaSource internalCreateMediaSource() {
+    return new MediaSource._internalWrap();
+  }
+
+  factory MediaSource._internalWrap() {
+    return new MediaSource.internal_();
+  }
+
+  MediaSource.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -22201,7 +25365,7 @@
   
   @DomName('MediaSource.duration')
   @DocsEditable()
-  void set duration(num value) => _blink.BlinkMediaSource.instance.duration_Setter_(unwrap_jso(this), value);
+  set duration(num value) => _blink.BlinkMediaSource.instance.duration_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaSource.readyState')
   @DocsEditable()
@@ -22280,17 +25444,29 @@
   @DocsEditable()
   factory MediaStream([stream_OR_tracks]) {
     if (stream_OR_tracks == null) {
-      return _blink.BlinkMediaStream.instance.constructorCallback_0_();
+      return wrap_jso(_blink.BlinkMediaStream.instance.constructorCallback_0_());
     }
     if ((stream_OR_tracks is MediaStream || stream_OR_tracks == null)) {
-      return _blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks);
+      return wrap_jso(_blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks));
     }
     if ((stream_OR_tracks is List<MediaStreamTrack> || stream_OR_tracks == null)) {
-      return _blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks);
+      return wrap_jso(_blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+
+  static MediaStream internalCreateMediaStream() {
+    return new MediaStream._internalWrap();
+  }
+
+  factory MediaStream._internalWrap() {
+    return new MediaStream.internal_();
+  }
+
+  MediaStream.internal_() : super.internal_();
+
+
   @DomName('MediaStream.ended')
   @DocsEditable()
   bool get ended => _blink.BlinkMediaStream.instance.ended_Getter_(unwrap_jso(this));
@@ -22315,7 +25491,7 @@
   
   @DomName('MediaStream.getAudioTracks')
   @DocsEditable()
-  List<MediaStreamTrack> getAudioTracks() => _blink.BlinkMediaStream.instance.getAudioTracks_Callback_0_(unwrap_jso(this));
+  List<MediaStreamTrack> getAudioTracks() => wrap_jso(_blink.BlinkMediaStream.instance.getAudioTracks_Callback_0_(unwrap_jso(this)));
   
   @DomName('MediaStream.getTrackById')
   @DocsEditable()
@@ -22324,11 +25500,11 @@
   @DomName('MediaStream.getTracks')
   @DocsEditable()
   @Experimental() // untriaged
-  List<MediaStreamTrack> getTracks() => _blink.BlinkMediaStream.instance.getTracks_Callback_0_(unwrap_jso(this));
+  List<MediaStreamTrack> getTracks() => wrap_jso(_blink.BlinkMediaStream.instance.getTracks_Callback_0_(unwrap_jso(this)));
   
   @DomName('MediaStream.getVideoTracks')
   @DocsEditable()
-  List<MediaStreamTrack> getVideoTracks() => _blink.BlinkMediaStream.instance.getVideoTracks_Callback_0_(unwrap_jso(this));
+  List<MediaStreamTrack> getVideoTracks() => wrap_jso(_blink.BlinkMediaStream.instance.getVideoTracks_Callback_0_(unwrap_jso(this)));
   
   @DomName('MediaStream.removeTrack')
   @DocsEditable()
@@ -22379,6 +25555,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaStreamEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaStreamEvent internalCreateMediaStreamEvent() {
+    return new MediaStreamEvent._internalWrap();
+  }
+
+  factory MediaStreamEvent._internalWrap() {
+    return new MediaStreamEvent.internal_();
+  }
+
+  MediaStreamEvent.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -22433,13 +25621,25 @@
   @DocsEditable()
   static const EventStreamProvider<Event> unmuteEvent = const EventStreamProvider<Event>('unmute');
 
+
+  static MediaStreamTrack internalCreateMediaStreamTrack() {
+    return new MediaStreamTrack._internalWrap();
+  }
+
+  factory MediaStreamTrack._internalWrap() {
+    return new MediaStreamTrack.internal_();
+  }
+
+  MediaStreamTrack.internal_() : super.internal_();
+
+
   @DomName('MediaStreamTrack.enabled')
   @DocsEditable()
   bool get enabled => _blink.BlinkMediaStreamTrack.instance.enabled_Getter_(unwrap_jso(this));
   
   @DomName('MediaStreamTrack.enabled')
   @DocsEditable()
-  void set enabled(bool value) => _blink.BlinkMediaStreamTrack.instance.enabled_Setter_(unwrap_jso(this), value);
+  set enabled(bool value) => _blink.BlinkMediaStreamTrack.instance.enabled_Setter_(unwrap_jso(this), value);
   
   @DomName('MediaStreamTrack.id')
   @DocsEditable()
@@ -22470,7 +25670,7 @@
   @DomName('MediaStreamTrack.getSources')
   @DocsEditable()
   @Experimental() // untriaged
-  static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.instance.getSources_Callback_1_(unwrap_jso(callback));
+  static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.instance.getSources_Callback_1_(unwrap_jso((sources) => callback(sources)));
   
   static Future<List<SourceInfo>> getSources() {
     var completer = new Completer<List<SourceInfo>>();
@@ -22516,6 +25716,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaStreamTrackEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaStreamTrackEvent internalCreateMediaStreamTrackEvent() {
+    return new MediaStreamTrackEvent._internalWrap();
+  }
+
+  factory MediaStreamTrackEvent._internalWrap() {
+    return new MediaStreamTrackEvent.internal_();
+  }
+
+  MediaStreamTrackEvent.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -22548,6 +25760,21 @@
   // To suppress missing implicit constructor warnings.
   factory MemoryInfo._() { throw new UnsupportedError("Not supported"); }
 
+  static MemoryInfo internalCreateMemoryInfo() {
+    return new MemoryInfo._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MemoryInfo._internalWrap() {
+    return new MemoryInfo.internal_();
+  }
+
+  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));
@@ -22587,6 +25814,18 @@
   @DomName('HTMLMenuElement.HTMLMenuElement')
   @DocsEditable()
   factory MenuElement() => document.createElement("menu");
+
+
+  static MenuElement internalCreateMenuElement() {
+    return new MenuElement._internalWrap();
+  }
+
+  factory MenuElement._internalWrap() {
+    return new MenuElement.internal_();
+  }
+
+  MenuElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -22602,7 +25841,7 @@
   @DomName('HTMLMenuElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  void set label(String value) => _blink.BlinkHTMLMenuElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLMenuElement.instance.label_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMenuElement.type')
   @DocsEditable()
@@ -22612,7 +25851,7 @@
   @DomName('HTMLMenuElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  void set type(String value) => _blink.BlinkHTMLMenuElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLMenuElement.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22628,6 +25867,18 @@
 class MenuItemElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory MenuItemElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static MenuItemElement internalCreateMenuItemElement() {
+    return new MenuItemElement._internalWrap();
+  }
+
+  factory MenuItemElement._internalWrap() {
+    return new MenuItemElement.internal_();
+  }
+
+  MenuItemElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -22643,7 +25894,7 @@
   @DomName('HTMLMenuItemElement.checked')
   @DocsEditable()
   @Experimental() // untriaged
-  void set checked(bool value) => _blink.BlinkHTMLMenuItemElement.instance.checked_Setter_(unwrap_jso(this), value);
+  set checked(bool value) => _blink.BlinkHTMLMenuItemElement.instance.checked_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMenuItemElement.default')
   @DocsEditable()
@@ -22653,7 +25904,7 @@
   @DomName('HTMLMenuItemElement.default')
   @DocsEditable()
   @Experimental() // untriaged
-  void set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.instance.default_Setter_(unwrap_jso(this), value);
+  set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.instance.default_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMenuItemElement.disabled')
   @DocsEditable()
@@ -22663,7 +25914,7 @@
   @DomName('HTMLMenuItemElement.disabled')
   @DocsEditable()
   @Experimental() // untriaged
-  void set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMenuItemElement.label')
   @DocsEditable()
@@ -22673,7 +25924,7 @@
   @DomName('HTMLMenuItemElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  void set label(String value) => _blink.BlinkHTMLMenuItemElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLMenuItemElement.instance.label_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMenuItemElement.type')
   @DocsEditable()
@@ -22683,7 +25934,7 @@
   @DomName('HTMLMenuItemElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  void set type(String value) => _blink.BlinkHTMLMenuItemElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLMenuItemElement.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22700,6 +25951,21 @@
   // To suppress missing implicit constructor warnings.
   factory MessageChannel._() { throw new UnsupportedError("Not supported"); }
 
+  static MessageChannel internalCreateMessageChannel() {
+    return new MessageChannel._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MessageChannel._internalWrap() {
+    return new MessageChannel.internal_();
+  }
+
+  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)));
@@ -22733,9 +25999,21 @@
   // To suppress missing implicit constructor warnings.
   factory MessageEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MessageEvent internalCreateMessageEvent() {
+    return new MessageEvent._internalWrap();
+  }
+
+  factory MessageEvent._internalWrap() {
+    return new MessageEvent.internal_();
+  }
+
+  MessageEvent.internal_() : super.internal_();
+
+
   @DomName('MessageEvent.data')
   @DocsEditable()
-  Object get data => _blink.BlinkMessageEvent.instance.data_Getter_(unwrap_jso(this));
+  Object get data => wrap_jso(_blink.BlinkMessageEvent.instance.data_Getter_(unwrap_jso(this)));
   
   @DomName('MessageEvent.lastEventId')
   @DocsEditable()
@@ -22779,13 +26057,25 @@
   @DocsEditable()
   static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message');
 
+
+  static MessagePort internalCreateMessagePort() {
+    return new MessagePort._internalWrap();
+  }
+
+  factory MessagePort._internalWrap() {
+    return new MessagePort.internal_();
+  }
+
+  MessagePort.internal_() : super.internal_();
+
+
   @DomName('MessagePort.close')
   @DocsEditable()
   void close() => _blink.BlinkMessagePort.instance.close_Callback_0_(unwrap_jso(this));
   
   @DomName('MessagePort.postMessage')
   @DocsEditable()
-  void postMessage(Object message, [List<MessagePort> transfer]) => _blink.BlinkMessagePort.instance.postMessage_Callback_2_(unwrap_jso(this), message, transfer);
+  void postMessage(Object message, [List<MessagePort> transfer]) => _blink.BlinkMessagePort.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
   
   @DomName('MessagePort.start')
   @DocsEditable()
@@ -22813,6 +26103,18 @@
   @DomName('HTMLMetaElement.HTMLMetaElement')
   @DocsEditable()
   factory MetaElement() => document.createElement("meta");
+
+
+  static MetaElement internalCreateMetaElement() {
+    return new MetaElement._internalWrap();
+  }
+
+  factory MetaElement._internalWrap() {
+    return new MetaElement.internal_();
+  }
+
+  MetaElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -22826,7 +26128,7 @@
   
   @DomName('HTMLMetaElement.content')
   @DocsEditable()
-  void set content(String value) => _blink.BlinkHTMLMetaElement.instance.content_Setter_(unwrap_jso(this), value);
+  set content(String value) => _blink.BlinkHTMLMetaElement.instance.content_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMetaElement.httpEquiv')
   @DocsEditable()
@@ -22834,7 +26136,7 @@
   
   @DomName('HTMLMetaElement.httpEquiv')
   @DocsEditable()
-  void set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Setter_(unwrap_jso(this), value);
+  set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMetaElement.name')
   @DocsEditable()
@@ -22842,7 +26144,7 @@
   
   @DomName('HTMLMetaElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLMetaElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLMetaElement.instance.name_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22860,6 +26162,21 @@
   // To suppress missing implicit constructor warnings.
   factory Metadata._() { throw new UnsupportedError("Not supported"); }
 
+  static Metadata internalCreateMetadata() {
+    return new Metadata._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Metadata._internalWrap() {
+    return new Metadata.internal_();
+  }
+
+  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));
@@ -22900,6 +26217,18 @@
   @DomName('HTMLMeterElement.HTMLMeterElement')
   @DocsEditable()
   factory MeterElement() => document.createElement("meter");
+
+
+  static MeterElement internalCreateMeterElement() {
+    return new MeterElement._internalWrap();
+  }
+
+  factory MeterElement._internalWrap() {
+    return new MeterElement.internal_();
+  }
+
+  MeterElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -22916,12 +26245,12 @@
   
   @DomName('HTMLMeterElement.high')
   @DocsEditable()
-  void set high(num value) => _blink.BlinkHTMLMeterElement.instance.high_Setter_(unwrap_jso(this), value);
+  set high(num value) => _blink.BlinkHTMLMeterElement.instance.high_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMeterElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLMeterElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLMeterElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLMeterElement.low')
   @DocsEditable()
@@ -22929,7 +26258,7 @@
   
   @DomName('HTMLMeterElement.low')
   @DocsEditable()
-  void set low(num value) => _blink.BlinkHTMLMeterElement.instance.low_Setter_(unwrap_jso(this), value);
+  set low(num value) => _blink.BlinkHTMLMeterElement.instance.low_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMeterElement.max')
   @DocsEditable()
@@ -22937,7 +26266,7 @@
   
   @DomName('HTMLMeterElement.max')
   @DocsEditable()
-  void set max(num value) => _blink.BlinkHTMLMeterElement.instance.max_Setter_(unwrap_jso(this), value);
+  set max(num value) => _blink.BlinkHTMLMeterElement.instance.max_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMeterElement.min')
   @DocsEditable()
@@ -22945,7 +26274,7 @@
   
   @DomName('HTMLMeterElement.min')
   @DocsEditable()
-  void set min(num value) => _blink.BlinkHTMLMeterElement.instance.min_Setter_(unwrap_jso(this), value);
+  set min(num value) => _blink.BlinkHTMLMeterElement.instance.min_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMeterElement.optimum')
   @DocsEditable()
@@ -22953,7 +26282,7 @@
   
   @DomName('HTMLMeterElement.optimum')
   @DocsEditable()
-  void set optimum(num value) => _blink.BlinkHTMLMeterElement.instance.optimum_Setter_(unwrap_jso(this), value);
+  set optimum(num value) => _blink.BlinkHTMLMeterElement.instance.optimum_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLMeterElement.value')
   @DocsEditable()
@@ -22961,7 +26290,7 @@
   
   @DomName('HTMLMeterElement.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkHTMLMeterElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkHTMLMeterElement.instance.value_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22999,6 +26328,18 @@
   @DocsEditable()
   static const EventStreamProvider<MidiConnectionEvent> disconnectEvent = const EventStreamProvider<MidiConnectionEvent>('disconnect');
 
+
+  static MidiAccess internalCreateMidiAccess() {
+    return new MidiAccess._internalWrap();
+  }
+
+  factory MidiAccess._internalWrap() {
+    return new MidiAccess.internal_();
+  }
+
+  MidiAccess.internal_() : super.internal_();
+
+
   @DomName('MIDIAccess.inputs')
   @DocsEditable()
   MidiInputMap get inputs => wrap_jso(_blink.BlinkMIDIAccess.instance.inputs_Getter_(unwrap_jso(this)));
@@ -23038,6 +26379,18 @@
   // To suppress missing implicit constructor warnings.
   factory MidiConnectionEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MidiConnectionEvent internalCreateMidiConnectionEvent() {
+    return new MidiConnectionEvent._internalWrap();
+  }
+
+  factory MidiConnectionEvent._internalWrap() {
+    return new MidiConnectionEvent.internal_();
+  }
+
+  MidiConnectionEvent.internal_() : super.internal_();
+
+
   @DomName('MIDIConnectionEvent.port')
   @DocsEditable()
   MidiPort get port => wrap_jso(_blink.BlinkMIDIConnectionEvent.instance.port_Getter_(unwrap_jso(this)));
@@ -23068,6 +26421,18 @@
   @DocsEditable()
   static const EventStreamProvider<MidiMessageEvent> midiMessageEvent = const EventStreamProvider<MidiMessageEvent>('midimessage');
 
+
+  static MidiInput internalCreateMidiInput() {
+    return new MidiInput._internalWrap();
+  }
+
+  factory MidiInput._internalWrap() {
+    return new MidiInput.internal_();
+  }
+
+  MidiInput.internal_() : super.internal_();
+
+
   /// Stream of `midimessage` events handled by this [MidiInput].
   @DomName('MIDIInput.onmidimessage')
   @DocsEditable()
@@ -23088,6 +26453,21 @@
   // To suppress missing implicit constructor warnings.
   factory MidiInputMap._() { throw new UnsupportedError("Not supported"); }
 
+  static MidiInputMap internalCreateMidiInputMap() {
+    return new MidiInputMap._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MidiInputMap._internalWrap() {
+    return new MidiInputMap.internal_();
+  }
+
+  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
@@ -23096,7 +26476,7 @@
   @DomName('MIDIInputMap.entries')
   @DocsEditable()
   @Experimental() // untriaged
-  DomIterator entries() => _blink.BlinkMIDIInputMap.instance.entries_Callback_0_(unwrap_jso(this));
+  DomIterator entries() => wrap_jso(_blink.BlinkMIDIInputMap.instance.entries_Callback_0_(unwrap_jso(this)));
   
   @DomName('MIDIInputMap.get')
   @DocsEditable()
@@ -23111,12 +26491,12 @@
   @DomName('MIDIInputMap.keys')
   @DocsEditable()
   @Experimental() // untriaged
-  DomIterator keys() => _blink.BlinkMIDIInputMap.instance.keys_Callback_0_(unwrap_jso(this));
+  DomIterator keys() => wrap_jso(_blink.BlinkMIDIInputMap.instance.keys_Callback_0_(unwrap_jso(this)));
   
   @DomName('MIDIInputMap.values')
   @DocsEditable()
   @Experimental() // untriaged
-  DomIterator values() => _blink.BlinkMIDIInputMap.instance.values_Callback_0_(unwrap_jso(this));
+  DomIterator values() => wrap_jso(_blink.BlinkMIDIInputMap.instance.values_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23134,13 +26514,25 @@
   // To suppress missing implicit constructor warnings.
   factory MidiMessageEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MidiMessageEvent internalCreateMidiMessageEvent() {
+    return new MidiMessageEvent._internalWrap();
+  }
+
+  factory MidiMessageEvent._internalWrap() {
+    return new MidiMessageEvent.internal_();
+  }
+
+  MidiMessageEvent.internal_() : super.internal_();
+
+
   @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_(unwrap_jso(this));
   
   @DomName('MIDIMessageEvent.receivedTime')
   @DocsEditable()
-  double get receivedTime => _blink.BlinkMIDIMessageEvent.instance.receivedTime_Getter_(unwrap_jso(this));
+  num get receivedTime => _blink.BlinkMIDIMessageEvent.instance.receivedTime_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23158,6 +26550,18 @@
   // To suppress missing implicit constructor warnings.
   factory MidiOutput._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MidiOutput internalCreateMidiOutput() {
+    return new MidiOutput._internalWrap();
+  }
+
+  factory MidiOutput._internalWrap() {
+    return new MidiOutput.internal_();
+  }
+
+  MidiOutput.internal_() : super.internal_();
+
+
   void send(Uint8List data, [num timestamp]) {
     if (timestamp != null) {
       _blink.BlinkMIDIOutput.instance.send_Callback_2_(unwrap_jso(this), data, timestamp);
@@ -23182,6 +26586,21 @@
   // To suppress missing implicit constructor warnings.
   factory MidiOutputMap._() { throw new UnsupportedError("Not supported"); }
 
+  static MidiOutputMap internalCreateMidiOutputMap() {
+    return new MidiOutputMap._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MidiOutputMap._internalWrap() {
+    return new MidiOutputMap.internal_();
+  }
+
+  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
@@ -23190,7 +26609,7 @@
   @DomName('MIDIOutputMap.entries')
   @DocsEditable()
   @Experimental() // untriaged
-  DomIterator entries() => _blink.BlinkMIDIOutputMap.instance.entries_Callback_0_(unwrap_jso(this));
+  DomIterator entries() => wrap_jso(_blink.BlinkMIDIOutputMap.instance.entries_Callback_0_(unwrap_jso(this)));
   
   @DomName('MIDIOutputMap.get')
   @DocsEditable()
@@ -23205,12 +26624,12 @@
   @DomName('MIDIOutputMap.keys')
   @DocsEditable()
   @Experimental() // untriaged
-  DomIterator keys() => _blink.BlinkMIDIOutputMap.instance.keys_Callback_0_(unwrap_jso(this));
+  DomIterator keys() => wrap_jso(_blink.BlinkMIDIOutputMap.instance.keys_Callback_0_(unwrap_jso(this)));
   
   @DomName('MIDIOutputMap.values')
   @DocsEditable()
   @Experimental() // untriaged
-  DomIterator values() => _blink.BlinkMIDIOutputMap.instance.values_Callback_0_(unwrap_jso(this));
+  DomIterator values() => wrap_jso(_blink.BlinkMIDIOutputMap.instance.values_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23238,6 +26657,18 @@
   @DocsEditable()
   static const EventStreamProvider<MidiConnectionEvent> disconnectEvent = const EventStreamProvider<MidiConnectionEvent>('disconnect');
 
+
+  static MidiPort internalCreateMidiPort() {
+    return new MidiPort._internalWrap();
+  }
+
+  factory MidiPort._internalWrap() {
+    return new MidiPort.internal_();
+  }
+
+  MidiPort.internal_() : super.internal_();
+
+
   @DomName('MIDIPort.id')
   @DocsEditable()
   String get id => _blink.BlinkMIDIPort.instance.id_Getter_(unwrap_jso(this));
@@ -23278,6 +26709,21 @@
   // To suppress missing implicit constructor warnings.
   factory MimeType._() { throw new UnsupportedError("Not supported"); }
 
+  static MimeType internalCreateMimeType() {
+    return new MimeType._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MimeType._internalWrap() {
+    return new MimeType.internal_();
+  }
+
+  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));
@@ -23305,10 +26751,25 @@
 @DocsEditable()
 @DomName('MimeTypeArray')
 @Experimental() // non-standard
-class MimeTypeArray extends NativeFieldWrapperClass2 with ListMixin<MimeType>, ImmutableListMixin<MimeType> implements List<MimeType> {
+class MimeTypeArray extends JsoNativeFieldWrapper with ListMixin<MimeType>, ImmutableListMixin<MimeType> implements List<MimeType> {
   // To suppress missing implicit constructor warnings.
   factory MimeTypeArray._() { throw new UnsupportedError("Not supported"); }
 
+  static MimeTypeArray internalCreateMimeTypeArray() {
+    return new MimeTypeArray._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MimeTypeArray._internalWrap() {
+    return new MimeTypeArray.internal_();
+  }
+
+  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));
@@ -23320,7 +26781,7 @@
   }
 
   MimeType _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkMimeTypeArray.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, MimeType value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -23328,7 +26789,7 @@
   // MimeType is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -23385,6 +26846,18 @@
 class ModElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory ModElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static ModElement internalCreateModElement() {
+    return new ModElement._internalWrap();
+  }
+
+  factory ModElement._internalWrap() {
+    return new ModElement.internal_();
+  }
+
+  ModElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -23398,7 +26871,7 @@
   
   @DomName('HTMLModElement.cite')
   @DocsEditable()
-  void set cite(String value) => _blink.BlinkHTMLModElement.instance.cite_Setter_(unwrap_jso(this), value);
+  set cite(String value) => _blink.BlinkHTMLModElement.instance.cite_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLModElement.dateTime')
   @DocsEditable()
@@ -23406,7 +26879,7 @@
   
   @DomName('HTMLModElement.dateTime')
   @DocsEditable()
-  void set dateTime(String value) => _blink.BlinkHTMLModElement.instance.dateTime_Setter_(unwrap_jso(this), value);
+  set dateTime(String value) => _blink.BlinkHTMLModElement.instance.dateTime_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23436,6 +26909,18 @@
   // To suppress missing implicit constructor warnings.
   factory MouseEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MouseEvent internalCreateMouseEvent() {
+    return new MouseEvent._internalWrap();
+  }
+
+  factory MouseEvent._internalWrap() {
+    return new MouseEvent.internal_();
+  }
+
+  MouseEvent.internal_() : super.internal_();
+
+
   @DomName('MouseEvent.altKey')
   @DocsEditable()
   bool get altKey => _blink.BlinkMouseEvent.instance.altKey_Getter_(unwrap_jso(this));
@@ -23615,17 +27100,32 @@
   @DocsEditable()
   factory MutationObserver._(MutationCallback callback) => wrap_jso(_create(callback));
 
+  static MutationObserver internalCreateMutationObserver() {
+    return new MutationObserver._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MutationObserver._internalWrap() {
+    return new MutationObserver.internal_();
+  }
+
+  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));
   
   @DomName('MutationObserver.observe')
   @DocsEditable()
-  void _observe(Node target, Map options) => _blink.BlinkMutationObserver.instance.observe_Callback_2_(unwrap_jso(this), unwrap_jso(target), options);
+  void _observe(Node target, Map options) => _blink.BlinkMutationObserver.instance.observe_Callback_2_(unwrap_jso(this), unwrap_jso(target), convertDartToNative_Dictionary(options));
   
   @DomName('MutationObserver.takeRecords')
   @DocsEditable()
-  List<MutationRecord> takeRecords() => _blink.BlinkMutationObserver.instance.takeRecords_Callback_0_(unwrap_jso(this));
+  List<MutationRecord> takeRecords() => wrap_jso(_blink.BlinkMutationObserver.instance.takeRecords_Callback_0_(unwrap_jso(this)));
   
   /**
    * Checks to see if the mutation observer API is supported on the current
@@ -23635,7 +27135,9 @@
     return true;
   }
   @DocsEditable()
-  static MutationObserver _create(callback) => _blink.BlinkMutationObserver.instance.constructorCallback_1_(callback);
+  static MutationObserver _create(callback) => wrap_jso(_blink.BlinkMutationObserver.instance.constructorCallback_1_((mutations, observer) {
+    callback(mutations, wrap_jso(observer));
+  }));
 
   /**
    * Observes the target for the specified changes.
@@ -23710,9 +27212,24 @@
   // To suppress missing implicit constructor warnings.
   factory MutationRecord._() { throw new UnsupportedError("Not supported"); }
 
+  static MutationRecord internalCreateMutationRecord() {
+    return new MutationRecord._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory MutationRecord._internalWrap() {
+    return new MutationRecord.internal_();
+  }
+
+  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_list(_blink.BlinkMutationRecord.instance.addedNodes_Getter_(unwrap_jso(this)));
+  List<Node> get addedNodes => wrap_jso(_blink.BlinkMutationRecord.instance.addedNodes_Getter_(unwrap_jso(this)));
   
   @DomName('MutationRecord.attributeName')
   @DocsEditable()
@@ -23736,7 +27253,7 @@
   
   @DomName('MutationRecord.removedNodes')
   @DocsEditable()
-  List<Node> get removedNodes => wrap_jso_list(_blink.BlinkMutationRecord.instance.removedNodes_Getter_(unwrap_jso(this)));
+  List<Node> get removedNodes => wrap_jso(_blink.BlinkMutationRecord.instance.removedNodes_Getter_(unwrap_jso(this)));
   
   @DomName('MutationRecord.target')
   @DocsEditable()
@@ -23814,6 +27331,21 @@
   // To suppress missing implicit constructor warnings.
   factory Navigator._() { throw new UnsupportedError("Not supported"); }
 
+  static Navigator internalCreateNavigator() {
+    return new Navigator._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Navigator._internalWrap() {
+    return new Navigator.internal_();
+  }
+
+  Navigator.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('Navigator.connection')
   @DocsEditable()
   @Experimental() // untriaged
@@ -23909,12 +27441,12 @@
   @DomName('Navigator.getBattery')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getBattery() => _blink.BlinkNavigator.instance.getBattery_Callback_0_(unwrap_jso(this));
+  Future getBattery() => wrap_jso(_blink.BlinkNavigator.instance.getBattery_Callback_0_(unwrap_jso(this)));
   
   @DomName('Navigator.getGamepads')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Gamepad> getGamepads() => _blink.BlinkNavigator.instance.getGamepads_Callback_0_(unwrap_jso(this));
+  List<Gamepad> getGamepads() => wrap_jso(_blink.BlinkNavigator.instance.getGamepads_Callback_0_(unwrap_jso(this)));
   
   @DomName('Navigator.getStorageUpdates')
   @DocsEditable()
@@ -23922,11 +27454,6 @@
   @Experimental()
   void getStorageUpdates() => _blink.BlinkNavigator.instance.getStorageUpdates_Callback_0_(unwrap_jso(this));
   
-  @DomName('Navigator.isProtocolHandlerRegistered')
-  @DocsEditable()
-  @Experimental() // untriaged
-  String isProtocolHandlerRegistered(String scheme, String url) => _blink.BlinkNavigator.instance.isProtocolHandlerRegistered_Callback_2_(unwrap_jso(this), scheme, url);
-  
   @DomName('Navigator.registerProtocolHandler')
   @DocsEditable()
   @Unstable()
@@ -23948,16 +27475,11 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('Navigator.unregisterProtocolHandler')
-  @DocsEditable()
-  @Experimental() // untriaged
-  void unregisterProtocolHandler(String scheme, String url) => _blink.BlinkNavigator.instance.unregisterProtocolHandler_Callback_2_(unwrap_jso(this), scheme, url);
-  
   @DomName('Navigator.webkitGetUserMedia')
   @DocsEditable()
   // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#navigatorusermedia
   @Experimental()
-  void _getUserMedia(Map options, _NavigatorUserMediaSuccessCallback successCallback, _NavigatorUserMediaErrorCallback errorCallback) => _blink.BlinkNavigator.instance.webkitGetUserMedia_Callback_3_(unwrap_jso(this), options, unwrap_jso(successCallback), unwrap_jso(errorCallback));
+  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))));
   
   @DomName('Navigator.hardwareConcurrency')
   @DocsEditable()
@@ -24140,6 +27662,21 @@
   // To suppress missing implicit constructor warnings.
   factory NavigatorUserMediaError._() { throw new UnsupportedError("Not supported"); }
 
+  static NavigatorUserMediaError internalCreateNavigatorUserMediaError() {
+    return new NavigatorUserMediaError._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory NavigatorUserMediaError._internalWrap() {
+    return new NavigatorUserMediaError.internal_();
+  }
+
+  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));
@@ -24189,6 +27726,18 @@
   // To suppress missing implicit constructor warnings.
   factory NetworkInformation._() { throw new UnsupportedError("Not supported"); }
 
+
+  static NetworkInformation internalCreateNetworkInformation() {
+    return new NetworkInformation._internalWrap();
+  }
+
+  factory NetworkInformation._internalWrap() {
+    return new NetworkInformation.internal_();
+  }
+
+  NetworkInformation.internal_() : super.internal_();
+
+
   @DomName('NetworkInformation.type')
   @DocsEditable()
   @Experimental() // untriaged
@@ -24291,7 +27840,8 @@
   bool remove(Object object) {
     if (object is! Node) return false;
     Node node = object;
-    if (!identical(_this, node.parentNode)) return false;
+    // We aren't preserving identity of nodes in JSINTEROP mode
+    if (_this != node.parentNode) return false;
     _this._removeChild(node);
     return true;
   }
@@ -24355,7 +27905,7 @@
   // a local copy of childNodes is more efficient.
   int get length => _this.childNodes.length;
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError(
         "Cannot set length on immutable List.");
   }
@@ -24379,7 +27929,7 @@
     return new _ChildNodeListLazy(this);
   }
 
-  void set nodes(Iterable<Node> value) {
+  set nodes(Iterable<Node> value) {
     // Copy list first since we don't want liveness during iteration.
     // TODO(jacobr): there is a better way to do this.
     List copy = new List.from(value);
@@ -24466,10 +28016,22 @@
    */
   @DomName('Node.childNodes')
   @DocsEditable()
-  List<Node> get childNodes => _blink.BlinkNode.instance.childNodes_Getter_(this);
+  List<Node> get childNodes => wrap_jso(_blink.BlinkNode.instance.childNodes_Getter_(unwrap_jso(this)));
   // To suppress missing implicit constructor warnings.
   factory Node._() { throw new UnsupportedError("Not supported"); }
 
+
+  static Node internalCreateNode() {
+    return new Node._internalWrap();
+  }
+
+  factory Node._internalWrap() {
+    return new Node.internal_();
+  }
+
+  Node.internal_() : super.internal_();
+
+
   @DomName('Node.ATTRIBUTE_NODE')
   @DocsEditable()
   static const int ATTRIBUTE_NODE = 2;
@@ -24709,7 +28271,7 @@
    */
   @DomName('Node.textContent')
   @DocsEditable()
-  void set text(String value) => _blink.BlinkNode.instance.textContent_Setter_(unwrap_jso(this), value);
+  set text(String value) => _blink.BlinkNode.instance.textContent_Setter_(unwrap_jso(this), value);
   
   /**
    * Adds a node to the end of the child [nodes] list of this node.
@@ -24801,6 +28363,21 @@
   // To suppress missing implicit constructor warnings.
   factory NodeFilter._() { throw new UnsupportedError("Not supported"); }
 
+  static NodeFilter internalCreateNodeFilter() {
+    return new NodeFilter._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory NodeFilter._internalWrap() {
+    return new NodeFilter.internal_();
+  }
+
+  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;
@@ -24860,6 +28437,21 @@
   // To suppress missing implicit constructor warnings.
   factory NodeIterator._() { throw new UnsupportedError("Not supported"); }
 
+  static NodeIterator internalCreateNodeIterator() {
+    return new NodeIterator._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory NodeIterator._internalWrap() {
+    return new NodeIterator.internal_();
+  }
+
+  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));
@@ -24898,10 +28490,25 @@
 
 @DocsEditable()
 @DomName('NodeList')
-class NodeList extends NativeFieldWrapperClass2 with ListMixin<Node>, ImmutableListMixin<Node> implements List<Node> {
+class NodeList extends JsoNativeFieldWrapper with ListMixin<Node>, ImmutableListMixin<Node> implements List<Node> {
   // To suppress missing implicit constructor warnings.
   factory NodeList._() { throw new UnsupportedError("Not supported"); }
 
+  static NodeList internalCreateNodeList() {
+    return new NodeList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory NodeList._internalWrap() {
+    return new NodeList.internal_();
+  }
+
+  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));
@@ -24913,7 +28520,7 @@
   }
 
   Node _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkNodeList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, Node value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -24921,7 +28528,7 @@
   // Node is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -25025,11 +28632,24 @@
   @DocsEditable()
   static Notification _factoryNotification(String title, [Map options]) {
     if (options != null) {
-      return _blink.BlinkNotification.instance.constructorCallback_2_(title, options);
+      var options_1 = convertDartToNative_Dictionary(options);
+      return wrap_jso(_blink.BlinkNotification.instance.constructorCallback_2_(title, options_1));
     }
-    return _blink.BlinkNotification.instance.constructorCallback_1_(title);
+    return wrap_jso(_blink.BlinkNotification.instance.constructorCallback_1_(title));
   }
 
+
+  static Notification internalCreateNotification() {
+    return new Notification._internalWrap();
+  }
+
+  factory Notification._internalWrap() {
+    return new Notification.internal_();
+  }
+
+  Notification.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -25073,7 +28693,7 @@
   
   static void _requestPermission([_NotificationPermissionCallback callback]) {
     if (callback != null) {
-      _blink.BlinkNotification.instance.requestPermission_Callback_1_(unwrap_jso(callback));
+      _blink.BlinkNotification.instance.requestPermission_Callback_1_(unwrap_jso((permission) => callback(permission)));
       return;
     }
     _blink.BlinkNotification.instance.requestPermission_Callback_0_();
@@ -25135,6 +28755,18 @@
   @DomName('HTMLOListElement.HTMLOListElement')
   @DocsEditable()
   factory OListElement() => document.createElement("ol");
+
+
+  static OListElement internalCreateOListElement() {
+    return new OListElement._internalWrap();
+  }
+
+  factory OListElement._internalWrap() {
+    return new OListElement.internal_();
+  }
+
+  OListElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -25148,7 +28780,7 @@
   
   @DomName('HTMLOListElement.reversed')
   @DocsEditable()
-  void set reversed(bool value) => _blink.BlinkHTMLOListElement.instance.reversed_Setter_(unwrap_jso(this), value);
+  set reversed(bool value) => _blink.BlinkHTMLOListElement.instance.reversed_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOListElement.start')
   @DocsEditable()
@@ -25156,7 +28788,7 @@
   
   @DomName('HTMLOListElement.start')
   @DocsEditable()
-  void set start(int value) => _blink.BlinkHTMLOListElement.instance.start_Setter_(unwrap_jso(this), value);
+  set start(int value) => _blink.BlinkHTMLOListElement.instance.start_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOListElement.type')
   @DocsEditable()
@@ -25164,7 +28796,7 @@
   
   @DomName('HTMLOListElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLOListElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLOListElement.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25187,6 +28819,18 @@
   @DomName('HTMLObjectElement.HTMLObjectElement')
   @DocsEditable()
   factory ObjectElement() => document.createElement("object");
+
+
+  static ObjectElement internalCreateObjectElement() {
+    return new ObjectElement._internalWrap();
+  }
+
+  factory ObjectElement._internalWrap() {
+    return new ObjectElement.internal_();
+  }
+
+  ObjectElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -25203,7 +28847,7 @@
   
   @DomName('HTMLObjectElement.data')
   @DocsEditable()
-  void set data(String value) => _blink.BlinkHTMLObjectElement.instance.data_Setter_(unwrap_jso(this), value);
+  set data(String value) => _blink.BlinkHTMLObjectElement.instance.data_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLObjectElement.form')
   @DocsEditable()
@@ -25215,7 +28859,7 @@
   
   @DomName('HTMLObjectElement.height')
   @DocsEditable()
-  void set height(String value) => _blink.BlinkHTMLObjectElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(String value) => _blink.BlinkHTMLObjectElement.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLObjectElement.integrity')
   @DocsEditable()
@@ -25225,7 +28869,7 @@
   @DomName('HTMLObjectElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLObjectElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLObjectElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLObjectElement.name')
   @DocsEditable()
@@ -25233,7 +28877,7 @@
   
   @DomName('HTMLObjectElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLObjectElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLObjectElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLObjectElement.type')
   @DocsEditable()
@@ -25241,7 +28885,7 @@
   
   @DomName('HTMLObjectElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLObjectElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLObjectElement.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLObjectElement.useMap')
   @DocsEditable()
@@ -25249,7 +28893,7 @@
   
   @DomName('HTMLObjectElement.useMap')
   @DocsEditable()
-  void set useMap(String value) => _blink.BlinkHTMLObjectElement.instance.useMap_Setter_(unwrap_jso(this), value);
+  set useMap(String value) => _blink.BlinkHTMLObjectElement.instance.useMap_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLObjectElement.validationMessage')
   @DocsEditable()
@@ -25265,7 +28909,7 @@
   
   @DomName('HTMLObjectElement.width')
   @DocsEditable()
-  void set width(String value) => _blink.BlinkHTMLObjectElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(String value) => _blink.BlinkHTMLObjectElement.instance.width_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLObjectElement.willValidate')
   @DocsEditable()
@@ -25304,6 +28948,18 @@
   @DomName('HTMLOptGroupElement.HTMLOptGroupElement')
   @DocsEditable()
   factory OptGroupElement() => document.createElement("optgroup");
+
+
+  static OptGroupElement internalCreateOptGroupElement() {
+    return new OptGroupElement._internalWrap();
+  }
+
+  factory OptGroupElement._internalWrap() {
+    return new OptGroupElement.internal_();
+  }
+
+  OptGroupElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -25317,7 +28973,7 @@
   
   @DomName('HTMLOptGroupElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOptGroupElement.label')
   @DocsEditable()
@@ -25325,7 +28981,7 @@
   
   @DomName('HTMLOptGroupElement.label')
   @DocsEditable()
-  void set label(String value) => _blink.BlinkHTMLOptGroupElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLOptGroupElement.instance.label_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -25342,8 +28998,20 @@
   @DomName('HTMLOptionElement.HTMLOptionElement')
   @DocsEditable()
   factory OptionElement._([String data, String value, bool defaultSelected, bool selected]) {
-    return _blink.BlinkHTMLOptionElement.instance.constructorCallback_4_(data, value, defaultSelected, selected);
+    return wrap_jso(_blink.BlinkHTMLOptionElement.instance.constructorCallback_4_(data, value, defaultSelected, selected));
   }
+
+
+  static OptionElement internalCreateOptionElement() {
+    return new OptionElement._internalWrap();
+  }
+
+  factory OptionElement._internalWrap() {
+    return new OptionElement.internal_();
+  }
+
+  OptionElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -25357,7 +29025,7 @@
   
   @DomName('HTMLOptionElement.defaultSelected')
   @DocsEditable()
-  void set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Setter_(unwrap_jso(this), value);
+  set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOptionElement.disabled')
   @DocsEditable()
@@ -25365,7 +29033,7 @@
   
   @DomName('HTMLOptionElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLOptionElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLOptionElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOptionElement.form')
   @DocsEditable()
@@ -25381,7 +29049,7 @@
   
   @DomName('HTMLOptionElement.label')
   @DocsEditable()
-  void set label(String value) => _blink.BlinkHTMLOptionElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLOptionElement.instance.label_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOptionElement.selected')
   @DocsEditable()
@@ -25389,7 +29057,7 @@
   
   @DomName('HTMLOptionElement.selected')
   @DocsEditable()
-  void set selected(bool value) => _blink.BlinkHTMLOptionElement.instance.selected_Setter_(unwrap_jso(this), value);
+  set selected(bool value) => _blink.BlinkHTMLOptionElement.instance.selected_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOptionElement.value')
   @DocsEditable()
@@ -25397,7 +29065,7 @@
   
   @DomName('HTMLOptionElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLOptionElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLOptionElement.instance.value_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25419,6 +29087,18 @@
   @DomName('HTMLOutputElement.HTMLOutputElement')
   @DocsEditable()
   factory OutputElement() => document.createElement("output");
+
+
+  static OutputElement internalCreateOutputElement() {
+    return new OutputElement._internalWrap();
+  }
+
+  factory OutputElement._internalWrap() {
+    return new OutputElement.internal_();
+  }
+
+  OutputElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -25435,7 +29115,7 @@
   
   @DomName('HTMLOutputElement.defaultValue')
   @DocsEditable()
-  void set defaultValue(String value) => _blink.BlinkHTMLOutputElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
+  set defaultValue(String value) => _blink.BlinkHTMLOutputElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOutputElement.form')
   @DocsEditable()
@@ -25448,7 +29128,7 @@
   @DomName('HTMLOutputElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLOutputElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLOutputElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLOutputElement.name')
   @DocsEditable()
@@ -25456,7 +29136,7 @@
   
   @DomName('HTMLOutputElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLOutputElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLOutputElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOutputElement.type')
   @DocsEditable()
@@ -25476,7 +29156,7 @@
   
   @DomName('HTMLOutputElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLOutputElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLOutputElement.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLOutputElement.willValidate')
   @DocsEditable()
@@ -25505,6 +29185,18 @@
   // To suppress missing implicit constructor warnings.
   factory OverflowEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static OverflowEvent internalCreateOverflowEvent() {
+    return new OverflowEvent._internalWrap();
+  }
+
+  factory OverflowEvent._internalWrap() {
+    return new OverflowEvent.internal_();
+  }
+
+  OverflowEvent.internal_() : super.internal_();
+
+
   @DomName('OverflowEvent.BOTH')
   @DocsEditable()
   static const int BOTH = 2;
@@ -25545,6 +29237,18 @@
   // To suppress missing implicit constructor warnings.
   factory PageTransitionEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PageTransitionEvent internalCreatePageTransitionEvent() {
+    return new PageTransitionEvent._internalWrap();
+  }
+
+  factory PageTransitionEvent._internalWrap() {
+    return new PageTransitionEvent.internal_();
+  }
+
+  PageTransitionEvent.internal_() : super.internal_();
+
+
   @DomName('PageTransitionEvent.persisted')
   @DocsEditable()
   bool get persisted => _blink.BlinkPageTransitionEvent.instance.persisted_Getter_(unwrap_jso(this));
@@ -25566,6 +29270,18 @@
   @DomName('HTMLParagraphElement.HTMLParagraphElement')
   @DocsEditable()
   factory ParagraphElement() => document.createElement("p");
+
+
+  static ParagraphElement internalCreateParagraphElement() {
+    return new ParagraphElement._internalWrap();
+  }
+
+  factory ParagraphElement._internalWrap() {
+    return new ParagraphElement.internal_();
+  }
+
+  ParagraphElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -25591,6 +29307,18 @@
   @DomName('HTMLParamElement.HTMLParamElement')
   @DocsEditable()
   factory ParamElement() => document.createElement("param");
+
+
+  static ParamElement internalCreateParamElement() {
+    return new ParamElement._internalWrap();
+  }
+
+  factory ParamElement._internalWrap() {
+    return new ParamElement.internal_();
+  }
+
+  ParamElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -25604,7 +29332,7 @@
   
   @DomName('HTMLParamElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLParamElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLParamElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLParamElement.value')
   @DocsEditable()
@@ -25612,7 +29340,7 @@
   
   @DomName('HTMLParamElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLParamElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLParamElement.instance.value_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25678,17 +29406,32 @@
   @DocsEditable()
   factory Path2D([path_OR_text]) {
     if (path_OR_text == null) {
-      return _blink.BlinkPath2D.instance.constructorCallback_0_();
+      return wrap_jso(_blink.BlinkPath2D.instance.constructorCallback_0_());
     }
     if ((path_OR_text is Path2D || path_OR_text == null)) {
-      return _blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text);
+      return wrap_jso(_blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text));
     }
     if ((path_OR_text is String || path_OR_text == null)) {
-      return _blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text);
+      return wrap_jso(_blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+  static Path2D internalCreatePath2D() {
+    return new Path2D._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Path2D._internalWrap() {
+    return new Path2D.internal_();
+  }
+
+  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));
@@ -25774,6 +29517,18 @@
   // http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods
   static const EventStreamProvider<Event> resourceTimingBufferFullEvent = const EventStreamProvider<Event>('webkitresourcetimingbufferfull');
 
+
+  static Performance internalCreatePerformance() {
+    return new Performance._internalWrap();
+  }
+
+  factory Performance._internalWrap() {
+    return new Performance.internal_();
+  }
+
+  Performance.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -25806,19 +29561,19 @@
   @DocsEditable()
   // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute
   @Experimental()
-  List<PerformanceEntry> getEntries() => _blink.BlinkPerformance.instance.getEntries_Callback_0_(unwrap_jso(this));
+  List<PerformanceEntry> getEntries() => wrap_jso(_blink.BlinkPerformance.instance.getEntries_Callback_0_(unwrap_jso(this)));
   
   @DomName('Performance.getEntriesByName')
   @DocsEditable()
   // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute
   @Experimental()
-  List<PerformanceEntry> getEntriesByName(String name, String entryType) => _blink.BlinkPerformance.instance.getEntriesByName_Callback_2_(unwrap_jso(this), name, entryType);
+  List<PerformanceEntry> getEntriesByName(String name, String entryType) => wrap_jso(_blink.BlinkPerformance.instance.getEntriesByName_Callback_2_(unwrap_jso(this), name, entryType));
   
   @DomName('Performance.getEntriesByType')
   @DocsEditable()
   // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute
   @Experimental()
-  List<PerformanceEntry> getEntriesByType(String entryType) => _blink.BlinkPerformance.instance.getEntriesByType_Callback_1_(unwrap_jso(this), entryType);
+  List<PerformanceEntry> getEntriesByType(String entryType) => wrap_jso(_blink.BlinkPerformance.instance.getEntriesByType_Callback_1_(unwrap_jso(this), entryType));
   
   @DomName('Performance.mark')
   @DocsEditable()
@@ -25834,7 +29589,7 @@
   
   @DomName('Performance.now')
   @DocsEditable()
-  double now() => _blink.BlinkPerformance.instance.now_Callback_0_(unwrap_jso(this));
+  num now() => _blink.BlinkPerformance.instance.now_Callback_0_(unwrap_jso(this));
   
   @DomName('Performance.webkitClearResourceTimings')
   @DocsEditable()
@@ -25875,9 +29630,24 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceEntry._() { throw new UnsupportedError("Not supported"); }
 
+  static PerformanceEntry internalCreatePerformanceEntry() {
+    return new PerformanceEntry._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PerformanceEntry._internalWrap() {
+    return new PerformanceEntry.internal_();
+  }
+
+  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()
-  double get duration => _blink.BlinkPerformanceEntry.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkPerformanceEntry.instance.duration_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceEntry.entryType')
   @DocsEditable()
@@ -25889,7 +29659,7 @@
   
   @DomName('PerformanceEntry.startTime')
   @DocsEditable()
-  double get startTime => _blink.BlinkPerformanceEntry.instance.startTime_Getter_(unwrap_jso(this));
+  num get startTime => _blink.BlinkPerformanceEntry.instance.startTime_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25907,6 +29677,18 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceMark._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PerformanceMark internalCreatePerformanceMark() {
+    return new PerformanceMark._internalWrap();
+  }
+
+  factory PerformanceMark._internalWrap() {
+    return new PerformanceMark.internal_();
+  }
+
+  PerformanceMark.internal_() : super.internal_();
+
+
 }
 // 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
@@ -25923,6 +29705,18 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceMeasure._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PerformanceMeasure internalCreatePerformanceMeasure() {
+    return new PerformanceMeasure._internalWrap();
+  }
+
+  factory PerformanceMeasure._internalWrap() {
+    return new PerformanceMeasure.internal_();
+  }
+
+  PerformanceMeasure.internal_() : super.internal_();
+
+
 }
 // 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
@@ -25938,6 +29732,21 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceNavigation._() { throw new UnsupportedError("Not supported"); }
 
+  static PerformanceNavigation internalCreatePerformanceNavigation() {
+    return new PerformanceNavigation._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PerformanceNavigation._internalWrap() {
+    return new PerformanceNavigation.internal_();
+  }
+
+  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;
@@ -25978,25 +29787,37 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceResourceTiming._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PerformanceResourceTiming internalCreatePerformanceResourceTiming() {
+    return new PerformanceResourceTiming._internalWrap();
+  }
+
+  factory PerformanceResourceTiming._internalWrap() {
+    return new PerformanceResourceTiming.internal_();
+  }
+
+  PerformanceResourceTiming.internal_() : super.internal_();
+
+
   @DomName('PerformanceResourceTiming.connectEnd')
   @DocsEditable()
-  double get connectEnd => _blink.BlinkPerformanceResourceTiming.instance.connectEnd_Getter_(unwrap_jso(this));
+  num get connectEnd => _blink.BlinkPerformanceResourceTiming.instance.connectEnd_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.connectStart')
   @DocsEditable()
-  double get connectStart => _blink.BlinkPerformanceResourceTiming.instance.connectStart_Getter_(unwrap_jso(this));
+  num get connectStart => _blink.BlinkPerformanceResourceTiming.instance.connectStart_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.domainLookupEnd')
   @DocsEditable()
-  double get domainLookupEnd => _blink.BlinkPerformanceResourceTiming.instance.domainLookupEnd_Getter_(unwrap_jso(this));
+  num get domainLookupEnd => _blink.BlinkPerformanceResourceTiming.instance.domainLookupEnd_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.domainLookupStart')
   @DocsEditable()
-  double get domainLookupStart => _blink.BlinkPerformanceResourceTiming.instance.domainLookupStart_Getter_(unwrap_jso(this));
+  num get domainLookupStart => _blink.BlinkPerformanceResourceTiming.instance.domainLookupStart_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.fetchStart')
   @DocsEditable()
-  double get fetchStart => _blink.BlinkPerformanceResourceTiming.instance.fetchStart_Getter_(unwrap_jso(this));
+  num get fetchStart => _blink.BlinkPerformanceResourceTiming.instance.fetchStart_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.initiatorType')
   @DocsEditable()
@@ -26004,30 +29825,30 @@
   
   @DomName('PerformanceResourceTiming.redirectEnd')
   @DocsEditable()
-  double get redirectEnd => _blink.BlinkPerformanceResourceTiming.instance.redirectEnd_Getter_(unwrap_jso(this));
+  num get redirectEnd => _blink.BlinkPerformanceResourceTiming.instance.redirectEnd_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.redirectStart')
   @DocsEditable()
-  double get redirectStart => _blink.BlinkPerformanceResourceTiming.instance.redirectStart_Getter_(unwrap_jso(this));
+  num get redirectStart => _blink.BlinkPerformanceResourceTiming.instance.redirectStart_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.requestStart')
   @DocsEditable()
   @Experimental() // nonstandard
-  double get requestStart => _blink.BlinkPerformanceResourceTiming.instance.requestStart_Getter_(unwrap_jso(this));
+  num get requestStart => _blink.BlinkPerformanceResourceTiming.instance.requestStart_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.responseEnd')
   @DocsEditable()
   @Experimental() // nonstandard
-  double get responseEnd => _blink.BlinkPerformanceResourceTiming.instance.responseEnd_Getter_(unwrap_jso(this));
+  num get responseEnd => _blink.BlinkPerformanceResourceTiming.instance.responseEnd_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.responseStart')
   @DocsEditable()
   @Experimental() // nonstandard
-  double get responseStart => _blink.BlinkPerformanceResourceTiming.instance.responseStart_Getter_(unwrap_jso(this));
+  num get responseStart => _blink.BlinkPerformanceResourceTiming.instance.responseStart_Getter_(unwrap_jso(this));
   
   @DomName('PerformanceResourceTiming.secureConnectionStart')
   @DocsEditable()
-  double get secureConnectionStart => _blink.BlinkPerformanceResourceTiming.instance.secureConnectionStart_Getter_(unwrap_jso(this));
+  num get secureConnectionStart => _blink.BlinkPerformanceResourceTiming.instance.secureConnectionStart_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26044,6 +29865,21 @@
   // To suppress missing implicit constructor warnings.
   factory PerformanceTiming._() { throw new UnsupportedError("Not supported"); }
 
+  static PerformanceTiming internalCreatePerformanceTiming() {
+    return new PerformanceTiming._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PerformanceTiming._internalWrap() {
+    return new PerformanceTiming.internal_();
+  }
+
+  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));
@@ -26142,6 +29978,18 @@
 class PictureElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory PictureElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static PictureElement internalCreatePictureElement() {
+    return new PictureElement._internalWrap();
+  }
+
+  factory PictureElement._internalWrap() {
+    return new PictureElement.internal_();
+  }
+
+  PictureElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -26164,6 +30012,21 @@
   // To suppress missing implicit constructor warnings.
   factory Plugin._() { throw new UnsupportedError("Not supported"); }
 
+  static Plugin internalCreatePlugin() {
+    return new Plugin._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Plugin._internalWrap() {
+    return new Plugin.internal_();
+  }
+
+  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));
@@ -26203,10 +30066,25 @@
 @DocsEditable()
 @DomName('PluginArray')
 @Experimental() // non-standard
-class PluginArray extends NativeFieldWrapperClass2 with ListMixin<Plugin>, ImmutableListMixin<Plugin> implements List<Plugin> {
+class PluginArray extends JsoNativeFieldWrapper with ListMixin<Plugin>, ImmutableListMixin<Plugin> implements List<Plugin> {
   // To suppress missing implicit constructor warnings.
   factory PluginArray._() { throw new UnsupportedError("Not supported"); }
 
+  static PluginArray internalCreatePluginArray() {
+    return new PluginArray._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PluginArray._internalWrap() {
+    return new PluginArray.internal_();
+  }
+
+  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));
@@ -26218,7 +30096,7 @@
   }
 
   Plugin _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkPluginArray.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, Plugin value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -26226,7 +30104,7 @@
   // Plugin is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -26287,6 +30165,18 @@
 class PluginPlaceholderElement extends DivElement {
   // To suppress missing implicit constructor warnings.
   factory PluginPlaceholderElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static PluginPlaceholderElement internalCreatePluginPlaceholderElement() {
+    return new PluginPlaceholderElement._internalWrap();
+  }
+
+  factory PluginPlaceholderElement._internalWrap() {
+    return new PluginPlaceholderElement.internal_();
+  }
+
+  PluginPlaceholderElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -26302,7 +30192,7 @@
   @DomName('PluginPlaceholderElement.message')
   @DocsEditable()
   @Experimental() // untriaged
-  void set message(String value) => _blink.BlinkPluginPlaceholderElement.instance.message_Setter_(unwrap_jso(this), value);
+  set message(String value) => _blink.BlinkPluginPlaceholderElement.instance.message_Setter_(unwrap_jso(this), value);
   
   @DomName('PluginPlaceholderElement.createdCallback')
   @DocsEditable()
@@ -26327,9 +30217,21 @@
   // To suppress missing implicit constructor warnings.
   factory PopStateEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PopStateEvent internalCreatePopStateEvent() {
+    return new PopStateEvent._internalWrap();
+  }
+
+  factory PopStateEvent._internalWrap() {
+    return new PopStateEvent.internal_();
+  }
+
+  PopStateEvent.internal_() : super.internal_();
+
+
   @DomName('PopStateEvent.state')
   @DocsEditable()
-  Object get state => _blink.BlinkPopStateEvent.instance.state_Getter_(unwrap_jso(this));
+  Object get state => wrap_jso(_blink.BlinkPopStateEvent.instance.state_Getter_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26356,6 +30258,21 @@
   // To suppress missing implicit constructor warnings.
   factory PositionError._() { throw new UnsupportedError("Not supported"); }
 
+  static PositionError internalCreatePositionError() {
+    return new PositionError._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PositionError._internalWrap() {
+    return new PositionError.internal_();
+  }
+
+  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;
@@ -26403,6 +30320,18 @@
   @DomName('HTMLPreElement.HTMLPreElement')
   @DocsEditable()
   factory PreElement() => document.createElement("pre");
+
+
+  static PreElement internalCreatePreElement() {
+    return new PreElement._internalWrap();
+  }
+
+  factory PreElement._internalWrap() {
+    return new PreElement.internal_();
+  }
+
+  PreElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -26425,6 +30354,18 @@
   // To suppress missing implicit constructor warnings.
   factory Presentation._() { throw new UnsupportedError("Not supported"); }
 
+
+  static Presentation internalCreatePresentation() {
+    return new Presentation._internalWrap();
+  }
+
+  factory Presentation._internalWrap() {
+    return new Presentation.internal_();
+  }
+
+  Presentation.internal_() : super.internal_();
+
+
 }
 // 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
@@ -26440,6 +30381,18 @@
   // To suppress missing implicit constructor warnings.
   factory ProcessingInstruction._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ProcessingInstruction internalCreateProcessingInstruction() {
+    return new ProcessingInstruction._internalWrap();
+  }
+
+  factory ProcessingInstruction._internalWrap() {
+    return new ProcessingInstruction.internal_();
+  }
+
+  ProcessingInstruction.internal_() : super.internal_();
+
+
   @DomName('ProcessingInstruction.sheet')
   @DocsEditable()
   @Experimental() // non-standard
@@ -26470,6 +30423,18 @@
   @DomName('HTMLProgressElement.HTMLProgressElement')
   @DocsEditable()
   factory ProgressElement() => document.createElement("progress");
+
+
+  static ProgressElement internalCreateProgressElement() {
+    return new ProgressElement._internalWrap();
+  }
+
+  factory ProgressElement._internalWrap() {
+    return new ProgressElement.internal_();
+  }
+
+  ProgressElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -26483,7 +30448,7 @@
   @DomName('HTMLProgressElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLProgressElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLProgressElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLProgressElement.max')
   @DocsEditable()
@@ -26491,11 +30456,11 @@
   
   @DomName('HTMLProgressElement.max')
   @DocsEditable()
-  void set max(num value) => _blink.BlinkHTMLProgressElement.instance.max_Setter_(unwrap_jso(this), value);
+  set max(num value) => _blink.BlinkHTMLProgressElement.instance.max_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLProgressElement.position')
   @DocsEditable()
-  double get position => _blink.BlinkHTMLProgressElement.instance.position_Getter_(unwrap_jso(this));
+  num get position => _blink.BlinkHTMLProgressElement.instance.position_Getter_(unwrap_jso(this));
   
   @DomName('HTMLProgressElement.value')
   @DocsEditable()
@@ -26503,7 +30468,7 @@
   
   @DomName('HTMLProgressElement.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkHTMLProgressElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkHTMLProgressElement.instance.value_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26519,6 +30484,18 @@
   // To suppress missing implicit constructor warnings.
   factory ProgressEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ProgressEvent internalCreateProgressEvent() {
+    return new ProgressEvent._internalWrap();
+  }
+
+  factory ProgressEvent._internalWrap() {
+    return new ProgressEvent.internal_();
+  }
+
+  ProgressEvent.internal_() : super.internal_();
+
+
   @DomName('ProgressEvent.lengthComputable')
   @DocsEditable()
   bool get lengthComputable => _blink.BlinkProgressEvent.instance.lengthComputable_Getter_(unwrap_jso(this));
@@ -26546,6 +30523,18 @@
   // To suppress missing implicit constructor warnings.
   factory PushEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PushEvent internalCreatePushEvent() {
+    return new PushEvent._internalWrap();
+  }
+
+  factory PushEvent._internalWrap() {
+    return new PushEvent.internal_();
+  }
+
+  PushEvent.internal_() : super.internal_();
+
+
   @DomName('PushEvent.data')
   @DocsEditable()
   @Experimental() // untriaged
@@ -26566,10 +30555,25 @@
   // To suppress missing implicit constructor warnings.
   factory PushManager._() { throw new UnsupportedError("Not supported"); }
 
+  static PushManager internalCreatePushManager() {
+    return new PushManager._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PushManager._internalWrap() {
+    return new PushManager.internal_();
+  }
+
+  PushManager.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('PushManager.register')
   @DocsEditable()
   @Experimental() // untriaged
-  Future register(String senderId) => _blink.BlinkPushManager.instance.register_Callback_1_(unwrap_jso(this), senderId);
+  Future register(String senderId) => wrap_jso(_blink.BlinkPushManager.instance.register_Callback_1_(unwrap_jso(this), senderId));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26586,6 +30590,21 @@
   // To suppress missing implicit constructor warnings.
   factory PushRegistration._() { throw new UnsupportedError("Not supported"); }
 
+  static PushRegistration internalCreatePushRegistration() {
+    return new PushRegistration._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PushRegistration._internalWrap() {
+    return new PushRegistration.internal_();
+  }
+
+  PushRegistration.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('PushRegistration.pushEndpoint')
   @DocsEditable()
   @Experimental() // untriaged
@@ -26613,6 +30632,18 @@
   @DomName('HTMLQuoteElement.HTMLQuoteElement')
   @DocsEditable()
   factory QuoteElement() => document.createElement("q");
+
+
+  static QuoteElement internalCreateQuoteElement() {
+    return new QuoteElement._internalWrap();
+  }
+
+  factory QuoteElement._internalWrap() {
+    return new QuoteElement.internal_();
+  }
+
+  QuoteElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -26626,7 +30657,7 @@
   
   @DomName('HTMLQuoteElement.cite')
   @DocsEditable()
-  void set cite(String value) => _blink.BlinkHTMLQuoteElement.instance.cite_Setter_(unwrap_jso(this), value);
+  set cite(String value) => _blink.BlinkHTMLQuoteElement.instance.cite_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26679,6 +30710,21 @@
   // To suppress missing implicit constructor warnings.
   factory Range._() { throw new UnsupportedError("Not supported"); }
 
+  static Range internalCreateRange() {
+    return new Range._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Range._internalWrap() {
+    return new Range.internal_();
+  }
+
+  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;
@@ -26792,7 +30838,7 @@
   
   @DomName('Range.getClientRects')
   @DocsEditable()
-  List<Rectangle> getClientRects() => _blink.BlinkRange.instance.getClientRects_Callback_0_(unwrap_jso(this));
+  List<Rectangle> getClientRects() => wrap_jso(_blink.BlinkRange.instance.getClientRects_Callback_0_(unwrap_jso(this)));
   
   @DomName('Range.insertNode')
   @DocsEditable()
@@ -26862,10 +30908,25 @@
   // To suppress missing implicit constructor warnings.
   factory ReadableStream._() { throw new UnsupportedError("Not supported"); }
 
+  static ReadableStream internalCreateReadableStream() {
+    return new ReadableStream._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ReadableStream._internalWrap() {
+    return new ReadableStream.internal_();
+  }
+
+  ReadableStream.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('ReadableStream.closed')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get closed => _blink.BlinkReadableStream.instance.closed_Getter_(unwrap_jso(this));
+  Future get closed => wrap_jso(_blink.BlinkReadableStream.instance.closed_Getter_(unwrap_jso(this)));
   
   @DomName('ReadableStream.state')
   @DocsEditable()
@@ -26875,7 +30936,7 @@
   @DomName('ReadableStream.cancel')
   @DocsEditable()
   @Experimental() // untriaged
-  Future cancel(Object reason) => _blink.BlinkReadableStream.instance.cancel_Callback_1_(unwrap_jso(this), reason);
+  Future cancel(Object reason) => wrap_jso(_blink.BlinkReadableStream.instance.cancel_Callback_1_(unwrap_jso(this), reason));
   
   @DomName('ReadableStream.read')
   @DocsEditable()
@@ -26885,7 +30946,7 @@
   @DomName('ReadableStream.wait')
   @DocsEditable()
   @Experimental() // untriaged
-  Future wait() => _blink.BlinkReadableStream.instance.wait_Callback_0_(unwrap_jso(this));
+  Future wait() => wrap_jso(_blink.BlinkReadableStream.instance.wait_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26902,6 +30963,18 @@
   // To suppress missing implicit constructor warnings.
   factory RelatedEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static RelatedEvent internalCreateRelatedEvent() {
+    return new RelatedEvent._internalWrap();
+  }
+
+  factory RelatedEvent._internalWrap() {
+    return new RelatedEvent.internal_();
+  }
+
+  RelatedEvent.internal_() : super.internal_();
+
+
   @DomName('RelatedEvent.relatedTarget')
   @DocsEditable()
   @Experimental() // untriaged
@@ -26932,6 +31005,18 @@
   // To suppress missing implicit constructor warnings.
   factory ResourceProgressEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ResourceProgressEvent internalCreateResourceProgressEvent() {
+    return new ResourceProgressEvent._internalWrap();
+  }
+
+  factory ResourceProgressEvent._internalWrap() {
+    return new ResourceProgressEvent.internal_();
+  }
+
+  ResourceProgressEvent.internal_() : super.internal_();
+
+
   @DomName('ResourceProgressEvent.url')
   @DocsEditable()
   String get url => _blink.BlinkResourceProgressEvent.instance.url_Getter_(unwrap_jso(this));
@@ -26992,13 +31077,25 @@
   @DocsEditable()
   static const EventStreamProvider<Event> openEvent = const EventStreamProvider<Event>('open');
 
+
+  static RtcDataChannel internalCreateRtcDataChannel() {
+    return new RtcDataChannel._internalWrap();
+  }
+
+  factory RtcDataChannel._internalWrap() {
+    return new RtcDataChannel.internal_();
+  }
+
+  RtcDataChannel.internal_() : super.internal_();
+
+
   @DomName('RTCDataChannel.binaryType')
   @DocsEditable()
   String get binaryType => _blink.BlinkRTCDataChannel.instance.binaryType_Getter_(unwrap_jso(this));
   
   @DomName('RTCDataChannel.binaryType')
   @DocsEditable()
-  void set binaryType(String value) => _blink.BlinkRTCDataChannel.instance.binaryType_Setter_(unwrap_jso(this), value);
+  set binaryType(String value) => _blink.BlinkRTCDataChannel.instance.binaryType_Setter_(unwrap_jso(this), value);
   
   @DomName('RTCDataChannel.bufferedAmount')
   @DocsEditable()
@@ -27122,6 +31219,18 @@
   // To suppress missing implicit constructor warnings.
   factory RtcDataChannelEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static RtcDataChannelEvent internalCreateRtcDataChannelEvent() {
+    return new RtcDataChannelEvent._internalWrap();
+  }
+
+  factory RtcDataChannelEvent._internalWrap() {
+    return new RtcDataChannelEvent.internal_();
+  }
+
+  RtcDataChannelEvent.internal_() : super.internal_();
+
+
   @DomName('RTCDataChannelEvent.channel')
   @DocsEditable()
   RtcDataChannel get channel => wrap_jso(_blink.BlinkRTCDataChannelEvent.instance.channel_Getter_(unwrap_jso(this)));
@@ -27152,6 +31261,18 @@
   @DocsEditable()
   static const EventStreamProvider<RtcDtmfToneChangeEvent> toneChangeEvent = const EventStreamProvider<RtcDtmfToneChangeEvent>('tonechange');
 
+
+  static RtcDtmfSender internalCreateRtcDtmfSender() {
+    return new RtcDtmfSender._internalWrap();
+  }
+
+  factory RtcDtmfSender._internalWrap() {
+    return new RtcDtmfSender.internal_();
+  }
+
+  RtcDtmfSender.internal_() : super.internal_();
+
+
   @DomName('RTCDTMFSender.canInsertDTMF')
   @DocsEditable()
   bool get canInsertDtmf => _blink.BlinkRTCDTMFSender.instance.canInsertDTMF_Getter_(unwrap_jso(this));
@@ -27206,6 +31327,18 @@
   // To suppress missing implicit constructor warnings.
   factory RtcDtmfToneChangeEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static RtcDtmfToneChangeEvent internalCreateRtcDtmfToneChangeEvent() {
+    return new RtcDtmfToneChangeEvent._internalWrap();
+  }
+
+  factory RtcDtmfToneChangeEvent._internalWrap() {
+    return new RtcDtmfToneChangeEvent.internal_();
+  }
+
+  RtcDtmfToneChangeEvent.internal_() : super.internal_();
+
+
   @DomName('RTCDTMFToneChangeEvent.tone')
   @DocsEditable()
   String get tone => _blink.BlinkRTCDTMFToneChangeEvent.instance.tone_Getter_(unwrap_jso(this));
@@ -27230,16 +31363,32 @@
   @DomName('RTCIceCandidate.RTCIceCandidate')
   @DocsEditable()
   factory RtcIceCandidate(Map dictionary) {
-    return _blink.BlinkRTCIceCandidate.instance.constructorCallback_1_(dictionary);
+    var dictionary_1 = convertDartToNative_Dictionary(dictionary);
+    return wrap_jso(_blink.BlinkRTCIceCandidate.instance.constructorCallback_1_(dictionary_1));
   }
 
+  static RtcIceCandidate internalCreateRtcIceCandidate() {
+    return new RtcIceCandidate._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory RtcIceCandidate._internalWrap() {
+    return new RtcIceCandidate.internal_();
+  }
+
+  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));
   
   @DomName('RTCIceCandidate.candidate')
   @DocsEditable()
-  void set candidate(String value) => _blink.BlinkRTCIceCandidate.instance.candidate_Setter_(unwrap_jso(this), value);
+  set candidate(String value) => _blink.BlinkRTCIceCandidate.instance.candidate_Setter_(unwrap_jso(this), value);
   
   @DomName('RTCIceCandidate.sdpMLineIndex')
   @DocsEditable()
@@ -27247,7 +31396,7 @@
   
   @DomName('RTCIceCandidate.sdpMLineIndex')
   @DocsEditable()
-  void set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Setter_(unwrap_jso(this), value);
+  set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Setter_(unwrap_jso(this), value);
   
   @DomName('RTCIceCandidate.sdpMid')
   @DocsEditable()
@@ -27255,7 +31404,7 @@
   
   @DomName('RTCIceCandidate.sdpMid')
   @DocsEditable()
-  void set sdpMid(String value) => _blink.BlinkRTCIceCandidate.instance.sdpMid_Setter_(unwrap_jso(this), value);
+  set sdpMid(String value) => _blink.BlinkRTCIceCandidate.instance.sdpMid_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27273,6 +31422,18 @@
   // To suppress missing implicit constructor warnings.
   factory RtcIceCandidateEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static RtcIceCandidateEvent internalCreateRtcIceCandidateEvent() {
+    return new RtcIceCandidateEvent._internalWrap();
+  }
+
+  factory RtcIceCandidateEvent._internalWrap() {
+    return new RtcIceCandidateEvent.internal_();
+  }
+
+  RtcIceCandidateEvent.internal_() : super.internal_();
+
+
   @DomName('RTCIceCandidateEvent.candidate')
   @DocsEditable()
   RtcIceCandidate get candidate => wrap_jso(_blink.BlinkRTCIceCandidateEvent.instance.candidate_Getter_(unwrap_jso(this)));
@@ -27393,11 +31554,26 @@
   @DocsEditable()
   factory RtcPeerConnection(Map rtcConfiguration, [Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      return _blink.BlinkRTCPeerConnection.instance.constructorCallback_2_(rtcConfiguration, mediaConstraints);
+      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_1_(rtcConfiguration);
+    var rtcConfiguration_1 = convertDartToNative_Dictionary(rtcConfiguration);
+    return wrap_jso(_blink.BlinkRTCPeerConnection.instance.constructorCallback_1_(rtcConfiguration_1));
   }
 
+
+  static RtcPeerConnection internalCreateRtcPeerConnection() {
+    return new RtcPeerConnection._internalWrap();
+  }
+
+  factory RtcPeerConnection._internalWrap() {
+    return new RtcPeerConnection.internal_();
+  }
+
+  RtcPeerConnection.internal_() : super.internal_();
+
+
   @DomName('RTCPeerConnection.iceConnectionState')
   @DocsEditable()
   String get iceConnectionState => _blink.BlinkRTCPeerConnection.instance.iceConnectionState_Getter_(unwrap_jso(this));
@@ -27420,11 +31596,11 @@
   
   @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(failureCallback));
+  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 addStream(MediaStream stream, [Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.instance.addStream_Callback_2_(unwrap_jso(this), unwrap_jso(stream), mediaConstraints);
+      _blink.BlinkRTCPeerConnection.instance.addStream_Callback_2_(unwrap_jso(this), unwrap_jso(stream), convertDartToNative_Dictionary(mediaConstraints));
       return;
     }
     _blink.BlinkRTCPeerConnection.instance.addStream_Callback_1_(unwrap_jso(this), unwrap_jso(stream));
@@ -27437,44 +31613,44 @@
   
   void _createAnswer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_3_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(failureCallback), mediaConstraints);
+      _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_3_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)), convertDartToNative_Dictionary(mediaConstraints));
       return;
     }
-    _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(failureCallback));
+    _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_2_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)));
     return;
   }
 
   @DomName('RTCPeerConnection.createDTMFSender')
   @DocsEditable()
-  RtcDtmfSender createDtmfSender(MediaStreamTrack track) => _blink.BlinkRTCPeerConnection.instance.createDTMFSender_Callback_1_(unwrap_jso(this), unwrap_jso(track));
+  RtcDtmfSender createDtmfSender(MediaStreamTrack track) => wrap_jso(_blink.BlinkRTCPeerConnection.instance.createDTMFSender_Callback_1_(unwrap_jso(this), unwrap_jso(track)));
   
   RtcDataChannel createDataChannel(String label, [Map options]) {
     if (options != null) {
-      return _blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_2_(unwrap_jso(this), label, options);
+      return wrap_jso(_blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_2_(unwrap_jso(this), label, convertDartToNative_Dictionary(options)));
     }
-    return _blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_1_(unwrap_jso(this), label);
+    return wrap_jso(_blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_1_(unwrap_jso(this), label));
   }
 
   void _createOffer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map rtcOfferOptions]) {
     if (rtcOfferOptions != null) {
-      _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_3_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(failureCallback), rtcOfferOptions);
+      _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_3_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)), convertDartToNative_Dictionary(rtcOfferOptions));
       return;
     }
-    _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(failureCallback));
+    _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_2_(unwrap_jso(this), unwrap_jso((sdp) => successCallback(wrap_jso(sdp))), unwrap_jso((errorInformation) => failureCallback(errorInformation)));
     return;
   }
 
   @DomName('RTCPeerConnection.getLocalStreams')
   @DocsEditable()
-  List<MediaStream> getLocalStreams() => _blink.BlinkRTCPeerConnection.instance.getLocalStreams_Callback_0_(unwrap_jso(this));
+  List<MediaStream> getLocalStreams() => wrap_jso(_blink.BlinkRTCPeerConnection.instance.getLocalStreams_Callback_0_(unwrap_jso(this)));
   
   @DomName('RTCPeerConnection.getRemoteStreams')
   @DocsEditable()
-  List<MediaStream> getRemoteStreams() => _blink.BlinkRTCPeerConnection.instance.getRemoteStreams_Callback_0_(unwrap_jso(this));
+  List<MediaStream> getRemoteStreams() => wrap_jso(_blink.BlinkRTCPeerConnection.instance.getRemoteStreams_Callback_0_(unwrap_jso(this)));
   
   @DomName('RTCPeerConnection.getStats')
   @DocsEditable()
-  void _getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) => _blink.BlinkRTCPeerConnection.instance.getStats_Callback_2_(unwrap_jso(this), unwrap_jso(successCallback), unwrap_jso(selector));
+  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));
   
   @DomName('RTCPeerConnection.getStreamById')
   @DocsEditable()
@@ -27486,7 +31662,7 @@
   
   @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(failureCallback));
+  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)));
   
   Future setLocalDescription(RtcSessionDescription description) {
     var completer = new Completer();
@@ -27498,7 +31674,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(failureCallback));
+  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)));
   
   Future setRemoteDescription(RtcSessionDescription description) {
     var completer = new Completer();
@@ -27510,11 +31686,11 @@
 
   void updateIce([Map configuration, Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_2_(unwrap_jso(this), configuration, mediaConstraints);
+      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_2_(unwrap_jso(this), convertDartToNative_Dictionary(configuration), convertDartToNative_Dictionary(mediaConstraints));
       return;
     }
     if (configuration != null) {
-      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_1_(unwrap_jso(this), configuration);
+      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(configuration));
       return;
     }
     _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_0_(unwrap_jso(this));
@@ -27577,18 +31753,34 @@
   @DocsEditable()
   factory RtcSessionDescription([Map descriptionInitDict]) {
     if (descriptionInitDict != null) {
-      return _blink.BlinkRTCSessionDescription.instance.constructorCallback_1_(descriptionInitDict);
+      var descriptionInitDict_1 = convertDartToNative_Dictionary(descriptionInitDict);
+      return wrap_jso(_blink.BlinkRTCSessionDescription.instance.constructorCallback_1_(descriptionInitDict_1));
     }
-    return _blink.BlinkRTCSessionDescription.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkRTCSessionDescription.instance.constructorCallback_0_());
   }
 
+  static RtcSessionDescription internalCreateRtcSessionDescription() {
+    return new RtcSessionDescription._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory RtcSessionDescription._internalWrap() {
+    return new RtcSessionDescription.internal_();
+  }
+
+  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));
   
   @DomName('RTCSessionDescription.sdp')
   @DocsEditable()
-  void set sdp(String value) => _blink.BlinkRTCSessionDescription.instance.sdp_Setter_(unwrap_jso(this), value);
+  set sdp(String value) => _blink.BlinkRTCSessionDescription.instance.sdp_Setter_(unwrap_jso(this), value);
   
   @DomName('RTCSessionDescription.type')
   @DocsEditable()
@@ -27596,7 +31788,7 @@
   
   @DomName('RTCSessionDescription.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkRTCSessionDescription.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkRTCSessionDescription.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27614,6 +31806,21 @@
   // To suppress missing implicit constructor warnings.
   factory RtcStatsReport._() { throw new UnsupportedError("Not supported"); }
 
+  static RtcStatsReport internalCreateRtcStatsReport() {
+    return new RtcStatsReport._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory RtcStatsReport._internalWrap() {
+    return new RtcStatsReport.internal_();
+  }
+
+  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));
@@ -27658,17 +31865,32 @@
   // To suppress missing implicit constructor warnings.
   factory RtcStatsResponse._() { throw new UnsupportedError("Not supported"); }
 
+  static RtcStatsResponse internalCreateRtcStatsResponse() {
+    return new RtcStatsResponse._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory RtcStatsResponse._internalWrap() {
+    return new RtcStatsResponse.internal_();
+  }
+
+  RtcStatsResponse.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('RTCStatsResponse.__getter__')
   @DocsEditable()
-  RtcStatsReport __getter__(String name) => _blink.BlinkRTCStatsResponse.instance.$__getter___Callback_1_(unwrap_jso(this), name);
+  RtcStatsReport __getter__(String name) => wrap_jso(_blink.BlinkRTCStatsResponse.instance.$__getter___Callback_1_(unwrap_jso(this), name));
   
   @DomName('RTCStatsResponse.namedItem')
   @DocsEditable()
-  RtcStatsReport namedItem(String name) => _blink.BlinkRTCStatsResponse.instance.namedItem_Callback_1_(unwrap_jso(this), name);
+  RtcStatsReport namedItem(String name) => wrap_jso(_blink.BlinkRTCStatsResponse.instance.namedItem_Callback_1_(unwrap_jso(this), name));
   
   @DomName('RTCStatsResponse.result')
   @DocsEditable()
-  List<RtcStatsReport> result() => _blink.BlinkRTCStatsResponse.instance.result_Callback_0_(unwrap_jso(this));
+  List<RtcStatsReport> result() => wrap_jso(_blink.BlinkRTCStatsResponse.instance.result_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -27689,6 +31911,21 @@
   // To suppress missing implicit constructor warnings.
   factory Screen._() { throw new UnsupportedError("Not supported"); }
 
+  static Screen internalCreateScreen() {
+    return new Screen._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Screen._internalWrap() {
+    return new Screen.internal_();
+  }
+
+  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));
@@ -27747,6 +31984,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> changeEvent = const EventStreamProvider<Event>('change');
 
+
+  static ScreenOrientation internalCreateScreenOrientation() {
+    return new ScreenOrientation._internalWrap();
+  }
+
+  factory ScreenOrientation._internalWrap() {
+    return new ScreenOrientation.internal_();
+  }
+
+  ScreenOrientation.internal_() : super.internal_();
+
+
   @DomName('ScreenOrientation.angle')
   @DocsEditable()
   @Experimental() // untriaged
@@ -27760,7 +32009,7 @@
   @DomName('ScreenOrientation.lock')
   @DocsEditable()
   @Experimental() // untriaged
-  Future lock(String orientation) => _blink.BlinkScreenOrientation.instance.lock_Callback_1_(unwrap_jso(this), orientation);
+  Future lock(String orientation) => wrap_jso(_blink.BlinkScreenOrientation.instance.lock_Callback_1_(unwrap_jso(this), orientation));
   
   @DomName('ScreenOrientation.unlock')
   @DocsEditable()
@@ -27789,6 +32038,18 @@
   @DomName('HTMLScriptElement.HTMLScriptElement')
   @DocsEditable()
   factory ScriptElement() => document.createElement("script");
+
+
+  static ScriptElement internalCreateScriptElement() {
+    return new ScriptElement._internalWrap();
+  }
+
+  factory ScriptElement._internalWrap() {
+    return new ScriptElement.internal_();
+  }
+
+  ScriptElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -27802,7 +32063,7 @@
   
   @DomName('HTMLScriptElement.async')
   @DocsEditable()
-  void set async(bool value) => _blink.BlinkHTMLScriptElement.instance.async_Setter_(unwrap_jso(this), value);
+  set async(bool value) => _blink.BlinkHTMLScriptElement.instance.async_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLScriptElement.charset')
   @DocsEditable()
@@ -27810,7 +32071,7 @@
   
   @DomName('HTMLScriptElement.charset')
   @DocsEditable()
-  void set charset(String value) => _blink.BlinkHTMLScriptElement.instance.charset_Setter_(unwrap_jso(this), value);
+  set charset(String value) => _blink.BlinkHTMLScriptElement.instance.charset_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLScriptElement.crossOrigin')
   @DocsEditable()
@@ -27822,7 +32083,7 @@
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-crossorigin
   @Experimental()
-  void set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
+  set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.instance.crossOrigin_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLScriptElement.defer')
   @DocsEditable()
@@ -27830,7 +32091,7 @@
   
   @DomName('HTMLScriptElement.defer')
   @DocsEditable()
-  void set defer(bool value) => _blink.BlinkHTMLScriptElement.instance.defer_Setter_(unwrap_jso(this), value);
+  set defer(bool value) => _blink.BlinkHTMLScriptElement.instance.defer_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLScriptElement.integrity')
   @DocsEditable()
@@ -27840,7 +32101,7 @@
   @DomName('HTMLScriptElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLScriptElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLScriptElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLScriptElement.nonce')
   @DocsEditable()
@@ -27852,7 +32113,7 @@
   @DocsEditable()
   // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#interaction-with-the-script-src-directive
   @Experimental()
-  void set nonce(String value) => _blink.BlinkHTMLScriptElement.instance.nonce_Setter_(unwrap_jso(this), value);
+  set nonce(String value) => _blink.BlinkHTMLScriptElement.instance.nonce_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLScriptElement.src')
   @DocsEditable()
@@ -27860,7 +32121,7 @@
   
   @DomName('HTMLScriptElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLScriptElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLScriptElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLScriptElement.type')
   @DocsEditable()
@@ -27868,7 +32129,7 @@
   
   @DomName('HTMLScriptElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLScriptElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLScriptElement.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27886,6 +32147,18 @@
   // To suppress missing implicit constructor warnings.
   factory SecurityPolicyViolationEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static SecurityPolicyViolationEvent internalCreateSecurityPolicyViolationEvent() {
+    return new SecurityPolicyViolationEvent._internalWrap();
+  }
+
+  factory SecurityPolicyViolationEvent._internalWrap() {
+    return new SecurityPolicyViolationEvent.internal_();
+  }
+
+  SecurityPolicyViolationEvent.internal_() : super.internal_();
+
+
   @DomName('SecurityPolicyViolationEvent.blockedURI')
   @DocsEditable()
   String get blockedUri => _blink.BlinkSecurityPolicyViolationEvent.instance.blockedURI_Getter_(unwrap_jso(this));
@@ -27941,6 +32214,18 @@
   @DomName('HTMLSelectElement.HTMLSelectElement')
   @DocsEditable()
   factory SelectElement() => document.createElement("select");
+
+
+  static SelectElement internalCreateSelectElement() {
+    return new SelectElement._internalWrap();
+  }
+
+  factory SelectElement._internalWrap() {
+    return new SelectElement.internal_();
+  }
+
+  SelectElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -27954,7 +32239,7 @@
   
   @DomName('HTMLSelectElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLSelectElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLSelectElement.instance.autofocus_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.disabled')
   @DocsEditable()
@@ -27962,7 +32247,7 @@
   
   @DomName('HTMLSelectElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLSelectElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLSelectElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.form')
   @DocsEditable()
@@ -27971,7 +32256,7 @@
   @DomName('HTMLSelectElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLSelectElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLSelectElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLSelectElement.length')
   @DocsEditable()
@@ -27979,7 +32264,7 @@
   
   @DomName('HTMLSelectElement.length')
   @DocsEditable()
-  void set length(int value) => _blink.BlinkHTMLSelectElement.instance.length_Setter_(unwrap_jso(this), value);
+  set length(int value) => _blink.BlinkHTMLSelectElement.instance.length_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.multiple')
   @DocsEditable()
@@ -27987,7 +32272,7 @@
   
   @DomName('HTMLSelectElement.multiple')
   @DocsEditable()
-  void set multiple(bool value) => _blink.BlinkHTMLSelectElement.instance.multiple_Setter_(unwrap_jso(this), value);
+  set multiple(bool value) => _blink.BlinkHTMLSelectElement.instance.multiple_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.name')
   @DocsEditable()
@@ -27995,7 +32280,7 @@
   
   @DomName('HTMLSelectElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLSelectElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLSelectElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.required')
   @DocsEditable()
@@ -28003,7 +32288,7 @@
   
   @DomName('HTMLSelectElement.required')
   @DocsEditable()
-  void set required(bool value) => _blink.BlinkHTMLSelectElement.instance.required_Setter_(unwrap_jso(this), value);
+  set required(bool value) => _blink.BlinkHTMLSelectElement.instance.required_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.selectedIndex')
   @DocsEditable()
@@ -28011,7 +32296,7 @@
   
   @DomName('HTMLSelectElement.selectedIndex')
   @DocsEditable()
-  void set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Setter_(unwrap_jso(this), value);
+  set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.size')
   @DocsEditable()
@@ -28019,7 +32304,7 @@
   
   @DomName('HTMLSelectElement.size')
   @DocsEditable()
-  void set size(int value) => _blink.BlinkHTMLSelectElement.instance.size_Setter_(unwrap_jso(this), value);
+  set size(int value) => _blink.BlinkHTMLSelectElement.instance.size_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.type')
   @DocsEditable()
@@ -28039,7 +32324,7 @@
   
   @DomName('HTMLSelectElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLSelectElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLSelectElement.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSelectElement.willValidate')
   @DocsEditable()
@@ -28102,6 +32387,21 @@
   // To suppress missing implicit constructor warnings.
   factory Selection._() { throw new UnsupportedError("Not supported"); }
 
+  static Selection internalCreateSelection() {
+    return new Selection._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Selection._internalWrap() {
+    return new Selection.internal_();
+  }
+
+  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)));
@@ -28241,6 +32541,21 @@
   // To suppress missing implicit constructor warnings.
   factory ServiceWorkerClient._() { throw new UnsupportedError("Not supported"); }
 
+  static ServiceWorkerClient internalCreateServiceWorkerClient() {
+    return new ServiceWorkerClient._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ServiceWorkerClient._internalWrap() {
+    return new ServiceWorkerClient.internal_();
+  }
+
+  ServiceWorkerClient.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('ServiceWorkerClient.id')
   @DocsEditable()
   @Experimental() // untriaged
@@ -28266,11 +32581,26 @@
   // To suppress missing implicit constructor warnings.
   factory ServiceWorkerClients._() { throw new UnsupportedError("Not supported"); }
 
+  static ServiceWorkerClients internalCreateServiceWorkerClients() {
+    return new ServiceWorkerClients._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ServiceWorkerClients._internalWrap() {
+    return new ServiceWorkerClients.internal_();
+  }
+
+  ServiceWorkerClients.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   Future getAll([Map options]) {
     if (options != null) {
-      return _blink.BlinkServiceWorkerClients.instance.getAll_Callback_1_(unwrap_jso(this), options);
+      return wrap_jso(_blink.BlinkServiceWorkerClients.instance.getAll_Callback_1_(unwrap_jso(this), convertDartToNative_Dictionary(options)));
     }
-    return _blink.BlinkServiceWorkerClients.instance.getAll_Callback_0_(unwrap_jso(this));
+    return wrap_jso(_blink.BlinkServiceWorkerClients.instance.getAll_Callback_0_(unwrap_jso(this)));
   }
 
 }
@@ -28288,6 +32618,21 @@
   // To suppress missing implicit constructor warnings.
   factory ServiceWorkerContainer._() { throw new UnsupportedError("Not supported"); }
 
+  static ServiceWorkerContainer internalCreateServiceWorkerContainer() {
+    return new ServiceWorkerContainer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ServiceWorkerContainer._internalWrap() {
+    return new ServiceWorkerContainer.internal_();
+  }
+
+  ServiceWorkerContainer.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('ServiceWorkerContainer.controller')
   @DocsEditable()
   @Experimental() // untriaged
@@ -28296,20 +32641,20 @@
   @DomName('ServiceWorkerContainer.ready')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get ready => _blink.BlinkServiceWorkerContainer.instance.ready_Getter_(unwrap_jso(this));
+  Future get ready => wrap_jso(_blink.BlinkServiceWorkerContainer.instance.ready_Getter_(unwrap_jso(this)));
   
   Future getRegistration([String documentURL]) {
     if (documentURL != null) {
-      return _blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_1_(unwrap_jso(this), documentURL);
+      return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_1_(unwrap_jso(this), documentURL));
     }
-    return _blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_0_(unwrap_jso(this));
+    return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.getRegistration_Callback_0_(unwrap_jso(this)));
   }
 
   Future register(String url, [Map options]) {
     if (options != null) {
-      return _blink.BlinkServiceWorkerContainer.instance.register_Callback_2_(unwrap_jso(this), url, options);
+      return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.register_Callback_2_(unwrap_jso(this), url, convertDartToNative_Dictionary(options)));
     }
-    return _blink.BlinkServiceWorkerContainer.instance.register_Callback_1_(unwrap_jso(this), url);
+    return wrap_jso(_blink.BlinkServiceWorkerContainer.instance.register_Callback_1_(unwrap_jso(this), url));
   }
 
 }
@@ -28332,6 +32677,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<MessageEvent> messageEvent = const EventStreamProvider<MessageEvent>('message');
 
+
+  static ServiceWorkerGlobalScope internalCreateServiceWorkerGlobalScope() {
+    return new ServiceWorkerGlobalScope._internalWrap();
+  }
+
+  factory ServiceWorkerGlobalScope._internalWrap() {
+    return new ServiceWorkerGlobalScope.internal_();
+  }
+
+  ServiceWorkerGlobalScope.internal_() : super.internal_();
+
+
   @DomName('ServiceWorkerGlobalScope.caches')
   @DocsEditable()
   @Experimental() // untriaged
@@ -28354,16 +32711,16 @@
   
   Future _fetch(request, [Map requestInitDict]) {
     if ((request is String || request == null) && requestInitDict == null) {
-      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(unwrap_jso(this), unwrap_jso(request));
+      return wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(unwrap_jso(this), unwrap_jso(request)));
     }
     if ((requestInitDict is Map || requestInitDict == null) && (request is String || request == null)) {
-      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(unwrap_jso(this), unwrap_jso(request), requestInitDict);
+      return wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(unwrap_jso(this), unwrap_jso(request), convertDartToNative_Dictionary(requestInitDict)));
     }
     if ((request is _Request || request == null) && requestInitDict == null) {
-      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(unwrap_jso(this), unwrap_jso(request));
+      return wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(unwrap_jso(this), unwrap_jso(request)));
     }
     if ((requestInitDict is Map || requestInitDict == null) && (request is _Request || request == null)) {
-      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(unwrap_jso(this), unwrap_jso(request), requestInitDict);
+      return wrap_jso(_blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(unwrap_jso(this), unwrap_jso(request), convertDartToNative_Dictionary(requestInitDict)));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -28388,6 +32745,18 @@
   // To suppress missing implicit constructor warnings.
   factory ServiceWorkerRegistration._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ServiceWorkerRegistration internalCreateServiceWorkerRegistration() {
+    return new ServiceWorkerRegistration._internalWrap();
+  }
+
+  factory ServiceWorkerRegistration._internalWrap() {
+    return new ServiceWorkerRegistration.internal_();
+  }
+
+  ServiceWorkerRegistration.internal_() : super.internal_();
+
+
   @DomName('ServiceWorkerRegistration.active')
   @DocsEditable()
   @Experimental() // untriaged
@@ -28411,7 +32780,7 @@
   @DomName('ServiceWorkerRegistration.unregister')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregister() => _blink.BlinkServiceWorkerRegistration.instance.unregister_Callback_0_(unwrap_jso(this));
+  Future unregister() => wrap_jso(_blink.BlinkServiceWorkerRegistration.instance.unregister_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28433,6 +32802,18 @@
   @DomName('HTMLShadowElement.HTMLShadowElement')
   @DocsEditable()
   factory ShadowElement() => document.createElement("shadow");
+
+
+  static ShadowElement internalCreateShadowElement() {
+    return new ShadowElement._internalWrap();
+  }
+
+  factory ShadowElement._internalWrap() {
+    return new ShadowElement.internal_();
+  }
+
+  ShadowElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -28446,7 +32827,7 @@
   @DomName('HTMLShadowElement.getDistributedNodes')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDistributedNodes() => wrap_jso_list(_blink.BlinkHTMLShadowElement.instance.getDistributedNodes_Callback_0_(unwrap_jso(this)));
+  List<Node> getDistributedNodes() => wrap_jso(_blink.BlinkHTMLShadowElement.instance.getDistributedNodes_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28464,6 +32845,18 @@
   // To suppress missing implicit constructor warnings.
   factory ShadowRoot._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ShadowRoot internalCreateShadowRoot() {
+    return new ShadowRoot._internalWrap();
+  }
+
+  factory ShadowRoot._internalWrap() {
+    return new ShadowRoot.internal_();
+  }
+
+  ShadowRoot.internal_() : super.internal_();
+
+
   @DomName('ShadowRoot.activeElement')
   @DocsEditable()
   Element get activeElement => wrap_jso(_blink.BlinkShadowRoot.instance.activeElement_Getter_(unwrap_jso(this)));
@@ -28479,7 +32872,7 @@
   
   @DomName('ShadowRoot.innerHTML')
   @DocsEditable()
-  void set innerHtml(String value) => _blink.BlinkShadowRoot.instance.innerHTML_Setter_(unwrap_jso(this), value);
+  set innerHtml(String value) => _blink.BlinkShadowRoot.instance.innerHTML_Setter_(unwrap_jso(this), value);
   
   @DomName('ShadowRoot.olderShadowRoot')
   @DocsEditable()
@@ -28489,7 +32882,7 @@
   @DomName('ShadowRoot.styleSheets')
   @DocsEditable()
   @Experimental() // untriaged
-  List<StyleSheet> get styleSheets => wrap_jso_list(_blink.BlinkShadowRoot.instance.styleSheets_Getter_(unwrap_jso(this)));
+  List<StyleSheet> get styleSheets => wrap_jso(_blink.BlinkShadowRoot.instance.styleSheets_Getter_(unwrap_jso(this)));
   
   @DomName('ShadowRoot.cloneNode')
   @DocsEditable()
@@ -28505,11 +32898,11 @@
   
   @DomName('ShadowRoot.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String className) => wrap_jso_list(_blink.BlinkShadowRoot.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), className));
+  List<Node> getElementsByClassName(String className) => wrap_jso(_blink.BlinkShadowRoot.instance.getElementsByClassName_Callback_1_(unwrap_jso(this), className));
   
   @DomName('ShadowRoot.getElementsByTagName')
   @DocsEditable()
-  List<Node> getElementsByTagName(String tagName) => wrap_jso_list(_blink.BlinkShadowRoot.instance.getElementsByTagName_Callback_1_(unwrap_jso(this), tagName));
+  List<Node> getElementsByTagName(String tagName) => wrap_jso(_blink.BlinkShadowRoot.instance.getElementsByTagName_Callback_1_(unwrap_jso(this), tagName));
   
   @DomName('ShadowRoot.getSelection')
   @DocsEditable()
@@ -28536,7 +32929,7 @@
   }
 
   @deprecated
-  void set resetStyleInheritance(bool value) {
+  set resetStyleInheritance(bool value) {
     _shadowRootDeprecationReport();
   }
 
@@ -28548,7 +32941,7 @@
   }
 
   @deprecated
-  void set applyAuthorStyles(bool value) {
+  set applyAuthorStyles(bool value) {
     _shadowRootDeprecationReport();
   }
 }
@@ -28575,9 +32968,21 @@
   @DomName('SharedWorker.SharedWorker')
   @DocsEditable()
   factory SharedWorker(String scriptURL, [String name]) {
-    return _blink.BlinkSharedWorker.instance.constructorCallback_2_(scriptURL, name);
+    return wrap_jso(_blink.BlinkSharedWorker.instance.constructorCallback_2_(scriptURL, name));
   }
 
+
+  static SharedWorker internalCreateSharedWorker() {
+    return new SharedWorker._internalWrap();
+  }
+
+  factory SharedWorker._internalWrap() {
+    return new SharedWorker.internal_();
+  }
+
+  SharedWorker.internal_() : super.internal_();
+
+
   @DomName('SharedWorker.port')
   @DocsEditable()
   MessagePort get port => wrap_jso(_blink.BlinkSharedWorker.instance.port_Getter_(unwrap_jso(this)));
@@ -28585,7 +32990,7 @@
   @DomName('SharedWorker.workerStart')
   @DocsEditable()
   @Experimental() // untriaged
-  double get workerStart => _blink.BlinkSharedWorker.instance.workerStart_Getter_(unwrap_jso(this));
+  num get workerStart => _blink.BlinkSharedWorker.instance.workerStart_Getter_(unwrap_jso(this));
   
   @DomName('SharedWorker.onerror')
   @DocsEditable()
@@ -28618,6 +33023,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> connectEvent = const EventStreamProvider<Event>('connect');
 
+
+  static SharedWorkerGlobalScope internalCreateSharedWorkerGlobalScope() {
+    return new SharedWorkerGlobalScope._internalWrap();
+  }
+
+  factory SharedWorkerGlobalScope._internalWrap() {
+    return new SharedWorkerGlobalScope.internal_();
+  }
+
+  SharedWorkerGlobalScope.internal_() : super.internal_();
+
+
   @DomName('SharedWorkerGlobalScope.name')
   @DocsEditable()
   @Experimental() // untriaged
@@ -28645,6 +33062,18 @@
   // To suppress missing implicit constructor warnings.
   factory SourceBuffer._() { throw new UnsupportedError("Not supported"); }
 
+
+  static SourceBuffer internalCreateSourceBuffer() {
+    return new SourceBuffer._internalWrap();
+  }
+
+  factory SourceBuffer._internalWrap() {
+    return new SourceBuffer.internal_();
+  }
+
+  SourceBuffer.internal_() : super.internal_();
+
+
   @DomName('SourceBuffer.appendWindowEnd')
   @DocsEditable()
   @Experimental() // untriaged
@@ -28653,7 +33082,7 @@
   @DomName('SourceBuffer.appendWindowEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  void set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Setter_(unwrap_jso(this), value);
+  set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Setter_(unwrap_jso(this), value);
   
   @DomName('SourceBuffer.appendWindowStart')
   @DocsEditable()
@@ -28663,7 +33092,7 @@
   @DomName('SourceBuffer.appendWindowStart')
   @DocsEditable()
   @Experimental() // untriaged
-  void set appendWindowStart(num value) => _blink.BlinkSourceBuffer.instance.appendWindowStart_Setter_(unwrap_jso(this), value);
+  set appendWindowStart(num value) => _blink.BlinkSourceBuffer.instance.appendWindowStart_Setter_(unwrap_jso(this), value);
   
   @DomName('SourceBuffer.buffered')
   @DocsEditable()
@@ -28677,7 +33106,7 @@
   @DomName('SourceBuffer.mode')
   @DocsEditable()
   @Experimental() // untriaged
-  void set mode(String value) => _blink.BlinkSourceBuffer.instance.mode_Setter_(unwrap_jso(this), value);
+  set mode(String value) => _blink.BlinkSourceBuffer.instance.mode_Setter_(unwrap_jso(this), value);
   
   @DomName('SourceBuffer.timestampOffset')
   @DocsEditable()
@@ -28685,7 +33114,7 @@
   
   @DomName('SourceBuffer.timestampOffset')
   @DocsEditable()
-  void set timestampOffset(num value) => _blink.BlinkSourceBuffer.instance.timestampOffset_Setter_(unwrap_jso(this), value);
+  set timestampOffset(num value) => _blink.BlinkSourceBuffer.instance.timestampOffset_Setter_(unwrap_jso(this), value);
   
   @DomName('SourceBuffer.updating')
   @DocsEditable()
@@ -28736,6 +33165,18 @@
   // To suppress missing implicit constructor warnings.
   factory SourceBufferList._() { throw new UnsupportedError("Not supported"); }
 
+
+  static SourceBufferList internalCreateSourceBufferList() {
+    return new SourceBufferList._internalWrap();
+  }
+
+  factory SourceBufferList._internalWrap() {
+    return new SourceBufferList.internal_();
+  }
+
+  SourceBufferList.internal_() : super.internal_();
+
+
   @DomName('SourceBufferList.length')
   @DocsEditable()
   int get length => _blink.BlinkSourceBufferList.instance.length_Getter_(unwrap_jso(this));
@@ -28747,7 +33188,7 @@
   }
 
   SourceBuffer _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSourceBufferList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, SourceBuffer value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -28755,7 +33196,7 @@
   // SourceBuffer is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -28807,6 +33248,18 @@
   @DomName('HTMLSourceElement.HTMLSourceElement')
   @DocsEditable()
   factory SourceElement() => document.createElement("source");
+
+
+  static SourceElement internalCreateSourceElement() {
+    return new SourceElement._internalWrap();
+  }
+
+  factory SourceElement._internalWrap() {
+    return new SourceElement.internal_();
+  }
+
+  SourceElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -28822,7 +33275,7 @@
   @DomName('HTMLSourceElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLSourceElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLSourceElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSourceElement.media')
   @DocsEditable()
@@ -28830,7 +33283,7 @@
   
   @DomName('HTMLSourceElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkHTMLSourceElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkHTMLSourceElement.instance.media_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSourceElement.sizes')
   @DocsEditable()
@@ -28840,7 +33293,7 @@
   @DomName('HTMLSourceElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  void set sizes(String value) => _blink.BlinkHTMLSourceElement.instance.sizes_Setter_(unwrap_jso(this), value);
+  set sizes(String value) => _blink.BlinkHTMLSourceElement.instance.sizes_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSourceElement.src')
   @DocsEditable()
@@ -28848,7 +33301,7 @@
   
   @DomName('HTMLSourceElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLSourceElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLSourceElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSourceElement.srcset')
   @DocsEditable()
@@ -28858,7 +33311,7 @@
   @DomName('HTMLSourceElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  void set srcset(String value) => _blink.BlinkHTMLSourceElement.instance.srcset_Setter_(unwrap_jso(this), value);
+  set srcset(String value) => _blink.BlinkHTMLSourceElement.instance.srcset_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLSourceElement.type')
   @DocsEditable()
@@ -28866,7 +33319,7 @@
   
   @DomName('HTMLSourceElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLSourceElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLSourceElement.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28883,6 +33336,21 @@
   // To suppress missing implicit constructor warnings.
   factory SourceInfo._() { throw new UnsupportedError("Not supported"); }
 
+  static SourceInfo internalCreateSourceInfo() {
+    return new SourceInfo._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SourceInfo._internalWrap() {
+    return new SourceInfo.internal_();
+  }
+
+  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
@@ -28920,6 +33388,18 @@
   @DomName('HTMLSpanElement.HTMLSpanElement')
   @DocsEditable()
   factory SpanElement() => document.createElement("span");
+
+
+  static SpanElement internalCreateSpanElement() {
+    return new SpanElement._internalWrap();
+  }
+
+  factory SpanElement._internalWrap() {
+    return new SpanElement.internal_();
+  }
+
+  SpanElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -28946,16 +33426,31 @@
   @DomName('SpeechGrammar.SpeechGrammar')
   @DocsEditable()
   factory SpeechGrammar() {
-    return _blink.BlinkSpeechGrammar.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkSpeechGrammar.instance.constructorCallback_0_());
   }
 
+  static SpeechGrammar internalCreateSpeechGrammar() {
+    return new SpeechGrammar._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SpeechGrammar._internalWrap() {
+    return new SpeechGrammar.internal_();
+  }
+
+  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));
   
   @DomName('SpeechGrammar.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkSpeechGrammar.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkSpeechGrammar.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechGrammar.weight')
   @DocsEditable()
@@ -28963,7 +33458,7 @@
   
   @DomName('SpeechGrammar.weight')
   @DocsEditable()
-  void set weight(num value) => _blink.BlinkSpeechGrammar.instance.weight_Setter_(unwrap_jso(this), value);
+  set weight(num value) => _blink.BlinkSpeechGrammar.instance.weight_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28977,16 +33472,31 @@
 @DomName('SpeechGrammarList')
 // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#dfn-speechgrammarlist
 @Experimental()
-class SpeechGrammarList extends NativeFieldWrapperClass2 with ListMixin<SpeechGrammar>, ImmutableListMixin<SpeechGrammar> implements List<SpeechGrammar> {
+class SpeechGrammarList extends JsoNativeFieldWrapper with ListMixin<SpeechGrammar>, ImmutableListMixin<SpeechGrammar> implements List<SpeechGrammar> {
   // To suppress missing implicit constructor warnings.
   factory SpeechGrammarList._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('SpeechGrammarList.SpeechGrammarList')
   @DocsEditable()
   factory SpeechGrammarList() {
-    return _blink.BlinkSpeechGrammarList.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkSpeechGrammarList.instance.constructorCallback_0_());
   }
 
+  static SpeechGrammarList internalCreateSpeechGrammarList() {
+    return new SpeechGrammarList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SpeechGrammarList._internalWrap() {
+    return new SpeechGrammarList.internal_();
+  }
+
+  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));
@@ -28998,7 +33508,7 @@
   }
 
   SpeechGrammar _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSpeechGrammarList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, SpeechGrammar value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -29006,7 +33516,7 @@
   // SpeechGrammar is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -29189,9 +33699,21 @@
   @DomName('SpeechRecognition.SpeechRecognition')
   @DocsEditable()
   factory SpeechRecognition() {
-    return _blink.BlinkSpeechRecognition.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkSpeechRecognition.instance.constructorCallback_0_());
   }
 
+
+  static SpeechRecognition internalCreateSpeechRecognition() {
+    return new SpeechRecognition._internalWrap();
+  }
+
+  factory SpeechRecognition._internalWrap() {
+    return new SpeechRecognition.internal_();
+  }
+
+  SpeechRecognition.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -29201,7 +33723,7 @@
   
   @DomName('SpeechRecognition.continuous')
   @DocsEditable()
-  void set continuous(bool value) => _blink.BlinkSpeechRecognition.instance.continuous_Setter_(unwrap_jso(this), value);
+  set continuous(bool value) => _blink.BlinkSpeechRecognition.instance.continuous_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechRecognition.grammars')
   @DocsEditable()
@@ -29209,7 +33731,7 @@
   
   @DomName('SpeechRecognition.grammars')
   @DocsEditable()
-  void set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.instance.grammars_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.instance.grammars_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('SpeechRecognition.interimResults')
   @DocsEditable()
@@ -29217,7 +33739,7 @@
   
   @DomName('SpeechRecognition.interimResults')
   @DocsEditable()
-  void set interimResults(bool value) => _blink.BlinkSpeechRecognition.instance.interimResults_Setter_(unwrap_jso(this), value);
+  set interimResults(bool value) => _blink.BlinkSpeechRecognition.instance.interimResults_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechRecognition.lang')
   @DocsEditable()
@@ -29225,7 +33747,7 @@
   
   @DomName('SpeechRecognition.lang')
   @DocsEditable()
-  void set lang(String value) => _blink.BlinkSpeechRecognition.instance.lang_Setter_(unwrap_jso(this), value);
+  set lang(String value) => _blink.BlinkSpeechRecognition.instance.lang_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechRecognition.maxAlternatives')
   @DocsEditable()
@@ -29233,7 +33755,7 @@
   
   @DomName('SpeechRecognition.maxAlternatives')
   @DocsEditable()
-  void set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Setter_(unwrap_jso(this), value);
+  set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechRecognition.abort')
   @DocsEditable()
@@ -29319,9 +33841,24 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechRecognitionAlternative._() { throw new UnsupportedError("Not supported"); }
 
+  static SpeechRecognitionAlternative internalCreateSpeechRecognitionAlternative() {
+    return new SpeechRecognitionAlternative._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SpeechRecognitionAlternative._internalWrap() {
+    return new SpeechRecognitionAlternative.internal_();
+  }
+
+  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()
-  double get confidence => _blink.BlinkSpeechRecognitionAlternative.instance.confidence_Getter_(unwrap_jso(this));
+  num get confidence => _blink.BlinkSpeechRecognitionAlternative.instance.confidence_Getter_(unwrap_jso(this));
   
   @DomName('SpeechRecognitionAlternative.transcript')
   @DocsEditable()
@@ -29344,6 +33881,18 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechRecognitionError._() { throw new UnsupportedError("Not supported"); }
 
+
+  static SpeechRecognitionError internalCreateSpeechRecognitionError() {
+    return new SpeechRecognitionError._internalWrap();
+  }
+
+  factory SpeechRecognitionError._internalWrap() {
+    return new SpeechRecognitionError.internal_();
+  }
+
+  SpeechRecognitionError.internal_() : super.internal_();
+
+
   @DomName('SpeechRecognitionError.error')
   @DocsEditable()
   String get error => _blink.BlinkSpeechRecognitionError.instance.error_Getter_(unwrap_jso(this));
@@ -29369,6 +33918,18 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechRecognitionEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static SpeechRecognitionEvent internalCreateSpeechRecognitionEvent() {
+    return new SpeechRecognitionEvent._internalWrap();
+  }
+
+  factory SpeechRecognitionEvent._internalWrap() {
+    return new SpeechRecognitionEvent.internal_();
+  }
+
+  SpeechRecognitionEvent.internal_() : super.internal_();
+
+
   @DomName('SpeechRecognitionEvent.emma')
   @DocsEditable()
   Document get emma => wrap_jso(_blink.BlinkSpeechRecognitionEvent.instance.emma_Getter_(unwrap_jso(this)));
@@ -29383,7 +33944,7 @@
   
   @DomName('SpeechRecognitionEvent.results')
   @DocsEditable()
-  List<SpeechRecognitionResult> get results => wrap_jso_list(_blink.BlinkSpeechRecognitionEvent.instance.results_Getter_(unwrap_jso(this)));
+  List<SpeechRecognitionResult> get results => wrap_jso(_blink.BlinkSpeechRecognitionEvent.instance.results_Getter_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29402,6 +33963,21 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechRecognitionResult._() { throw new UnsupportedError("Not supported"); }
 
+  static SpeechRecognitionResult internalCreateSpeechRecognitionResult() {
+    return new SpeechRecognitionResult._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SpeechRecognitionResult._internalWrap() {
+    return new SpeechRecognitionResult.internal_();
+  }
+
+  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));
@@ -29430,6 +34006,18 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechSynthesis._() { throw new UnsupportedError("Not supported"); }
 
+
+  static SpeechSynthesis internalCreateSpeechSynthesis() {
+    return new SpeechSynthesis._internalWrap();
+  }
+
+  factory SpeechSynthesis._internalWrap() {
+    return new SpeechSynthesis.internal_();
+  }
+
+  SpeechSynthesis.internal_() : super.internal_();
+
+
   @DomName('SpeechSynthesis.paused')
   @DocsEditable()
   bool get paused => _blink.BlinkSpeechSynthesis.instance.paused_Getter_(unwrap_jso(this));
@@ -29448,7 +34036,7 @@
   
   @DomName('SpeechSynthesis.getVoices')
   @DocsEditable()
-  List<SpeechSynthesisVoice> getVoices() => _blink.BlinkSpeechSynthesis.instance.getVoices_Callback_0_(unwrap_jso(this));
+  List<SpeechSynthesisVoice> getVoices() => wrap_jso(_blink.BlinkSpeechSynthesis.instance.getVoices_Callback_0_(unwrap_jso(this)));
   
   @DomName('SpeechSynthesis.pause')
   @DocsEditable()
@@ -29478,13 +34066,25 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechSynthesisEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static SpeechSynthesisEvent internalCreateSpeechSynthesisEvent() {
+    return new SpeechSynthesisEvent._internalWrap();
+  }
+
+  factory SpeechSynthesisEvent._internalWrap() {
+    return new SpeechSynthesisEvent.internal_();
+  }
+
+  SpeechSynthesisEvent.internal_() : super.internal_();
+
+
   @DomName('SpeechSynthesisEvent.charIndex')
   @DocsEditable()
   int get charIndex => _blink.BlinkSpeechSynthesisEvent.instance.charIndex_Getter_(unwrap_jso(this));
   
   @DomName('SpeechSynthesisEvent.elapsedTime')
   @DocsEditable()
-  double get elapsedTime => _blink.BlinkSpeechSynthesisEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
+  num get elapsedTime => _blink.BlinkSpeechSynthesisEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
   
   @DomName('SpeechSynthesisEvent.name')
   @DocsEditable()
@@ -29579,16 +34179,28 @@
   @DomName('SpeechSynthesisUtterance.SpeechSynthesisUtterance')
   @DocsEditable()
   factory SpeechSynthesisUtterance([String text]) {
-    return _blink.BlinkSpeechSynthesisUtterance.instance.constructorCallback_1_(text);
+    return wrap_jso(_blink.BlinkSpeechSynthesisUtterance.instance.constructorCallback_1_(text));
   }
 
+
+  static SpeechSynthesisUtterance internalCreateSpeechSynthesisUtterance() {
+    return new SpeechSynthesisUtterance._internalWrap();
+  }
+
+  factory SpeechSynthesisUtterance._internalWrap() {
+    return new SpeechSynthesisUtterance.internal_();
+  }
+
+  SpeechSynthesisUtterance.internal_() : super.internal_();
+
+
   @DomName('SpeechSynthesisUtterance.lang')
   @DocsEditable()
   String get lang => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Getter_(unwrap_jso(this));
   
   @DomName('SpeechSynthesisUtterance.lang')
   @DocsEditable()
-  void set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Setter_(unwrap_jso(this), value);
+  set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechSynthesisUtterance.pitch')
   @DocsEditable()
@@ -29596,7 +34208,7 @@
   
   @DomName('SpeechSynthesisUtterance.pitch')
   @DocsEditable()
-  void set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Setter_(unwrap_jso(this), value);
+  set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechSynthesisUtterance.rate')
   @DocsEditable()
@@ -29604,7 +34216,7 @@
   
   @DomName('SpeechSynthesisUtterance.rate')
   @DocsEditable()
-  void set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Setter_(unwrap_jso(this), value);
+  set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechSynthesisUtterance.text')
   @DocsEditable()
@@ -29612,7 +34224,7 @@
   
   @DomName('SpeechSynthesisUtterance.text')
   @DocsEditable()
-  void set text(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.text_Setter_(unwrap_jso(this), value);
+  set text(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.text_Setter_(unwrap_jso(this), value);
   
   @DomName('SpeechSynthesisUtterance.voice')
   @DocsEditable()
@@ -29620,7 +34232,7 @@
   
   @DomName('SpeechSynthesisUtterance.voice')
   @DocsEditable()
-  void set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.instance.voice_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.instance.voice_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('SpeechSynthesisUtterance.volume')
   @DocsEditable()
@@ -29628,7 +34240,7 @@
   
   @DomName('SpeechSynthesisUtterance.volume')
   @DocsEditable()
-  void set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Setter_(unwrap_jso(this), value);
+  set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Setter_(unwrap_jso(this), value);
   
   /// Stream of `boundary` events handled by this [SpeechSynthesisUtterance].
   @DomName('SpeechSynthesisUtterance.onboundary')
@@ -29681,6 +34293,21 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechSynthesisVoice._() { throw new UnsupportedError("Not supported"); }
 
+  static SpeechSynthesisVoice internalCreateSpeechSynthesisVoice() {
+    return new SpeechSynthesisVoice._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SpeechSynthesisVoice._internalWrap() {
+    return new SpeechSynthesisVoice.internal_();
+  }
+
+  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));
@@ -29792,6 +34419,21 @@
   // To suppress missing implicit constructor warnings.
   factory Storage._() { throw new UnsupportedError("Not supported"); }
 
+  static Storage internalCreateStorage() {
+    return new Storage._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Storage._internalWrap() {
+    return new Storage.internal_();
+  }
+
+  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));
@@ -29882,6 +34524,18 @@
   // To suppress missing implicit constructor warnings.
   factory StorageEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static StorageEvent internalCreateStorageEvent() {
+    return new StorageEvent._internalWrap();
+  }
+
+  factory StorageEvent._internalWrap() {
+    return new StorageEvent.internal_();
+  }
+
+  StorageEvent.internal_() : super.internal_();
+
+
   @DomName('StorageEvent.key')
   @DocsEditable()
   String get key => _blink.BlinkStorageEvent.instance.key_Getter_(unwrap_jso(this));
@@ -29922,6 +34576,21 @@
   // To suppress missing implicit constructor warnings.
   factory StorageInfo._() { throw new UnsupportedError("Not supported"); }
 
+  static StorageInfo internalCreateStorageInfo() {
+    return new StorageInfo._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory StorageInfo._internalWrap() {
+    return new StorageInfo.internal_();
+  }
+
+  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
@@ -29948,6 +34617,21 @@
   // To suppress missing implicit constructor warnings.
   factory StorageQuota._() { throw new UnsupportedError("Not supported"); }
 
+  static StorageQuota internalCreateStorageQuota() {
+    return new StorageQuota._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory StorageQuota._internalWrap() {
+    return new StorageQuota.internal_();
+  }
+
+  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
@@ -29956,12 +34640,12 @@
   @DomName('StorageQuota.queryInfo')
   @DocsEditable()
   @Experimental() // untriaged
-  Future queryInfo(String type) => _blink.BlinkStorageQuota.instance.queryInfo_Callback_1_(unwrap_jso(this), type);
+  Future queryInfo(String type) => wrap_jso(_blink.BlinkStorageQuota.instance.queryInfo_Callback_1_(unwrap_jso(this), type));
   
   @DomName('StorageQuota.requestPersistentQuota')
   @DocsEditable()
   @Experimental() // untriaged
-  Future requestPersistentQuota(int newQuota) => _blink.BlinkStorageQuota.instance.requestPersistentQuota_Callback_1_(unwrap_jso(this), newQuota);
+  Future requestPersistentQuota(int newQuota) => wrap_jso(_blink.BlinkStorageQuota.instance.requestPersistentQuota_Callback_1_(unwrap_jso(this), newQuota));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30013,6 +34697,18 @@
   @DomName('HTMLStyleElement.HTMLStyleElement')
   @DocsEditable()
   factory StyleElement() => document.createElement("style");
+
+
+  static StyleElement internalCreateStyleElement() {
+    return new StyleElement._internalWrap();
+  }
+
+  factory StyleElement._internalWrap() {
+    return new StyleElement.internal_();
+  }
+
+  StyleElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30026,7 +34722,7 @@
   
   @DomName('HTMLStyleElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLStyleElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLStyleElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLStyleElement.media')
   @DocsEditable()
@@ -30034,7 +34730,7 @@
   
   @DomName('HTMLStyleElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkHTMLStyleElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkHTMLStyleElement.instance.media_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLStyleElement.sheet')
   @DocsEditable()
@@ -30046,7 +34742,7 @@
   
   @DomName('HTMLStyleElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLStyleElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkHTMLStyleElement.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30064,6 +34760,21 @@
   // To suppress missing implicit constructor warnings.
   factory StyleMedia._() { throw new UnsupportedError("Not supported"); }
 
+  static StyleMedia internalCreateStyleMedia() {
+    return new StyleMedia._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory StyleMedia._internalWrap() {
+    return new StyleMedia.internal_();
+  }
+
+  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));
@@ -30086,13 +34797,28 @@
   // To suppress missing implicit constructor warnings.
   factory StyleSheet._() { throw new UnsupportedError("Not supported"); }
 
+  static StyleSheet internalCreateStyleSheet() {
+    return new StyleSheet._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory StyleSheet._internalWrap() {
+    return new StyleSheet.internal_();
+  }
+
+  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));
   
   @DomName('StyleSheet.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkStyleSheet.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkStyleSheet.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('StyleSheet.href')
   @DocsEditable()
@@ -30135,6 +34861,18 @@
   @DomName('HTMLTableCaptionElement.HTMLTableCaptionElement')
   @DocsEditable()
   factory TableCaptionElement() => document.createElement("caption");
+
+
+  static TableCaptionElement internalCreateTableCaptionElement() {
+    return new TableCaptionElement._internalWrap();
+  }
+
+  factory TableCaptionElement._internalWrap() {
+    return new TableCaptionElement.internal_();
+  }
+
+  TableCaptionElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30159,6 +34897,18 @@
   @DomName('HTMLTableCellElement.HTMLTableCellElement')
   @DocsEditable()
   factory TableCellElement() => document.createElement("td");
+
+
+  static TableCellElement internalCreateTableCellElement() {
+    return new TableCellElement._internalWrap();
+  }
+
+  factory TableCellElement._internalWrap() {
+    return new TableCellElement.internal_();
+  }
+
+  TableCellElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30176,7 +34926,7 @@
   
   @DomName('HTMLTableCellElement.colSpan')
   @DocsEditable()
-  void set colSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.colSpan_Setter_(unwrap_jso(this), value);
+  set colSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.colSpan_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTableCellElement.headers')
   @DocsEditable()
@@ -30184,7 +34934,7 @@
   
   @DomName('HTMLTableCellElement.headers')
   @DocsEditable()
-  void set headers(String value) => _blink.BlinkHTMLTableCellElement.instance.headers_Setter_(unwrap_jso(this), value);
+  set headers(String value) => _blink.BlinkHTMLTableCellElement.instance.headers_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTableCellElement.rowSpan')
   @DocsEditable()
@@ -30192,7 +34942,7 @@
   
   @DomName('HTMLTableCellElement.rowSpan')
   @DocsEditable()
-  void set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Setter_(unwrap_jso(this), value);
+  set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30211,6 +34961,18 @@
   @DomName('HTMLTableColElement.HTMLTableColElement')
   @DocsEditable()
   factory TableColElement() => document.createElement("col");
+
+
+  static TableColElement internalCreateTableColElement() {
+    return new TableColElement._internalWrap();
+  }
+
+  factory TableColElement._internalWrap() {
+    return new TableColElement.internal_();
+  }
+
+  TableColElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30224,7 +34986,7 @@
   
   @DomName('HTMLTableColElement.span')
   @DocsEditable()
-  void set span(int value) => _blink.BlinkHTMLTableColElement.instance.span_Setter_(unwrap_jso(this), value);
+  set span(int value) => _blink.BlinkHTMLTableColElement.instance.span_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -30261,6 +35023,18 @@
   @DomName('HTMLTableElement.HTMLTableElement')
   @DocsEditable()
   factory TableElement() => document.createElement("table");
+
+
+  static TableElement internalCreateTableElement() {
+    return new TableElement._internalWrap();
+  }
+
+  factory TableElement._internalWrap() {
+    return new TableElement.internal_();
+  }
+
+  TableElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30274,15 +35048,15 @@
   
   @DomName('HTMLTableElement.caption')
   @DocsEditable()
-  void set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.instance.caption_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.instance.caption_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('HTMLTableElement.rows')
   @DocsEditable()
-  List<Node> get _rows => wrap_jso_list(_blink.BlinkHTMLTableElement.instance.rows_Getter_(unwrap_jso(this)));
+  List<Node> get _rows => wrap_jso(_blink.BlinkHTMLTableElement.instance.rows_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLTableElement.tBodies')
   @DocsEditable()
-  List<Node> get _tBodies => wrap_jso_list(_blink.BlinkHTMLTableElement.instance.tBodies_Getter_(unwrap_jso(this)));
+  List<Node> get _tBodies => wrap_jso(_blink.BlinkHTMLTableElement.instance.tBodies_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLTableElement.tFoot')
   @DocsEditable()
@@ -30290,7 +35064,7 @@
   
   @DomName('HTMLTableElement.tFoot')
   @DocsEditable()
-  void set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tFoot_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tFoot_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('HTMLTableElement.tHead')
   @DocsEditable()
@@ -30298,7 +35072,7 @@
   
   @DomName('HTMLTableElement.tHead')
   @DocsEditable()
-  void set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tHead_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tHead_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('HTMLTableElement.createCaption')
   @DocsEditable()
@@ -30334,9 +35108,9 @@
   
   HtmlElement _insertRow([int index]) {
     if (index != null) {
-      return _blink.BlinkHTMLTableElement.instance.insertRow_Callback_1_(unwrap_jso(this), index);
+      return wrap_jso(_blink.BlinkHTMLTableElement.instance.insertRow_Callback_1_(unwrap_jso(this), index));
     }
-    return _blink.BlinkHTMLTableElement.instance.insertRow_Callback_0_(unwrap_jso(this));
+    return wrap_jso(_blink.BlinkHTMLTableElement.instance.insertRow_Callback_0_(unwrap_jso(this)));
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -30365,6 +35139,18 @@
   @DomName('HTMLTableRowElement.HTMLTableRowElement')
   @DocsEditable()
   factory TableRowElement() => document.createElement("tr");
+
+
+  static TableRowElement internalCreateTableRowElement() {
+    return new TableRowElement._internalWrap();
+  }
+
+  factory TableRowElement._internalWrap() {
+    return new TableRowElement.internal_();
+  }
+
+  TableRowElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30374,7 +35160,7 @@
 
   @DomName('HTMLTableRowElement.cells')
   @DocsEditable()
-  List<Node> get _cells => wrap_jso_list(_blink.BlinkHTMLTableRowElement.instance.cells_Getter_(unwrap_jso(this)));
+  List<Node> get _cells => wrap_jso(_blink.BlinkHTMLTableRowElement.instance.cells_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLTableRowElement.rowIndex')
   @DocsEditable()
@@ -30390,9 +35176,9 @@
   
   HtmlElement _insertCell([int index]) {
     if (index != null) {
-      return _blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_1_(unwrap_jso(this), index);
+      return wrap_jso(_blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_1_(unwrap_jso(this), index));
     }
-    return _blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_0_(unwrap_jso(this));
+    return wrap_jso(_blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_0_(unwrap_jso(this)));
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -30417,6 +35203,18 @@
 
   // To suppress missing implicit constructor warnings.
   factory TableSectionElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static TableSectionElement internalCreateTableSectionElement() {
+    return new TableSectionElement._internalWrap();
+  }
+
+  factory TableSectionElement._internalWrap() {
+    return new TableSectionElement.internal_();
+  }
+
+  TableSectionElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30426,7 +35224,7 @@
 
   @DomName('HTMLTableSectionElement.rows')
   @DocsEditable()
-  List<Node> get _rows => wrap_jso_list(_blink.BlinkHTMLTableSectionElement.instance.rows_Getter_(unwrap_jso(this)));
+  List<Node> get _rows => wrap_jso(_blink.BlinkHTMLTableSectionElement.instance.rows_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLTableSectionElement.deleteRow')
   @DocsEditable()
@@ -30434,9 +35232,9 @@
   
   HtmlElement _insertRow([int index]) {
     if (index != null) {
-      return _blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_1_(unwrap_jso(this), index);
+      return wrap_jso(_blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_1_(unwrap_jso(this), index));
     }
-    return _blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_0_(unwrap_jso(this));
+    return wrap_jso(_blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_0_(unwrap_jso(this)));
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -30458,6 +35256,18 @@
   @DomName('HTMLTemplateElement.HTMLTemplateElement')
   @DocsEditable()
   factory TemplateElement() => document.createElement("template");
+
+
+  static TemplateElement internalCreateTemplateElement() {
+    return new TemplateElement._internalWrap();
+  }
+
+  factory TemplateElement._internalWrap() {
+    return new TemplateElement.internal_();
+  }
+
+  TemplateElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30502,6 +35312,18 @@
   // To suppress missing implicit constructor warnings.
   factory Text._() { throw new UnsupportedError("Not supported"); }
 
+
+  static Text internalCreateText() {
+    return new Text._internalWrap();
+  }
+
+  factory Text._internalWrap() {
+    return new Text.internal_();
+  }
+
+  Text.internal_() : super.internal_();
+
+
   @DomName('Text.wholeText')
   @DocsEditable()
   String get wholeText => _blink.BlinkText.instance.wholeText_Getter_(unwrap_jso(this));
@@ -30509,7 +35331,7 @@
   @DomName('Text.getDestinationInsertionPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDestinationInsertionPoints() => wrap_jso_list(_blink.BlinkText.instance.getDestinationInsertionPoints_Callback_0_(unwrap_jso(this)));
+  List<Node> getDestinationInsertionPoints() => wrap_jso(_blink.BlinkText.instance.getDestinationInsertionPoints_Callback_0_(unwrap_jso(this)));
   
   @DomName('Text.splitText')
   @DocsEditable()
@@ -30532,6 +35354,18 @@
   @DomName('HTMLTextAreaElement.HTMLTextAreaElement')
   @DocsEditable()
   factory TextAreaElement() => document.createElement("textarea");
+
+
+  static TextAreaElement internalCreateTextAreaElement() {
+    return new TextAreaElement._internalWrap();
+  }
+
+  factory TextAreaElement._internalWrap() {
+    return new TextAreaElement.internal_();
+  }
+
+  TextAreaElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -30545,7 +35379,7 @@
   
   @DomName('HTMLTextAreaElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Setter_(unwrap_jso(this), value);
+  set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.cols')
   @DocsEditable()
@@ -30553,7 +35387,7 @@
   
   @DomName('HTMLTextAreaElement.cols')
   @DocsEditable()
-  void set cols(int value) => _blink.BlinkHTMLTextAreaElement.instance.cols_Setter_(unwrap_jso(this), value);
+  set cols(int value) => _blink.BlinkHTMLTextAreaElement.instance.cols_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.defaultValue')
   @DocsEditable()
@@ -30561,7 +35395,7 @@
   
   @DomName('HTMLTextAreaElement.defaultValue')
   @DocsEditable()
-  void set defaultValue(String value) => _blink.BlinkHTMLTextAreaElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
+  set defaultValue(String value) => _blink.BlinkHTMLTextAreaElement.instance.defaultValue_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.dirName')
   @DocsEditable()
@@ -30573,7 +35407,7 @@
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-textarea-dirname
   @Experimental()
-  void set dirName(String value) => _blink.BlinkHTMLTextAreaElement.instance.dirName_Setter_(unwrap_jso(this), value);
+  set dirName(String value) => _blink.BlinkHTMLTextAreaElement.instance.dirName_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.disabled')
   @DocsEditable()
@@ -30581,7 +35415,7 @@
   
   @DomName('HTMLTextAreaElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.form')
   @DocsEditable()
@@ -30595,12 +35429,12 @@
   @DomName('HTMLTextAreaElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  void set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Setter_(unwrap_jso(this), value);
+  set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => wrap_jso_list(_blink.BlinkHTMLTextAreaElement.instance.labels_Getter_(unwrap_jso(this)));
+  List<Node> get labels => wrap_jso(_blink.BlinkHTMLTextAreaElement.instance.labels_Getter_(unwrap_jso(this)));
   
   @DomName('HTMLTextAreaElement.maxLength')
   @DocsEditable()
@@ -30608,7 +35442,7 @@
   
   @DomName('HTMLTextAreaElement.maxLength')
   @DocsEditable()
-  void set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Setter_(unwrap_jso(this), value);
+  set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.name')
   @DocsEditable()
@@ -30616,7 +35450,7 @@
   
   @DomName('HTMLTextAreaElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLTextAreaElement.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkHTMLTextAreaElement.instance.name_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.placeholder')
   @DocsEditable()
@@ -30624,7 +35458,7 @@
   
   @DomName('HTMLTextAreaElement.placeholder')
   @DocsEditable()
-  void set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Setter_(unwrap_jso(this), value);
+  set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.readOnly')
   @DocsEditable()
@@ -30632,7 +35466,7 @@
   
   @DomName('HTMLTextAreaElement.readOnly')
   @DocsEditable()
-  void set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Setter_(unwrap_jso(this), value);
+  set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.required')
   @DocsEditable()
@@ -30640,7 +35474,7 @@
   
   @DomName('HTMLTextAreaElement.required')
   @DocsEditable()
-  void set required(bool value) => _blink.BlinkHTMLTextAreaElement.instance.required_Setter_(unwrap_jso(this), value);
+  set required(bool value) => _blink.BlinkHTMLTextAreaElement.instance.required_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.rows')
   @DocsEditable()
@@ -30648,7 +35482,7 @@
   
   @DomName('HTMLTextAreaElement.rows')
   @DocsEditable()
-  void set rows(int value) => _blink.BlinkHTMLTextAreaElement.instance.rows_Setter_(unwrap_jso(this), value);
+  set rows(int value) => _blink.BlinkHTMLTextAreaElement.instance.rows_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.selectionDirection')
   @DocsEditable()
@@ -30656,7 +35490,7 @@
   
   @DomName('HTMLTextAreaElement.selectionDirection')
   @DocsEditable()
-  void set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Setter_(unwrap_jso(this), value);
+  set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.selectionEnd')
   @DocsEditable()
@@ -30664,7 +35498,7 @@
   
   @DomName('HTMLTextAreaElement.selectionEnd')
   @DocsEditable()
-  void set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Setter_(unwrap_jso(this), value);
+  set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.selectionStart')
   @DocsEditable()
@@ -30672,7 +35506,7 @@
   
   @DomName('HTMLTextAreaElement.selectionStart')
   @DocsEditable()
-  void set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Setter_(unwrap_jso(this), value);
+  set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.textLength')
   @DocsEditable()
@@ -30696,7 +35530,7 @@
   
   @DomName('HTMLTextAreaElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLTextAreaElement.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkHTMLTextAreaElement.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.willValidate')
   @DocsEditable()
@@ -30708,7 +35542,7 @@
   
   @DomName('HTMLTextAreaElement.wrap')
   @DocsEditable()
-  void set wrap(String value) => _blink.BlinkHTMLTextAreaElement.instance.wrap_Setter_(unwrap_jso(this), value);
+  set wrap(String value) => _blink.BlinkHTMLTextAreaElement.instance.wrap_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTextAreaElement.checkValidity')
   @DocsEditable()
@@ -30766,6 +35600,18 @@
   // To suppress missing implicit constructor warnings.
   factory TextEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static TextEvent internalCreateTextEvent() {
+    return new TextEvent._internalWrap();
+  }
+
+  factory TextEvent._internalWrap() {
+    return new TextEvent.internal_();
+  }
+
+  TextEvent.internal_() : super.internal_();
+
+
   @DomName('TextEvent.data')
   @DocsEditable()
   String get data => _blink.BlinkTextEvent.instance.data_Getter_(unwrap_jso(this));
@@ -30788,64 +35634,79 @@
   // To suppress missing implicit constructor warnings.
   factory TextMetrics._() { throw new UnsupportedError("Not supported"); }
 
+  static TextMetrics internalCreateTextMetrics() {
+    return new TextMetrics._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory TextMetrics._internalWrap() {
+    return new TextMetrics.internal_();
+  }
+
+  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
-  double get actualBoundingBoxAscent => _blink.BlinkTextMetrics.instance.actualBoundingBoxAscent_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxAscent => _blink.BlinkTextMetrics.instance.actualBoundingBoxAscent_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.actualBoundingBoxDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get actualBoundingBoxDescent => _blink.BlinkTextMetrics.instance.actualBoundingBoxDescent_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxDescent => _blink.BlinkTextMetrics.instance.actualBoundingBoxDescent_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.actualBoundingBoxLeft')
   @DocsEditable()
   @Experimental() // untriaged
-  double get actualBoundingBoxLeft => _blink.BlinkTextMetrics.instance.actualBoundingBoxLeft_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxLeft => _blink.BlinkTextMetrics.instance.actualBoundingBoxLeft_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.actualBoundingBoxRight')
   @DocsEditable()
   @Experimental() // untriaged
-  double get actualBoundingBoxRight => _blink.BlinkTextMetrics.instance.actualBoundingBoxRight_Getter_(unwrap_jso(this));
+  num get actualBoundingBoxRight => _blink.BlinkTextMetrics.instance.actualBoundingBoxRight_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.alphabeticBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  double get alphabeticBaseline => _blink.BlinkTextMetrics.instance.alphabeticBaseline_Getter_(unwrap_jso(this));
+  num get alphabeticBaseline => _blink.BlinkTextMetrics.instance.alphabeticBaseline_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.emHeightAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get emHeightAscent => _blink.BlinkTextMetrics.instance.emHeightAscent_Getter_(unwrap_jso(this));
+  num get emHeightAscent => _blink.BlinkTextMetrics.instance.emHeightAscent_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.emHeightDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get emHeightDescent => _blink.BlinkTextMetrics.instance.emHeightDescent_Getter_(unwrap_jso(this));
+  num get emHeightDescent => _blink.BlinkTextMetrics.instance.emHeightDescent_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.fontBoundingBoxAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get fontBoundingBoxAscent => _blink.BlinkTextMetrics.instance.fontBoundingBoxAscent_Getter_(unwrap_jso(this));
+  num get fontBoundingBoxAscent => _blink.BlinkTextMetrics.instance.fontBoundingBoxAscent_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.fontBoundingBoxDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get fontBoundingBoxDescent => _blink.BlinkTextMetrics.instance.fontBoundingBoxDescent_Getter_(unwrap_jso(this));
+  num get fontBoundingBoxDescent => _blink.BlinkTextMetrics.instance.fontBoundingBoxDescent_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.hangingBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  double get hangingBaseline => _blink.BlinkTextMetrics.instance.hangingBaseline_Getter_(unwrap_jso(this));
+  num get hangingBaseline => _blink.BlinkTextMetrics.instance.hangingBaseline_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.ideographicBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  double get ideographicBaseline => _blink.BlinkTextMetrics.instance.ideographicBaseline_Getter_(unwrap_jso(this));
+  num get ideographicBaseline => _blink.BlinkTextMetrics.instance.ideographicBaseline_Getter_(unwrap_jso(this));
   
   @DomName('TextMetrics.width')
   @DocsEditable()
-  double get width => _blink.BlinkTextMetrics.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkTextMetrics.instance.width_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30873,6 +35734,18 @@
   @DocsEditable()
   static const EventStreamProvider<Event> cueChangeEvent = const EventStreamProvider<Event>('cuechange');
 
+
+  static TextTrack internalCreateTextTrack() {
+    return new TextTrack._internalWrap();
+  }
+
+  factory TextTrack._internalWrap() {
+    return new TextTrack.internal_();
+  }
+
+  TextTrack.internal_() : super.internal_();
+
+
   @DomName('TextTrack.activeCues')
   @DocsEditable()
   TextTrackCueList get activeCues => wrap_jso(_blink.BlinkTextTrack.instance.activeCues_Getter_(unwrap_jso(this)));
@@ -30904,7 +35777,7 @@
   
   @DomName('TextTrack.mode')
   @DocsEditable()
-  void set mode(String value) => _blink.BlinkTextTrack.instance.mode_Setter_(unwrap_jso(this), value);
+  set mode(String value) => _blink.BlinkTextTrack.instance.mode_Setter_(unwrap_jso(this), value);
   
   @DomName('TextTrack.regions')
   @DocsEditable()
@@ -30970,13 +35843,25 @@
   @DocsEditable()
   static const EventStreamProvider<Event> exitEvent = const EventStreamProvider<Event>('exit');
 
+
+  static TextTrackCue internalCreateTextTrackCue() {
+    return new TextTrackCue._internalWrap();
+  }
+
+  factory TextTrackCue._internalWrap() {
+    return new TextTrackCue.internal_();
+  }
+
+  TextTrackCue.internal_() : super.internal_();
+
+
   @DomName('TextTrackCue.endTime')
   @DocsEditable()
   num get endTime => _blink.BlinkTextTrackCue.instance.endTime_Getter_(unwrap_jso(this));
   
   @DomName('TextTrackCue.endTime')
   @DocsEditable()
-  void set endTime(num value) => _blink.BlinkTextTrackCue.instance.endTime_Setter_(unwrap_jso(this), value);
+  set endTime(num value) => _blink.BlinkTextTrackCue.instance.endTime_Setter_(unwrap_jso(this), value);
   
   @DomName('TextTrackCue.id')
   @DocsEditable()
@@ -30984,7 +35869,7 @@
   
   @DomName('TextTrackCue.id')
   @DocsEditable()
-  void set id(String value) => _blink.BlinkTextTrackCue.instance.id_Setter_(unwrap_jso(this), value);
+  set id(String value) => _blink.BlinkTextTrackCue.instance.id_Setter_(unwrap_jso(this), value);
   
   @DomName('TextTrackCue.pauseOnExit')
   @DocsEditable()
@@ -30992,7 +35877,7 @@
   
   @DomName('TextTrackCue.pauseOnExit')
   @DocsEditable()
-  void set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.instance.pauseOnExit_Setter_(unwrap_jso(this), value);
+  set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.instance.pauseOnExit_Setter_(unwrap_jso(this), value);
   
   @DomName('TextTrackCue.startTime')
   @DocsEditable()
@@ -31000,7 +35885,7 @@
   
   @DomName('TextTrackCue.startTime')
   @DocsEditable()
-  void set startTime(num value) => _blink.BlinkTextTrackCue.instance.startTime_Setter_(unwrap_jso(this), value);
+  set startTime(num value) => _blink.BlinkTextTrackCue.instance.startTime_Setter_(unwrap_jso(this), value);
   
   @DomName('TextTrackCue.track')
   @DocsEditable()
@@ -31028,10 +35913,25 @@
 @DomName('TextTrackCueList')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrackcuelist
 @Experimental()
-class TextTrackCueList extends NativeFieldWrapperClass2 with ListMixin<TextTrackCue>, ImmutableListMixin<TextTrackCue> implements List<TextTrackCue> {
+class TextTrackCueList extends JsoNativeFieldWrapper with ListMixin<TextTrackCue>, ImmutableListMixin<TextTrackCue> implements List<TextTrackCue> {
   // To suppress missing implicit constructor warnings.
   factory TextTrackCueList._() { throw new UnsupportedError("Not supported"); }
 
+  static TextTrackCueList internalCreateTextTrackCueList() {
+    return new TextTrackCueList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory TextTrackCueList._internalWrap() {
+    return new TextTrackCueList.internal_();
+  }
+
+  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));
@@ -31043,7 +35943,7 @@
   }
 
   TextTrackCue _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkTextTrackCueList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, TextTrackCue value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -31051,7 +35951,7 @@
   // TextTrackCue is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -31121,6 +36021,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> changeEvent = const EventStreamProvider<Event>('change');
 
+
+  static TextTrackList internalCreateTextTrackList() {
+    return new TextTrackList._internalWrap();
+  }
+
+  factory TextTrackList._internalWrap() {
+    return new TextTrackList.internal_();
+  }
+
+  TextTrackList.internal_() : super.internal_();
+
+
   @DomName('TextTrackList.length')
   @DocsEditable()
   int get length => _blink.BlinkTextTrackList.instance.length_Getter_(unwrap_jso(this));
@@ -31132,7 +36044,7 @@
   }
 
   TextTrack _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkTextTrackList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, TextTrack value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -31140,7 +36052,7 @@
   // TextTrack is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -31205,17 +36117,32 @@
   // To suppress missing implicit constructor warnings.
   factory TimeRanges._() { throw new UnsupportedError("Not supported"); }
 
+  static TimeRanges internalCreateTimeRanges() {
+    return new TimeRanges._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory TimeRanges._internalWrap() {
+    return new TimeRanges.internal_();
+  }
+
+  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));
   
   @DomName('TimeRanges.end')
   @DocsEditable()
-  double end(int index) => _blink.BlinkTimeRanges.instance.end_Callback_1_(unwrap_jso(this), index);
+  num end(int index) => _blink.BlinkTimeRanges.instance.end_Callback_1_(unwrap_jso(this), index);
   
   @DomName('TimeRanges.start')
   @DocsEditable()
-  double start(int index) => _blink.BlinkTimeRanges.instance.start_Callback_1_(unwrap_jso(this), index);
+  num start(int index) => _blink.BlinkTimeRanges.instance.start_Callback_1_(unwrap_jso(this), index);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31241,6 +36168,21 @@
   // To suppress missing implicit constructor warnings.
   factory Timing._() { throw new UnsupportedError("Not supported"); }
 
+  static Timing internalCreateTiming() {
+    return new Timing._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Timing._internalWrap() {
+    return new Timing.internal_();
+  }
+
+  Timing.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('Timing.delay')
   @DocsEditable()
   @Experimental() // untriaged
@@ -31249,7 +36191,7 @@
   @DomName('Timing.delay')
   @DocsEditable()
   @Experimental() // untriaged
-  void set delay(num value) => _blink.BlinkTiming.instance.delay_Setter_(unwrap_jso(this), value);
+  set delay(num value) => _blink.BlinkTiming.instance.delay_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.direction')
   @DocsEditable()
@@ -31259,7 +36201,7 @@
   @DomName('Timing.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  void set direction(String value) => _blink.BlinkTiming.instance.direction_Setter_(unwrap_jso(this), value);
+  set direction(String value) => _blink.BlinkTiming.instance.direction_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.easing')
   @DocsEditable()
@@ -31269,7 +36211,7 @@
   @DomName('Timing.easing')
   @DocsEditable()
   @Experimental() // untriaged
-  void set easing(String value) => _blink.BlinkTiming.instance.easing_Setter_(unwrap_jso(this), value);
+  set easing(String value) => _blink.BlinkTiming.instance.easing_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.endDelay')
   @DocsEditable()
@@ -31279,7 +36221,7 @@
   @DomName('Timing.endDelay')
   @DocsEditable()
   @Experimental() // untriaged
-  void set endDelay(num value) => _blink.BlinkTiming.instance.endDelay_Setter_(unwrap_jso(this), value);
+  set endDelay(num value) => _blink.BlinkTiming.instance.endDelay_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.fill')
   @DocsEditable()
@@ -31289,7 +36231,7 @@
   @DomName('Timing.fill')
   @DocsEditable()
   @Experimental() // untriaged
-  void set fill(String value) => _blink.BlinkTiming.instance.fill_Setter_(unwrap_jso(this), value);
+  set fill(String value) => _blink.BlinkTiming.instance.fill_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.iterationStart')
   @DocsEditable()
@@ -31299,7 +36241,7 @@
   @DomName('Timing.iterationStart')
   @DocsEditable()
   @Experimental() // untriaged
-  void set iterationStart(num value) => _blink.BlinkTiming.instance.iterationStart_Setter_(unwrap_jso(this), value);
+  set iterationStart(num value) => _blink.BlinkTiming.instance.iterationStart_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.iterations')
   @DocsEditable()
@@ -31309,7 +36251,7 @@
   @DomName('Timing.iterations')
   @DocsEditable()
   @Experimental() // untriaged
-  void set iterations(num value) => _blink.BlinkTiming.instance.iterations_Setter_(unwrap_jso(this), value);
+  set iterations(num value) => _blink.BlinkTiming.instance.iterations_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.playbackRate')
   @DocsEditable()
@@ -31319,7 +36261,7 @@
   @DomName('Timing.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  void set playbackRate(num value) => _blink.BlinkTiming.instance.playbackRate_Setter_(unwrap_jso(this), value);
+  set playbackRate(num value) => _blink.BlinkTiming.instance.playbackRate_Setter_(unwrap_jso(this), value);
   
   @DomName('Timing.__getter__')
   @DocsEditable()
@@ -31348,6 +36290,18 @@
   @DomName('HTMLTitleElement.HTMLTitleElement')
   @DocsEditable()
   factory TitleElement() => document.createElement("title");
+
+
+  static TitleElement internalCreateTitleElement() {
+    return new TitleElement._internalWrap();
+  }
+
+  factory TitleElement._internalWrap() {
+    return new TitleElement.internal_();
+  }
+
+  TitleElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -31369,18 +36323,33 @@
   // To suppress missing implicit constructor warnings.
   factory Touch._() { throw new UnsupportedError("Not supported"); }
 
+  static Touch internalCreateTouch() {
+    return new Touch._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Touch._internalWrap() {
+    return new Touch.internal_();
+  }
+
+  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()
-  double get _clientX => _blink.BlinkTouch.instance.clientX_Getter_(unwrap_jso(this));
+  num get _clientX => _blink.BlinkTouch.instance.clientX_Getter_(unwrap_jso(this));
   
   @DomName('Touch.clientY')
   @DocsEditable()
-  double get _clientY => _blink.BlinkTouch.instance.clientY_Getter_(unwrap_jso(this));
+  num get _clientY => _blink.BlinkTouch.instance.clientY_Getter_(unwrap_jso(this));
   
   @DomName('Touch.force')
   @DocsEditable()
   @Experimental() // untriaged
-  double get force => _blink.BlinkTouch.instance.force_Getter_(unwrap_jso(this));
+  num get force => _blink.BlinkTouch.instance.force_Getter_(unwrap_jso(this));
   
   @DomName('Touch.identifier')
   @DocsEditable()
@@ -31388,29 +36357,29 @@
   
   @DomName('Touch.pageX')
   @DocsEditable()
-  double get _pageX => _blink.BlinkTouch.instance.pageX_Getter_(unwrap_jso(this));
+  num get _pageX => _blink.BlinkTouch.instance.pageX_Getter_(unwrap_jso(this));
   
   @DomName('Touch.pageY')
   @DocsEditable()
-  double get _pageY => _blink.BlinkTouch.instance.pageY_Getter_(unwrap_jso(this));
+  num get _pageY => _blink.BlinkTouch.instance.pageY_Getter_(unwrap_jso(this));
   
   @DomName('Touch.radiusX')
   @DocsEditable()
   @Experimental() // untriaged
-  double get _radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(unwrap_jso(this));
+  num get _radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(unwrap_jso(this));
   
   @DomName('Touch.radiusY')
   @DocsEditable()
   @Experimental() // untriaged
-  double get _radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(unwrap_jso(this));
+  num get _radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(unwrap_jso(this));
   
   @DomName('Touch.screenX')
   @DocsEditable()
-  double get _screenX => _blink.BlinkTouch.instance.screenX_Getter_(unwrap_jso(this));
+  num get _screenX => _blink.BlinkTouch.instance.screenX_Getter_(unwrap_jso(this));
   
   @DomName('Touch.screenY')
   @DocsEditable()
-  double get _screenY => _blink.BlinkTouch.instance.screenY_Getter_(unwrap_jso(this));
+  num get _screenY => _blink.BlinkTouch.instance.screenY_Getter_(unwrap_jso(this));
   
   @DomName('Touch.target')
   @DocsEditable()
@@ -31421,19 +36390,19 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  double get rotationAngle => _blink.BlinkTouch.instance.webkitRotationAngle_Getter_(unwrap_jso(this));
+  num get rotationAngle => _blink.BlinkTouch.instance.webkitRotationAngle_Getter_(unwrap_jso(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.clientX_Getter(unwrap_jso(this)).round();
-  int get __clientY => _blink.BlinkTouch.clientY_Getter(unwrap_jso(this)).round();
-  int get __screenX => _blink.BlinkTouch.screenX_Getter(unwrap_jso(this)).round();
-  int get __screenY => _blink.BlinkTouch.screenY_Getter(unwrap_jso(this)).round();
-  int get __pageX => _blink.BlinkTouch.pageX_Getter(unwrap_jso(this)).round();
-  int get __pageY => _blink.BlinkTouch.pageY_Getter(unwrap_jso(this)).round();
-  int get __radiusX => _blink.BlinkTouch.radiusX_Getter(unwrap_jso(this)).round();
-  int get __radiusY => _blink.BlinkTouch.radiusY_Getter(unwrap_jso(this)).round();
+  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();
 
   @DomName('Touch.clientX')
   @DomName('Touch.clientY')
@@ -31489,6 +36458,18 @@
   // To suppress missing implicit constructor warnings.
   factory TouchEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static TouchEvent internalCreateTouchEvent() {
+    return new TouchEvent._internalWrap();
+  }
+
+  factory TouchEvent._internalWrap() {
+    return new TouchEvent.internal_();
+  }
+
+  TouchEvent.internal_() : super.internal_();
+
+
   @DomName('TouchEvent.altKey')
   @DocsEditable()
   bool get altKey => _blink.BlinkTouchEvent.instance.altKey_Getter_(unwrap_jso(this));
@@ -31540,7 +36521,7 @@
 @DomName('TouchList')
 // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features
 @Experimental()
-class TouchList extends NativeFieldWrapperClass2 with ListMixin<Touch>, ImmutableListMixin<Touch> implements List<Touch> {
+class TouchList extends JsoNativeFieldWrapper with ListMixin<Touch>, ImmutableListMixin<Touch> implements List<Touch> {
   /// NB: This constructor likely does not work as you might expect it to! This
   /// constructor will simply fail (returning null) if you are not on a device
   /// with touch enabled. See dartbug.com/8314.
@@ -31549,6 +36530,21 @@
   // To suppress missing implicit constructor warnings.
   factory TouchList._() { throw new UnsupportedError("Not supported"); }
 
+  static TouchList internalCreateTouchList() {
+    return new TouchList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory TouchList._internalWrap() {
+    return new TouchList.internal_();
+  }
+
+  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;
 
@@ -31563,7 +36559,7 @@
   }
 
   Touch _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkTouchList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, Touch value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -31571,7 +36567,7 @@
   // Touch is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -31628,6 +36624,18 @@
   @DomName('HTMLTrackElement.HTMLTrackElement')
   @DocsEditable()
   factory TrackElement() => document.createElement("track");
+
+
+  static TrackElement internalCreateTrackElement() {
+    return new TrackElement._internalWrap();
+  }
+
+  factory TrackElement._internalWrap() {
+    return new TrackElement.internal_();
+  }
+
+  TrackElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -31660,7 +36668,7 @@
   
   @DomName('HTMLTrackElement.default')
   @DocsEditable()
-  void set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.instance.default_Setter_(unwrap_jso(this), value);
+  set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.instance.default_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTrackElement.integrity')
   @DocsEditable()
@@ -31670,7 +36678,7 @@
   @DomName('HTMLTrackElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLTrackElement.instance.integrity_Setter_(unwrap_jso(this), value);
+  set integrity(String value) => _blink.BlinkHTMLTrackElement.instance.integrity_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTrackElement.kind')
   @DocsEditable()
@@ -31678,7 +36686,7 @@
   
   @DomName('HTMLTrackElement.kind')
   @DocsEditable()
-  void set kind(String value) => _blink.BlinkHTMLTrackElement.instance.kind_Setter_(unwrap_jso(this), value);
+  set kind(String value) => _blink.BlinkHTMLTrackElement.instance.kind_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTrackElement.label')
   @DocsEditable()
@@ -31686,7 +36694,7 @@
   
   @DomName('HTMLTrackElement.label')
   @DocsEditable()
-  void set label(String value) => _blink.BlinkHTMLTrackElement.instance.label_Setter_(unwrap_jso(this), value);
+  set label(String value) => _blink.BlinkHTMLTrackElement.instance.label_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTrackElement.readyState')
   @DocsEditable()
@@ -31698,7 +36706,7 @@
   
   @DomName('HTMLTrackElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLTrackElement.instance.src_Setter_(unwrap_jso(this), value);
+  set src(String value) => _blink.BlinkHTMLTrackElement.instance.src_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTrackElement.srclang')
   @DocsEditable()
@@ -31706,7 +36714,7 @@
   
   @DomName('HTMLTrackElement.srclang')
   @DocsEditable()
-  void set srclang(String value) => _blink.BlinkHTMLTrackElement.instance.srclang_Setter_(unwrap_jso(this), value);
+  set srclang(String value) => _blink.BlinkHTMLTrackElement.instance.srclang_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLTrackElement.track')
   @DocsEditable()
@@ -31727,9 +36735,21 @@
   // To suppress missing implicit constructor warnings.
   factory TrackEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static TrackEvent internalCreateTrackEvent() {
+    return new TrackEvent._internalWrap();
+  }
+
+  factory TrackEvent._internalWrap() {
+    return new TrackEvent.internal_();
+  }
+
+  TrackEvent.internal_() : super.internal_();
+
+
   @DomName('TrackEvent.track')
   @DocsEditable()
-  Object get track => _blink.BlinkTrackEvent.instance.track_Getter_(unwrap_jso(this));
+  Object get track => wrap_jso(_blink.BlinkTrackEvent.instance.track_Getter_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31745,9 +36765,21 @@
   // To suppress missing implicit constructor warnings.
   factory TransitionEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static TransitionEvent internalCreateTransitionEvent() {
+    return new TransitionEvent._internalWrap();
+  }
+
+  factory TransitionEvent._internalWrap() {
+    return new TransitionEvent.internal_();
+  }
+
+  TransitionEvent.internal_() : super.internal_();
+
+
   @DomName('TransitionEvent.elapsedTime')
   @DocsEditable()
-  double get elapsedTime => _blink.BlinkTransitionEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
+  num get elapsedTime => _blink.BlinkTransitionEvent.instance.elapsedTime_Getter_(unwrap_jso(this));
   
   @DomName('TransitionEvent.propertyName')
   @DocsEditable()
@@ -31772,13 +36804,28 @@
   // To suppress missing implicit constructor warnings.
   factory TreeWalker._() { throw new UnsupportedError("Not supported"); }
 
+  static TreeWalker internalCreateTreeWalker() {
+    return new TreeWalker._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory TreeWalker._internalWrap() {
+    return new TreeWalker.internal_();
+  }
+
+  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)));
   
   @DomName('TreeWalker.currentNode')
   @DocsEditable()
-  void set currentNode(Node value) => _blink.BlinkTreeWalker.instance.currentNode_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set currentNode(Node value) => _blink.BlinkTreeWalker.instance.currentNode_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('TreeWalker.filter')
   @DocsEditable()
@@ -31849,6 +36896,18 @@
   // To suppress missing implicit constructor warnings.
   factory UIEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static UIEvent internalCreateUIEvent() {
+    return new UIEvent._internalWrap();
+  }
+
+  factory UIEvent._internalWrap() {
+    return new UIEvent.internal_();
+  }
+
+  UIEvent.internal_() : super.internal_();
+
+
   @DomName('UIEvent.charCode')
   @DocsEditable()
   @Unstable()
@@ -31925,6 +36984,18 @@
   @DomName('HTMLUListElement.HTMLUListElement')
   @DocsEditable()
   factory UListElement() => document.createElement("ul");
+
+
+  static UListElement internalCreateUListElement() {
+    return new UListElement._internalWrap();
+  }
+
+  factory UListElement._internalWrap() {
+    return new UListElement.internal_();
+  }
+
+  UListElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -31945,6 +37016,18 @@
 class UnknownElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory UnknownElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static UnknownElement internalCreateUnknownElement() {
+    return new UnknownElement._internalWrap();
+  }
+
+  factory UnknownElement._internalWrap() {
+    return new UnknownElement.internal_();
+  }
+
+  UnknownElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -31966,6 +37049,21 @@
   // To suppress missing implicit constructor warnings.
   factory Url._() { throw new UnsupportedError("Not supported"); }
 
+  static Url internalCreateUrl() {
+    return new Url._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Url._internalWrap() {
+    return new Url.internal_();
+  }
+
+  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));
@@ -32003,7 +37101,7 @@
   @DomName('URL.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hash(String value) => _blink.BlinkURL.instance.hash_Setter_(unwrap_jso(this), value);
+  set hash(String value) => _blink.BlinkURL.instance.hash_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.host')
   @DocsEditable()
@@ -32013,7 +37111,7 @@
   @DomName('URL.host')
   @DocsEditable()
   @Experimental() // untriaged
-  void set host(String value) => _blink.BlinkURL.instance.host_Setter_(unwrap_jso(this), value);
+  set host(String value) => _blink.BlinkURL.instance.host_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.hostname')
   @DocsEditable()
@@ -32023,7 +37121,7 @@
   @DomName('URL.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hostname(String value) => _blink.BlinkURL.instance.hostname_Setter_(unwrap_jso(this), value);
+  set hostname(String value) => _blink.BlinkURL.instance.hostname_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.href')
   @DocsEditable()
@@ -32033,7 +37131,7 @@
   @DomName('URL.href')
   @DocsEditable()
   @Experimental() // untriaged
-  void set href(String value) => _blink.BlinkURL.instance.href_Setter_(unwrap_jso(this), value);
+  set href(String value) => _blink.BlinkURL.instance.href_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.origin')
   @DocsEditable()
@@ -32048,7 +37146,7 @@
   @DomName('URL.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value) => _blink.BlinkURL.instance.password_Setter_(unwrap_jso(this), value);
+  set password(String value) => _blink.BlinkURL.instance.password_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.pathname')
   @DocsEditable()
@@ -32058,7 +37156,7 @@
   @DomName('URL.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set pathname(String value) => _blink.BlinkURL.instance.pathname_Setter_(unwrap_jso(this), value);
+  set pathname(String value) => _blink.BlinkURL.instance.pathname_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.port')
   @DocsEditable()
@@ -32068,7 +37166,7 @@
   @DomName('URL.port')
   @DocsEditable()
   @Experimental() // untriaged
-  void set port(String value) => _blink.BlinkURL.instance.port_Setter_(unwrap_jso(this), value);
+  set port(String value) => _blink.BlinkURL.instance.port_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.protocol')
   @DocsEditable()
@@ -32078,7 +37176,7 @@
   @DomName('URL.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  void set protocol(String value) => _blink.BlinkURL.instance.protocol_Setter_(unwrap_jso(this), value);
+  set protocol(String value) => _blink.BlinkURL.instance.protocol_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.search')
   @DocsEditable()
@@ -32088,7 +37186,7 @@
   @DomName('URL.search')
   @DocsEditable()
   @Experimental() // untriaged
-  void set search(String value) => _blink.BlinkURL.instance.search_Setter_(unwrap_jso(this), value);
+  set search(String value) => _blink.BlinkURL.instance.search_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.username')
   @DocsEditable()
@@ -32098,7 +37196,7 @@
   @DomName('URL.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value) => _blink.BlinkURL.instance.username_Setter_(unwrap_jso(this), value);
+  set username(String value) => _blink.BlinkURL.instance.username_Setter_(unwrap_jso(this), value);
   
   @DomName('URL.toString')
   @DocsEditable()
@@ -32128,7 +37226,7 @@
   @DomName('URLUtils.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hash(String value);
+  set hash(String value);
 
   @DomName('URLUtils.host')
   @DocsEditable()
@@ -32138,7 +37236,7 @@
   @DomName('URLUtils.host')
   @DocsEditable()
   @Experimental() // untriaged
-  void set host(String value);
+  set host(String value);
 
   @DomName('URLUtils.hostname')
   @DocsEditable()
@@ -32148,7 +37246,7 @@
   @DomName('URLUtils.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hostname(String value);
+  set hostname(String value);
 
   @DomName('URLUtils.href')
   @DocsEditable()
@@ -32158,7 +37256,7 @@
   @DomName('URLUtils.href')
   @DocsEditable()
   @Experimental() // untriaged
-  void set href(String value);
+  set href(String value);
 
   @DomName('URLUtils.origin')
   @DocsEditable()
@@ -32173,7 +37271,7 @@
   @DomName('URLUtils.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value);
+  set password(String value);
 
   @DomName('URLUtils.pathname')
   @DocsEditable()
@@ -32183,7 +37281,7 @@
   @DomName('URLUtils.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set pathname(String value);
+  set pathname(String value);
 
   @DomName('URLUtils.port')
   @DocsEditable()
@@ -32193,7 +37291,7 @@
   @DomName('URLUtils.port')
   @DocsEditable()
   @Experimental() // untriaged
-  void set port(String value);
+  set port(String value);
 
   @DomName('URLUtils.protocol')
   @DocsEditable()
@@ -32203,7 +37301,7 @@
   @DomName('URLUtils.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  void set protocol(String value);
+  set protocol(String value);
 
   @DomName('URLUtils.search')
   @DocsEditable()
@@ -32213,7 +37311,7 @@
   @DomName('URLUtils.search')
   @DocsEditable()
   @Experimental() // untriaged
-  void set search(String value);
+  set search(String value);
 
   @DomName('URLUtils.username')
   @DocsEditable()
@@ -32223,7 +37321,7 @@
   @DomName('URLUtils.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value);
+  set username(String value);
 
   @DomName('URLUtils.toString')
   @DocsEditable()
@@ -32309,6 +37407,21 @@
   // To suppress missing implicit constructor warnings.
   factory ValidityState._() { throw new UnsupportedError("Not supported"); }
 
+  static ValidityState internalCreateValidityState() {
+    return new ValidityState._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ValidityState._internalWrap() {
+    return new ValidityState.internal_();
+  }
+
+  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));
@@ -32363,6 +37476,18 @@
   @DomName('HTMLVideoElement.HTMLVideoElement')
   @DocsEditable()
   factory VideoElement() => document.createElement("video");
+
+
+  static VideoElement internalCreateVideoElement() {
+    return new VideoElement._internalWrap();
+  }
+
+  factory VideoElement._internalWrap() {
+    return new VideoElement.internal_();
+  }
+
+  VideoElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -32376,7 +37501,7 @@
   
   @DomName('HTMLVideoElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLVideoElement.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkHTMLVideoElement.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLVideoElement.poster')
   @DocsEditable()
@@ -32384,7 +37509,7 @@
   
   @DomName('HTMLVideoElement.poster')
   @DocsEditable()
-  void set poster(String value) => _blink.BlinkHTMLVideoElement.instance.poster_Setter_(unwrap_jso(this), value);
+  set poster(String value) => _blink.BlinkHTMLVideoElement.instance.poster_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLVideoElement.videoHeight')
   @DocsEditable()
@@ -32414,7 +37539,7 @@
   
   @DomName('HTMLVideoElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLVideoElement.instance.width_Setter_(unwrap_jso(this), value);
+  set width(int value) => _blink.BlinkHTMLVideoElement.instance.width_Setter_(unwrap_jso(this), value);
   
   @DomName('HTMLVideoElement.getVideoPlaybackQuality')
   @DocsEditable()
@@ -32452,6 +37577,21 @@
   // To suppress missing implicit constructor warnings.
   factory VideoPlaybackQuality._() { throw new UnsupportedError("Not supported"); }
 
+  static VideoPlaybackQuality internalCreateVideoPlaybackQuality() {
+    return new VideoPlaybackQuality._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory VideoPlaybackQuality._internalWrap() {
+    return new VideoPlaybackQuality.internal_();
+  }
+
+  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
@@ -32460,7 +37600,7 @@
   @DomName('VideoPlaybackQuality.creationTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get creationTime => _blink.BlinkVideoPlaybackQuality.instance.creationTime_Getter_(unwrap_jso(this));
+  num get creationTime => _blink.BlinkVideoPlaybackQuality.instance.creationTime_Getter_(unwrap_jso(this));
   
   @DomName('VideoPlaybackQuality.droppedVideoFrames')
   @DocsEditable()
@@ -32487,6 +37627,21 @@
   // To suppress missing implicit constructor warnings.
   factory VideoTrack._() { throw new UnsupportedError("Not supported"); }
 
+  static VideoTrack internalCreateVideoTrack() {
+    return new VideoTrack._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory VideoTrack._internalWrap() {
+    return new VideoTrack.internal_();
+  }
+
+  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
@@ -32515,7 +37670,7 @@
   @DomName('VideoTrack.selected')
   @DocsEditable()
   @Experimental() // untriaged
-  void set selected(bool value) => _blink.BlinkVideoTrack.instance.selected_Setter_(unwrap_jso(this), value);
+  set selected(bool value) => _blink.BlinkVideoTrack.instance.selected_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32537,6 +37692,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> changeEvent = const EventStreamProvider<Event>('change');
 
+
+  static VideoTrackList internalCreateVideoTrackList() {
+    return new VideoTrackList._internalWrap();
+  }
+
+  factory VideoTrackList._internalWrap() {
+    return new VideoTrackList.internal_();
+  }
+
+  VideoTrackList.internal_() : super.internal_();
+
+
   @DomName('VideoTrackList.length')
   @DocsEditable()
   @Experimental() // untriaged
@@ -32591,9 +37758,21 @@
   @DomName('VTTCue.VTTCue')
   @DocsEditable()
   factory VttCue(num startTime, num endTime, String text) {
-    return _blink.BlinkVTTCue.instance.constructorCallback_3_(startTime, endTime, text);
+    return wrap_jso(_blink.BlinkVTTCue.instance.constructorCallback_3_(startTime, endTime, text));
   }
 
+
+  static VttCue internalCreateVttCue() {
+    return new VttCue._internalWrap();
+  }
+
+  factory VttCue._internalWrap() {
+    return new VttCue.internal_();
+  }
+
+  VttCue.internal_() : super.internal_();
+
+
   @DomName('VTTCue.align')
   @DocsEditable()
   @Experimental() // untriaged
@@ -32602,7 +37781,7 @@
   @DomName('VTTCue.align')
   @DocsEditable()
   @Experimental() // untriaged
-  void set align(String value) => _blink.BlinkVTTCue.instance.align_Setter_(unwrap_jso(this), value);
+  set align(String value) => _blink.BlinkVTTCue.instance.align_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.line')
   @DocsEditable()
@@ -32612,7 +37791,7 @@
   @DomName('VTTCue.line')
   @DocsEditable()
   @Experimental() // untriaged
-  void set line(int value) => _blink.BlinkVTTCue.instance.line_Setter_(unwrap_jso(this), value);
+  set line(int value) => _blink.BlinkVTTCue.instance.line_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.position')
   @DocsEditable()
@@ -32622,7 +37801,7 @@
   @DomName('VTTCue.position')
   @DocsEditable()
   @Experimental() // untriaged
-  void set position(int value) => _blink.BlinkVTTCue.instance.position_Setter_(unwrap_jso(this), value);
+  set position(int value) => _blink.BlinkVTTCue.instance.position_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.regionId')
   @DocsEditable()
@@ -32632,7 +37811,7 @@
   @DomName('VTTCue.regionId')
   @DocsEditable()
   @Experimental() // untriaged
-  void set regionId(String value) => _blink.BlinkVTTCue.instance.regionId_Setter_(unwrap_jso(this), value);
+  set regionId(String value) => _blink.BlinkVTTCue.instance.regionId_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.size')
   @DocsEditable()
@@ -32642,7 +37821,7 @@
   @DomName('VTTCue.size')
   @DocsEditable()
   @Experimental() // untriaged
-  void set size(int value) => _blink.BlinkVTTCue.instance.size_Setter_(unwrap_jso(this), value);
+  set size(int value) => _blink.BlinkVTTCue.instance.size_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.snapToLines')
   @DocsEditable()
@@ -32652,7 +37831,7 @@
   @DomName('VTTCue.snapToLines')
   @DocsEditable()
   @Experimental() // untriaged
-  void set snapToLines(bool value) => _blink.BlinkVTTCue.instance.snapToLines_Setter_(unwrap_jso(this), value);
+  set snapToLines(bool value) => _blink.BlinkVTTCue.instance.snapToLines_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.text')
   @DocsEditable()
@@ -32662,7 +37841,7 @@
   @DomName('VTTCue.text')
   @DocsEditable()
   @Experimental() // untriaged
-  void set text(String value) => _blink.BlinkVTTCue.instance.text_Setter_(unwrap_jso(this), value);
+  set text(String value) => _blink.BlinkVTTCue.instance.text_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.vertical')
   @DocsEditable()
@@ -32672,7 +37851,7 @@
   @DomName('VTTCue.vertical')
   @DocsEditable()
   @Experimental() // untriaged
-  void set vertical(String value) => _blink.BlinkVTTCue.instance.vertical_Setter_(unwrap_jso(this), value);
+  set vertical(String value) => _blink.BlinkVTTCue.instance.vertical_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTCue.getCueAsHTML')
   @DocsEditable()
@@ -32697,9 +37876,24 @@
   @DomName('VTTRegion.VTTRegion')
   @DocsEditable()
   factory VttRegion() {
-    return _blink.BlinkVTTRegion.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkVTTRegion.instance.constructorCallback_0_());
   }
 
+  static VttRegion internalCreateVttRegion() {
+    return new VttRegion._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory VttRegion._internalWrap() {
+    return new VttRegion.internal_();
+  }
+
+  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
@@ -32708,7 +37902,7 @@
   @DomName('VTTRegion.height')
   @DocsEditable()
   @Experimental() // untriaged
-  void set height(int value) => _blink.BlinkVTTRegion.instance.height_Setter_(unwrap_jso(this), value);
+  set height(int value) => _blink.BlinkVTTRegion.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTRegion.id')
   @DocsEditable()
@@ -32718,7 +37912,7 @@
   @DomName('VTTRegion.id')
   @DocsEditable()
   @Experimental() // untriaged
-  void set id(String value) => _blink.BlinkVTTRegion.instance.id_Setter_(unwrap_jso(this), value);
+  set id(String value) => _blink.BlinkVTTRegion.instance.id_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTRegion.regionAnchorX')
   @DocsEditable()
@@ -32728,7 +37922,7 @@
   @DomName('VTTRegion.regionAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  void set regionAnchorX(num value) => _blink.BlinkVTTRegion.instance.regionAnchorX_Setter_(unwrap_jso(this), value);
+  set regionAnchorX(num value) => _blink.BlinkVTTRegion.instance.regionAnchorX_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTRegion.regionAnchorY')
   @DocsEditable()
@@ -32738,7 +37932,7 @@
   @DomName('VTTRegion.regionAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  void set regionAnchorY(num value) => _blink.BlinkVTTRegion.instance.regionAnchorY_Setter_(unwrap_jso(this), value);
+  set regionAnchorY(num value) => _blink.BlinkVTTRegion.instance.regionAnchorY_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTRegion.scroll')
   @DocsEditable()
@@ -32748,7 +37942,7 @@
   @DomName('VTTRegion.scroll')
   @DocsEditable()
   @Experimental() // untriaged
-  void set scroll(String value) => _blink.BlinkVTTRegion.instance.scroll_Setter_(unwrap_jso(this), value);
+  set scroll(String value) => _blink.BlinkVTTRegion.instance.scroll_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTRegion.track')
   @DocsEditable()
@@ -32763,7 +37957,7 @@
   @DomName('VTTRegion.viewportAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  void set viewportAnchorX(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorX_Setter_(unwrap_jso(this), value);
+  set viewportAnchorX(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorX_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTRegion.viewportAnchorY')
   @DocsEditable()
@@ -32773,7 +37967,7 @@
   @DomName('VTTRegion.viewportAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  void set viewportAnchorY(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorY_Setter_(unwrap_jso(this), value);
+  set viewportAnchorY(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorY_Setter_(unwrap_jso(this), value);
   
   @DomName('VTTRegion.width')
   @DocsEditable()
@@ -32783,7 +37977,7 @@
   @DomName('VTTRegion.width')
   @DocsEditable()
   @Experimental() // untriaged
-  void set width(num value) => _blink.BlinkVTTRegion.instance.width_Setter_(unwrap_jso(this), value);
+  set width(num value) => _blink.BlinkVTTRegion.instance.width_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32800,6 +37994,21 @@
   // To suppress missing implicit constructor warnings.
   factory VttRegionList._() { throw new UnsupportedError("Not supported"); }
 
+  static VttRegionList internalCreateVttRegionList() {
+    return new VttRegionList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory VttRegionList._internalWrap() {
+    return new VttRegionList.internal_();
+  }
+
+  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
@@ -32808,12 +38017,12 @@
   @DomName('VTTRegionList.getRegionById')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegion getRegionById(String id) => _blink.BlinkVTTRegionList.instance.getRegionById_Callback_1_(unwrap_jso(this), id);
+  VttRegion getRegionById(String id) => wrap_jso(_blink.BlinkVTTRegionList.instance.getRegionById_Callback_1_(unwrap_jso(this), id));
   
   @DomName('VTTRegionList.item')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegion item(int index) => _blink.BlinkVTTRegionList.instance.item_Callback_1_(unwrap_jso(this), index);
+  VttRegion item(int index) => wrap_jso(_blink.BlinkVTTRegionList.instance.item_Callback_1_(unwrap_jso(this), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32912,17 +38121,30 @@
   @DocsEditable()
   factory WebSocket(String url, [protocol_OR_protocols]) {
     if ((url is String || url == null) && protocol_OR_protocols == null) {
-      return _blink.BlinkWebSocket.instance.constructorCallback_1_(url);
+      return wrap_jso(_blink.BlinkWebSocket.instance.constructorCallback_1_(url));
     }
     if ((protocol_OR_protocols is String || protocol_OR_protocols == null) && (url is String || url == null)) {
-      return _blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocol_OR_protocols);
+      return wrap_jso(_blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocol_OR_protocols));
     }
     if ((protocol_OR_protocols is List<String> || protocol_OR_protocols == null) && (url is String || url == null)) {
-      return _blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocol_OR_protocols);
+      List protocols_1 = convertDartToNative_StringArray(protocol_OR_protocols);
+      return wrap_jso(_blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocols_1));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+
+  static WebSocket internalCreateWebSocket() {
+    return new WebSocket._internalWrap();
+  }
+
+  factory WebSocket._internalWrap() {
+    return new WebSocket.internal_();
+  }
+
+  WebSocket.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -32948,7 +38170,7 @@
   
   @DomName('WebSocket.binaryType')
   @DocsEditable()
-  void set binaryType(String value) => _blink.BlinkWebSocket.instance.binaryType_Setter_(unwrap_jso(this), value);
+  set binaryType(String value) => _blink.BlinkWebSocket.instance.binaryType_Setter_(unwrap_jso(this), value);
   
   @DomName('WebSocket.bufferedAmount')
   @DocsEditable()
@@ -33077,12 +38299,24 @@
       'relatedTarget': relatedTarget,
     };
 
-    return _blink.BlinkWheelEvent.constructorCallback_2(type, options);
+    return wrap_jso(_blink.BlinkWheelEvent.instance.constructorCallback_2_(type, convertDartToNative_Dictionary(options)));
   }
 
   // To suppress missing implicit constructor warnings.
   factory WheelEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static WheelEvent internalCreateWheelEvent() {
+    return new WheelEvent._internalWrap();
+  }
+
+  factory WheelEvent._internalWrap() {
+    return new WheelEvent.internal_();
+  }
+
+  WheelEvent.internal_() : super.internal_();
+
+
   @DomName('WheelEvent.DOM_DELTA_LINE')
   @DocsEditable()
   static const int DOM_DELTA_LINE = 0x01;
@@ -33101,15 +38335,15 @@
   
   @DomName('WheelEvent.deltaX')
   @DocsEditable()
-  double get _deltaX => _blink.BlinkWheelEvent.instance.deltaX_Getter_(unwrap_jso(this));
+  num get _deltaX => _blink.BlinkWheelEvent.instance.deltaX_Getter_(unwrap_jso(this));
   
   @DomName('WheelEvent.deltaY')
   @DocsEditable()
-  double get _deltaY => _blink.BlinkWheelEvent.instance.deltaY_Getter_(unwrap_jso(this));
+  num get _deltaY => _blink.BlinkWheelEvent.instance.deltaY_Getter_(unwrap_jso(this));
   
   @DomName('WheelEvent.deltaZ')
   @DocsEditable()
-  double get deltaZ => _blink.BlinkWheelEvent.instance.deltaZ_Getter_(unwrap_jso(this));
+  num get deltaZ => _blink.BlinkWheelEvent.instance.deltaZ_Getter_(unwrap_jso(this));
   
 
   /**
@@ -33411,6 +38645,18 @@
   @Experimental()
   static const EventStreamProvider<AnimationEvent> animationStartEvent = const EventStreamProvider<AnimationEvent>('webkitAnimationStart');
 
+
+  static Window internalCreateWindow() {
+    return new Window._internalWrap();
+  }
+
+  factory Window._internalWrap() {
+    return new Window.internal_();
+  }
+
+  Window.internal_() : super.internal_();
+
+
   /**
    * Indicates that file system data cannot be cleared unless given user
    * permission.
@@ -33501,7 +38747,7 @@
   @DomName('Window.defaultStatus')
   @DocsEditable()
   @Experimental() // non-standard
-  void set defaultStatus(String value) => _blink.BlinkWindow.instance.defaultStatus_Setter_(unwrap_jso(this), value);
+  set defaultStatus(String value) => _blink.BlinkWindow.instance.defaultStatus_Setter_(unwrap_jso(this), value);
   
   /// *Deprecated*.
   @DomName('Window.defaultstatus')
@@ -33513,7 +38759,7 @@
   @DomName('Window.defaultstatus')
   @DocsEditable()
   @Experimental() // non-standard
-  void set defaultstatus(String value) => _blink.BlinkWindow.instance.defaultstatus_Setter_(unwrap_jso(this), value);
+  set defaultstatus(String value) => _blink.BlinkWindow.instance.defaultstatus_Setter_(unwrap_jso(this), value);
   
   /**
    * The ratio between physical pixels and logical CSS pixels.
@@ -33531,7 +38777,7 @@
   @DocsEditable()
   // http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html
   @Experimental() // non-standard
-  double get devicePixelRatio => _blink.BlinkWindow.instance.devicePixelRatio_Getter_(unwrap_jso(this));
+  num get devicePixelRatio => _blink.BlinkWindow.instance.devicePixelRatio_Getter_(unwrap_jso(this));
   
   @DomName('Window.document')
   @DocsEditable()
@@ -33655,7 +38901,7 @@
    */
   @DomName('Window.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkWindow.instance.name_Setter_(unwrap_jso(this), value);
+  set name(String value) => _blink.BlinkWindow.instance.name_Setter_(unwrap_jso(this), value);
   
   /**
    * The user agent accessing this window.
@@ -33690,7 +38936,7 @@
   
   @DomName('Window.opener')
   @DocsEditable()
-  void set opener(Window value) => _blink.BlinkWindow.instance.opener_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set opener(Window value) => _blink.BlinkWindow.instance.opener_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('Window.orientation')
   @DocsEditable()
@@ -33737,7 +38983,7 @@
    */
   @DomName('Window.pageXOffset')
   @DocsEditable()
-  double get _pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(unwrap_jso(this));
+  num get _pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(unwrap_jso(this));
   
   /**
    * The distance this window has been scrolled vertically.
@@ -33753,7 +38999,7 @@
    */
   @DomName('Window.pageYOffset')
   @DocsEditable()
-  double get _pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(unwrap_jso(this));
+  num get _pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(unwrap_jso(this));
   
   @DomName('Window.parent')
   @DocsEditable()
@@ -33840,11 +39086,11 @@
   
   @DomName('Window.scrollX')
   @DocsEditable()
-  double get _scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(unwrap_jso(this));
+  num get _scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(unwrap_jso(this));
   
   @DomName('Window.scrollY')
   @DocsEditable()
-  double get _scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(unwrap_jso(this));
+  num get _scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(unwrap_jso(this));
   
   /**
    * This window's scroll bars.
@@ -33911,7 +39157,7 @@
   /// *Deprecated*.
   @DomName('Window.status')
   @DocsEditable()
-  void set status(String value) => _blink.BlinkWindow.instance.status_Setter_(unwrap_jso(this), value);
+  set status(String value) => _blink.BlinkWindow.instance.status_Setter_(unwrap_jso(this), value);
   
   /**
    * This window's status bar.
@@ -33972,10 +39218,10 @@
   
   WindowBase __getter__(index_OR_name) {
     if ((index_OR_name is int)) {
-      return _blink.BlinkWindow.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name));
+      return wrap_jso(_blink.BlinkWindow.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name)));
     }
     if ((index_OR_name is String)) {
-      return _blink.BlinkWindow.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name));
+      return wrap_jso(_blink.BlinkWindow.instance.$__getter___Callback_1_(unwrap_jso(this), unwrap_jso(index_OR_name)));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -34019,7 +39265,7 @@
   
   @DomName('Window.getComputedStyle')
   @DocsEditable()
-  CssStyleDeclaration _getComputedStyle(Element element, String pseudoElement) => _blink.BlinkWindow.instance.getComputedStyle_Callback_2_(unwrap_jso(this), unwrap_jso(element), pseudoElement);
+  CssStyleDeclaration _getComputedStyle(Element element, String pseudoElement) => wrap_jso(_blink.BlinkWindow.instance.getComputedStyle_Callback_2_(unwrap_jso(this), unwrap_jso(element), pseudoElement));
   
   /**
    * Returns all CSS rules that apply to the element's pseudo-element.
@@ -34027,7 +39273,7 @@
   @DomName('Window.getMatchedCSSRules')
   @DocsEditable()
   @Experimental() // non-standard
-  List<CssRule> getMatchedCssRules(Element element, String pseudoElement) => _blink.BlinkWindow.instance.getMatchedCSSRules_Callback_2_(unwrap_jso(this), unwrap_jso(element), pseudoElement);
+  List<CssRule> getMatchedCssRules(Element element, String pseudoElement) => wrap_jso(_blink.BlinkWindow.instance.getMatchedCSSRules_Callback_2_(unwrap_jso(this), unwrap_jso(element), pseudoElement));
   
   /**
    * Returns the currently selected text.
@@ -34079,18 +39325,18 @@
   
   @DomName('Window.open')
   @DocsEditable()
-  WindowBase open(String url, String name, [String options]) => _blink.BlinkWindow.instance.open_Callback_3_(unwrap_jso(this), url, name, options);
+  WindowBase open(String url, String name, [String options]) => wrap_jso(_blink.BlinkWindow.instance.open_Callback_3_(unwrap_jso(this), url, name, options));
   
   SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) {
     if (creationCallback != null) {
-      return _blink.BlinkWindow.instance.openDatabase_Callback_5_(unwrap_jso(this), name, version, displayName, estimatedSize, unwrap_jso(creationCallback));
+      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_4_(unwrap_jso(this), name, version, displayName, estimatedSize);
+    return wrap_jso(_blink.BlinkWindow.instance.openDatabase_Callback_4_(unwrap_jso(this), name, version, displayName, estimatedSize));
   }
 
   @DomName('Window.postMessage')
   @DocsEditable()
-  void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List<MessagePort> transfer]) => _blink.BlinkWindow.instance.postMessage_Callback_3_(unwrap_jso(this), message, targetOrigin, transfer);
+  void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List<MessagePort> transfer]) => _blink.BlinkWindow.instance.postMessage_Callback_3_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), targetOrigin, transfer);
   
   /**
    * Opens the print dialog for this window.
@@ -34106,7 +39352,7 @@
   
   @DomName('Window.requestAnimationFrame')
   @DocsEditable()
-  int _requestAnimationFrame(RequestAnimationFrameCallback callback) => _blink.BlinkWindow.instance.requestAnimationFrame_Callback_1_(unwrap_jso(this), unwrap_jso(callback));
+  int _requestAnimationFrame(RequestAnimationFrameCallback callback) => _blink.BlinkWindow.instance.requestAnimationFrame_Callback_1_(unwrap_jso(this), unwrap_jso((highResTime) => callback(highResTime)));
   
   /**
    * Resizes this window by an offset.
@@ -34138,7 +39384,7 @@
       return;
     }
     if ((scrollOptions is Map) && (y is num) && (x is num)) {
-      _blink.BlinkWindow.instance.scroll_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), scrollOptions);
+      _blink.BlinkWindow.instance.scroll_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     if ((y is int) && (x is int) && scrollOptions == null) {
@@ -34146,7 +39392,7 @@
       return;
     }
     if ((scrollOptions is Map) && (y is int) && (x is int)) {
-      _blink.BlinkWindow.instance.scroll_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), scrollOptions);
+      _blink.BlinkWindow.instance.scroll_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -34158,7 +39404,7 @@
       return;
     }
     if ((scrollOptions is Map) && (y is num) && (x is num)) {
-      _blink.BlinkWindow.instance.scrollBy_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), scrollOptions);
+      _blink.BlinkWindow.instance.scrollBy_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     if ((y is int) && (x is int) && scrollOptions == null) {
@@ -34166,7 +39412,7 @@
       return;
     }
     if ((scrollOptions is Map) && (y is int) && (x is int)) {
-      _blink.BlinkWindow.instance.scrollBy_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), scrollOptions);
+      _blink.BlinkWindow.instance.scrollBy_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -34178,7 +39424,7 @@
       return;
     }
     if ((scrollOptions is Map) && (y is num) && (x is num)) {
-      _blink.BlinkWindow.instance.scrollTo_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), scrollOptions);
+      _blink.BlinkWindow.instance.scrollTo_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     if ((y is int) && (x is int) && scrollOptions == null) {
@@ -34186,7 +39432,7 @@
       return;
     }
     if ((scrollOptions is Map) && (y is int) && (x is int)) {
-      _blink.BlinkWindow.instance.scrollTo_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), scrollOptions);
+      _blink.BlinkWindow.instance.scrollTo_Callback_3_(unwrap_jso(this), unwrap_jso(x), unwrap_jso(y), convertDartToNative_Dictionary(scrollOptions));
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -34220,10 +39466,10 @@
   
   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(successCallback), unwrap_jso(errorCallback));
+      _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))));
       return;
     }
-    _blink.BlinkWindow.instance.webkitRequestFileSystem_Callback_3_(unwrap_jso(this), type, size, unwrap_jso(successCallback));
+    _blink.BlinkWindow.instance.webkitRequestFileSystem_Callback_3_(unwrap_jso(this), type, size, unwrap_jso((fileSystem) => successCallback(wrap_jso(fileSystem))));
     return;
   }
 
@@ -34237,10 +39483,10 @@
 
   void _resolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_3_(unwrap_jso(this), url, unwrap_jso(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_3_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_2_(unwrap_jso(this), url, unwrap_jso(successCallback));
+    _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_2_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
     return;
   }
 
@@ -34873,9 +40119,21 @@
   @DomName('Worker.Worker')
   @DocsEditable()
   factory Worker(String scriptUrl) {
-    return _blink.BlinkWorker.instance.constructorCallback_1_(scriptUrl);
+    return wrap_jso(_blink.BlinkWorker.instance.constructorCallback_1_(scriptUrl));
   }
 
+
+  static Worker internalCreateWorker() {
+    return new Worker._internalWrap();
+  }
+
+  factory Worker._internalWrap() {
+    return new Worker.internal_();
+  }
+
+  Worker.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
@@ -34913,6 +40171,18 @@
   // To suppress missing implicit constructor warnings.
   factory WorkerConsole._() { throw new UnsupportedError("Not supported"); }
 
+
+  static WorkerConsole internalCreateWorkerConsole() {
+    return new WorkerConsole._internalWrap();
+  }
+
+  factory WorkerConsole._internalWrap() {
+    return new WorkerConsole.internal_();
+  }
+
+  WorkerConsole.internal_() : super.internal_();
+
+
 }
 // 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
@@ -34939,6 +40209,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error');
 
+
+  static WorkerGlobalScope internalCreateWorkerGlobalScope() {
+    return new WorkerGlobalScope._internalWrap();
+  }
+
+  factory WorkerGlobalScope._internalWrap() {
+    return new WorkerGlobalScope.internal_();
+  }
+
+  WorkerGlobalScope.internal_() : super.internal_();
+
+
   @DomName('WorkerGlobalScope.PERSISTENT')
   @DocsEditable()
   @Experimental() // untriaged
@@ -34996,11 +40278,11 @@
   
   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(successCallback), unwrap_jso(errorCallback));
+      _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))));
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_3_(unwrap_jso(this), type, size, unwrap_jso(successCallback));
+      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_3_(unwrap_jso(this), type, size, unwrap_jso((fileSystem) => successCallback(wrap_jso(fileSystem))));
       return;
     }
     _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_2_(unwrap_jso(this), type, size);
@@ -35021,7 +40303,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  _DOMFileSystemSync requestFileSystemSync(int type, int size) => _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystemSync_Callback_2_(unwrap_jso(this), type, size);
+  _DOMFileSystemSync requestFileSystemSync(int type, int size) => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystemSync_Callback_2_(unwrap_jso(this), type, size));
   
   @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemSyncURL')
   @DocsEditable()
@@ -35029,14 +40311,14 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  _EntrySync resolveLocalFileSystemSyncUrl(String url) => _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemSyncURL_Callback_1_(unwrap_jso(this), url);
+  _EntrySync resolveLocalFileSystemSyncUrl(String url) => wrap_jso(_blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemSyncURL_Callback_1_(unwrap_jso(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(successCallback), unwrap_jso(errorCallback));
+      _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_3_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_2_(unwrap_jso(this), url, unwrap_jso(successCallback));
+    _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_2_(unwrap_jso(this), url, unwrap_jso((entry) => successCallback(wrap_jso(entry))));
     return;
   }
 
@@ -35099,6 +40381,21 @@
   // To suppress missing implicit constructor warnings.
   factory WorkerPerformance._() { throw new UnsupportedError("Not supported"); }
 
+  static WorkerPerformance internalCreateWorkerPerformance() {
+    return new WorkerPerformance._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory WorkerPerformance._internalWrap() {
+    return new WorkerPerformance.internal_();
+  }
+
+  WorkerPerformance.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('WorkerPerformance.memory')
   @DocsEditable()
   @Experimental() // untriaged
@@ -35107,7 +40404,7 @@
   @DomName('WorkerPerformance.now')
   @DocsEditable()
   @Experimental() // untriaged
-  double now() => _blink.BlinkWorkerPerformance.instance.now_Callback_0_(unwrap_jso(this));
+  num now() => _blink.BlinkWorkerPerformance.instance.now_Callback_0_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35128,9 +40425,24 @@
   @DomName('XPathEvaluator.XPathEvaluator')
   @DocsEditable()
   factory XPathEvaluator() {
-    return _blink.BlinkXPathEvaluator.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkXPathEvaluator.instance.constructorCallback_0_());
   }
 
+  static XPathEvaluator internalCreateXPathEvaluator() {
+    return new XPathEvaluator._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory XPathEvaluator._internalWrap() {
+    return new XPathEvaluator.internal_();
+  }
+
+  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)));
@@ -35159,6 +40471,21 @@
   // To suppress missing implicit constructor warnings.
   factory XPathExpression._() { throw new UnsupportedError("Not supported"); }
 
+  static XPathExpression internalCreateXPathExpression() {
+    return new XPathExpression._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory XPathExpression._internalWrap() {
+    return new XPathExpression.internal_();
+  }
+
+  XPathExpression.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('XPathExpression.evaluate')
   @DocsEditable()
   XPathResult evaluate(Node contextNode, int type, XPathResult inResult) => wrap_jso(_blink.BlinkXPathExpression.instance.evaluate_Callback_3_(unwrap_jso(this), unwrap_jso(contextNode), type, unwrap_jso(inResult)));
@@ -35179,6 +40506,21 @@
   // To suppress missing implicit constructor warnings.
   factory XPathNSResolver._() { throw new UnsupportedError("Not supported"); }
 
+  static XPathNSResolver internalCreateXPathNSResolver() {
+    return new XPathNSResolver._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory XPathNSResolver._internalWrap() {
+    return new XPathNSResolver.internal_();
+  }
+
+  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);
@@ -35199,6 +40541,21 @@
   // To suppress missing implicit constructor warnings.
   factory XPathResult._() { throw new UnsupportedError("Not supported"); }
 
+  static XPathResult internalCreateXPathResult() {
+    return new XPathResult._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory XPathResult._internalWrap() {
+    return new XPathResult.internal_();
+  }
+
+  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;
@@ -35249,7 +40606,7 @@
   
   @DomName('XPathResult.numberValue')
   @DocsEditable()
-  double get numberValue => _blink.BlinkXPathResult.instance.numberValue_Getter_(unwrap_jso(this));
+  num get numberValue => _blink.BlinkXPathResult.instance.numberValue_Getter_(unwrap_jso(this));
   
   @DomName('XPathResult.resultType')
   @DocsEditable()
@@ -35290,6 +40647,18 @@
   // To suppress missing implicit constructor warnings.
   factory XmlDocument._() { throw new UnsupportedError("Not supported"); }
 
+
+  static XmlDocument internalCreateXmlDocument() {
+    return new XmlDocument._internalWrap();
+  }
+
+  factory XmlDocument._internalWrap() {
+    return new XmlDocument.internal_();
+  }
+
+  XmlDocument.internal_() : super.internal_();
+
+
 }
 // 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
@@ -35309,9 +40678,24 @@
   @DomName('XMLSerializer.XMLSerializer')
   @DocsEditable()
   factory XmlSerializer() {
-    return _blink.BlinkXMLSerializer.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkXMLSerializer.instance.constructorCallback_0_());
   }
 
+  static XmlSerializer internalCreateXmlSerializer() {
+    return new XmlSerializer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory XmlSerializer._internalWrap() {
+    return new XmlSerializer.internal_();
+  }
+
+  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 node) => _blink.BlinkXMLSerializer.instance.serializeToString_Callback_1_(unwrap_jso(this), unwrap_jso(node));
@@ -35337,9 +40721,24 @@
   @DomName('XSLTProcessor.XSLTProcessor')
   @DocsEditable()
   factory XsltProcessor() {
-    return _blink.BlinkXSLTProcessor.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkXSLTProcessor.instance.constructorCallback_0_());
   }
 
+  static XsltProcessor internalCreateXsltProcessor() {
+    return new XsltProcessor._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory XsltProcessor._internalWrap() {
+    return new XsltProcessor.internal_();
+  }
+
+  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;
 
@@ -35389,6 +40788,18 @@
   // To suppress missing implicit constructor warnings.
   factory _Attr._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _Attr internalCreate_Attr() {
+    return new _Attr._internalWrap();
+  }
+
+  factory _Attr._internalWrap() {
+    return new _Attr.internal_();
+  }
+
+  _Attr.internal_() : super.internal_();
+
+
   @DomName('Attr.localName')
   @DocsEditable()
   @Experimental() // untriaged
@@ -35416,7 +40827,7 @@
   @DomName('Attr.textContent')
   @DocsEditable()
   @Experimental() // untriaged
-  void set text(String value) => _blink.BlinkAttr.instance.textContent_Setter_(unwrap_jso(this), value);
+  set text(String value) => _blink.BlinkAttr.instance.textContent_Setter_(unwrap_jso(this), value);
   
   @DomName('Attr.value')
   @DocsEditable()
@@ -35424,7 +40835,7 @@
   
   @DomName('Attr.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkAttr.instance.value_Setter_(unwrap_jso(this), value);
+  set value(String value) => _blink.BlinkAttr.instance.value_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35438,10 +40849,22 @@
 @DomName('CSSPrimitiveValue')
 // http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface
 @deprecated // deprecated
-abstract class _CSSPrimitiveValue extends _CSSValue {
+class _CSSPrimitiveValue extends _CSSValue {
   // To suppress missing implicit constructor warnings.
   factory _CSSPrimitiveValue._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _CSSPrimitiveValue internalCreate_CSSPrimitiveValue() {
+    return new _CSSPrimitiveValue._internalWrap();
+  }
+
+  factory _CSSPrimitiveValue._internalWrap() {
+    return new _CSSPrimitiveValue.internal_();
+  }
+
+  _CSSPrimitiveValue.internal_() : super.internal_();
+
+
 }
 // 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
@@ -35454,10 +40877,22 @@
 @DomName('CSSUnknownRule')
 // http://dev.w3.org/csswg/cssom/#the-cssstylesheet-interface
 @deprecated // deprecated
-abstract class _CSSUnknownRule extends CssRule {
+class _CSSUnknownRule extends CssRule {
   // To suppress missing implicit constructor warnings.
   factory _CSSUnknownRule._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _CSSUnknownRule internalCreate_CSSUnknownRule() {
+    return new _CSSUnknownRule._internalWrap();
+  }
+
+  factory _CSSUnknownRule._internalWrap() {
+    return new _CSSUnknownRule.internal_();
+  }
+
+  _CSSUnknownRule.internal_() : super.internal_();
+
+
 }
 // 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
@@ -35470,10 +40905,25 @@
 @DomName('CSSValue')
 // http://dev.w3.org/csswg/cssom/
 @deprecated // deprecated
-abstract class _CSSValue extends NativeFieldWrapperClass2 {
+class _CSSValue extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _CSSValue._() { throw new UnsupportedError("Not supported"); }
 
+  static _CSSValue internalCreate_CSSValue() {
+    return new _CSSValue._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _CSSValue._internalWrap() {
+    return new _CSSValue.internal_();
+  }
+
+  _CSSValue.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
@@ -35485,10 +40935,25 @@
 @DocsEditable()
 @DomName('Cache')
 @Experimental() // untriaged
-abstract class _Cache extends NativeFieldWrapperClass2 {
+class _Cache extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _Cache._() { throw new UnsupportedError("Not supported"); }
 
+  static _Cache internalCreate_Cache() {
+    return new _Cache._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _Cache._internalWrap() {
+    return new _Cache.internal_();
+  }
+
+  _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
@@ -35500,7 +40965,7 @@
 @DocsEditable()
 @DomName('CanvasPathMethods')
 @Experimental() // untriaged
-abstract class _CanvasPathMethods extends NativeFieldWrapperClass2 {
+class _CanvasPathMethods extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _CanvasPathMethods._() { throw new UnsupportedError("Not supported"); }
 
@@ -35606,29 +41071,42 @@
     // To suppress missing implicit constructor warnings.
   factory _ClientRect._() { throw new UnsupportedError("Not supported"); }
 
+  static _ClientRect internalCreate_ClientRect() {
+    return new _ClientRect._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _ClientRect._internalWrap() {
+    return new _ClientRect.internal_();
+  }
+
+  _ClientRect.internal_() { }
+
+
   @DomName('ClientRect.bottom')
   @DocsEditable()
-  double get bottom => _blink.BlinkClientRect.instance.bottom_Getter_(unwrap_jso(this));
+  num get bottom => _blink.BlinkClientRect.instance.bottom_Getter_(unwrap_jso(this));
   
   @DomName('ClientRect.height')
   @DocsEditable()
-  double get height => _blink.BlinkClientRect.instance.height_Getter_(unwrap_jso(this));
+  num get height => _blink.BlinkClientRect.instance.height_Getter_(unwrap_jso(this));
   
   @DomName('ClientRect.left')
   @DocsEditable()
-  double get left => _blink.BlinkClientRect.instance.left_Getter_(unwrap_jso(this));
+  num get left => _blink.BlinkClientRect.instance.left_Getter_(unwrap_jso(this));
   
   @DomName('ClientRect.right')
   @DocsEditable()
-  double get right => _blink.BlinkClientRect.instance.right_Getter_(unwrap_jso(this));
+  num get right => _blink.BlinkClientRect.instance.right_Getter_(unwrap_jso(this));
   
   @DomName('ClientRect.top')
   @DocsEditable()
-  double get top => _blink.BlinkClientRect.instance.top_Getter_(unwrap_jso(this));
+  num get top => _blink.BlinkClientRect.instance.top_Getter_(unwrap_jso(this));
   
   @DomName('ClientRect.width')
   @DocsEditable()
-  double get width => _blink.BlinkClientRect.instance.width_Getter_(unwrap_jso(this));
+  num get width => _blink.BlinkClientRect.instance.width_Getter_(unwrap_jso(this));
   }
 
 /**
@@ -35676,10 +41154,25 @@
 
 @DocsEditable()
 @DomName('ClientRectList')
-class _ClientRectList extends NativeFieldWrapperClass2 with ListMixin<Rectangle>, ImmutableListMixin<Rectangle> implements List<Rectangle> {
+class _ClientRectList extends JsoNativeFieldWrapper with ListMixin<Rectangle>, ImmutableListMixin<Rectangle> implements List<Rectangle> {
   // To suppress missing implicit constructor warnings.
   factory _ClientRectList._() { throw new UnsupportedError("Not supported"); }
 
+  static _ClientRectList internalCreate_ClientRectList() {
+    return new _ClientRectList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _ClientRectList._internalWrap() {
+    return new _ClientRectList.internal_();
+  }
+
+  _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));
@@ -35691,7 +41184,7 @@
   }
 
   Rectangle _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkClientRectList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, Rectangle value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -35699,7 +41192,7 @@
   // Rectangle is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -35746,10 +41239,25 @@
 @DomName('Counter')
 // http://dev.w3.org/csswg/cssom/
 @deprecated // deprecated
-abstract class _Counter extends NativeFieldWrapperClass2 {
+class _Counter extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _Counter._() { throw new UnsupportedError("Not supported"); }
 
+  static _Counter internalCreate_Counter() {
+    return new _Counter._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _Counter._internalWrap() {
+    return new _Counter.internal_();
+  }
+
+  _Counter.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
@@ -35760,10 +41268,25 @@
 
 @DocsEditable()
 @DomName('CSSRuleList')
-class _CssRuleList extends NativeFieldWrapperClass2 with ListMixin<CssRule>, ImmutableListMixin<CssRule> implements List<CssRule> {
+class _CssRuleList extends JsoNativeFieldWrapper with ListMixin<CssRule>, ImmutableListMixin<CssRule> implements List<CssRule> {
   // To suppress missing implicit constructor warnings.
   factory _CssRuleList._() { throw new UnsupportedError("Not supported"); }
 
+  static _CssRuleList internalCreate_CssRuleList() {
+    return new _CssRuleList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _CssRuleList._internalWrap() {
+    return new _CssRuleList.internal_();
+  }
+
+  _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));
@@ -35775,7 +41298,7 @@
   }
 
   CssRule _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkCSSRuleList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, CssRule value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -35783,7 +41306,7 @@
   // CssRule is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -35816,7 +41339,7 @@
 
   @DomName('CSSRuleList.item')
   @DocsEditable()
-  CssRule item(int index) => _blink.BlinkCSSRuleList.instance.item_Callback_1_(unwrap_jso(this), index);
+  CssRule item(int index) => wrap_jso(_blink.BlinkCSSRuleList.instance.item_Callback_1_(unwrap_jso(this), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35834,6 +41357,18 @@
   // To suppress missing implicit constructor warnings.
   factory _CssValueList._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _CssValueList internalCreate_CssValueList() {
+    return new _CssValueList._internalWrap();
+  }
+
+  factory _CssValueList._internalWrap() {
+    return new _CssValueList.internal_();
+  }
+
+  _CssValueList.internal_() : super.internal_();
+
+
   @DomName('CSSValueList.length')
   @DocsEditable()
   int get length => _blink.BlinkCSSValueList.instance.length_Getter_(unwrap_jso(this));
@@ -35845,7 +41380,7 @@
   }
 
   _CSSValue _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkCSSValueList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, _CSSValue value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -35853,7 +41388,7 @@
   // _CSSValue is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -35886,7 +41421,7 @@
 
   @DomName('CSSValueList.item')
   @DocsEditable()
-  _CSSValue item(int index) => _blink.BlinkCSSValueList.instance.item_Callback_1_(unwrap_jso(this), index);
+  _CSSValue item(int index) => wrap_jso(_blink.BlinkCSSValueList.instance.item_Callback_1_(unwrap_jso(this), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35901,10 +41436,25 @@
 @SupportedBrowser(SupportedBrowser.CHROME)
 @Experimental()
 // http://www.w3.org/TR/file-system-api/#the-filesystemsync-interface
-abstract class _DOMFileSystemSync extends NativeFieldWrapperClass2 {
+class _DOMFileSystemSync extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _DOMFileSystemSync._() { throw new UnsupportedError("Not supported"); }
 
+  static _DOMFileSystemSync internalCreate_DOMFileSystemSync() {
+    return new _DOMFileSystemSync._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _DOMFileSystemSync._internalWrap() {
+    return new _DOMFileSystemSync.internal_();
+  }
+
+  _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
@@ -35917,10 +41467,22 @@
 @DomName('DirectoryEntrySync')
 // http://www.w3.org/TR/file-system-api/#the-directoryentrysync-interface
 @Experimental()
-abstract class _DirectoryEntrySync extends _EntrySync {
+class _DirectoryEntrySync extends _EntrySync {
   // To suppress missing implicit constructor warnings.
   factory _DirectoryEntrySync._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _DirectoryEntrySync internalCreate_DirectoryEntrySync() {
+    return new _DirectoryEntrySync._internalWrap();
+  }
+
+  factory _DirectoryEntrySync._internalWrap() {
+    return new _DirectoryEntrySync.internal_();
+  }
+
+  _DirectoryEntrySync.internal_() : super.internal_();
+
+
 }
 // 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
@@ -35933,27 +41495,56 @@
 @DomName('DirectoryReaderSync')
 // http://www.w3.org/TR/file-system-api/#idl-def-DirectoryReaderSync
 @Experimental()
-abstract class _DirectoryReaderSync extends NativeFieldWrapperClass2 {
+class _DirectoryReaderSync extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _DirectoryReaderSync._() { throw new UnsupportedError("Not supported"); }
 
+  static _DirectoryReaderSync internalCreate_DirectoryReaderSync() {
+    return new _DirectoryReaderSync._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _DirectoryReaderSync._internalWrap() {
+    return new _DirectoryReaderSync.internal_();
+  }
+
+  _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
 // BSD-style license that can be found in the LICENSE file.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('DocumentType')
 // http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-412266927
 @deprecated // stable
-abstract class _DocumentType extends Node implements ChildNode {
+class _DocumentType extends Node implements ChildNode {
   // To suppress missing implicit constructor warnings.
   factory _DocumentType._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _DocumentType internalCreate_DocumentType() {
+    return new _DocumentType._internalWrap();
+  }
+
+  factory _DocumentType._internalWrap() {
+    return new _DocumentType.internal_();
+  }
+
+  _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)));
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -35972,20 +41563,32 @@
   @DocsEditable()
   factory _DomRect([num x, num y, num width, num height]) {
     if (height != null) {
-      return _blink.BlinkDOMRect.instance.constructorCallback_4_(x, y, width, height);
+      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_4_(x, y, width, height));
     }
     if (width != null) {
-      return _blink.BlinkDOMRect.instance.constructorCallback_3_(x, y, width);
+      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_3_(x, y, width));
     }
     if (y != null) {
-      return _blink.BlinkDOMRect.instance.constructorCallback_2_(x, y);
+      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_2_(x, y));
     }
     if (x != null) {
-      return _blink.BlinkDOMRect.instance.constructorCallback_1_(x);
+      return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_1_(x));
     }
-    return _blink.BlinkDOMRect.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkDOMRect.instance.constructorCallback_0_());
   }
 
+
+  static _DomRect internalCreate_DomRect() {
+    return new _DomRect._internalWrap();
+  }
+
+  factory _DomRect._internalWrap() {
+    return new _DomRect.internal_();
+  }
+
+  _DomRect.internal_() : super.internal_();
+
+
   @DomName('DOMRect.height')
   @DocsEditable()
   @Experimental() // untriaged
@@ -35994,7 +41597,7 @@
   @DomName('DOMRect.height')
   @DocsEditable()
   @Experimental() // untriaged
-  void set height(num value) => _blink.BlinkDOMRect.instance.height_Setter_(unwrap_jso(this), value);
+  set height(num value) => _blink.BlinkDOMRect.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMRect.width')
   @DocsEditable()
@@ -36004,7 +41607,7 @@
   @DomName('DOMRect.width')
   @DocsEditable()
   @Experimental() // untriaged
-  void set width(num value) => _blink.BlinkDOMRect.instance.width_Setter_(unwrap_jso(this), value);
+  set width(num value) => _blink.BlinkDOMRect.instance.width_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMRect.x')
   @DocsEditable()
@@ -36014,7 +41617,7 @@
   @DomName('DOMRect.x')
   @DocsEditable()
   @Experimental() // untriaged
-  void set x(num value) => _blink.BlinkDOMRect.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkDOMRect.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('DOMRect.y')
   @DocsEditable()
@@ -36024,7 +41627,7 @@
   @DomName('DOMRect.y')
   @DocsEditable()
   @Experimental() // untriaged
-  void set y(num value) => _blink.BlinkDOMRect.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkDOMRect.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36038,10 +41641,25 @@
 @DomName('EntrySync')
 // http://www.w3.org/TR/file-system-api/#idl-def-EntrySync
 @Experimental()
-abstract class _EntrySync extends NativeFieldWrapperClass2 {
+class _EntrySync extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _EntrySync._() { throw new UnsupportedError("Not supported"); }
 
+  static _EntrySync internalCreate_EntrySync() {
+    return new _EntrySync._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _EntrySync._internalWrap() {
+    return new _EntrySync.internal_();
+  }
+
+  _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
@@ -36054,10 +41672,22 @@
 @DomName('FileEntrySync')
 // http://www.w3.org/TR/file-system-api/#the-fileentrysync-interface
 @Experimental()
-abstract class _FileEntrySync extends _EntrySync {
+class _FileEntrySync extends _EntrySync {
   // To suppress missing implicit constructor warnings.
   factory _FileEntrySync._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _FileEntrySync internalCreate_FileEntrySync() {
+    return new _FileEntrySync._internalWrap();
+  }
+
+  factory _FileEntrySync._internalWrap() {
+    return new _FileEntrySync.internal_();
+  }
+
+  _FileEntrySync.internal_() : super.internal_();
+
+
 }
 // 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
@@ -36070,16 +41700,31 @@
 @DomName('FileReaderSync')
 // http://www.w3.org/TR/FileAPI/#FileReaderSync
 @Experimental()
-abstract class _FileReaderSync extends NativeFieldWrapperClass2 {
+class _FileReaderSync extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _FileReaderSync._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('FileReaderSync.FileReaderSync')
   @DocsEditable()
   factory _FileReaderSync() {
-    return _blink.BlinkFileReaderSync.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkFileReaderSync.instance.constructorCallback_0_());
   }
 
+  static _FileReaderSync internalCreate_FileReaderSync() {
+    return new _FileReaderSync._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _FileReaderSync._internalWrap() {
+    return new _FileReaderSync.internal_();
+  }
+
+  _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
@@ -36092,10 +41737,25 @@
 @DomName('FileWriterSync')
 // http://www.w3.org/TR/file-writer-api/#idl-def-FileWriterSync
 @Experimental()
-abstract class _FileWriterSync extends NativeFieldWrapperClass2 {
+class _FileWriterSync extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _FileWriterSync._() { throw new UnsupportedError("Not supported"); }
 
+  static _FileWriterSync internalCreate_FileWriterSync() {
+    return new _FileWriterSync._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _FileWriterSync._internalWrap() {
+    return new _FileWriterSync.internal_();
+  }
+
+  _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
@@ -36108,10 +41768,25 @@
 @DomName('GamepadList')
 // https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html
 @Experimental()
-class _GamepadList extends NativeFieldWrapperClass2 with ListMixin<Gamepad>, ImmutableListMixin<Gamepad> implements List<Gamepad> {
+class _GamepadList extends JsoNativeFieldWrapper with ListMixin<Gamepad>, ImmutableListMixin<Gamepad> implements List<Gamepad> {
   // To suppress missing implicit constructor warnings.
   factory _GamepadList._() { throw new UnsupportedError("Not supported"); }
 
+  static _GamepadList internalCreate_GamepadList() {
+    return new _GamepadList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _GamepadList._internalWrap() {
+    return new _GamepadList.internal_();
+  }
+
+  _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));
@@ -36123,7 +41798,7 @@
   }
 
   Gamepad _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkGamepadList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, Gamepad value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -36131,7 +41806,7 @@
   // Gamepad is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -36178,10 +41853,25 @@
 @DomName('HTMLAllCollection')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-all
 @deprecated // deprecated
-abstract class _HTMLAllCollection extends NativeFieldWrapperClass2 {
+class _HTMLAllCollection extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _HTMLAllCollection._() { throw new UnsupportedError("Not supported"); }
 
+  static _HTMLAllCollection internalCreate_HTMLAllCollection() {
+    return new _HTMLAllCollection._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _HTMLAllCollection._internalWrap() {
+    return new _HTMLAllCollection.internal_();
+  }
+
+  _HTMLAllCollection.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('HTMLAllCollection.item')
   @DocsEditable()
   Element _item(int index) => wrap_jso(_blink.BlinkHTMLAllCollection.instance.item_Callback_1_(unwrap_jso(this), index));
@@ -36198,9 +41888,21 @@
 @DomName('HTMLAppletElement')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#the-applet-element
 @deprecated // deprecated
-abstract class _HTMLAppletElement extends HtmlElement {
+class _HTMLAppletElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory _HTMLAppletElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _HTMLAppletElement internalCreate_HTMLAppletElement() {
+    return new _HTMLAppletElement._internalWrap();
+  }
+
+  factory _HTMLAppletElement._internalWrap() {
+    return new _HTMLAppletElement.internal_();
+  }
+
+  _HTMLAppletElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -36220,9 +41922,21 @@
 @DomName('HTMLDirectoryElement')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dir
 @deprecated // deprecated
-abstract class _HTMLDirectoryElement extends HtmlElement {
+class _HTMLDirectoryElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory _HTMLDirectoryElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _HTMLDirectoryElement internalCreate_HTMLDirectoryElement() {
+    return new _HTMLDirectoryElement._internalWrap();
+  }
+
+  factory _HTMLDirectoryElement._internalWrap() {
+    return new _HTMLDirectoryElement.internal_();
+  }
+
+  _HTMLDirectoryElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -36242,9 +41956,21 @@
 @DomName('HTMLFontElement')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#htmlfontelement
 @deprecated // deprecated
-abstract class _HTMLFontElement extends HtmlElement {
+class _HTMLFontElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory _HTMLFontElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _HTMLFontElement internalCreate_HTMLFontElement() {
+    return new _HTMLFontElement._internalWrap();
+  }
+
+  factory _HTMLFontElement._internalWrap() {
+    return new _HTMLFontElement.internal_();
+  }
+
+  _HTMLFontElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -36264,9 +41990,21 @@
 @DomName('HTMLFrameElement')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#htmlframeelement
 @deprecated // deprecated
-abstract class _HTMLFrameElement extends HtmlElement {
+class _HTMLFrameElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory _HTMLFrameElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _HTMLFrameElement internalCreate_HTMLFrameElement() {
+    return new _HTMLFrameElement._internalWrap();
+  }
+
+  factory _HTMLFrameElement._internalWrap() {
+    return new _HTMLFrameElement.internal_();
+  }
+
+  _HTMLFrameElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -36279,16 +42017,26 @@
 // 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.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('HTMLFrameSetElement')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#frameset
 @deprecated // deprecated
-abstract class _HTMLFrameSetElement extends HtmlElement implements WindowEventHandlers {
+class _HTMLFrameSetElement extends HtmlElement implements WindowEventHandlers {
   // To suppress missing implicit constructor warnings.
   factory _HTMLFrameSetElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _HTMLFrameSetElement internalCreate_HTMLFrameSetElement() {
+    return new _HTMLFrameSetElement._internalWrap();
+  }
+
+  factory _HTMLFrameSetElement._internalWrap() {
+    return new _HTMLFrameSetElement.internal_();
+  }
+
+  _HTMLFrameSetElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -36296,7 +42044,16 @@
    */
   _HTMLFrameSetElement.created() : super.created();
 
+  // Override these methods for Dartium _HTMLFrameSetElement can't be abstract.
+  Stream<Event> get onHashChange => hashChangeEvent.forTarget(this);
+  Stream<MessageEvent> get onMessage => messageEvent.forTarget(this);
+  Stream<Event> get onOffline => offlineEvent.forTarget(this);
+  Stream<Event> get onOnline => onlineEvent.forTarget(this);
+  Stream<PopStateEvent> get onPopState => popStateEvent.forTarget(this);
+  Stream<StorageEvent> get onStorage => storageEvent.forTarget(this);
+  Stream<Event> get onUnload => unloadEvent.forTarget(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
 // BSD-style license that can be found in the LICENSE file.
@@ -36308,9 +42065,21 @@
 @DomName('HTMLMarqueeElement')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#the-marquee-element
 @deprecated // deprecated
-abstract class _HTMLMarqueeElement extends HtmlElement {
+class _HTMLMarqueeElement extends HtmlElement {
   // To suppress missing implicit constructor warnings.
   factory _HTMLMarqueeElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _HTMLMarqueeElement internalCreate_HTMLMarqueeElement() {
+    return new _HTMLMarqueeElement._internalWrap();
+  }
+
+  factory _HTMLMarqueeElement._internalWrap() {
+    return new _HTMLMarqueeElement.internal_();
+  }
+
+  _HTMLMarqueeElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -36327,7 +42096,7 @@
 @DomName('MutationEvent')
 // http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents
 @deprecated
-abstract class _MutationEvent extends Event {
+class _MutationEvent extends Event {
   factory _MutationEvent(String type,
       {bool canBubble: false, bool cancelable: false, Node relatedNode,
       String prevValue, String newValue, String attrName, int attrChange: 0}) {
@@ -36340,6 +42109,18 @@
   // To suppress missing implicit constructor warnings.
   factory _MutationEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _MutationEvent internalCreate_MutationEvent() {
+    return new _MutationEvent._internalWrap();
+  }
+
+  factory _MutationEvent._internalWrap() {
+    return new _MutationEvent.internal_();
+  }
+
+  _MutationEvent.internal_() : super.internal_();
+
+
 }
 // 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
@@ -36352,10 +42133,25 @@
 @DomName('NamedNodeMap')
 // http://dom.spec.whatwg.org/#namednodemap
 @deprecated // deprecated
-class _NamedNodeMap extends NativeFieldWrapperClass2 with ListMixin<Node>, ImmutableListMixin<Node> implements List<Node> {
+class _NamedNodeMap extends JsoNativeFieldWrapper with ListMixin<Node>, ImmutableListMixin<Node> implements List<Node> {
   // To suppress missing implicit constructor warnings.
   factory _NamedNodeMap._() { throw new UnsupportedError("Not supported"); }
 
+  static _NamedNodeMap internalCreate_NamedNodeMap() {
+    return new _NamedNodeMap._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _NamedNodeMap._internalWrap() {
+    return new _NamedNodeMap.internal_();
+  }
+
+  _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));
@@ -36367,7 +42163,7 @@
   }
 
   Node _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkNamedNodeMap.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, Node value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -36375,7 +42171,7 @@
   // Node is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -36449,10 +42245,25 @@
 @DocsEditable()
 @DomName('PagePopupController')
 @deprecated // nonstandard
-abstract class _PagePopupController extends NativeFieldWrapperClass2 {
+class _PagePopupController extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _PagePopupController._() { throw new UnsupportedError("Not supported"); }
 
+  static _PagePopupController internalCreate_PagePopupController() {
+    return new _PagePopupController._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _PagePopupController._internalWrap() {
+    return new _PagePopupController.internal_();
+  }
+
+  _PagePopupController.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
@@ -36465,10 +42276,25 @@
 @DomName('RGBColor')
 // http://dev.w3.org/csswg/cssom/
 @deprecated // deprecated
-abstract class _RGBColor extends NativeFieldWrapperClass2 {
+class _RGBColor extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _RGBColor._() { throw new UnsupportedError("Not supported"); }
 
+  static _RGBColor internalCreate_RGBColor() {
+    return new _RGBColor._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _RGBColor._internalWrap() {
+    return new _RGBColor.internal_();
+  }
+
+  _RGBColor.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
@@ -36476,10 +42302,22 @@
 
 
 @DomName('RadioNodeList')
-abstract class _RadioNodeList extends NodeList {
+class _RadioNodeList extends NodeList {
   // To suppress missing implicit constructor warnings.
   factory _RadioNodeList._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _RadioNodeList internalCreate_RadioNodeList() {
+    return new _RadioNodeList._internalWrap();
+  }
+
+  factory _RadioNodeList._internalWrap() {
+    return new _RadioNodeList.internal_();
+  }
+
+  _RadioNodeList.internal_() : super.internal_();
+
+
 }
 // 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
@@ -36492,10 +42330,25 @@
 @DomName('Rect')
 // http://dev.w3.org/csswg/cssom/
 @deprecated // deprecated
-abstract class _Rect extends NativeFieldWrapperClass2 {
+class _Rect extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _Rect._() { throw new UnsupportedError("Not supported"); }
 
+  static _Rect internalCreate_Rect() {
+    return new _Rect._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _Rect._internalWrap() {
+    return new _Rect.internal_();
+  }
+
+  _Rect.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
@@ -36515,20 +42368,34 @@
   @DocsEditable()
   factory _Request(input, [Map requestInitDict]) {
     if ((input is String || input == null) && requestInitDict == null) {
-      return _blink.BlinkRequest.instance.constructorCallback_1_(input);
+      return wrap_jso(_blink.BlinkRequest.instance.constructorCallback_1_(input));
     }
     if ((requestInitDict is Map || requestInitDict == null) && (input is String || input == null)) {
-      return _blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict);
+      var requestInitDict_1 = convertDartToNative_Dictionary(requestInitDict);
+      return wrap_jso(_blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict_1));
     }
     if ((input is _Request || input == null) && requestInitDict == null) {
-      return _blink.BlinkRequest.instance.constructorCallback_1_(input);
+      return wrap_jso(_blink.BlinkRequest.instance.constructorCallback_1_(input));
     }
     if ((requestInitDict is Map || requestInitDict == null) && (input is _Request || input == null)) {
-      return _blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict);
+      var requestInitDict_1 = convertDartToNative_Dictionary(requestInitDict);
+      return wrap_jso(_blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict_1));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+
+  static _Request internalCreate_Request() {
+    return new _Request._internalWrap();
+  }
+
+  factory _Request._internalWrap() {
+    return new _Request.internal_();
+  }
+
+  _Request.internal_() : super.internal_();
+
+
   @DomName('Request.credentials')
   @DocsEditable()
   @Experimental() // untriaged
@@ -36557,7 +42424,7 @@
   @DomName('Request.clone')
   @DocsEditable()
   @Experimental() // untriaged
-  _Request clone() => _blink.BlinkRequest.instance.clone_Callback_0_(unwrap_jso(this));
+  _Request clone() => wrap_jso(_blink.BlinkRequest.instance.clone_Callback_0_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36570,7 +42437,7 @@
 @DocsEditable()
 @DomName('Response')
 @Experimental() // untriaged
-abstract class _Response extends Body {
+class _Response extends Body {
   // To suppress missing implicit constructor warnings.
   factory _Response._() { throw new UnsupportedError("Not supported"); }
 
@@ -36578,48 +42445,77 @@
   @DocsEditable()
   factory _Response(body_OR_input, [Map requestInitDict_OR_responseInitDict]) {
     if ((body_OR_input is String || body_OR_input == null) && requestInitDict_OR_responseInitDict == null) {
-      return _blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input));
     }
     if ((requestInitDict_OR_responseInitDict is Map || requestInitDict_OR_responseInitDict == null) && (body_OR_input is String || body_OR_input == null)) {
-      return _blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, requestInitDict_OR_responseInitDict);
+      var responseInitDict_1 = convertDartToNative_Dictionary(requestInitDict_OR_responseInitDict);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, responseInitDict_1));
     }
     if ((body_OR_input is Blob || body_OR_input == null) && requestInitDict_OR_responseInitDict == null) {
-      return _blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input));
     }
     if ((requestInitDict_OR_responseInitDict is Map || requestInitDict_OR_responseInitDict == null) && (body_OR_input is Blob || body_OR_input == null)) {
-      return _blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, requestInitDict_OR_responseInitDict);
+      var responseInitDict_1 = convertDartToNative_Dictionary(requestInitDict_OR_responseInitDict);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, responseInitDict_1));
     }
     if ((body_OR_input is TypedData || body_OR_input == null) && requestInitDict_OR_responseInitDict == null) {
-      return _blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input));
     }
     if ((requestInitDict_OR_responseInitDict is Map || requestInitDict_OR_responseInitDict == null) && (body_OR_input is TypedData || body_OR_input == null)) {
-      return _blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, requestInitDict_OR_responseInitDict);
+      var requestInitDict_1 = convertDartToNative_Dictionary(requestInitDict_OR_responseInitDict);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, requestInitDict_1));
     }
     if ((body_OR_input is ByteBuffer || body_OR_input == null) && requestInitDict_OR_responseInitDict == null) {
-      return _blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_1_(body_OR_input));
     }
     if ((requestInitDict_OR_responseInitDict is Map || requestInitDict_OR_responseInitDict == null) && (body_OR_input is ByteBuffer || body_OR_input == null)) {
-      return _blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, requestInitDict_OR_responseInitDict);
+      var requestInitDict_1 = convertDartToNative_Dictionary(requestInitDict_OR_responseInitDict);
+      return wrap_jso(_blink.BlinkResponse.instance.constructorCallback_2_(body_OR_input, requestInitDict_1));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
+
+  static _Response internalCreate_Response() {
+    return new _Response._internalWrap();
+  }
+
+  factory _Response._internalWrap() {
+    return new _Response.internal_();
+  }
+
+  _Response.internal_() : super.internal_();
+
+
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('ServiceWorker')
 @Experimental() // untriaged
-abstract class _ServiceWorker extends EventTarget implements AbstractWorker {
+class _ServiceWorker extends EventTarget implements AbstractWorker {
   // To suppress missing implicit constructor warnings.
   factory _ServiceWorker._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _ServiceWorker internalCreate_ServiceWorker() {
+    return new _ServiceWorker._internalWrap();
+  }
+
+  factory _ServiceWorker._internalWrap() {
+    return new _ServiceWorker.internal_();
+  }
+
+  _ServiceWorker.internal_() : super.internal_();
+
+
+  // Override these methods for Dartium _ServiceWorker can't be abstract.
+  Stream<ErrorEvent> get onError => errorEvent.forTarget(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
 // BSD-style license that can be found in the LICENSE file.
@@ -36631,10 +42527,25 @@
 @DomName('SpeechRecognitionResultList')
 // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechrecognitionresultlist
 @Experimental()
-class _SpeechRecognitionResultList extends NativeFieldWrapperClass2 with ListMixin<SpeechRecognitionResult>, ImmutableListMixin<SpeechRecognitionResult> implements List<SpeechRecognitionResult> {
+class _SpeechRecognitionResultList extends JsoNativeFieldWrapper with ListMixin<SpeechRecognitionResult>, ImmutableListMixin<SpeechRecognitionResult> implements List<SpeechRecognitionResult> {
   // To suppress missing implicit constructor warnings.
   factory _SpeechRecognitionResultList._() { throw new UnsupportedError("Not supported"); }
 
+  static _SpeechRecognitionResultList internalCreate_SpeechRecognitionResultList() {
+    return new _SpeechRecognitionResultList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _SpeechRecognitionResultList._internalWrap() {
+    return new _SpeechRecognitionResultList.internal_();
+  }
+
+  _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));
@@ -36646,7 +42557,7 @@
   }
 
   SpeechRecognitionResult _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSpeechRecognitionResultList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, SpeechRecognitionResult value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -36654,7 +42565,7 @@
   // SpeechRecognitionResult is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -36699,10 +42610,25 @@
 
 @DocsEditable()
 @DomName('StyleSheetList')
-class _StyleSheetList extends NativeFieldWrapperClass2 with ListMixin<StyleSheet>, ImmutableListMixin<StyleSheet> implements List<StyleSheet> {
+class _StyleSheetList extends JsoNativeFieldWrapper with ListMixin<StyleSheet>, ImmutableListMixin<StyleSheet> implements List<StyleSheet> {
   // To suppress missing implicit constructor warnings.
   factory _StyleSheetList._() { throw new UnsupportedError("Not supported"); }
 
+  static _StyleSheetList internalCreate_StyleSheetList() {
+    return new _StyleSheetList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _StyleSheetList._internalWrap() {
+    return new _StyleSheetList.internal_();
+  }
+
+  _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));
@@ -36714,7 +42640,7 @@
   }
 
   StyleSheet _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkStyleSheetList.instance.item_Callback_1_(unwrap_jso(this), index));
- 
+
   void operator[]=(int index, StyleSheet value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -36722,7 +42648,7 @@
   // StyleSheet is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -36755,7 +42681,7 @@
 
   @DomName('StyleSheetList.__getter__')
   @DocsEditable()
-  CssStyleSheet __getter__(String name) => _blink.BlinkStyleSheetList.instance.$__getter___Callback_1_(unwrap_jso(this), name);
+  CssStyleSheet __getter__(String name) => wrap_jso(_blink.BlinkStyleSheetList.instance.$__getter___Callback_1_(unwrap_jso(this), name));
   
   @DomName('StyleSheetList.item')
   @DocsEditable()
@@ -36772,10 +42698,25 @@
 @DocsEditable()
 @DomName('SubtleCrypto')
 @Experimental() // untriaged
-abstract class _SubtleCrypto extends NativeFieldWrapperClass2 {
+class _SubtleCrypto extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _SubtleCrypto._() { throw new UnsupportedError("Not supported"); }
 
+  static _SubtleCrypto internalCreate_SubtleCrypto() {
+    return new _SubtleCrypto._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _SubtleCrypto._internalWrap() {
+    return new _SubtleCrypto.internal_();
+  }
+
+  _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
@@ -36788,10 +42729,22 @@
 @DomName('WebKitCSSFilterValue')
 // http://dev.w3.org/csswg/cssom/
 @deprecated // deprecated
-abstract class _WebKitCSSFilterValue extends _CssValueList {
+class _WebKitCSSFilterValue extends _CssValueList {
   // To suppress missing implicit constructor warnings.
   factory _WebKitCSSFilterValue._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _WebKitCSSFilterValue internalCreate_WebKitCSSFilterValue() {
+    return new _WebKitCSSFilterValue._internalWrap();
+  }
+
+  factory _WebKitCSSFilterValue._internalWrap() {
+    return new _WebKitCSSFilterValue.internal_();
+  }
+
+  _WebKitCSSFilterValue.internal_() : super.internal_();
+
+
 }
 // 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
@@ -36807,16 +42760,31 @@
 @Experimental()
 // http://dev.w3.org/csswg/cssom/
 @deprecated // deprecated
-abstract class _WebKitCSSMatrix extends NativeFieldWrapperClass2 {
+class _WebKitCSSMatrix extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _WebKitCSSMatrix._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('WebKitCSSMatrix.WebKitCSSMatrix')
   @DocsEditable()
   factory _WebKitCSSMatrix([String cssValue]) {
-    return _blink.BlinkWebKitCSSMatrix.instance.constructorCallback_1_(cssValue);
+    return wrap_jso(_blink.BlinkWebKitCSSMatrix.instance.constructorCallback_1_(cssValue));
   }
 
+  static _WebKitCSSMatrix internalCreate_WebKitCSSMatrix() {
+    return new _WebKitCSSMatrix._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _WebKitCSSMatrix._internalWrap() {
+    return new _WebKitCSSMatrix.internal_();
+  }
+
+  _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
@@ -36829,10 +42797,22 @@
 @DomName('WebKitCSSTransformValue')
 // http://dev.w3.org/csswg/cssom/
 @deprecated // deprecated
-abstract class _WebKitCSSTransformValue extends _CssValueList {
+class _WebKitCSSTransformValue extends _CssValueList {
   // To suppress missing implicit constructor warnings.
   factory _WebKitCSSTransformValue._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _WebKitCSSTransformValue internalCreate_WebKitCSSTransformValue() {
+    return new _WebKitCSSTransformValue._internalWrap();
+  }
+
+  factory _WebKitCSSTransformValue._internalWrap() {
+    return new _WebKitCSSTransformValue.internal_();
+  }
+
+  _WebKitCSSTransformValue.internal_() : super.internal_();
+
+
 }
 // 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
@@ -36873,34 +42853,82 @@
 // 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.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('WorkerLocation')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerlocation
 @Experimental()
-abstract class _WorkerLocation extends NativeFieldWrapperClass2 implements UrlUtilsReadOnly {
+class _WorkerLocation extends NativeFieldWrapperClass2 implements UrlUtilsReadOnly {
   // To suppress missing implicit constructor warnings.
   factory _WorkerLocation._() { throw new UnsupportedError("Not supported"); }
 
+  static _WorkerLocation internalCreate_WorkerLocation() {
+    return new _WorkerLocation._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _WorkerLocation._internalWrap() {
+    return new _WorkerLocation.internal_();
+  }
+
+  _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));
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('WorkerNavigator')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workernavigator
 @Experimental()
-abstract class _WorkerNavigator extends NativeFieldWrapperClass2 implements NavigatorCpu, NavigatorOnLine, NavigatorID {
+class _WorkerNavigator extends NativeFieldWrapperClass2 implements NavigatorCpu, NavigatorOnLine, NavigatorID {
   // To suppress missing implicit constructor warnings.
   factory _WorkerNavigator._() { throw new UnsupportedError("Not supported"); }
 
+  static _WorkerNavigator internalCreate_WorkerNavigator() {
+    return new _WorkerNavigator._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory _WorkerNavigator._internalWrap() {
+    return new _WorkerNavigator.internal_();
+  }
+
+  _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));
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -36915,6 +42943,18 @@
   // To suppress missing implicit constructor warnings.
   factory _XMLHttpRequestProgressEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static _XMLHttpRequestProgressEvent internalCreate_XMLHttpRequestProgressEvent() {
+    return new _XMLHttpRequestProgressEvent._internalWrap();
+  }
+
+  factory _XMLHttpRequestProgressEvent._internalWrap() {
+    return new _XMLHttpRequestProgressEvent.internal_();
+  }
+
+  _XMLHttpRequestProgressEvent.internal_() : super.internal_();
+
+
 }
 // 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
@@ -37605,7 +43645,7 @@
    * `height` function in jQuery and the calculated `height` CSS value,
    * converted to a num in pixels.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     if (newHeight is Dimension) {
       if (newHeight.value < 0) newHeight = new Dimension.px(0);
       _element.style.height = newHeight.toString();
@@ -37623,7 +43663,7 @@
    * and the calculated
    * `width` CSS value, converted to a dimensionless num in pixels.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     if (newWidth is Dimension) {
       if (newWidth.value < 0) newWidth = new Dimension.px(0);
       _element.style.width = newWidth.toString();
@@ -37658,7 +43698,7 @@
    * function in jQuery and the calculated `height` CSS value, converted to a
    * num in pixels.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     _elementList.forEach((e) => e.contentEdge.height = newHeight);
   }
 
@@ -37668,7 +43708,7 @@
    * This is equivalent to the `width` function in jQuery and the calculated
    * `width` CSS value, converted to a dimensionless num in pixels.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     _elementList.forEach((e) => e.contentEdge.width = newWidth);
   }
 }
@@ -37775,7 +43815,7 @@
    *
    * Note that only the content height can actually be set via this method.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     throw new UnsupportedError("Can only set height for content rect.");
   }
 
@@ -37789,7 +43829,7 @@
    *
    * Note that only the content width can be set via this method.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     throw new UnsupportedError("Can only set width for content rect.");
   }
 
@@ -38783,11 +44823,11 @@
   }
 
   bool allowsElement(Element element) {
-    return _allowedElements.contains(element.tagName);
+    return _allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
-    var tagName = element.tagName;
+    var tagName = element._safeTagName;
     var validator = _attributeValidators['$tagName::$attributeName'];
     if (validator == null) {
       validator = _attributeValidators['*::$attributeName'];
@@ -40449,11 +46489,11 @@
   }
 
   bool allowsElement(Element element) {
-    return allowedElements.contains(element.tagName);
+    return allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
-    var tagName = element.tagName;
+    var tagName = element._safeTagName;
     if (allowedUriAttributes.contains('$tagName::$attributeName')) {
       return uriPolicy.allowsUri(value);
     } else if (allowedUriAttributes.contains('*::$attributeName')) {
@@ -40494,10 +46534,10 @@
       var isAttr = element.attributes['is'];
       if (isAttr != null) {
         return allowedElements.contains(isAttr.toUpperCase()) &&
-          allowedElements.contains(element.tagName);
+          allowedElements.contains(element._safeTagName);
       }
     }
-    return allowCustomTag && allowedElements.contains(element.tagName);
+    return allowCustomTag && allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
@@ -40553,7 +46593,7 @@
     // foreignobject tag as SvgElement. We don't want foreignobject contents
     // anyway, so just remove the whole tree outright. And we can't rely
     // on IE recognizing the SvgForeignObject type, so go by tagName. Bug 23144
-    if (element is svg.SvgElement && element.tagName == 'foreignObject') {
+    if (element is svg.SvgElement && element._safeTagName == 'foreignObject') {
       return false;
     }
     if (element is svg.SvgElement) {
@@ -40667,7 +46707,7 @@
   /**
    * A sanitizer for trees that we trust. It does no validation and allows
    * any elements. It is also more efficient, since it can pass the text
-   * directly through to the underlying APIs without creating a document 
+   * directly through to the underlying APIs without creating a document
    * fragment to be sanitized.
    */
   static const trusted = const _TrustedHtmlTreeSanitizer();
@@ -40682,7 +46722,7 @@
 
   sanitizeTree(Node node) {}
 }
-  
+
 /**
  * Defines the policy for what types of uris are allowed for particular
  * attribute values.
@@ -40736,14 +46776,14 @@
 
   bool allowsElement(Element element) {
     if (!validator.allowsElement(element)) {
-      throw new ArgumentError(element.tagName);
+      throw new ArgumentError(element._safeTagName);
     }
     return true;
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
     if (!validator.allowsAttribute(element, attributeName, value)) {
-      throw new ArgumentError('${element.tagName}[$attributeName="$value"]');
+      throw new ArgumentError('${element._safeTagName}[$attributeName="$value"]');
     }
   }
 }
@@ -40808,10 +46848,7 @@
     try {
       elementText = element.toString();
     } catch(e) {}
-    var elementTagName = 'element tag unavailable';
-    try {
-      elementTagName = element.tagName;
-    } catch(e) {}
+    var elementTagName = element._safeTagName;
     _sanitizeElement(element, parent, corrupted, elementText, elementTagName,
         attrs, isAttr);
   }
@@ -40913,7 +46950,7 @@
 
   void operator []=(int index, E value) { _list[index] = value; }
 
-  void set length(int newLength) { _list.length = newLength; }
+  set length(int newLength) { _list.length = newLength; }
 
   void sort([int compare(E a, E b)]) { _list.sort(compare); }
 
@@ -41161,6 +47198,13 @@
 
 @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.
+   */
+  js.JsObject blink_jsObject;
+
   /** The parent KeyboardEvent that this KeyEvent is wrapping and "fixing". */
   KeyboardEvent _parent;
 
@@ -41313,6 +47357,13 @@
  * Helper class to implement custom events which wrap DOM events.
  */
 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. */
@@ -41655,9 +47706,7 @@
     return element;
   }
 
-  // TODO(terry): Enable below for Dartium w/ interop and remove other static window().
-  // static window() => wrap_jso(_blink.Blink_Utils.window()['window']);
-  static window() => _blink.Blink_Utils.window();
+  static window() => wrap_jso(js.context['window']);
 
   static forwardingPrint(String message) => _blink.Blink_Utils.forwardingPrint(message);
   static void spawnDomHelper(Function f, int replyTo) =>
@@ -42274,15 +48323,19 @@
   static Element createElement(Document document, String tagName) =>
     wrap_jso(_blink.Blink_Utils.createElement(unwrap_jso(document), tagName));
 
-  static void initializeCustomElement(HtmlElement element) =>
-    _blink.Blink_Utils.initializeCustomElement(unwrap_jso(element));
-
   static Element changeElementWrapper(HtmlElement element, Type type) =>
     _blink.Blink_Utils.changeElementWrapper(unwrap_jso(element), type);
 }
 
 class _DOMWindowCrossFrame extends NativeFieldWrapperClass2 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();
 
   // Fields.
@@ -42341,7 +48394,7 @@
   _LocationCrossFrame.internal();
 
   // Fields.
-  void set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
+  set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
 
   // Implementation support.
   String get typeName => "Location";
@@ -42577,10 +48630,6 @@
   throw new UnimplementedError("scheduleMicrotask in background isolates "
                                "are not supported in the browser"));
 
-void _initializeCustomElement(Element e) {
-  _Utils.initializeCustomElement(e);
-}
-
 // Class for unsupported native browser 'DOM' objects.
 class _UnsupportedBrowserObject extends NativeFieldWrapperClass2 {
 }
diff --git a/sdk/lib/html/html_common/conversions.dart b/sdk/lib/html/html_common/conversions.dart
index 042a784..10ef5b7 100644
--- a/sdk/lib/html/html_common/conversions.dart
+++ b/sdk/lib/html/html_common/conversions.dart
@@ -28,55 +28,9 @@
 
 part of html_common;
 
-
-/// Converts a JavaScript object with properties into a Dart Map.
-/// Not suitable for nested objects.
-Map convertNativeToDart_Dictionary(object) {
-  if (object == null) return null;
-  var dict = {};
-  var keys = JS('JSExtendableArray', 'Object.getOwnPropertyNames(#)', object);
-  for (final key in keys) {
-    dict[key] = JS('var', '#[#]', object, key);
-  }
-  return dict;
-}
-
-/// Converts a flat Dart map into a JavaScript object with properties.
-convertDartToNative_Dictionary(Map dict) {
-  if (dict == null) return null;
-  var object = JS('var', '{}');
-  dict.forEach((String key, value) {
-      JS('void', '#[#] = #', object, key, value);
-    });
-  return object;
-}
-
-
-/**
- * Ensures that the input is a JavaScript Array.
- *
- * Creates a new JavaScript array if necessary, otherwise returns the original.
- */
-List convertDartToNative_StringArray(List<String> input) {
-  // TODO(sra).  Implement this.
-  return input;
-}
-
-DateTime convertNativeToDart_DateTime(date) {
-  var millisSinceEpoch = JS('int', '#.getTime()', date);
-  return new DateTime.fromMillisecondsSinceEpoch(millisSinceEpoch, isUtc: true);
-}
-
-convertDartToNative_DateTime(DateTime date) {
-  return JS('', 'new Date(#)', date.millisecondsSinceEpoch);
-}
-
-
-// -----------------------------------------------------------------------------
-
 /// Converts a Dart value into a JavaScript SerializedScriptValue.
 convertDartToNative_SerializedScriptValue(value) {
-  return _convertDartToNative_PrepareForStructuredClone(value);
+  return convertDartToNative_PrepareForStructuredClone(value);
 }
 
 /// Since the source object may be viewed via a JavaScript event listener the
@@ -102,7 +56,7 @@
  * operations that perform the structured clone algorithm which does not mutate
  * its output, the result may share structure with the input [value].
  */
-_convertDartToNative_PrepareForStructuredClone(value) {
+abstract class _StructuredClone {
 
   // TODO(sra): Replace slots with identity hash table.
   var values = [];
@@ -120,6 +74,10 @@
   readSlot(int i) => copies[i];
   writeSlot(int i, x) { copies[i] = x; }
   cleanupSlots() {}  // Will be needed if we mark objects with a property.
+  bool cloneNotRequired(object);
+  newJsMap();
+  newJsList(length);
+  void putIntoMap(map, key, value);
 
   // Returns the input, or a clone of the input.
   walk(e) {
@@ -148,57 +106,52 @@
 
     // TODO(sra): Firefox: How to convert _TypedImageData on the other end?
     if (e is ImageData) return e;
-    if (e is NativeByteBuffer) return e;
-
-    if (e is NativeTypedData) return e;
+    if (cloneNotRequired(e)) return e;
 
     if (e is Map) {
       var slot = findSlot(e);
       var copy = readSlot(slot);
       if (copy != null) return copy;
-      copy = JS('var', '{}');
+      copy = newJsMap();
       writeSlot(slot, copy);
       e.forEach((key, value) {
-          JS('void', '#[#] = #', copy, key, walk(value));
-        });
+        putIntoMap(copy, key, walk(value));
+      });
       return copy;
     }
 
     if (e is List) {
-      // Since a JavaScript Array is an instance of Dart List it is possible to
-      // avoid making a copy of the list if there is no need to copy anything
-      // reachable from the array.  We defer creating a new array until a cycle
-      // is detected or a subgraph was copied.
-      int length = e.length;
+      // Since a JavaScript Array is an instance of Dart List it is tempting
+      // in dart2js to avoid making a copy of the list if there is no need
+      // to copy anything reachable from the array.  However, the list may have
+      // non-native properties or methods from interceptors and such, e.g.
+      // an immutability marker. So we  had to stop doing that.
       var slot = findSlot(e);
       var copy = readSlot(slot);
-      if (copy != null) {
-        if (true == copy) {  // Cycle, so commit to making a copy.
-          copy = JS('JSExtendableArray', 'new Array(#)', length);
-          writeSlot(slot, copy);
-        }
-        return copy;
-      }
-
-      int i = 0;
-
-      // Always clone the list, as it may have non-native properties or methods
-      // from interceptors and such.
-      copy = JS('JSExtendableArray', 'new Array(#)', length);
-      writeSlot(slot, copy);
-
-      for ( ; i < length; i++) {
-        copy[i] = walk(e[i]);
-      }
+      if (copy != null) return copy;
+      copy = copyList(e, slot);
       return copy;
     }
 
     throw new UnimplementedError('structured clone of other type');
   }
 
-  var copy = walk(value);
-  cleanupSlots();
-  return copy;
+  copyList(List e, int slot) {
+    int i = 0;
+    int length = e.length;
+    var copy = newJsList(length);
+    writeSlot(slot, copy);
+    for ( ; i < length; i++) {
+      copy[i] = walk(e[i]);
+    }
+    return copy;
+  }
+
+  convertDartToNative_PrepareForStructuredClone(value) {
+    var copy = walk(value);
+    cleanupSlots();
+    return copy;
+  }
 }
 
 /**
@@ -219,25 +172,36 @@
  * MessageEvents.  Mutating the object to make it more 'Dart-like' would corrupt
  * the value as seen from the JavaScript listeners.
  */
-convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false}) {
+abstract class _AcceptStructuredClone {
 
-  // TODO(sra): Replace slots with identity hash table that works on non-dart
-  // objects.
+  // TODO(sra): Replace slots with identity hash table.
   var values = [];
-  var copies = [];
+  var copies = [];  // initially 'null', 'true' during initial DFS, then a copy.
+  bool mustCopy = false;
 
   int findSlot(value) {
     int length = values.length;
     for (int i = 0; i < length; i++) {
-      if (identical(values[i], value)) return i;
+      if (identicalInJs(values[i], value)) return i;
     }
     values.add(value);
     copies.add(null);
     return length;
   }
+
+  /// Are the two objects identical, but taking into account that two JsObject
+  /// wrappers may not be identical, but their underlying Js Object might be.
+  bool identicalInJs(a, b);
   readSlot(int i) => copies[i];
   writeSlot(int i, x) { copies[i] = x; }
 
+  /// Iterate over the JS properties.
+  forEachJsField(object, action);
+
+  /// Create a new Dart list of the given length. May create a native List or
+  /// a JsArray, depending if we're in Dartium or dart2js.
+  newDartList(length);
+
   walk(e) {
     if (e == null) return e;
     if (e is bool) return e;
@@ -253,6 +217,10 @@
       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.
@@ -262,9 +230,7 @@
       copy = {};
 
       writeSlot(slot, copy);
-      for (final key in JS('JSExtendableArray', 'Object.keys(#)', e)) {
-        copy[key] = walk(JS('var', '#[#]', e, key));
-      }
+      forEachJsField(e, (key, value) => copy[key] = walk(value));
       return copy;
     }
 
@@ -276,7 +242,7 @@
       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 ? JS('JSExtendableArray', 'new Array(#)', length) : e;
+      copy = mustCopy ? newDartList(length) : e;
       writeSlot(slot, copy);
 
       for (int i = 0; i < length; i++) {
@@ -290,8 +256,11 @@
     return e;
   }
 
-  var copy = walk(object);
-  return copy;
+  convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false}) {
+    this.mustCopy = mustCopy;
+    var copy = walk(object);
+    return copy;
+  }
 }
 
 // Conversions for ContextAttributes.
@@ -388,20 +357,6 @@
   return imageData;
 }
 
-
-bool isJavaScriptDate(value) => JS('bool', '# instanceof Date', value);
-bool isJavaScriptRegExp(value) => JS('bool', '# instanceof RegExp', value);
-bool isJavaScriptArray(value) => JS('bool', '# instanceof Array', value);
-bool isJavaScriptSimpleObject(value) {
-  var proto = JS('', 'Object.getPrototypeOf(#)', value);
-  return JS('bool', '# === Object.prototype', proto) ||
-      JS('bool', '# === null', proto);
-}
-bool isImmutableJavaScriptArray(value) =>
-    JS('bool', r'!!(#.immutable$list)', value);
-
-
-
 const String _serializedScriptValue =
     'num|String|bool|'
     'JSExtendableArray|=Object|'
diff --git a/sdk/lib/html/html_common/conversions_dart2js.dart b/sdk/lib/html/html_common/conversions_dart2js.dart
new file mode 100644
index 0000000..ac5b755
--- /dev/null
+++ b/sdk/lib/html/html_common/conversions_dart2js.dart
@@ -0,0 +1,93 @@
+part of html_common;
+
+/// Converts a JavaScript object with properties into a Dart Map.
+/// Not suitable for nested objects.
+Map convertNativeToDart_Dictionary(object) {
+  if (object == null) return null;
+  var dict = {};
+  var keys = JS('JSExtendableArray', 'Object.getOwnPropertyNames(#)', object);
+  for (final key in keys) {
+    dict[key] = JS('var', '#[#]', object, key);
+  }
+  return dict;
+}
+
+/// Converts a flat Dart map into a JavaScript object with properties.
+convertDartToNative_Dictionary(Map dict, [void postCreate(dynamic)]) {
+  if (dict == null) return null;
+  var object = JS('var', '{}');
+  if (postCreate != null) {
+    postCreate(object);
+  }
+  dict.forEach((String key, value) {
+      JS('void', '#[#] = #', object, key, value);
+    });
+  return object;
+}
+
+
+/**
+ * Ensures that the input is a JavaScript Array.
+ *
+ * Creates a new JavaScript array if necessary, otherwise returns the original.
+ */
+List convertDartToNative_StringArray(List<String> input) {
+  // TODO(sra).  Implement this.
+  return input;
+}
+
+DateTime convertNativeToDart_DateTime(date) {
+  var millisSinceEpoch = JS('int', '#.getTime()', date);
+  return new DateTime.fromMillisecondsSinceEpoch(millisSinceEpoch, isUtc: true);
+}
+
+convertDartToNative_DateTime(DateTime date) {
+  return JS('', 'new Date(#)', date.millisecondsSinceEpoch);
+}
+
+convertDartToNative_PrepareForStructuredClone(value) =>
+    new _StructuredCloneDart2Js().convertDartToNative_PrepareForStructuredClone(value);
+
+convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false}) =>
+    new _AcceptStructuredCloneDart2Js().convertNativeToDart_AcceptStructuredClone(object, mustCopy: mustCopy);
+
+class _StructuredCloneDart2Js extends _StructuredClone {
+  newJsMap() => JS('var', '{}');
+  putIntoMap(map, key, value) => JS('void', '#[#] = #', map, key, value);
+  newJsList(length) => JS('JSExtendableArray', 'new Array(#)', length);
+  cloneNotRequired(e) => (e is NativeByteBuffer || e is NativeTypedData);
+}
+
+class _AcceptStructuredCloneDart2Js extends _AcceptStructuredClone {
+
+  newJsList(length) => JS('JSExtendableArray', 'new Array(#)', length);
+  newDartList(length) => newJsList(length);
+  identicalInJs(a, b) => identical(a, b);
+
+  void forEachJsField(object, action) {
+      for (final key in JS('JSExtendableArray', 'Object.keys(#)', object)) {
+        action(key, JS('var', '#[#]', object, key));
+      }
+  }
+}
+
+bool isJavaScriptDate(value) => JS('bool', '# instanceof Date', value);
+bool isJavaScriptRegExp(value) => JS('bool', '# instanceof RegExp', value);
+bool isJavaScriptArray(value) => JS('bool', '# instanceof Array', value);
+bool isJavaScriptSimpleObject(value) {
+  var proto = JS('', 'Object.getPrototypeOf(#)', value);
+  return JS('bool', '# === Object.prototype', proto) ||
+      JS('bool', '# === null', proto);
+}
+bool isImmutableJavaScriptArray(value) =>
+    JS('bool', r'!!(#.immutable$list)', value);
+bool isJavaScriptPromise(value) =>
+    JS('bool', r'typeof Promise != "undefined" && # instanceof Promise', value);
+
+Future convertNativePromiseToDartFuture(promise) {
+  var completer = new Completer();
+  var then = convertDartClosureToJS((result) => completer.complete(result), 1);
+  var error = convertDartClosureToJS((result) => completer.completeError(result), 1);
+  var newPromise = JS('', '#.then(#).catch(#)', promise, then, error);
+  return completer.future;
+}
diff --git a/sdk/lib/html/html_common/conversions_dartium.dart b/sdk/lib/html/html_common/conversions_dartium.dart
new file mode 100644
index 0000000..ae7429a
--- /dev/null
+++ b/sdk/lib/html/html_common/conversions_dartium.dart
@@ -0,0 +1,63 @@
+part of html_common;
+
+convertDartToNative_PrepareForStructuredClone(value) =>
+    new _StructuredCloneDartium().convertDartToNative_PrepareForStructuredClone(value);
+
+convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false}) =>
+    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;
+  newJsList(length) => new js.JsArray();
+  cloneNotRequired(e) => e is js.JsObject;
+}
+
+class _AcceptStructuredCloneDartium extends _AcceptStructuredClone {
+  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);
+
+  void forEachJsField(jsObject, action) {
+    var keys = js.context["Object"].callMethod("keys", [jsObject]);
+    for (var key in keys) {
+      action(key, jsObject[key]);
+    }
+  }
+}
+
+final _dateConstructor = js.context["Date"];
+final _regexConstructor = js.context["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;
+
+final _object = js.context["Object"];
+final _getPrototypeOf = _object["getPrototypeOf"];
+_getProto(object) {
+  return _getPrototypeOf.apply([object]);
+}
+final _objectProto = js.context["Object"]["prototype"];
+
+bool isJavaScriptSimpleObject(value) {
+  if (value is! js.JsObject) return false;
+  var proto = _getProto(value);
+  return proto == _objectProto || proto == null;
+}
+bool isImmutableJavaScriptArray(value) =>
+    isJavaScriptArray(value) && value["immutable$list"] != null;
+
+final _promiseConstructor = js.context['Promise'];
+bool isJavaScriptPromise(value) => value is js.JsObject && value['constructor'] == _promiseConstructor;
+
+Future convertNativePromiseToDartFuture(js.JsObject promise) {
+  var completer = new Completer();
+  var newPromise = promise
+    .callMethod("then", [(result) => completer.complete(result)])
+    .callMethod("catch", [(result) => completer.completeError(result)]);
+  return completer.future;
+}
diff --git a/sdk/lib/html/html_common/filtered_element_list.dart b/sdk/lib/html/html_common/filtered_element_list.dart
index 1a55d79..e9e4718 100644
--- a/sdk/lib/html/html_common/filtered_element_list.dart
+++ b/sdk/lib/html/html_common/filtered_element_list.dart
@@ -45,7 +45,7 @@
     this[index].replaceWith(value);
   }
 
-  void set length(int newLength) {
+  set length(int newLength) {
     final len = this.length;
     if (newLength >= len) {
       return;
diff --git a/sdk/lib/html/html_common/html_common.dart b/sdk/lib/html/html_common/html_common.dart
index a538266..42cf71a 100644
--- a/sdk/lib/html/html_common/html_common.dart
+++ b/sdk/lib/html/html_common/html_common.dart
@@ -4,9 +4,12 @@
 
 library html_common;
 
+import 'dart:async';
 import 'dart:collection';
 import 'dart:html';
+import 'dart:js' as js;
 import 'dart:_internal' show WhereIterable;
+import 'dart:web_gl' as gl;
 
 import 'metadata.dart';
 export 'metadata.dart';
@@ -15,3 +18,5 @@
 part 'device.dart';
 part 'filtered_element_list.dart';
 part 'lists.dart';
+part 'conversions.dart';
+part 'conversions_dartium.dart';
diff --git a/sdk/lib/html/html_common/html_common_dart2js.dart b/sdk/lib/html/html_common/html_common_dart2js.dart
index 9dcd5b9..8d33d20 100644
--- a/sdk/lib/html/html_common/html_common_dart2js.dart
+++ b/sdk/lib/html/html_common/html_common_dart2js.dart
@@ -4,12 +4,13 @@
 
 library html_common;
 
+import 'dart:async';
 import 'dart:collection';
 import 'dart:html';
 import 'dart:_internal' show WhereIterable;
 import 'dart:web_gl' as gl;
 import 'dart:_native_typed_data';
-import 'dart:_js_helper' show Creates, Returns;
+import 'dart:_js_helper' show Creates, Returns, convertDartClosureToJS;
 import 'dart:_foreign_helper' show JS;
 import 'dart:_interceptors' show Interceptor, JSExtendableArray;
 
@@ -18,6 +19,7 @@
 
 part 'css_class_set.dart';
 part 'conversions.dart';
+part 'conversions_dart2js.dart';
 part 'device.dart';
 part 'filtered_element_list.dart';
 part 'lists.dart';
diff --git a/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart b/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart
index 3db17c2..034b2ce 100644
--- a/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart
+++ b/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart
@@ -77,7 +77,7 @@
 import 'dart:html_common';
 import 'dart:_native_typed_data';
 import 'dart:typed_data';
-import 'dart:_js_helper' show Creates, Returns, JSName, Native, Null;
+import 'dart:_js_helper' show Creates, Returns, JSName, Native;
 import 'dart:_foreign_helper' show JS;
 import 'dart:_interceptors' show Interceptor, JSExtendableArray;
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
diff --git a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
index eb045b0..300c5d4 100644
--- a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
+++ b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
@@ -62,7 +62,7 @@
  * and where both the keys and the values are strings.
  *
  * * [dart:web_sql]&mdash;a database that can be queried with SQL.
- * 
+ *
  * For a tutorial about using the indexed_db library with Dart,
  * check out
  * [Use IndexedDB](http://www.dartlang.org/docs/tutorials/indexeddb/).
@@ -77,6 +77,7 @@
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -122,6 +123,21 @@
 
 };
 
+// FIXME: Can we make this private?
+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
 // 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.
@@ -151,21 +167,36 @@
     // To suppress missing implicit constructor warnings.
   factory Cursor._() { throw new UnsupportedError("Not supported"); }
 
+  static Cursor internalCreateCursor() {
+    return new Cursor._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Cursor._internalWrap() {
+    return new Cursor.internal_();
+  }
+
+  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));
   
   @DomName('IDBCursor.key')
   @DocsEditable()
-  Object get key => _blink.BlinkIDBCursor.instance.key_Getter_(unwrap_jso(this));
+  Object get key => wrap_jso(_blink.BlinkIDBCursor.instance.key_Getter_(unwrap_jso(this)));
   
   @DomName('IDBCursor.primaryKey')
   @DocsEditable()
-  Object get primaryKey => _blink.BlinkIDBCursor.instance.primaryKey_Getter_(unwrap_jso(this));
+  Object get primaryKey => wrap_jso(_blink.BlinkIDBCursor.instance.primaryKey_Getter_(unwrap_jso(this)));
   
   @DomName('IDBCursor.source')
   @DocsEditable()
-  Object get source => _blink.BlinkIDBCursor.instance.source_Getter_(unwrap_jso(this));
+  Object get source => wrap_jso(_blink.BlinkIDBCursor.instance.source_Getter_(unwrap_jso(this)));
   
   @DomName('IDBCursor.advance')
   @DocsEditable()
@@ -191,7 +222,7 @@
 
   @DomName('IDBCursor.update')
   @DocsEditable()
-  Request _update(Object value) => wrap_jso(_blink.BlinkIDBCursor.instance.update_Callback_1_(unwrap_jso(this), value));
+  Request _update(Object value) => wrap_jso(_blink.BlinkIDBCursor.instance.update_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -208,9 +239,21 @@
   // To suppress missing implicit constructor warnings.
   factory CursorWithValue._() { throw new UnsupportedError("Not supported"); }
 
+
+  static CursorWithValue internalCreateCursorWithValue() {
+    return new CursorWithValue._internalWrap();
+  }
+
+  factory CursorWithValue._internalWrap() {
+    return new CursorWithValue.internal_();
+  }
+
+  CursorWithValue.internal_() : super.internal_();
+
+
   @DomName('IDBCursorWithValue.value')
   @DocsEditable()
-  Object get value => _blink.BlinkIDBCursorWithValue.instance.value_Getter_(unwrap_jso(this));
+  Object get value => wrap_jso(_blink.BlinkIDBCursorWithValue.instance.value_Getter_(unwrap_jso(this)));
   
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -291,6 +334,18 @@
   @DocsEditable()
   static const EventStreamProvider<VersionChangeEvent> versionChangeEvent = const EventStreamProvider<VersionChangeEvent>('versionchange');
 
+
+  static Database internalCreateDatabase() {
+    return new Database._internalWrap();
+  }
+
+  factory Database._internalWrap() {
+    return new Database.internal_();
+  }
+
+  Database.internal_() : super.internal_();
+
+
   @DomName('IDBDatabase.name')
   @DocsEditable()
   String get name => _blink.BlinkIDBDatabase.instance.name_Getter_(unwrap_jso(this));
@@ -301,7 +356,7 @@
   
   @DomName('IDBDatabase.version')
   @DocsEditable()
-  Object get version => _blink.BlinkIDBDatabase.instance.version_Getter_(unwrap_jso(this));
+  Object get version => wrap_jso(_blink.BlinkIDBDatabase.instance.version_Getter_(unwrap_jso(this)));
   
   @DomName('IDBDatabase.close')
   @DocsEditable()
@@ -309,9 +364,9 @@
   
   ObjectStore _createObjectStore(String name, [Map options]) {
     if (options != null) {
-      return _blink.BlinkIDBDatabase.instance.createObjectStore_Callback_2_(unwrap_jso(this), name, options);
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.createObjectStore_Callback_2_(unwrap_jso(this), name, convertDartToNative_Dictionary(options)));
     }
-    return _blink.BlinkIDBDatabase.instance.createObjectStore_Callback_1_(unwrap_jso(this), name);
+    return wrap_jso(_blink.BlinkIDBDatabase.instance.createObjectStore_Callback_1_(unwrap_jso(this), name));
   }
 
   @DomName('IDBDatabase.deleteObjectStore')
@@ -320,45 +375,45 @@
   
   Transaction transaction(storeName_OR_storeNames, [String mode]) {
     if ((storeName_OR_storeNames is String || storeName_OR_storeNames == null) && mode == null) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames));
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames)));
     }
     if ((mode is String || mode == null) && (storeName_OR_storeNames is String || storeName_OR_storeNames == null)) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames), mode);
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames), mode));
     }
     if ((storeName_OR_storeNames is List<String> || storeName_OR_storeNames == null) && mode == null) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames));
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames)));
     }
     if ((mode is String || mode == null) && (storeName_OR_storeNames is List<String> || storeName_OR_storeNames == null)) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames), mode);
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames), mode));
     }
     if ((storeName_OR_storeNames is DomStringList || storeName_OR_storeNames == null) && mode == null) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames));
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames)));
     }
     if ((mode is String || mode == null) && (storeName_OR_storeNames is DomStringList || storeName_OR_storeNames == null)) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames), mode);
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeName_OR_storeNames), mode));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   Transaction transactionList(List<String> storeNames, [String mode]) {
     if (mode != null) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), storeNames, mode);
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), convertDartToNative_StringArray(storeNames), mode));
     }
-    return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), storeNames);
+    return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), convertDartToNative_StringArray(storeNames)));
   }
 
   Transaction transactionStore(String storeName, [String mode]) {
     if (mode != null) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), storeName, mode);
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), storeName, mode));
     }
-    return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), storeName);
+    return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), storeName));
   }
 
   Transaction transactionStores(List<String> storeNames, [String mode]) {
     if (mode != null) {
-      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeNames), mode);
+      return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(storeNames), mode));
     }
-    return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeNames));
+    return wrap_jso(_blink.BlinkIDBDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(storeNames)));
   }
 
   /// Stream of `abort` events handled by this [Database].
@@ -473,19 +528,34 @@
   // To suppress missing implicit constructor warnings.
   factory IdbFactory._() { throw new UnsupportedError("Not supported"); }
 
+  static IdbFactory internalCreateIdbFactory() {
+    return new IdbFactory._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory IdbFactory._internalWrap() {
+    return new IdbFactory.internal_();
+  }
+
+  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);
   
   @DomName('IDBFactory.deleteDatabase')
   @DocsEditable()
-  OpenDBRequest _deleteDatabase(String name) => _blink.BlinkIDBFactory.instance.deleteDatabase_Callback_1_(unwrap_jso(this), name);
+  OpenDBRequest _deleteDatabase(String name) => wrap_jso(_blink.BlinkIDBFactory.instance.deleteDatabase_Callback_1_(unwrap_jso(this), name));
   
   OpenDBRequest _open(String name, [int version]) {
     if (version != null) {
-      return _blink.BlinkIDBFactory.instance.open_Callback_2_(unwrap_jso(this), name, version);
+      return wrap_jso(_blink.BlinkIDBFactory.instance.open_Callback_2_(unwrap_jso(this), name, version));
     }
-    return _blink.BlinkIDBFactory.instance.open_Callback_1_(unwrap_jso(this), name);
+    return wrap_jso(_blink.BlinkIDBFactory.instance.open_Callback_1_(unwrap_jso(this), name));
   }
 
   @DomName('IDBFactory.webkitGetDatabaseNames')
@@ -611,9 +681,24 @@
     // To suppress missing implicit constructor warnings.
   factory Index._() { throw new UnsupportedError("Not supported"); }
 
+  static Index internalCreateIndex() {
+    return new Index._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Index._internalWrap() {
+    return new Index.internal_();
+  }
+
+  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 => _blink.BlinkIDBIndex.instance.keyPath_Getter_(unwrap_jso(this));
+  Object get keyPath => wrap_jso(_blink.BlinkIDBIndex.instance.keyPath_Getter_(unwrap_jso(this)));
   
   @DomName('IDBIndex.multiEntry')
   @DocsEditable()
@@ -687,9 +772,24 @@
   // To suppress missing implicit constructor warnings.
   factory KeyRange._() { throw new UnsupportedError("Not supported"); }
 
+  static KeyRange internalCreateKeyRange() {
+    return new KeyRange._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory KeyRange._internalWrap() {
+    return new KeyRange.internal_();
+  }
+
+  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 => _blink.BlinkIDBKeyRange.instance.lower_Getter_(unwrap_jso(this));
+  Object get lower => wrap_jso(_blink.BlinkIDBKeyRange.instance.lower_Getter_(unwrap_jso(this)));
   
   @DomName('IDBKeyRange.lowerOpen')
   @DocsEditable()
@@ -697,7 +797,7 @@
   
   @DomName('IDBKeyRange.upper')
   @DocsEditable()
-  Object get upper => _blink.BlinkIDBKeyRange.instance.upper_Getter_(unwrap_jso(this));
+  Object get upper => wrap_jso(_blink.BlinkIDBKeyRange.instance.upper_Getter_(unwrap_jso(this)));
   
   @DomName('IDBKeyRange.upperOpen')
   @DocsEditable()
@@ -705,31 +805,31 @@
   
   static KeyRange bound_(Object lower, Object upper, [bool lowerOpen, bool upperOpen]) {
     if (upperOpen != null) {
-      return _blink.BlinkIDBKeyRange.instance.bound_Callback_4_(lower, upper, lowerOpen, upperOpen);
+      return wrap_jso(_blink.BlinkIDBKeyRange.instance.bound_Callback_4_(lower, upper, lowerOpen, upperOpen));
     }
     if (lowerOpen != null) {
-      return _blink.BlinkIDBKeyRange.instance.bound_Callback_3_(lower, upper, lowerOpen);
+      return wrap_jso(_blink.BlinkIDBKeyRange.instance.bound_Callback_3_(lower, upper, lowerOpen));
     }
-    return _blink.BlinkIDBKeyRange.instance.bound_Callback_2_(lower, upper);
+    return wrap_jso(_blink.BlinkIDBKeyRange.instance.bound_Callback_2_(lower, upper));
   }
 
   static KeyRange lowerBound_(Object bound, [bool open]) {
     if (open != null) {
-      return _blink.BlinkIDBKeyRange.instance.lowerBound_Callback_2_(bound, open);
+      return wrap_jso(_blink.BlinkIDBKeyRange.instance.lowerBound_Callback_2_(bound, open));
     }
-    return _blink.BlinkIDBKeyRange.instance.lowerBound_Callback_1_(bound);
+    return wrap_jso(_blink.BlinkIDBKeyRange.instance.lowerBound_Callback_1_(bound));
   }
 
   @DomName('IDBKeyRange.only_')
   @DocsEditable()
   @Experimental() // non-standard
-  static KeyRange only_(Object value) => _blink.BlinkIDBKeyRange.instance.only_Callback_1_(value);
+  static KeyRange only_(Object value) => wrap_jso(_blink.BlinkIDBKeyRange.instance.only_Callback_1_(value));
   
   static KeyRange upperBound_(Object bound, [bool open]) {
     if (open != null) {
-      return _blink.BlinkIDBKeyRange.instance.upperBound_Callback_2_(bound, open);
+      return wrap_jso(_blink.BlinkIDBKeyRange.instance.upperBound_Callback_2_(bound, open));
     }
-    return _blink.BlinkIDBKeyRange.instance.upperBound_Callback_1_(bound);
+    return wrap_jso(_blink.BlinkIDBKeyRange.instance.upperBound_Callback_1_(bound));
   }
 
 }
@@ -871,6 +971,21 @@
   // To suppress missing implicit constructor warnings.
   factory ObjectStore._() { throw new UnsupportedError("Not supported"); }
 
+  static ObjectStore internalCreateObjectStore() {
+    return new ObjectStore._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ObjectStore._internalWrap() {
+    return new ObjectStore.internal_();
+  }
+
+  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));
@@ -881,7 +996,7 @@
   
   @DomName('IDBObjectStore.keyPath')
   @DocsEditable()
-  Object get keyPath => _blink.BlinkIDBObjectStore.instance.keyPath_Getter_(unwrap_jso(this));
+  Object get keyPath => wrap_jso(_blink.BlinkIDBObjectStore.instance.keyPath_Getter_(unwrap_jso(this)));
   
   @DomName('IDBObjectStore.name')
   @DocsEditable()
@@ -893,9 +1008,9 @@
   
   Request _add(Object value, [Object key]) {
     if (key != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.add_Callback_2_(unwrap_jso(this), value, key));
+      return wrap_jso(_blink.BlinkIDBObjectStore.instance.add_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptValue(key)));
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.add_Callback_1_(unwrap_jso(this), value));
+    return wrap_jso(_blink.BlinkIDBObjectStore.instance.add_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value)));
   }
 
   @DomName('IDBObjectStore.clear')
@@ -908,16 +1023,16 @@
   
   Index _createIndex(String name, keyPath, [Map options]) {
     if ((keyPath is String || keyPath == null) && (name is String || name == null) && options == null) {
-      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(unwrap_jso(this), name, unwrap_jso(keyPath));
+      return wrap_jso(_blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(unwrap_jso(this), name, unwrap_jso(keyPath)));
     }
     if ((options is Map || options == null) && (keyPath is String || keyPath == null) && (name is String || name == null)) {
-      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(unwrap_jso(this), name, unwrap_jso(keyPath), options);
+      return wrap_jso(_blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(unwrap_jso(this), name, unwrap_jso(keyPath), convertDartToNative_Dictionary(options)));
     }
     if ((keyPath is List<String> || keyPath == null) && (name is String || name == null) && options == null) {
-      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(unwrap_jso(this), name, unwrap_jso(keyPath));
+      return wrap_jso(_blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(unwrap_jso(this), name, unwrap_jso(keyPath)));
     }
     if ((options is Map || options == null) && (keyPath is List<String> || keyPath == null) && (name is String || name == null)) {
-      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(unwrap_jso(this), name, unwrap_jso(keyPath), options);
+      return wrap_jso(_blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(unwrap_jso(this), name, unwrap_jso(keyPath), convertDartToNative_Dictionary(options)));
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -936,7 +1051,7 @@
   
   @DomName('IDBObjectStore.index')
   @DocsEditable()
-  Index index(String name) => _blink.BlinkIDBObjectStore.instance.index_Callback_1_(unwrap_jso(this), name);
+  Index index(String name) => wrap_jso(_blink.BlinkIDBObjectStore.instance.index_Callback_1_(unwrap_jso(this), name));
   
   Request _openCursor(Object range, [String direction]) {
     if (direction != null) {
@@ -954,9 +1069,9 @@
 
   Request _put(Object value, [Object key]) {
     if (key != null) {
-      return wrap_jso(_blink.BlinkIDBObjectStore.instance.put_Callback_2_(unwrap_jso(this), value, key));
+      return wrap_jso(_blink.BlinkIDBObjectStore.instance.put_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value), convertDartToNative_SerializedScriptValue(key)));
     }
-    return wrap_jso(_blink.BlinkIDBObjectStore.instance.put_Callback_1_(unwrap_jso(this), value));
+    return wrap_jso(_blink.BlinkIDBObjectStore.instance.put_Callback_1_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(value)));
   }
 
 
@@ -1021,6 +1136,18 @@
   @DocsEditable()
   static const EventStreamProvider<VersionChangeEvent> upgradeNeededEvent = const EventStreamProvider<VersionChangeEvent>('upgradeneeded');
 
+
+  static OpenDBRequest internalCreateOpenDBRequest() {
+    return new OpenDBRequest._internalWrap();
+  }
+
+  factory OpenDBRequest._internalWrap() {
+    return new OpenDBRequest.internal_();
+  }
+
+  OpenDBRequest.internal_() : super.internal_();
+
+
   /// Stream of `blocked` events handled by this [OpenDBRequest].
   @DomName('IDBOpenDBRequest.onblocked')
   @DocsEditable()
@@ -1066,6 +1193,18 @@
   @DocsEditable()
   static const EventStreamProvider<Event> successEvent = const EventStreamProvider<Event>('success');
 
+
+  static Request internalCreateRequest() {
+    return new Request._internalWrap();
+  }
+
+  factory Request._internalWrap() {
+    return new Request.internal_();
+  }
+
+  Request.internal_() : super.internal_();
+
+
   @DomName('IDBRequest.error')
   @DocsEditable()
   DomError get error => wrap_jso(_blink.BlinkIDBRequest.instance.error_Getter_(unwrap_jso(this)));
@@ -1076,11 +1215,11 @@
   
   @DomName('IDBRequest.result')
   @DocsEditable()
-  Object get result => _blink.BlinkIDBRequest.instance.result_Getter_(unwrap_jso(this));
+  Object get result => wrap_jso(_blink.BlinkIDBRequest.instance.result_Getter_(unwrap_jso(this)));
   
   @DomName('IDBRequest.source')
   @DocsEditable()
-  Object get source => _blink.BlinkIDBRequest.instance.source_Getter_(unwrap_jso(this));
+  Object get source => wrap_jso(_blink.BlinkIDBRequest.instance.source_Getter_(unwrap_jso(this)));
   
   @DomName('IDBRequest.transaction')
   @DocsEditable()
@@ -1167,6 +1306,18 @@
   @DocsEditable()
   static const EventStreamProvider<Event> errorEvent = const EventStreamProvider<Event>('error');
 
+
+  static Transaction internalCreateTransaction() {
+    return new Transaction._internalWrap();
+  }
+
+  factory Transaction._internalWrap() {
+    return new Transaction.internal_();
+  }
+
+  Transaction.internal_() : super.internal_();
+
+
   @DomName('IDBTransaction.db')
   @DocsEditable()
   Database get db => wrap_jso(_blink.BlinkIDBTransaction.instance.db_Getter_(unwrap_jso(this)));
@@ -1185,7 +1336,7 @@
   
   @DomName('IDBTransaction.objectStore')
   @DocsEditable()
-  ObjectStore objectStore(String name) => _blink.BlinkIDBTransaction.instance.objectStore_Callback_1_(unwrap_jso(this), name);
+  ObjectStore objectStore(String name) => wrap_jso(_blink.BlinkIDBTransaction.instance.objectStore_Callback_1_(unwrap_jso(this), name));
   
   /// Stream of `abort` events handled by this [Transaction].
   @DomName('IDBTransaction.onabort')
@@ -1217,6 +1368,18 @@
   // To suppress missing implicit constructor warnings.
   factory VersionChangeEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static VersionChangeEvent internalCreateVersionChangeEvent() {
+    return new VersionChangeEvent._internalWrap();
+  }
+
+  factory VersionChangeEvent._internalWrap() {
+    return new VersionChangeEvent.internal_();
+  }
+
+  VersionChangeEvent.internal_() : super.internal_();
+
+
   @DomName('IDBVersionChangeEvent.dataLoss')
   @DocsEditable()
   @Experimental() // untriaged
diff --git a/sdk/lib/internal/list.dart b/sdk/lib/internal/list.dart
index ed5c987..37ee3f8 100644
--- a/sdk/lib/internal/list.dart
+++ b/sdk/lib/internal/list.dart
@@ -11,7 +11,7 @@
  */
 abstract class FixedLengthListMixin<E> {
   /** This operation is not supported by a fixed length list. */
-  void set length(int newLength) {
+  set length(int newLength) {
     throw new UnsupportedError(
         "Cannot change the length of a fixed-length list");
   }
@@ -105,7 +105,7 @@
   }
 
   /** This operation is not supported by an unmodifiable list. */
-  void set length(int newLength) {
+  set length(int newLength) {
     throw new UnsupportedError(
         "Cannot change the length of an unmodifiable list");
   }
diff --git a/sdk/lib/io/io_sink.dart b/sdk/lib/io/io_sink.dart
index 89cd586..2d6719d 100644
--- a/sdk/lib/io/io_sink.dart
+++ b/sdk/lib/io/io_sink.dart
@@ -97,6 +97,9 @@
 
   /**
    * Adds all elements of the given [stream] to `this`.
+   *
+   * Returns a [Future] that completes when
+   * all elements of the given [stream] are added to `this`.
    */
   Future addStream(Stream<List<int>> stream);
 
diff --git a/sdk/lib/isolate/isolate.dart b/sdk/lib/isolate/isolate.dart
index d5534ba..c671220 100644
--- a/sdk/lib/isolate/isolate.dart
+++ b/sdk/lib/isolate/isolate.dart
@@ -237,6 +237,15 @@
    * WARNING: The [packageRoot] and [packages] parameters are not implemented
    * on all platforms yet.
    *
+   * The [environment] is a mapping from strings to strings which the
+   * spawned isolate uses when looking up [String.fromEnvironment] values.
+   * The system may add its own entries to environment as well.
+   * If `environment` is omitted, the spawned isolate has the same environment
+   * declarations as the spawning isolate.
+   *
+   * WARNING: The [environment] parameter is not implemented on all
+   * platforms yet.
+   *
    * Returns a future that will complete with an [Isolate] instance if the
    * spawning succeeded. It will complete with an error otherwise.
    */
@@ -245,12 +254,13 @@
       List<String> args,
       var message,
       {bool paused: false,
-       bool checked,
-       Uri packageRoot,
-       Map<String, Uri> packages,
-       bool errorsAreFatal,
        SendPort onExit,
-       SendPort onError});
+       SendPort onError,
+       bool errorsAreFatal,
+       bool checked,
+       Map<String, String> environment,
+       Uri packageRoot,
+       Map<String, Uri> packages});
 
   /**
    * Requests the isolate to pause.
diff --git a/sdk/lib/js/dart2js/js_dart2js.dart b/sdk/lib/js/dart2js/js_dart2js.dart
index 849de82..1d2c9e0 100644
--- a/sdk/lib/js/dart2js/js_dart2js.dart
+++ b/sdk/lib/js/dart2js/js_dart2js.dart
@@ -449,7 +449,7 @@
     throw new StateError('Bad JsArray length');
   }
 
-  void set length(int length) { super['length'] = length; }
+  set length(int length) { super['length'] = length; }
 
 
   // Methods overriden for better performance
diff --git a/sdk/lib/js/dartium/js_dartium.dart b/sdk/lib/js/dartium/js_dartium.dart
index 0bb53c3..b6c7198 100644
--- a/sdk/lib/js/dartium/js_dartium.dart
+++ b/sdk/lib/js/dartium/js_dartium.dart
@@ -4,7 +4,7 @@
 
 /**
  * Support for interoperating with JavaScript.
- * 
+ *
  * This library provides access to JavaScript objects from Dart, allowing
  * Dart code to get and set properties, and call methods of JavaScript objects
  * and invoke JavaScript functions. The library takes care of converting
@@ -27,14 +27,14 @@
  * global function `alert()`:
  *
  *     import 'dart:js';
- *     
+ *
  *     main() => context.callMethod('alert', ['Hello from Dart!']);
  *
  * This example shows how to create a [JsObject] from a JavaScript constructor
  * and access its properties:
  *
  *     import 'dart:js';
- *     
+ *
  *     main() {
  *       var object = new JsObject(context['Object']);
  *       object['greeting'] = 'Hello';
@@ -44,7 +44,7 @@
  *     }
  *
  * ## Proxying and automatic conversion
- * 
+ *
  * When setting properties on a JsObject or passing arguments to a Javascript
  * method or function, Dart objects are automatically converted or proxied to
  * JavaScript objects. When accessing JavaScript properties, or when a Dart
@@ -80,7 +80,7 @@
  * `a` and `b` defined:
  *
  *     var jsMap = new JsObject.jsify({'a': 1, 'b': 2});
- * 
+ *
  * This expression creates a JavaScript array:
  *
  *     var jsArray = new JsObject.jsify([1, 2, 3]);
@@ -91,6 +91,7 @@
 import 'dart:nativewrappers';
 import 'dart:math' as math;
 import 'dart:mirrors' as mirrors;
+import 'dart:html' as html;
 
 // Pretend we are always in checked mode as we aren't interested in users
 // running Dartium code outside of checked mode.
@@ -491,8 +492,14 @@
    * Constructs a new JavaScript object from [constructor] and returns a proxy
    * to it.
    */
-  factory JsObject(JsFunction constructor, [List arguments]) =>
-      _create(constructor, arguments);
+  factory JsObject(JsFunction constructor, [List arguments]) {
+    try {
+      return _create(constructor, arguments);
+    } catch (e) {
+      // Re-throw any errors (returned as a string) as a DomException.
+      throw new html.DomException.jsInterop(e);
+    }
+  }
 
   static JsObject _create(
       JsFunction constructor, arguments) native "JsObject_constructorCallback";
@@ -517,7 +524,7 @@
    * Use this constructor only if you wish to get access to JavaScript
    * properties attached to a browser host object, such as a Node or Blob, that
    * is normally automatically converted into a native Dart object.
-   * 
+   *
    * An exception will be thrown if [object] either is `null` or has the type
    * `bool`, `num`, or `String`.
    */
@@ -546,8 +553,7 @@
 
   static JsObject _jsify(object) native "JsObject_jsify";
 
-  static JsObject _fromBrowserObject(
-      object) native "JsObject_fromBrowserObject";
+  static JsObject _fromBrowserObject(object) => html.unwrap_jso(object);
 
   /**
    * Returns the value associated with [property] from the proxied JavaScript
@@ -555,7 +561,15 @@
    *
    * The type of [property] must be either [String] or [num].
    */
-  operator [](property) native "JsObject_[]";
+  operator [](property) {
+    try {
+      return _operator_getter(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_[]";
 
   /**
    * Sets the value associated with [property] on the proxied JavaScript
@@ -563,11 +577,26 @@
    *
    * The type of [property] must be either [String] or [num].
    */
-  operator []=(property, value) native "JsObject_[]=";
+  operator []=(property, value) {
+    try {
+      _operator_setter(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_[]=";
 
   int get hashCode native "JsObject_hashCode";
 
-  operator ==(other) => other is JsObject && _identityEquality(this, other);
+  operator ==(other) {
+    var is_JsObject = other is JsObject;
+    if (!is_JsObject) {
+      other = html.unwrap_jso(other);
+      is_JsObject = other is JsObject;
+    }
+    return is_JsObject && _identityEquality(this, other);
+  }
 
   static bool _identityEquality(
       JsObject a, JsObject b) native "JsObject_identityEquality";
@@ -618,7 +647,8 @@
       return _callMethod(method, args);
     } catch (e) {
       if (hasProperty(method)) {
-        rethrow;
+        // Return a DomException if DOM call returned an error.
+        throw new html.DomException.jsInterop(e);
       } else {
         throw new NoSuchMethodError(this, new Symbol(method), args, null);
       }
@@ -754,7 +784,12 @@
     if (index is int) {
       _checkIndex(index);
     }
-    return super[index];
+
+    // Lazily create the Dart class that wraps the JS object when the object in
+    // a list if fetched.
+    var wrap_entry = html.wrap_jso(super[index]);
+    super[index] = wrap_entry;
+    return wrap_entry;
   }
 
   void operator []=(index, E value) {
@@ -766,7 +801,7 @@
 
   int get length native "JsArray_length";
 
-  void set length(int length) {
+  set length(int length) {
     super['length'] = length;
   }
 
diff --git a/sdk/lib/svg/dart2js/svg_dart2js.dart b/sdk/lib/svg/dart2js/svg_dart2js.dart
index 1e63bd2..5cb2ace 100644
--- a/sdk/lib/svg/dart2js/svg_dart2js.dart
+++ b/sdk/lib/svg/dart2js/svg_dart2js.dart
@@ -10,7 +10,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_js_helper' show Creates, Returns, JSName, Native;
@@ -2693,7 +2693,7 @@
   // Length is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -3145,7 +3145,7 @@
   // Number is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -3932,7 +3932,7 @@
   // PathSeg is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -4627,7 +4627,7 @@
   // String is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -4731,7 +4731,7 @@
   // Shadowing definition.
   String get title => JS("String", "#.title", this);
 
-  void set title(String value) {
+  set title(String value) {
     JS("void", "#.title = #", this, value);
   }
 
@@ -4801,7 +4801,7 @@
 
   List<Element> get children => new FilteredElementList(this);
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     final children = this.children;
     children.clear();
     children.addAll(value);
@@ -4821,7 +4821,7 @@
     return container.innerHtml;
   }
 
-  void set innerHtml(String value) {
+  set innerHtml(String value) {
     this.setInnerHtml(value);
   }
 
@@ -4886,6 +4886,7 @@
     var e = new SvgElement.tag(tag);
     return e is SvgElement && !(e is UnknownElement);
   }
+
   // To suppress missing implicit constructor warnings.
   factory SvgElement._() { throw new UnsupportedError("Not supported"); }
 
@@ -5169,7 +5170,7 @@
   // Shadowing definition.
   int get tabIndex => JS("int", "#.tabIndex", this);
 
-  void set tabIndex(int value) {
+  set tabIndex(int value) {
     JS("void", "#.tabIndex = #", this, value);
   }
 
@@ -6082,7 +6083,7 @@
   // Transform is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -6536,7 +6537,9 @@
   // From SVGTests
 
   // From SVGURIReference
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -6557,7 +6560,9 @@
   _SVGFEDropShadowElement.created() : super.created();
 
   // From SVGFilterPrimitiveStandardAttributes
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -6715,7 +6720,9 @@
   _SVGGlyphRefElement.created() : super.created();
 
   // From SVGURIReference
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -6762,7 +6769,9 @@
   _SVGMPathElement.created() : super.created();
 
   // From SVGURIReference
+
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
diff --git a/sdk/lib/svg/dartium/svg_dartium.dart b/sdk/lib/svg/dartium/svg_dartium.dart
index 8d52279..db45167 100644
--- a/sdk/lib/svg/dartium/svg_dartium.dart
+++ b/sdk/lib/svg/dartium/svg_dartium.dart
@@ -10,17 +10,23 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 // DO NOT EDIT
 // Auto-generated dart:svg library.
 
 
 
 
+// Need a default constructor for constructing classes with mixins that are
+// also extending NativeFieldWrapperClass2.  Defining JsoNativeFieldWrapper
+// extending NativeFieldWrapperClass2 creates a default constructor.
+class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {}
+
 
 // FIXME: Can we make this private?
 final svgBlinkMap = {
@@ -169,6 +175,147 @@
 
 };
 
+// FIXME: Can we make this private?
+final svgBlinkFunctionMap = {
+  'SVGAElement': () => AElement.internalCreateAElement,
+  'SVGAltGlyphDefElement': () => _SVGAltGlyphDefElement.internalCreate_SVGAltGlyphDefElement,
+  'SVGAltGlyphElement': () => AltGlyphElement.internalCreateAltGlyphElement,
+  'SVGAltGlyphItemElement': () => _SVGAltGlyphItemElement.internalCreate_SVGAltGlyphItemElement,
+  '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,
+  'SVGFontElement': () => _SVGFontElement.internalCreate_SVGFontElement,
+  'SVGFontFaceElement': () => _SVGFontFaceElement.internalCreate_SVGFontFaceElement,
+  'SVGFontFaceFormatElement': () => _SVGFontFaceFormatElement.internalCreate_SVGFontFaceFormatElement,
+  'SVGFontFaceNameElement': () => _SVGFontFaceNameElement.internalCreate_SVGFontFaceNameElement,
+  'SVGFontFaceSrcElement': () => _SVGFontFaceSrcElement.internalCreate_SVGFontFaceSrcElement,
+  'SVGFontFaceUriElement': () => _SVGFontFaceUriElement.internalCreate_SVGFontFaceUriElement,
+  'SVGForeignObjectElement': () => ForeignObjectElement.internalCreateForeignObjectElement,
+  'SVGGElement': () => GElement.internalCreateGElement,
+  'SVGGeometryElement': () => GeometryElement.internalCreateGeometryElement,
+  'SVGGlyphElement': () => _SVGGlyphElement.internalCreate_SVGGlyphElement,
+  'SVGGlyphRefElement': () => _SVGGlyphRefElement.internalCreate_SVGGlyphRefElement,
+  'SVGGradientElement': () => _GradientElement.internalCreate_GradientElement,
+  'SVGGraphicsElement': () => GraphicsElement.internalCreateGraphicsElement,
+  'SVGHKernElement': () => _SVGHKernElement.internalCreate_SVGHKernElement,
+  '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,
+  'SVGMissingGlyphElement': () => _SVGMissingGlyphElement.internalCreate_SVGMissingGlyphElement,
+  '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,
+  'SVGRenderingIntent': () => RenderingIntent.internalCreateRenderingIntent,
+  '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,
+  'SVGVKernElement': () => _SVGVKernElement.internalCreate_SVGVKernElement,
+  'SVGViewElement': () => ViewElement.internalCreateViewElement,
+  'SVGViewSpec': () => ViewSpec.internalCreateViewSpec,
+  'SVGZoomEvent': () => ZoomEvent.internalCreateZoomEvent,
+
+};
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -198,6 +345,18 @@
   @DomName('SVGAElement.SVGAElement')
   @DocsEditable()
   factory AElement() => _SvgElementFactoryProvider.createSvgElement_tag("a");
+
+
+  static AElement internalCreateAElement() {
+    return new AElement._internalWrap();
+  }
+
+  factory AElement._internalWrap() {
+    return new AElement.internal_();
+  }
+
+  AElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -234,6 +393,18 @@
   @DomName('SVGAltGlyphElement.SVGAltGlyphElement')
   @DocsEditable()
   factory AltGlyphElement() => _SvgElementFactoryProvider.createSvgElement_tag("altGlyph");
+
+
+  static AltGlyphElement internalCreateAltGlyphElement() {
+    return new AltGlyphElement._internalWrap();
+  }
+
+  factory AltGlyphElement._internalWrap() {
+    return new AltGlyphElement.internal_();
+  }
+
+  AltGlyphElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -250,7 +421,7 @@
   
   @DomName('SVGAltGlyphElement.format')
   @DocsEditable()
-  void set format(String value) => _blink.BlinkSVGAltGlyphElement.instance.format_Setter_(unwrap_jso(this), value);
+  set format(String value) => _blink.BlinkSVGAltGlyphElement.instance.format_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGAltGlyphElement.glyphRef')
   @DocsEditable()
@@ -258,7 +429,7 @@
   
   @DomName('SVGAltGlyphElement.glyphRef')
   @DocsEditable()
-  void set glyphRef(String value) => _blink.BlinkSVGAltGlyphElement.instance.glyphRef_Setter_(unwrap_jso(this), value);
+  set glyphRef(String value) => _blink.BlinkSVGAltGlyphElement.instance.glyphRef_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGAltGlyphElement.href')
   @DocsEditable()
@@ -279,6 +450,21 @@
   // To suppress missing implicit constructor warnings.
   factory Angle._() { throw new UnsupportedError("Not supported"); }
 
+  static Angle internalCreateAngle() {
+    return new Angle._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Angle._internalWrap() {
+    return new Angle.internal_();
+  }
+
+  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;
@@ -309,7 +495,7 @@
   
   @DomName('SVGAngle.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkSVGAngle.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkSVGAngle.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGAngle.valueAsString')
   @DocsEditable()
@@ -317,7 +503,7 @@
   
   @DomName('SVGAngle.valueAsString')
   @DocsEditable()
-  void set valueAsString(String value) => _blink.BlinkSVGAngle.instance.valueAsString_Setter_(unwrap_jso(this), value);
+  set valueAsString(String value) => _blink.BlinkSVGAngle.instance.valueAsString_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGAngle.valueInSpecifiedUnits')
   @DocsEditable()
@@ -325,7 +511,7 @@
   
   @DomName('SVGAngle.valueInSpecifiedUnits')
   @DocsEditable()
-  void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Setter_(unwrap_jso(this), value);
+  set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGAngle.convertToSpecifiedUnits')
   @DocsEditable()
@@ -356,6 +542,18 @@
   @DomName('SVGAnimateElement.SVGAnimateElement')
   @DocsEditable()
   factory AnimateElement() => _SvgElementFactoryProvider.createSvgElement_tag("animate");
+
+
+  static AnimateElement internalCreateAnimateElement() {
+    return new AnimateElement._internalWrap();
+  }
+
+  factory AnimateElement._internalWrap() {
+    return new AnimateElement.internal_();
+  }
+
+  AnimateElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -387,6 +585,18 @@
   @DomName('SVGAnimateMotionElement.SVGAnimateMotionElement')
   @DocsEditable()
   factory AnimateMotionElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateMotion");
+
+
+  static AnimateMotionElement internalCreateAnimateMotionElement() {
+    return new AnimateMotionElement._internalWrap();
+  }
+
+  factory AnimateMotionElement._internalWrap() {
+    return new AnimateMotionElement.internal_();
+  }
+
+  AnimateMotionElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -418,6 +628,18 @@
   @DomName('SVGAnimateTransformElement.SVGAnimateTransformElement')
   @DocsEditable()
   factory AnimateTransformElement() => _SvgElementFactoryProvider.createSvgElement_tag("animateTransform");
+
+
+  static AnimateTransformElement internalCreateAnimateTransformElement() {
+    return new AnimateTransformElement._internalWrap();
+  }
+
+  factory AnimateTransformElement._internalWrap() {
+    return new AnimateTransformElement.internal_();
+  }
+
+  AnimateTransformElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -443,6 +665,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedAngle._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedAngle internalCreateAnimatedAngle() {
+    return new AnimatedAngle._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedAngle._internalWrap() {
+    return new AnimatedAngle.internal_();
+  }
+
+  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)));
@@ -466,6 +703,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedBoolean._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedBoolean internalCreateAnimatedBoolean() {
+    return new AnimatedBoolean._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedBoolean._internalWrap() {
+    return new AnimatedBoolean.internal_();
+  }
+
+  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));
@@ -476,7 +728,7 @@
   
   @DomName('SVGAnimatedBoolean.baseVal')
   @DocsEditable()
-  void set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -493,6 +745,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedEnumeration._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedEnumeration internalCreateAnimatedEnumeration() {
+    return new AnimatedEnumeration._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedEnumeration._internalWrap() {
+    return new AnimatedEnumeration.internal_();
+  }
+
+  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));
@@ -503,7 +770,7 @@
   
   @DomName('SVGAnimatedEnumeration.baseVal')
   @DocsEditable()
-  void set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -520,6 +787,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedInteger._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedInteger internalCreateAnimatedInteger() {
+    return new AnimatedInteger._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedInteger._internalWrap() {
+    return new AnimatedInteger.internal_();
+  }
+
+  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));
@@ -530,7 +812,7 @@
   
   @DomName('SVGAnimatedInteger.baseVal')
   @DocsEditable()
-  void set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -547,6 +829,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedLength._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedLength internalCreateAnimatedLength() {
+    return new AnimatedLength._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedLength._internalWrap() {
+    return new AnimatedLength.internal_();
+  }
+
+  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)));
@@ -570,6 +867,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedLengthList._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedLengthList internalCreateAnimatedLengthList() {
+    return new AnimatedLengthList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedLengthList._internalWrap() {
+    return new AnimatedLengthList.internal_();
+  }
+
+  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)));
@@ -593,9 +905,24 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedNumber._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedNumber internalCreateAnimatedNumber() {
+    return new AnimatedNumber._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedNumber._internalWrap() {
+    return new AnimatedNumber.internal_();
+  }
+
+  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()
-  double get animVal => _blink.BlinkSVGAnimatedNumber.instance.animVal_Getter_(unwrap_jso(this));
+  num get animVal => _blink.BlinkSVGAnimatedNumber.instance.animVal_Getter_(unwrap_jso(this));
   
   @DomName('SVGAnimatedNumber.baseVal')
   @DocsEditable()
@@ -603,7 +930,7 @@
   
   @DomName('SVGAnimatedNumber.baseVal')
   @DocsEditable()
-  void set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -620,6 +947,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedNumberList._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedNumberList internalCreateAnimatedNumberList() {
+    return new AnimatedNumberList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedNumberList._internalWrap() {
+    return new AnimatedNumberList.internal_();
+  }
+
+  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)));
@@ -643,6 +985,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedPreserveAspectRatio._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedPreserveAspectRatio internalCreateAnimatedPreserveAspectRatio() {
+    return new AnimatedPreserveAspectRatio._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedPreserveAspectRatio._internalWrap() {
+    return new AnimatedPreserveAspectRatio.internal_();
+  }
+
+  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)));
@@ -666,6 +1023,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedRect._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedRect internalCreateAnimatedRect() {
+    return new AnimatedRect._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedRect._internalWrap() {
+    return new AnimatedRect.internal_();
+  }
+
+  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)));
@@ -689,6 +1061,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedString._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedString internalCreateAnimatedString() {
+    return new AnimatedString._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedString._internalWrap() {
+    return new AnimatedString.internal_();
+  }
+
+  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));
@@ -699,7 +1086,7 @@
   
   @DomName('SVGAnimatedString.baseVal')
   @DocsEditable()
-  void set baseVal(String value) => _blink.BlinkSVGAnimatedString.instance.baseVal_Setter_(unwrap_jso(this), value);
+  set baseVal(String value) => _blink.BlinkSVGAnimatedString.instance.baseVal_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -716,6 +1103,21 @@
   // To suppress missing implicit constructor warnings.
   factory AnimatedTransformList._() { throw new UnsupportedError("Not supported"); }
 
+  static AnimatedTransformList internalCreateAnimatedTransformList() {
+    return new AnimatedTransformList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AnimatedTransformList._internalWrap() {
+    return new AnimatedTransformList.internal_();
+  }
+
+  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)));
@@ -742,6 +1144,18 @@
   @DomName('SVGAnimationElement.SVGAnimationElement')
   @DocsEditable()
   factory AnimationElement() => _SvgElementFactoryProvider.createSvgElement_tag("animation");
+
+
+  static AnimationElement internalCreateAnimationElement() {
+    return new AnimationElement._internalWrap();
+  }
+
+  factory AnimationElement._internalWrap() {
+    return new AnimationElement.internal_();
+  }
+
+  AnimationElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -771,15 +1185,15 @@
   
   @DomName('SVGAnimationElement.getCurrentTime')
   @DocsEditable()
-  double getCurrentTime() => _blink.BlinkSVGAnimationElement.instance.getCurrentTime_Callback_0_(unwrap_jso(this));
+  num getCurrentTime() => _blink.BlinkSVGAnimationElement.instance.getCurrentTime_Callback_0_(unwrap_jso(this));
   
   @DomName('SVGAnimationElement.getSimpleDuration')
   @DocsEditable()
-  double getSimpleDuration() => _blink.BlinkSVGAnimationElement.instance.getSimpleDuration_Callback_0_(unwrap_jso(this));
+  num getSimpleDuration() => _blink.BlinkSVGAnimationElement.instance.getSimpleDuration_Callback_0_(unwrap_jso(this));
   
   @DomName('SVGAnimationElement.getStartTime')
   @DocsEditable()
-  double getStartTime() => _blink.BlinkSVGAnimationElement.instance.getStartTime_Callback_0_(unwrap_jso(this));
+  num getStartTime() => _blink.BlinkSVGAnimationElement.instance.getStartTime_Callback_0_(unwrap_jso(this));
   
   @DomName('SVGAnimationElement.requiredExtensions')
   @DocsEditable()
@@ -815,6 +1229,18 @@
   @DomName('SVGCircleElement.SVGCircleElement')
   @DocsEditable()
   factory CircleElement() => _SvgElementFactoryProvider.createSvgElement_tag("circle");
+
+
+  static CircleElement internalCreateCircleElement() {
+    return new CircleElement._internalWrap();
+  }
+
+  factory CircleElement._internalWrap() {
+    return new CircleElement.internal_();
+  }
+
+  CircleElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -852,6 +1278,18 @@
   @DomName('SVGClipPathElement.SVGClipPathElement')
   @DocsEditable()
   factory ClipPathElement() => _SvgElementFactoryProvider.createSvgElement_tag("clipPath");
+
+
+  static ClipPathElement internalCreateClipPathElement() {
+    return new ClipPathElement._internalWrap();
+  }
+
+  factory ClipPathElement._internalWrap() {
+    return new ClipPathElement.internal_();
+  }
+
+  ClipPathElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -881,6 +1319,18 @@
   @DomName('SVGDefsElement.SVGDefsElement')
   @DocsEditable()
   factory DefsElement() => _SvgElementFactoryProvider.createSvgElement_tag("defs");
+
+
+  static DefsElement internalCreateDefsElement() {
+    return new DefsElement._internalWrap();
+  }
+
+  factory DefsElement._internalWrap() {
+    return new DefsElement.internal_();
+  }
+
+  DefsElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -906,6 +1356,18 @@
   @DomName('SVGDescElement.SVGDescElement')
   @DocsEditable()
   factory DescElement() => _SvgElementFactoryProvider.createSvgElement_tag("desc");
+
+
+  static DescElement internalCreateDescElement() {
+    return new DescElement._internalWrap();
+  }
+
+  factory DescElement._internalWrap() {
+    return new DescElement.internal_();
+  }
+
+  DescElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -927,6 +1389,18 @@
 class DiscardElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory DiscardElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static DiscardElement internalCreateDiscardElement() {
+    return new DiscardElement._internalWrap();
+  }
+
+  factory DiscardElement._internalWrap() {
+    return new DiscardElement.internal_();
+  }
+
+  DiscardElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -952,6 +1426,18 @@
   @DomName('SVGEllipseElement.SVGEllipseElement')
   @DocsEditable()
   factory EllipseElement() => _SvgElementFactoryProvider.createSvgElement_tag("ellipse");
+
+
+  static EllipseElement internalCreateEllipseElement() {
+    return new EllipseElement._internalWrap();
+  }
+
+  factory EllipseElement._internalWrap() {
+    return new EllipseElement.internal_();
+  }
+
+  EllipseElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -997,6 +1483,18 @@
   @DomName('SVGFEBlendElement.SVGFEBlendElement')
   @DocsEditable()
   factory FEBlendElement() => _SvgElementFactoryProvider.createSvgElement_tag("feBlend");
+
+
+  static FEBlendElement internalCreateFEBlendElement() {
+    return new FEBlendElement._internalWrap();
+  }
+
+  factory FEBlendElement._internalWrap() {
+    return new FEBlendElement.internal_();
+  }
+
+  FEBlendElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1085,6 +1583,18 @@
   @DomName('SVGFEColorMatrixElement.SVGFEColorMatrixElement')
   @DocsEditable()
   factory FEColorMatrixElement() => _SvgElementFactoryProvider.createSvgElement_tag("feColorMatrix");
+
+
+  static FEColorMatrixElement internalCreateFEColorMatrixElement() {
+    return new FEColorMatrixElement._internalWrap();
+  }
+
+  factory FEColorMatrixElement._internalWrap() {
+    return new FEColorMatrixElement.internal_();
+  }
+
+  FEColorMatrixElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1169,6 +1679,18 @@
   @DomName('SVGFEComponentTransferElement.SVGFEComponentTransferElement')
   @DocsEditable()
   factory FEComponentTransferElement() => _SvgElementFactoryProvider.createSvgElement_tag("feComponentTransfer");
+
+
+  static FEComponentTransferElement internalCreateFEComponentTransferElement() {
+    return new FEComponentTransferElement._internalWrap();
+  }
+
+  factory FEComponentTransferElement._internalWrap() {
+    return new FEComponentTransferElement.internal_();
+  }
+
+  FEComponentTransferElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1217,6 +1739,18 @@
 class FECompositeElement extends SvgElement implements FilterPrimitiveStandardAttributes {
   // To suppress missing implicit constructor warnings.
   factory FECompositeElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static FECompositeElement internalCreateFECompositeElement() {
+    return new FECompositeElement._internalWrap();
+  }
+
+  factory FECompositeElement._internalWrap() {
+    return new FECompositeElement.internal_();
+  }
+
+  FECompositeElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1322,6 +1856,18 @@
   @DomName('SVGFEConvolveMatrixElement.SVGFEConvolveMatrixElement')
   @DocsEditable()
   factory FEConvolveMatrixElement() => _SvgElementFactoryProvider.createSvgElement_tag("feConvolveMatrix");
+
+
+  static FEConvolveMatrixElement internalCreateFEConvolveMatrixElement() {
+    return new FEConvolveMatrixElement._internalWrap();
+  }
+
+  factory FEConvolveMatrixElement._internalWrap() {
+    return new FEConvolveMatrixElement.internal_();
+  }
+
+  FEConvolveMatrixElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1438,6 +1984,18 @@
   @DomName('SVGFEDiffuseLightingElement.SVGFEDiffuseLightingElement')
   @DocsEditable()
   factory FEDiffuseLightingElement() => _SvgElementFactoryProvider.createSvgElement_tag("feDiffuseLighting");
+
+
+  static FEDiffuseLightingElement internalCreateFEDiffuseLightingElement() {
+    return new FEDiffuseLightingElement._internalWrap();
+  }
+
+  factory FEDiffuseLightingElement._internalWrap() {
+    return new FEDiffuseLightingElement.internal_();
+  }
+
+  FEDiffuseLightingElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1510,6 +2068,18 @@
   @DomName('SVGFEDisplacementMapElement.SVGFEDisplacementMapElement')
   @DocsEditable()
   factory FEDisplacementMapElement() => _SvgElementFactoryProvider.createSvgElement_tag("feDisplacementMap");
+
+
+  static FEDisplacementMapElement internalCreateFEDisplacementMapElement() {
+    return new FEDisplacementMapElement._internalWrap();
+  }
+
+  factory FEDisplacementMapElement._internalWrap() {
+    return new FEDisplacementMapElement.internal_();
+  }
+
+  FEDisplacementMapElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1602,6 +2172,18 @@
   @DomName('SVGFEDistantLightElement.SVGFEDistantLightElement')
   @DocsEditable()
   factory FEDistantLightElement() => _SvgElementFactoryProvider.createSvgElement_tag("feDistantLight");
+
+
+  static FEDistantLightElement internalCreateFEDistantLightElement() {
+    return new FEDistantLightElement._internalWrap();
+  }
+
+  factory FEDistantLightElement._internalWrap() {
+    return new FEDistantLightElement.internal_();
+  }
+
+  FEDistantLightElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1642,6 +2224,18 @@
   @DomName('SVGFEFloodElement.SVGFEFloodElement')
   @DocsEditable()
   factory FEFloodElement() => _SvgElementFactoryProvider.createSvgElement_tag("feFlood");
+
+
+  static FEFloodElement internalCreateFEFloodElement() {
+    return new FEFloodElement._internalWrap();
+  }
+
+  factory FEFloodElement._internalWrap() {
+    return new FEFloodElement.internal_();
+  }
+
+  FEFloodElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1694,6 +2288,18 @@
   @DomName('SVGFEFuncAElement.SVGFEFuncAElement')
   @DocsEditable()
   factory FEFuncAElement() => _SvgElementFactoryProvider.createSvgElement_tag("feFuncA");
+
+
+  static FEFuncAElement internalCreateFEFuncAElement() {
+    return new FEFuncAElement._internalWrap();
+  }
+
+  factory FEFuncAElement._internalWrap() {
+    return new FEFuncAElement.internal_();
+  }
+
+  FEFuncAElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1726,6 +2332,18 @@
   @DomName('SVGFEFuncBElement.SVGFEFuncBElement')
   @DocsEditable()
   factory FEFuncBElement() => _SvgElementFactoryProvider.createSvgElement_tag("feFuncB");
+
+
+  static FEFuncBElement internalCreateFEFuncBElement() {
+    return new FEFuncBElement._internalWrap();
+  }
+
+  factory FEFuncBElement._internalWrap() {
+    return new FEFuncBElement.internal_();
+  }
+
+  FEFuncBElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1758,6 +2376,18 @@
   @DomName('SVGFEFuncGElement.SVGFEFuncGElement')
   @DocsEditable()
   factory FEFuncGElement() => _SvgElementFactoryProvider.createSvgElement_tag("feFuncG");
+
+
+  static FEFuncGElement internalCreateFEFuncGElement() {
+    return new FEFuncGElement._internalWrap();
+  }
+
+  factory FEFuncGElement._internalWrap() {
+    return new FEFuncGElement.internal_();
+  }
+
+  FEFuncGElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1790,6 +2420,18 @@
   @DomName('SVGFEFuncRElement.SVGFEFuncRElement')
   @DocsEditable()
   factory FEFuncRElement() => _SvgElementFactoryProvider.createSvgElement_tag("feFuncR");
+
+
+  static FEFuncRElement internalCreateFEFuncRElement() {
+    return new FEFuncRElement._internalWrap();
+  }
+
+  factory FEFuncRElement._internalWrap() {
+    return new FEFuncRElement.internal_();
+  }
+
+  FEFuncRElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1822,6 +2464,18 @@
   @DomName('SVGFEGaussianBlurElement.SVGFEGaussianBlurElement')
   @DocsEditable()
   factory FEGaussianBlurElement() => _SvgElementFactoryProvider.createSvgElement_tag("feGaussianBlur");
+
+
+  static FEGaussianBlurElement internalCreateFEGaussianBlurElement() {
+    return new FEGaussianBlurElement._internalWrap();
+  }
+
+  factory FEGaussianBlurElement._internalWrap() {
+    return new FEGaussianBlurElement.internal_();
+  }
+
+  FEGaussianBlurElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1890,6 +2544,18 @@
   @DomName('SVGFEImageElement.SVGFEImageElement')
   @DocsEditable()
   factory FEImageElement() => _SvgElementFactoryProvider.createSvgElement_tag("feImage");
+
+
+  static FEImageElement internalCreateFEImageElement() {
+    return new FEImageElement._internalWrap();
+  }
+
+  factory FEImageElement._internalWrap() {
+    return new FEImageElement.internal_();
+  }
+
+  FEImageElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -1950,6 +2616,18 @@
   @DomName('SVGFEMergeElement.SVGFEMergeElement')
   @DocsEditable()
   factory FEMergeElement() => _SvgElementFactoryProvider.createSvgElement_tag("feMerge");
+
+
+  static FEMergeElement internalCreateFEMergeElement() {
+    return new FEMergeElement._internalWrap();
+  }
+
+  factory FEMergeElement._internalWrap() {
+    return new FEMergeElement.internal_();
+  }
+
+  FEMergeElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2002,6 +2680,18 @@
   @DomName('SVGFEMergeNodeElement.SVGFEMergeNodeElement')
   @DocsEditable()
   factory FEMergeNodeElement() => _SvgElementFactoryProvider.createSvgElement_tag("feMergeNode");
+
+
+  static FEMergeNodeElement internalCreateFEMergeNodeElement() {
+    return new FEMergeNodeElement._internalWrap();
+  }
+
+  factory FEMergeNodeElement._internalWrap() {
+    return new FEMergeNodeElement.internal_();
+  }
+
+  FEMergeNodeElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2034,6 +2724,18 @@
 class FEMorphologyElement extends SvgElement implements FilterPrimitiveStandardAttributes {
   // To suppress missing implicit constructor warnings.
   factory FEMorphologyElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static FEMorphologyElement internalCreateFEMorphologyElement() {
+    return new FEMorphologyElement._internalWrap();
+  }
+
+  factory FEMorphologyElement._internalWrap() {
+    return new FEMorphologyElement.internal_();
+  }
+
+  FEMorphologyElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2111,6 +2813,18 @@
   @DomName('SVGFEOffsetElement.SVGFEOffsetElement')
   @DocsEditable()
   factory FEOffsetElement() => _SvgElementFactoryProvider.createSvgElement_tag("feOffset");
+
+
+  static FEOffsetElement internalCreateFEOffsetElement() {
+    return new FEOffsetElement._internalWrap();
+  }
+
+  factory FEOffsetElement._internalWrap() {
+    return new FEOffsetElement.internal_();
+  }
+
+  FEOffsetElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2175,6 +2889,18 @@
   @DomName('SVGFEPointLightElement.SVGFEPointLightElement')
   @DocsEditable()
   factory FEPointLightElement() => _SvgElementFactoryProvider.createSvgElement_tag("fePointLight");
+
+
+  static FEPointLightElement internalCreateFEPointLightElement() {
+    return new FEPointLightElement._internalWrap();
+  }
+
+  factory FEPointLightElement._internalWrap() {
+    return new FEPointLightElement.internal_();
+  }
+
+  FEPointLightElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2219,6 +2945,18 @@
   @DomName('SVGFESpecularLightingElement.SVGFESpecularLightingElement')
   @DocsEditable()
   factory FESpecularLightingElement() => _SvgElementFactoryProvider.createSvgElement_tag("feSpecularLighting");
+
+
+  static FESpecularLightingElement internalCreateFESpecularLightingElement() {
+    return new FESpecularLightingElement._internalWrap();
+  }
+
+  factory FESpecularLightingElement._internalWrap() {
+    return new FESpecularLightingElement.internal_();
+  }
+
+  FESpecularLightingElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2287,6 +3025,18 @@
   @DomName('SVGFESpotLightElement.SVGFESpotLightElement')
   @DocsEditable()
   factory FESpotLightElement() => _SvgElementFactoryProvider.createSvgElement_tag("feSpotLight");
+
+
+  static FESpotLightElement internalCreateFESpotLightElement() {
+    return new FESpotLightElement._internalWrap();
+  }
+
+  factory FESpotLightElement._internalWrap() {
+    return new FESpotLightElement.internal_();
+  }
+
+  FESpotLightElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2351,6 +3101,18 @@
   @DomName('SVGFETileElement.SVGFETileElement')
   @DocsEditable()
   factory FETileElement() => _SvgElementFactoryProvider.createSvgElement_tag("feTile");
+
+
+  static FETileElement internalCreateFETileElement() {
+    return new FETileElement._internalWrap();
+  }
+
+  factory FETileElement._internalWrap() {
+    return new FETileElement.internal_();
+  }
+
+  FETileElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2407,6 +3169,18 @@
   @DomName('SVGFETurbulenceElement.SVGFETurbulenceElement')
   @DocsEditable()
   factory FETurbulenceElement() => _SvgElementFactoryProvider.createSvgElement_tag("feTurbulence");
+
+
+  static FETurbulenceElement internalCreateFETurbulenceElement() {
+    return new FETurbulenceElement._internalWrap();
+  }
+
+  factory FETurbulenceElement._internalWrap() {
+    return new FETurbulenceElement.internal_();
+  }
+
+  FETurbulenceElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2507,6 +3281,18 @@
   @DomName('SVGFilterElement.SVGFilterElement')
   @DocsEditable()
   factory FilterElement() => _SvgElementFactoryProvider.createSvgElement_tag("filter");
+
+
+  static FilterElement internalCreateFilterElement() {
+    return new FilterElement._internalWrap();
+  }
+
+  factory FilterElement._internalWrap() {
+    return new FilterElement.internal_();
+  }
+
+  FilterElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2636,6 +3422,18 @@
   @DomName('SVGForeignObjectElement.SVGForeignObjectElement')
   @DocsEditable()
   factory ForeignObjectElement() => _SvgElementFactoryProvider.createSvgElement_tag("foreignObject");
+
+
+  static ForeignObjectElement internalCreateForeignObjectElement() {
+    return new ForeignObjectElement._internalWrap();
+  }
+
+  factory ForeignObjectElement._internalWrap() {
+    return new ForeignObjectElement.internal_();
+  }
+
+  ForeignObjectElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2680,6 +3478,18 @@
   @DomName('SVGGElement.SVGGElement')
   @DocsEditable()
   factory GElement() => _SvgElementFactoryProvider.createSvgElement_tag("g");
+
+
+  static GElement internalCreateGElement() {
+    return new GElement._internalWrap();
+  }
+
+  factory GElement._internalWrap() {
+    return new GElement.internal_();
+  }
+
+  GElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2701,6 +3511,18 @@
 class GeometryElement extends GraphicsElement {
   // To suppress missing implicit constructor warnings.
   factory GeometryElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static GeometryElement internalCreateGeometryElement() {
+    return new GeometryElement._internalWrap();
+  }
+
+  factory GeometryElement._internalWrap() {
+    return new GeometryElement.internal_();
+  }
+
+  GeometryElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2732,6 +3554,18 @@
 class GraphicsElement extends SvgElement implements Tests {
   // To suppress missing implicit constructor warnings.
   factory GraphicsElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static GraphicsElement internalCreateGraphicsElement() {
+    return new GraphicsElement._internalWrap();
+  }
+
+  factory GraphicsElement._internalWrap() {
+    return new GraphicsElement.internal_();
+  }
+
+  GraphicsElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2762,17 +3596,17 @@
   @DomName('SVGGraphicsElement.getCTM')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getCtm() => _blink.BlinkSVGGraphicsElement.instance.getCTM_Callback_0_(unwrap_jso(this));
+  Matrix getCtm() => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.getCTM_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGGraphicsElement.getScreenCTM')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getScreenCtm() => _blink.BlinkSVGGraphicsElement.instance.getScreenCTM_Callback_0_(unwrap_jso(this));
+  Matrix getScreenCtm() => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.getScreenCTM_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGGraphicsElement.getTransformToElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getTransformToElement(SvgElement element) => _blink.BlinkSVGGraphicsElement.instance.getTransformToElement_Callback_1_(unwrap_jso(this), unwrap_jso(element));
+  Matrix getTransformToElement(SvgElement element) => wrap_jso(_blink.BlinkSVGGraphicsElement.instance.getTransformToElement_Callback_1_(unwrap_jso(this), unwrap_jso(element)));
   
   @DomName('SVGGraphicsElement.requiredExtensions')
   @DocsEditable()
@@ -2812,6 +3646,18 @@
   @DomName('SVGImageElement.SVGImageElement')
   @DocsEditable()
   factory ImageElement() => _SvgElementFactoryProvider.createSvgElement_tag("image");
+
+
+  static ImageElement internalCreateImageElement() {
+    return new ImageElement._internalWrap();
+  }
+
+  factory ImageElement._internalWrap() {
+    return new ImageElement.internal_();
+  }
+
+  ImageElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -2858,6 +3704,21 @@
   // To suppress missing implicit constructor warnings.
   factory Length._() { throw new UnsupportedError("Not supported"); }
 
+  static Length internalCreateLength() {
+    return new Length._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Length._internalWrap() {
+    return new Length.internal_();
+  }
+
+  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;
@@ -2912,7 +3773,7 @@
   
   @DomName('SVGLength.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkSVGLength.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkSVGLength.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGLength.valueAsString')
   @DocsEditable()
@@ -2920,7 +3781,7 @@
   
   @DomName('SVGLength.valueAsString')
   @DocsEditable()
-  void set valueAsString(String value) => _blink.BlinkSVGLength.instance.valueAsString_Setter_(unwrap_jso(this), value);
+  set valueAsString(String value) => _blink.BlinkSVGLength.instance.valueAsString_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGLength.valueInSpecifiedUnits')
   @DocsEditable()
@@ -2928,7 +3789,7 @@
   
   @DomName('SVGLength.valueInSpecifiedUnits')
   @DocsEditable()
-  void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Setter_(unwrap_jso(this), value);
+  set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGLength.convertToSpecifiedUnits')
   @DocsEditable()
@@ -2949,10 +3810,25 @@
 @DocsEditable()
 @DomName('SVGLengthList')
 @Unstable()
-class LengthList extends NativeFieldWrapperClass2 with ListMixin<Length>, ImmutableListMixin<Length> implements List<Length> {
+class LengthList extends JsoNativeFieldWrapper with ListMixin<Length>, ImmutableListMixin<Length> implements List<Length> {
   // To suppress missing implicit constructor warnings.
   factory LengthList._() { throw new UnsupportedError("Not supported"); }
 
+  static LengthList internalCreateLengthList() {
+    return new LengthList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory LengthList._internalWrap() {
+    return new LengthList.internal_();
+  }
+
+  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
@@ -2975,7 +3851,7 @@
   // Length is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -3013,7 +3889,7 @@
   
   @DomName('SVGLengthList.appendItem')
   @DocsEditable()
-  Length appendItem(Length item) => _blink.BlinkSVGLengthList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Length appendItem(Length item) => wrap_jso(_blink.BlinkSVGLengthList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGLengthList.clear')
   @DocsEditable()
@@ -3021,23 +3897,23 @@
   
   @DomName('SVGLengthList.getItem')
   @DocsEditable()
-  Length getItem(int index) => _blink.BlinkSVGLengthList.instance.getItem_Callback_1_(unwrap_jso(this), index);
+  Length getItem(int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.getItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGLengthList.initialize')
   @DocsEditable()
-  Length initialize(Length item) => _blink.BlinkSVGLengthList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Length initialize(Length item) => wrap_jso(_blink.BlinkSVGLengthList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGLengthList.insertItemBefore')
   @DocsEditable()
-  Length insertItemBefore(Length item, int index) => _blink.BlinkSVGLengthList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Length insertItemBefore(Length item, int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
   @DomName('SVGLengthList.removeItem')
   @DocsEditable()
-  Length removeItem(int index) => _blink.BlinkSVGLengthList.instance.removeItem_Callback_1_(unwrap_jso(this), index);
+  Length removeItem(int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGLengthList.replaceItem')
   @DocsEditable()
-  Length replaceItem(Length item, int index) => _blink.BlinkSVGLengthList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Length replaceItem(Length item, int index) => wrap_jso(_blink.BlinkSVGLengthList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3057,6 +3933,18 @@
   @DomName('SVGLineElement.SVGLineElement')
   @DocsEditable()
   factory LineElement() => _SvgElementFactoryProvider.createSvgElement_tag("line");
+
+
+  static LineElement internalCreateLineElement() {
+    return new LineElement._internalWrap();
+  }
+
+  factory LineElement._internalWrap() {
+    return new LineElement.internal_();
+  }
+
+  LineElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -3098,6 +3986,18 @@
   @DomName('SVGLinearGradientElement.SVGLinearGradientElement')
   @DocsEditable()
   factory LinearGradientElement() => _SvgElementFactoryProvider.createSvgElement_tag("linearGradient");
+
+
+  static LinearGradientElement internalCreateLinearGradientElement() {
+    return new LinearGradientElement._internalWrap();
+  }
+
+  factory LinearGradientElement._internalWrap() {
+    return new LinearGradientElement.internal_();
+  }
+
+  LinearGradientElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -3139,6 +4039,18 @@
   @DomName('SVGMarkerElement.SVGMarkerElement')
   @DocsEditable()
   factory MarkerElement() => _SvgElementFactoryProvider.createSvgElement_tag("marker");
+
+
+  static MarkerElement internalCreateMarkerElement() {
+    return new MarkerElement._internalWrap();
+  }
+
+  factory MarkerElement._internalWrap() {
+    return new MarkerElement.internal_();
+  }
+
+  MarkerElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -3232,6 +4144,18 @@
   @DomName('SVGMaskElement.SVGMaskElement')
   @DocsEditable()
   factory MaskElement() => _SvgElementFactoryProvider.createSvgElement_tag("mask");
+
+
+  static MaskElement internalCreateMaskElement() {
+    return new MaskElement._internalWrap();
+  }
+
+  factory MaskElement._internalWrap() {
+    return new MaskElement.internal_();
+  }
+
+  MaskElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -3294,13 +4218,28 @@
   // To suppress missing implicit constructor warnings.
   factory Matrix._() { throw new UnsupportedError("Not supported"); }
 
+  static Matrix internalCreateMatrix() {
+    return new Matrix._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Matrix._internalWrap() {
+    return new Matrix.internal_();
+  }
+
+  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));
   
   @DomName('SVGMatrix.a')
   @DocsEditable()
-  void set a(num value) => _blink.BlinkSVGMatrix.instance.a_Setter_(unwrap_jso(this), value);
+  set a(num value) => _blink.BlinkSVGMatrix.instance.a_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGMatrix.b')
   @DocsEditable()
@@ -3308,7 +4247,7 @@
   
   @DomName('SVGMatrix.b')
   @DocsEditable()
-  void set b(num value) => _blink.BlinkSVGMatrix.instance.b_Setter_(unwrap_jso(this), value);
+  set b(num value) => _blink.BlinkSVGMatrix.instance.b_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGMatrix.c')
   @DocsEditable()
@@ -3316,7 +4255,7 @@
   
   @DomName('SVGMatrix.c')
   @DocsEditable()
-  void set c(num value) => _blink.BlinkSVGMatrix.instance.c_Setter_(unwrap_jso(this), value);
+  set c(num value) => _blink.BlinkSVGMatrix.instance.c_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGMatrix.d')
   @DocsEditable()
@@ -3324,7 +4263,7 @@
   
   @DomName('SVGMatrix.d')
   @DocsEditable()
-  void set d(num value) => _blink.BlinkSVGMatrix.instance.d_Setter_(unwrap_jso(this), value);
+  set d(num value) => _blink.BlinkSVGMatrix.instance.d_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGMatrix.e')
   @DocsEditable()
@@ -3332,7 +4271,7 @@
   
   @DomName('SVGMatrix.e')
   @DocsEditable()
-  void set e(num value) => _blink.BlinkSVGMatrix.instance.e_Setter_(unwrap_jso(this), value);
+  set e(num value) => _blink.BlinkSVGMatrix.instance.e_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGMatrix.f')
   @DocsEditable()
@@ -3340,51 +4279,51 @@
   
   @DomName('SVGMatrix.f')
   @DocsEditable()
-  void set f(num value) => _blink.BlinkSVGMatrix.instance.f_Setter_(unwrap_jso(this), value);
+  set f(num value) => _blink.BlinkSVGMatrix.instance.f_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGMatrix.flipX')
   @DocsEditable()
-  Matrix flipX() => _blink.BlinkSVGMatrix.instance.flipX_Callback_0_(unwrap_jso(this));
+  Matrix flipX() => wrap_jso(_blink.BlinkSVGMatrix.instance.flipX_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGMatrix.flipY')
   @DocsEditable()
-  Matrix flipY() => _blink.BlinkSVGMatrix.instance.flipY_Callback_0_(unwrap_jso(this));
+  Matrix flipY() => wrap_jso(_blink.BlinkSVGMatrix.instance.flipY_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGMatrix.inverse')
   @DocsEditable()
-  Matrix inverse() => _blink.BlinkSVGMatrix.instance.inverse_Callback_0_(unwrap_jso(this));
+  Matrix inverse() => wrap_jso(_blink.BlinkSVGMatrix.instance.inverse_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGMatrix.multiply')
   @DocsEditable()
-  Matrix multiply(Matrix secondMatrix) => _blink.BlinkSVGMatrix.instance.multiply_Callback_1_(unwrap_jso(this), unwrap_jso(secondMatrix));
+  Matrix multiply(Matrix secondMatrix) => wrap_jso(_blink.BlinkSVGMatrix.instance.multiply_Callback_1_(unwrap_jso(this), unwrap_jso(secondMatrix)));
   
   @DomName('SVGMatrix.rotate')
   @DocsEditable()
-  Matrix rotate(num angle) => _blink.BlinkSVGMatrix.instance.rotate_Callback_1_(unwrap_jso(this), angle);
+  Matrix rotate(num angle) => wrap_jso(_blink.BlinkSVGMatrix.instance.rotate_Callback_1_(unwrap_jso(this), angle));
   
   @DomName('SVGMatrix.rotateFromVector')
   @DocsEditable()
-  Matrix rotateFromVector(num x, num y) => _blink.BlinkSVGMatrix.instance.rotateFromVector_Callback_2_(unwrap_jso(this), x, y);
+  Matrix rotateFromVector(num x, num y) => wrap_jso(_blink.BlinkSVGMatrix.instance.rotateFromVector_Callback_2_(unwrap_jso(this), x, y));
   
   @DomName('SVGMatrix.scale')
   @DocsEditable()
-  Matrix scale(num scaleFactor) => _blink.BlinkSVGMatrix.instance.scale_Callback_1_(unwrap_jso(this), scaleFactor);
+  Matrix scale(num scaleFactor) => wrap_jso(_blink.BlinkSVGMatrix.instance.scale_Callback_1_(unwrap_jso(this), scaleFactor));
   
   @DomName('SVGMatrix.scaleNonUniform')
   @DocsEditable()
-  Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) => _blink.BlinkSVGMatrix.instance.scaleNonUniform_Callback_2_(unwrap_jso(this), scaleFactorX, scaleFactorY);
+  Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) => wrap_jso(_blink.BlinkSVGMatrix.instance.scaleNonUniform_Callback_2_(unwrap_jso(this), scaleFactorX, scaleFactorY));
   
   @DomName('SVGMatrix.skewX')
   @DocsEditable()
-  Matrix skewX(num angle) => _blink.BlinkSVGMatrix.instance.skewX_Callback_1_(unwrap_jso(this), angle);
+  Matrix skewX(num angle) => wrap_jso(_blink.BlinkSVGMatrix.instance.skewX_Callback_1_(unwrap_jso(this), angle));
   
   @DomName('SVGMatrix.skewY')
   @DocsEditable()
-  Matrix skewY(num angle) => _blink.BlinkSVGMatrix.instance.skewY_Callback_1_(unwrap_jso(this), angle);
+  Matrix skewY(num angle) => wrap_jso(_blink.BlinkSVGMatrix.instance.skewY_Callback_1_(unwrap_jso(this), angle));
   
   @DomName('SVGMatrix.translate')
   @DocsEditable()
-  Matrix translate(num x, num y) => _blink.BlinkSVGMatrix.instance.translate_Callback_2_(unwrap_jso(this), x, y);
+  Matrix translate(num x, num y) => wrap_jso(_blink.BlinkSVGMatrix.instance.translate_Callback_2_(unwrap_jso(this), x, y));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3400,6 +4339,18 @@
 class MetadataElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory MetadataElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static MetadataElement internalCreateMetadataElement() {
+    return new MetadataElement._internalWrap();
+  }
+
+  factory MetadataElement._internalWrap() {
+    return new MetadataElement.internal_();
+  }
+
+  MetadataElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -3422,13 +4373,28 @@
   // To suppress missing implicit constructor warnings.
   factory Number._() { throw new UnsupportedError("Not supported"); }
 
+  static Number internalCreateNumber() {
+    return new Number._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Number._internalWrap() {
+    return new Number.internal_();
+  }
+
+  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));
   
   @DomName('SVGNumber.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkSVGNumber.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkSVGNumber.instance.value_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3441,10 +4407,25 @@
 @DocsEditable()
 @DomName('SVGNumberList')
 @Unstable()
-class NumberList extends NativeFieldWrapperClass2 with ListMixin<Number>, ImmutableListMixin<Number> implements List<Number> {
+class NumberList extends JsoNativeFieldWrapper with ListMixin<Number>, ImmutableListMixin<Number> implements List<Number> {
   // To suppress missing implicit constructor warnings.
   factory NumberList._() { throw new UnsupportedError("Not supported"); }
 
+  static NumberList internalCreateNumberList() {
+    return new NumberList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory NumberList._internalWrap() {
+    return new NumberList.internal_();
+  }
+
+  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
@@ -3467,7 +4448,7 @@
   // Number is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -3505,7 +4486,7 @@
   
   @DomName('SVGNumberList.appendItem')
   @DocsEditable()
-  Number appendItem(Number item) => _blink.BlinkSVGNumberList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Number appendItem(Number item) => wrap_jso(_blink.BlinkSVGNumberList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGNumberList.clear')
   @DocsEditable()
@@ -3513,23 +4494,23 @@
   
   @DomName('SVGNumberList.getItem')
   @DocsEditable()
-  Number getItem(int index) => _blink.BlinkSVGNumberList.instance.getItem_Callback_1_(unwrap_jso(this), index);
+  Number getItem(int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.getItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGNumberList.initialize')
   @DocsEditable()
-  Number initialize(Number item) => _blink.BlinkSVGNumberList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Number initialize(Number item) => wrap_jso(_blink.BlinkSVGNumberList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGNumberList.insertItemBefore')
   @DocsEditable()
-  Number insertItemBefore(Number item, int index) => _blink.BlinkSVGNumberList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Number insertItemBefore(Number item, int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
   @DomName('SVGNumberList.removeItem')
   @DocsEditable()
-  Number removeItem(int index) => _blink.BlinkSVGNumberList.instance.removeItem_Callback_1_(unwrap_jso(this), index);
+  Number removeItem(int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGNumberList.replaceItem')
   @DocsEditable()
-  Number replaceItem(Number item, int index) => _blink.BlinkSVGNumberList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Number replaceItem(Number item, int index) => wrap_jso(_blink.BlinkSVGNumberList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3549,6 +4530,18 @@
   @DomName('SVGPathElement.SVGPathElement')
   @DocsEditable()
   factory PathElement() => _SvgElementFactoryProvider.createSvgElement_tag("path");
+
+
+  static PathElement internalCreatePathElement() {
+    return new PathElement._internalWrap();
+  }
+
+  factory PathElement._internalWrap() {
+    return new PathElement.internal_();
+  }
+
+  PathElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -3578,79 +4571,79 @@
   
   @DomName('SVGPathElement.createSVGPathSegArcAbs')
   @DocsEditable()
-  PathSegArcAbs createSvgPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegArcAbs_Callback_7_(unwrap_jso(this), x, y, r1, r2, angle, largeArcFlag, sweepFlag));
   
   @DomName('SVGPathElement.createSVGPathSegArcRel')
   @DocsEditable()
-  PathSegArcRel createSvgPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegArcRel_Callback_7_(unwrap_jso(this), x, y, r1, r2, angle, largeArcFlag, sweepFlag));
   
   @DomName('SVGPathElement.createSVGPathSegClosePath')
   @DocsEditable()
-  PathSegClosePath createSvgPathSegClosePath() => _blink.BlinkSVGPathElement.instance.createSVGPathSegClosePath_Callback_0_(unwrap_jso(this));
+  PathSegClosePath createSvgPathSegClosePath() => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegClosePath_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicAbs')
   @DocsEditable()
-  PathSegCurvetoCubicAbs createSvgPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) => _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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicAbs_Callback_6_(unwrap_jso(this), x, y, x1, y1, x2, y2));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicRel')
   @DocsEditable()
-  PathSegCurvetoCubicRel createSvgPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.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) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicRel_Callback_6_(unwrap_jso(this), x, y, x1, y1, x2, y2));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs')
   @DocsEditable()
-  PathSegCurvetoCubicSmoothAbs createSvgPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(unwrap_jso(this), x, y, x2, y2);
+  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));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel')
   @DocsEditable()
-  PathSegCurvetoCubicSmoothRel createSvgPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(unwrap_jso(this), x, y, x2, y2);
+  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));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticAbs')
   @DocsEditable()
-  PathSegCurvetoQuadraticAbs createSvgPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticAbs_Callback_4_(unwrap_jso(this), x, y, x1, y1);
+  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));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticRel')
   @DocsEditable()
-  PathSegCurvetoQuadraticRel createSvgPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticRel_Callback_4_(unwrap_jso(this), x, y, x1, y1);
+  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));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs')
   @DocsEditable()
-  PathSegCurvetoQuadraticSmoothAbs createSvgPathSegCurvetoQuadraticSmoothAbs(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(unwrap_jso(this), x, y);
+  PathSegCurvetoQuadraticSmoothAbs createSvgPathSegCurvetoQuadraticSmoothAbs(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(unwrap_jso(this), x, y));
   
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel')
   @DocsEditable()
-  PathSegCurvetoQuadraticSmoothRel createSvgPathSegCurvetoQuadraticSmoothRel(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(unwrap_jso(this), x, y);
+  PathSegCurvetoQuadraticSmoothRel createSvgPathSegCurvetoQuadraticSmoothRel(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(unwrap_jso(this), x, y));
   
   @DomName('SVGPathElement.createSVGPathSegLinetoAbs')
   @DocsEditable()
-  PathSegLinetoAbs createSvgPathSegLinetoAbs(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoAbs_Callback_2_(unwrap_jso(this), x, y);
+  PathSegLinetoAbs createSvgPathSegLinetoAbs(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoAbs_Callback_2_(unwrap_jso(this), x, y));
   
   @DomName('SVGPathElement.createSVGPathSegLinetoHorizontalAbs')
   @DocsEditable()
-  PathSegLinetoHorizontalAbs createSvgPathSegLinetoHorizontalAbs(num x) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalAbs_Callback_1_(unwrap_jso(this), x);
+  PathSegLinetoHorizontalAbs createSvgPathSegLinetoHorizontalAbs(num x) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalAbs_Callback_1_(unwrap_jso(this), x));
   
   @DomName('SVGPathElement.createSVGPathSegLinetoHorizontalRel')
   @DocsEditable()
-  PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalRel_Callback_1_(unwrap_jso(this), x);
+  PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalRel_Callback_1_(unwrap_jso(this), x));
   
   @DomName('SVGPathElement.createSVGPathSegLinetoRel')
   @DocsEditable()
-  PathSegLinetoRel createSvgPathSegLinetoRel(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoRel_Callback_2_(unwrap_jso(this), x, y);
+  PathSegLinetoRel createSvgPathSegLinetoRel(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoRel_Callback_2_(unwrap_jso(this), x, y));
   
   @DomName('SVGPathElement.createSVGPathSegLinetoVerticalAbs')
   @DocsEditable()
-  PathSegLinetoVerticalAbs createSvgPathSegLinetoVerticalAbs(num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalAbs_Callback_1_(unwrap_jso(this), y);
+  PathSegLinetoVerticalAbs createSvgPathSegLinetoVerticalAbs(num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalAbs_Callback_1_(unwrap_jso(this), y));
   
   @DomName('SVGPathElement.createSVGPathSegLinetoVerticalRel')
   @DocsEditable()
-  PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalRel_Callback_1_(unwrap_jso(this), y);
+  PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalRel_Callback_1_(unwrap_jso(this), y));
   
   @DomName('SVGPathElement.createSVGPathSegMovetoAbs')
   @DocsEditable()
-  PathSegMovetoAbs createSvgPathSegMovetoAbs(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoAbs_Callback_2_(unwrap_jso(this), x, y);
+  PathSegMovetoAbs createSvgPathSegMovetoAbs(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoAbs_Callback_2_(unwrap_jso(this), x, y));
   
   @DomName('SVGPathElement.createSVGPathSegMovetoRel')
   @DocsEditable()
-  PathSegMovetoRel createSvgPathSegMovetoRel(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoRel_Callback_2_(unwrap_jso(this), x, y);
+  PathSegMovetoRel createSvgPathSegMovetoRel(num x, num y) => wrap_jso(_blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoRel_Callback_2_(unwrap_jso(this), x, y));
   
   @DomName('SVGPathElement.getPathSegAtLength')
   @DocsEditable()
@@ -3658,11 +4651,11 @@
   
   @DomName('SVGPathElement.getPointAtLength')
   @DocsEditable()
-  Point getPointAtLength(num distance) => _blink.BlinkSVGPathElement.instance.getPointAtLength_Callback_1_(unwrap_jso(this), distance);
+  Point getPointAtLength(num distance) => wrap_jso(_blink.BlinkSVGPathElement.instance.getPointAtLength_Callback_1_(unwrap_jso(this), distance));
   
   @DomName('SVGPathElement.getTotalLength')
   @DocsEditable()
-  double getTotalLength() => _blink.BlinkSVGPathElement.instance.getTotalLength_Callback_0_(unwrap_jso(this));
+  num getTotalLength() => _blink.BlinkSVGPathElement.instance.getTotalLength_Callback_0_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3679,6 +4672,21 @@
   // To suppress missing implicit constructor warnings.
   factory PathSeg._() { throw new UnsupportedError("Not supported"); }
 
+  static PathSeg internalCreatePathSeg() {
+    return new PathSeg._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PathSeg._internalWrap() {
+    return new PathSeg.internal_();
+  }
+
+  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;
@@ -3782,13 +4790,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegArcAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegArcAbs internalCreatePathSegArcAbs() {
+    return new PathSegArcAbs._internalWrap();
+  }
+
+  factory PathSegArcAbs._internalWrap() {
+    return new PathSegArcAbs.internal_();
+  }
+
+  PathSegArcAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegArcAbs.angle')
   @DocsEditable()
   num get angle => _blink.BlinkSVGPathSegArcAbs.instance.angle_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegArcAbs.angle')
   @DocsEditable()
-  void set angle(num value) => _blink.BlinkSVGPathSegArcAbs.instance.angle_Setter_(unwrap_jso(this), value);
+  set angle(num value) => _blink.BlinkSVGPathSegArcAbs.instance.angle_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcAbs.largeArcFlag')
   @DocsEditable()
@@ -3796,7 +4816,7 @@
   
   @DomName('SVGPathSegArcAbs.largeArcFlag')
   @DocsEditable()
-  void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Setter_(unwrap_jso(this), value);
+  set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcAbs.r1')
   @DocsEditable()
@@ -3804,7 +4824,7 @@
   
   @DomName('SVGPathSegArcAbs.r1')
   @DocsEditable()
-  void set r1(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r1_Setter_(unwrap_jso(this), value);
+  set r1(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcAbs.r2')
   @DocsEditable()
@@ -3812,7 +4832,7 @@
   
   @DomName('SVGPathSegArcAbs.r2')
   @DocsEditable()
-  void set r2(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r2_Setter_(unwrap_jso(this), value);
+  set r2(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r2_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcAbs.sweepFlag')
   @DocsEditable()
@@ -3820,7 +4840,7 @@
   
   @DomName('SVGPathSegArcAbs.sweepFlag')
   @DocsEditable()
-  void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Setter_(unwrap_jso(this), value);
+  set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcAbs.x')
   @DocsEditable()
@@ -3828,7 +4848,7 @@
   
   @DomName('SVGPathSegArcAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegArcAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegArcAbs.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcAbs.y')
   @DocsEditable()
@@ -3836,7 +4856,7 @@
   
   @DomName('SVGPathSegArcAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegArcAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegArcAbs.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3853,13 +4873,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegArcRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegArcRel internalCreatePathSegArcRel() {
+    return new PathSegArcRel._internalWrap();
+  }
+
+  factory PathSegArcRel._internalWrap() {
+    return new PathSegArcRel.internal_();
+  }
+
+  PathSegArcRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegArcRel.angle')
   @DocsEditable()
   num get angle => _blink.BlinkSVGPathSegArcRel.instance.angle_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegArcRel.angle')
   @DocsEditable()
-  void set angle(num value) => _blink.BlinkSVGPathSegArcRel.instance.angle_Setter_(unwrap_jso(this), value);
+  set angle(num value) => _blink.BlinkSVGPathSegArcRel.instance.angle_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcRel.largeArcFlag')
   @DocsEditable()
@@ -3867,7 +4899,7 @@
   
   @DomName('SVGPathSegArcRel.largeArcFlag')
   @DocsEditable()
-  void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Setter_(unwrap_jso(this), value);
+  set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcRel.r1')
   @DocsEditable()
@@ -3875,7 +4907,7 @@
   
   @DomName('SVGPathSegArcRel.r1')
   @DocsEditable()
-  void set r1(num value) => _blink.BlinkSVGPathSegArcRel.instance.r1_Setter_(unwrap_jso(this), value);
+  set r1(num value) => _blink.BlinkSVGPathSegArcRel.instance.r1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcRel.r2')
   @DocsEditable()
@@ -3883,7 +4915,7 @@
   
   @DomName('SVGPathSegArcRel.r2')
   @DocsEditable()
-  void set r2(num value) => _blink.BlinkSVGPathSegArcRel.instance.r2_Setter_(unwrap_jso(this), value);
+  set r2(num value) => _blink.BlinkSVGPathSegArcRel.instance.r2_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcRel.sweepFlag')
   @DocsEditable()
@@ -3891,7 +4923,7 @@
   
   @DomName('SVGPathSegArcRel.sweepFlag')
   @DocsEditable()
-  void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Setter_(unwrap_jso(this), value);
+  set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcRel.x')
   @DocsEditable()
@@ -3899,7 +4931,7 @@
   
   @DomName('SVGPathSegArcRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegArcRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegArcRel.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegArcRel.y')
   @DocsEditable()
@@ -3907,7 +4939,7 @@
   
   @DomName('SVGPathSegArcRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegArcRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegArcRel.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3924,6 +4956,18 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegClosePath._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegClosePath internalCreatePathSegClosePath() {
+    return new PathSegClosePath._internalWrap();
+  }
+
+  factory PathSegClosePath._internalWrap() {
+    return new PathSegClosePath.internal_();
+  }
+
+  PathSegClosePath.internal_() : super.internal_();
+
+
 }
 // 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
@@ -3939,13 +4983,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoCubicAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoCubicAbs internalCreatePathSegCurvetoCubicAbs() {
+    return new PathSegCurvetoCubicAbs._internalWrap();
+  }
+
+  factory PathSegCurvetoCubicAbs._internalWrap() {
+    return new PathSegCurvetoCubicAbs.internal_();
+  }
+
+  PathSegCurvetoCubicAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoCubicAbs.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoCubicAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.x1')
   @DocsEditable()
@@ -3953,7 +5009,7 @@
   
   @DomName('SVGPathSegCurvetoCubicAbs.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.x2')
   @DocsEditable()
@@ -3961,7 +5017,7 @@
   
   @DomName('SVGPathSegCurvetoCubicAbs.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y')
   @DocsEditable()
@@ -3969,7 +5025,7 @@
   
   @DomName('SVGPathSegCurvetoCubicAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y1')
   @DocsEditable()
@@ -3977,7 +5033,7 @@
   
   @DomName('SVGPathSegCurvetoCubicAbs.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicAbs.y2')
   @DocsEditable()
@@ -3985,7 +5041,7 @@
   
   @DomName('SVGPathSegCurvetoCubicAbs.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4002,13 +5058,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoCubicRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoCubicRel internalCreatePathSegCurvetoCubicRel() {
+    return new PathSegCurvetoCubicRel._internalWrap();
+  }
+
+  factory PathSegCurvetoCubicRel._internalWrap() {
+    return new PathSegCurvetoCubicRel.internal_();
+  }
+
+  PathSegCurvetoCubicRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoCubicRel.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoCubicRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicRel.x1')
   @DocsEditable()
@@ -4016,7 +5084,7 @@
   
   @DomName('SVGPathSegCurvetoCubicRel.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicRel.x2')
   @DocsEditable()
@@ -4024,7 +5092,7 @@
   
   @DomName('SVGPathSegCurvetoCubicRel.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicRel.y')
   @DocsEditable()
@@ -4032,7 +5100,7 @@
   
   @DomName('SVGPathSegCurvetoCubicRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicRel.y1')
   @DocsEditable()
@@ -4040,7 +5108,7 @@
   
   @DomName('SVGPathSegCurvetoCubicRel.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicRel.y2')
   @DocsEditable()
@@ -4048,7 +5116,7 @@
   
   @DomName('SVGPathSegCurvetoCubicRel.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4065,13 +5133,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoCubicSmoothAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoCubicSmoothAbs internalCreatePathSegCurvetoCubicSmoothAbs() {
+    return new PathSegCurvetoCubicSmoothAbs._internalWrap();
+  }
+
+  factory PathSegCurvetoCubicSmoothAbs._internalWrap() {
+    return new PathSegCurvetoCubicSmoothAbs.internal_();
+  }
+
+  PathSegCurvetoCubicSmoothAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2')
   @DocsEditable()
@@ -4079,7 +5159,7 @@
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y')
   @DocsEditable()
@@ -4087,7 +5167,7 @@
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2')
   @DocsEditable()
@@ -4095,7 +5175,7 @@
   
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4112,13 +5192,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoCubicSmoothRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoCubicSmoothRel internalCreatePathSegCurvetoCubicSmoothRel() {
+    return new PathSegCurvetoCubicSmoothRel._internalWrap();
+  }
+
+  factory PathSegCurvetoCubicSmoothRel._internalWrap() {
+    return new PathSegCurvetoCubicSmoothRel.internal_();
+  }
+
+  PathSegCurvetoCubicSmoothRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x2')
   @DocsEditable()
@@ -4126,7 +5218,7 @@
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Setter_(unwrap_jso(this), value);
+  set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y')
   @DocsEditable()
@@ -4134,7 +5226,7 @@
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y2')
   @DocsEditable()
@@ -4142,7 +5234,7 @@
   
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Setter_(unwrap_jso(this), value);
+  set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4159,13 +5251,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoQuadraticAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoQuadraticAbs internalCreatePathSegCurvetoQuadraticAbs() {
+    return new PathSegCurvetoQuadraticAbs._internalWrap();
+  }
+
+  factory PathSegCurvetoQuadraticAbs._internalWrap() {
+    return new PathSegCurvetoQuadraticAbs.internal_();
+  }
+
+  PathSegCurvetoQuadraticAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoQuadraticAbs.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.x1')
   @DocsEditable()
@@ -4173,7 +5277,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y')
   @DocsEditable()
@@ -4181,7 +5285,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y1')
   @DocsEditable()
@@ -4189,7 +5293,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticAbs.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4206,13 +5310,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoQuadraticRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoQuadraticRel internalCreatePathSegCurvetoQuadraticRel() {
+    return new PathSegCurvetoQuadraticRel._internalWrap();
+  }
+
+  factory PathSegCurvetoQuadraticRel._internalWrap() {
+    return new PathSegCurvetoQuadraticRel.internal_();
+  }
+
+  PathSegCurvetoQuadraticRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoQuadraticRel.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoQuadraticRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.x1')
   @DocsEditable()
@@ -4220,7 +5336,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticRel.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Setter_(unwrap_jso(this), value);
+  set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y')
   @DocsEditable()
@@ -4228,7 +5344,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y1')
   @DocsEditable()
@@ -4236,7 +5352,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticRel.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Setter_(unwrap_jso(this), value);
+  set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4253,13 +5369,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoQuadraticSmoothAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoQuadraticSmoothAbs internalCreatePathSegCurvetoQuadraticSmoothAbs() {
+    return new PathSegCurvetoQuadraticSmoothAbs._internalWrap();
+  }
+
+  factory PathSegCurvetoQuadraticSmoothAbs._internalWrap() {
+    return new PathSegCurvetoQuadraticSmoothAbs.internal_();
+  }
+
+  PathSegCurvetoQuadraticSmoothAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y')
   @DocsEditable()
@@ -4267,7 +5395,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4284,13 +5412,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegCurvetoQuadraticSmoothRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegCurvetoQuadraticSmoothRel internalCreatePathSegCurvetoQuadraticSmoothRel() {
+    return new PathSegCurvetoQuadraticSmoothRel._internalWrap();
+  }
+
+  factory PathSegCurvetoQuadraticSmoothRel._internalWrap() {
+    return new PathSegCurvetoQuadraticSmoothRel.internal_();
+  }
+
+  PathSegCurvetoQuadraticSmoothRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y')
   @DocsEditable()
@@ -4298,7 +5438,7 @@
   
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4315,13 +5455,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegLinetoAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegLinetoAbs internalCreatePathSegLinetoAbs() {
+    return new PathSegLinetoAbs._internalWrap();
+  }
+
+  factory PathSegLinetoAbs._internalWrap() {
+    return new PathSegLinetoAbs.internal_();
+  }
+
+  PathSegLinetoAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegLinetoAbs.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegLinetoAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegLinetoAbs.y')
   @DocsEditable()
@@ -4329,7 +5481,7 @@
   
   @DomName('SVGPathSegLinetoAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4346,13 +5498,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegLinetoHorizontalAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegLinetoHorizontalAbs internalCreatePathSegLinetoHorizontalAbs() {
+    return new PathSegLinetoHorizontalAbs._internalWrap();
+  }
+
+  factory PathSegLinetoHorizontalAbs._internalWrap() {
+    return new PathSegLinetoHorizontalAbs.internal_();
+  }
+
+  PathSegLinetoHorizontalAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegLinetoHorizontalAbs.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegLinetoHorizontalAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4369,13 +5533,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegLinetoHorizontalRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegLinetoHorizontalRel internalCreatePathSegLinetoHorizontalRel() {
+    return new PathSegLinetoHorizontalRel._internalWrap();
+  }
+
+  factory PathSegLinetoHorizontalRel._internalWrap() {
+    return new PathSegLinetoHorizontalRel.internal_();
+  }
+
+  PathSegLinetoHorizontalRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegLinetoHorizontalRel.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegLinetoHorizontalRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4392,13 +5568,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegLinetoRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegLinetoRel internalCreatePathSegLinetoRel() {
+    return new PathSegLinetoRel._internalWrap();
+  }
+
+  factory PathSegLinetoRel._internalWrap() {
+    return new PathSegLinetoRel.internal_();
+  }
+
+  PathSegLinetoRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegLinetoRel.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegLinetoRel.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegLinetoRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegLinetoRel.y')
   @DocsEditable()
@@ -4406,7 +5594,7 @@
   
   @DomName('SVGPathSegLinetoRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4423,13 +5611,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegLinetoVerticalAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegLinetoVerticalAbs internalCreatePathSegLinetoVerticalAbs() {
+    return new PathSegLinetoVerticalAbs._internalWrap();
+  }
+
+  factory PathSegLinetoVerticalAbs._internalWrap() {
+    return new PathSegLinetoVerticalAbs.internal_();
+  }
+
+  PathSegLinetoVerticalAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegLinetoVerticalAbs.y')
   @DocsEditable()
   num get y => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegLinetoVerticalAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4446,13 +5646,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegLinetoVerticalRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegLinetoVerticalRel internalCreatePathSegLinetoVerticalRel() {
+    return new PathSegLinetoVerticalRel._internalWrap();
+  }
+
+  factory PathSegLinetoVerticalRel._internalWrap() {
+    return new PathSegLinetoVerticalRel.internal_();
+  }
+
+  PathSegLinetoVerticalRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegLinetoVerticalRel.y')
   @DocsEditable()
   num get y => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegLinetoVerticalRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4465,10 +5677,25 @@
 @DocsEditable()
 @DomName('SVGPathSegList')
 @Unstable()
-class PathSegList extends NativeFieldWrapperClass2 with ListMixin<PathSeg>, ImmutableListMixin<PathSeg> implements List<PathSeg> {
+class PathSegList extends JsoNativeFieldWrapper with ListMixin<PathSeg>, ImmutableListMixin<PathSeg> implements List<PathSeg> {
   // To suppress missing implicit constructor warnings.
   factory PathSegList._() { throw new UnsupportedError("Not supported"); }
 
+  static PathSegList internalCreatePathSegList() {
+    return new PathSegList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PathSegList._internalWrap() {
+    return new PathSegList.internal_();
+  }
+
+  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
@@ -4491,7 +5718,7 @@
   // PathSeg is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -4529,7 +5756,7 @@
   
   @DomName('SVGPathSegList.appendItem')
   @DocsEditable()
-  PathSeg appendItem(PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(newItem));
+  PathSeg appendItem(PathSeg newItem) => wrap_jso(_blink.BlinkSVGPathSegList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
   
   @DomName('SVGPathSegList.clear')
   @DocsEditable()
@@ -4537,23 +5764,23 @@
   
   @DomName('SVGPathSegList.getItem')
   @DocsEditable()
-  PathSeg getItem(int index) => _blink.BlinkSVGPathSegList.instance.getItem_Callback_1_(unwrap_jso(this), index);
+  PathSeg getItem(int index) => wrap_jso(_blink.BlinkSVGPathSegList.instance.getItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGPathSegList.initialize')
   @DocsEditable()
-  PathSeg initialize(PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(newItem));
+  PathSeg initialize(PathSeg newItem) => wrap_jso(_blink.BlinkSVGPathSegList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(newItem)));
   
   @DomName('SVGPathSegList.insertItemBefore')
   @DocsEditable()
-  PathSeg insertItemBefore(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index);
+  PathSeg insertItemBefore(PathSeg newItem, int index) => wrap_jso(_blink.BlinkSVGPathSegList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
   
   @DomName('SVGPathSegList.removeItem')
   @DocsEditable()
-  PathSeg removeItem(int index) => _blink.BlinkSVGPathSegList.instance.removeItem_Callback_1_(unwrap_jso(this), index);
+  PathSeg removeItem(int index) => wrap_jso(_blink.BlinkSVGPathSegList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGPathSegList.replaceItem')
   @DocsEditable()
-  PathSeg replaceItem(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index);
+  PathSeg replaceItem(PathSeg newItem, int index) => wrap_jso(_blink.BlinkSVGPathSegList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(newItem), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4570,13 +5797,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegMovetoAbs._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegMovetoAbs internalCreatePathSegMovetoAbs() {
+    return new PathSegMovetoAbs._internalWrap();
+  }
+
+  factory PathSegMovetoAbs._internalWrap() {
+    return new PathSegMovetoAbs.internal_();
+  }
+
+  PathSegMovetoAbs.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegMovetoAbs.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegMovetoAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegMovetoAbs.y')
   @DocsEditable()
@@ -4584,7 +5823,7 @@
   
   @DomName('SVGPathSegMovetoAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4601,13 +5840,25 @@
   // To suppress missing implicit constructor warnings.
   factory PathSegMovetoRel._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PathSegMovetoRel internalCreatePathSegMovetoRel() {
+    return new PathSegMovetoRel._internalWrap();
+  }
+
+  factory PathSegMovetoRel._internalWrap() {
+    return new PathSegMovetoRel.internal_();
+  }
+
+  PathSegMovetoRel.internal_() : super.internal_();
+
+
   @DomName('SVGPathSegMovetoRel.x')
   @DocsEditable()
   num get x => _blink.BlinkSVGPathSegMovetoRel.instance.x_Getter_(unwrap_jso(this));
   
   @DomName('SVGPathSegMovetoRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPathSegMovetoRel.y')
   @DocsEditable()
@@ -4615,7 +5866,7 @@
   
   @DomName('SVGPathSegMovetoRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4635,6 +5886,18 @@
   @DomName('SVGPatternElement.SVGPatternElement')
   @DocsEditable()
   factory PatternElement() => _SvgElementFactoryProvider.createSvgElement_tag("pattern");
+
+
+  static PatternElement internalCreatePatternElement() {
+    return new PatternElement._internalWrap();
+  }
+
+  factory PatternElement._internalWrap() {
+    return new PatternElement.internal_();
+  }
+
+  PatternElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -4713,13 +5976,28 @@
   // To suppress missing implicit constructor warnings.
   factory Point._() { throw new UnsupportedError("Not supported"); }
 
+  static Point internalCreatePoint() {
+    return new Point._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Point._internalWrap() {
+    return new Point.internal_();
+  }
+
+  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));
   
   @DomName('SVGPoint.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPoint.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGPoint.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPoint.y')
   @DocsEditable()
@@ -4727,11 +6005,11 @@
   
   @DomName('SVGPoint.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPoint.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGPoint.instance.y_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPoint.matrixTransform')
   @DocsEditable()
-  Point matrixTransform(Matrix matrix) => _blink.BlinkSVGPoint.instance.matrixTransform_Callback_1_(unwrap_jso(this), unwrap_jso(matrix));
+  Point matrixTransform(Matrix matrix) => wrap_jso(_blink.BlinkSVGPoint.instance.matrixTransform_Callback_1_(unwrap_jso(this), unwrap_jso(matrix)));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4748,6 +6026,21 @@
   // To suppress missing implicit constructor warnings.
   factory PointList._() { throw new UnsupportedError("Not supported"); }
 
+  static PointList internalCreatePointList() {
+    return new PointList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PointList._internalWrap() {
+    return new PointList.internal_();
+  }
+
+  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
@@ -4764,7 +6057,7 @@
   
   @DomName('SVGPointList.appendItem')
   @DocsEditable()
-  Point appendItem(Point item) => _blink.BlinkSVGPointList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Point appendItem(Point item) => wrap_jso(_blink.BlinkSVGPointList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGPointList.clear')
   @DocsEditable()
@@ -4772,23 +6065,23 @@
   
   @DomName('SVGPointList.getItem')
   @DocsEditable()
-  Point getItem(int index) => _blink.BlinkSVGPointList.instance.getItem_Callback_1_(unwrap_jso(this), index);
+  Point getItem(int index) => wrap_jso(_blink.BlinkSVGPointList.instance.getItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGPointList.initialize')
   @DocsEditable()
-  Point initialize(Point item) => _blink.BlinkSVGPointList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Point initialize(Point item) => wrap_jso(_blink.BlinkSVGPointList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGPointList.insertItemBefore')
   @DocsEditable()
-  Point insertItemBefore(Point item, int index) => _blink.BlinkSVGPointList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Point insertItemBefore(Point item, int index) => wrap_jso(_blink.BlinkSVGPointList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
   @DomName('SVGPointList.removeItem')
   @DocsEditable()
-  Point removeItem(int index) => _blink.BlinkSVGPointList.instance.removeItem_Callback_1_(unwrap_jso(this), index);
+  Point removeItem(int index) => wrap_jso(_blink.BlinkSVGPointList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGPointList.replaceItem')
   @DocsEditable()
-  Point replaceItem(Point item, int index) => _blink.BlinkSVGPointList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Point replaceItem(Point item, int index) => wrap_jso(_blink.BlinkSVGPointList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4808,6 +6101,18 @@
   @DomName('SVGPolygonElement.SVGPolygonElement')
   @DocsEditable()
   factory PolygonElement() => _SvgElementFactoryProvider.createSvgElement_tag("polygon");
+
+
+  static PolygonElement internalCreatePolygonElement() {
+    return new PolygonElement._internalWrap();
+  }
+
+  factory PolygonElement._internalWrap() {
+    return new PolygonElement.internal_();
+  }
+
+  PolygonElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -4841,6 +6146,18 @@
   @DomName('SVGPolylineElement.SVGPolylineElement')
   @DocsEditable()
   factory PolylineElement() => _SvgElementFactoryProvider.createSvgElement_tag("polyline");
+
+
+  static PolylineElement internalCreatePolylineElement() {
+    return new PolylineElement._internalWrap();
+  }
+
+  factory PolylineElement._internalWrap() {
+    return new PolylineElement.internal_();
+  }
+
+  PolylineElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -4871,6 +6188,21 @@
   // To suppress missing implicit constructor warnings.
   factory PreserveAspectRatio._() { throw new UnsupportedError("Not supported"); }
 
+  static PreserveAspectRatio internalCreatePreserveAspectRatio() {
+    return new PreserveAspectRatio._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PreserveAspectRatio._internalWrap() {
+    return new PreserveAspectRatio.internal_();
+  }
+
+  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;
@@ -4933,7 +6265,7 @@
   
   @DomName('SVGPreserveAspectRatio.align')
   @DocsEditable()
-  void set align(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.align_Setter_(unwrap_jso(this), value);
+  set align(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.align_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGPreserveAspectRatio.meetOrSlice')
   @DocsEditable()
@@ -4941,7 +6273,7 @@
   
   @DomName('SVGPreserveAspectRatio.meetOrSlice')
   @DocsEditable()
-  void set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Setter_(unwrap_jso(this), value);
+  set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4961,6 +6293,18 @@
   @DomName('SVGRadialGradientElement.SVGRadialGradientElement')
   @DocsEditable()
   factory RadialGradientElement() => _SvgElementFactoryProvider.createSvgElement_tag("radialGradient");
+
+
+  static RadialGradientElement internalCreateRadialGradientElement() {
+    return new RadialGradientElement._internalWrap();
+  }
+
+  factory RadialGradientElement._internalWrap() {
+    return new RadialGradientElement.internal_();
+  }
+
+  RadialGradientElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -5007,13 +6351,28 @@
   // To suppress missing implicit constructor warnings.
   factory Rect._() { throw new UnsupportedError("Not supported"); }
 
+  static Rect internalCreateRect() {
+    return new Rect._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Rect._internalWrap() {
+    return new Rect.internal_();
+  }
+
+  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));
   
   @DomName('SVGRect.height')
   @DocsEditable()
-  void set height(num value) => _blink.BlinkSVGRect.instance.height_Setter_(unwrap_jso(this), value);
+  set height(num value) => _blink.BlinkSVGRect.instance.height_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGRect.width')
   @DocsEditable()
@@ -5021,7 +6380,7 @@
   
   @DomName('SVGRect.width')
   @DocsEditable()
-  void set width(num value) => _blink.BlinkSVGRect.instance.width_Setter_(unwrap_jso(this), value);
+  set width(num value) => _blink.BlinkSVGRect.instance.width_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGRect.x')
   @DocsEditable()
@@ -5029,7 +6388,7 @@
   
   @DomName('SVGRect.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGRect.instance.x_Setter_(unwrap_jso(this), value);
+  set x(num value) => _blink.BlinkSVGRect.instance.x_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGRect.y')
   @DocsEditable()
@@ -5037,7 +6396,7 @@
   
   @DomName('SVGRect.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGRect.instance.y_Setter_(unwrap_jso(this), value);
+  set y(num value) => _blink.BlinkSVGRect.instance.y_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5057,6 +6416,18 @@
   @DomName('SVGRectElement.SVGRectElement')
   @DocsEditable()
   factory RectElement() => _SvgElementFactoryProvider.createSvgElement_tag("rect");
+
+
+  static RectElement internalCreateRectElement() {
+    return new RectElement._internalWrap();
+  }
+
+  factory RectElement._internalWrap() {
+    return new RectElement.internal_();
+  }
+
+  RectElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -5103,6 +6474,21 @@
   // To suppress missing implicit constructor warnings.
   factory RenderingIntent._() { throw new UnsupportedError("Not supported"); }
 
+  static RenderingIntent internalCreateRenderingIntent() {
+    return new RenderingIntent._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory RenderingIntent._internalWrap() {
+    return new RenderingIntent.internal_();
+  }
+
+  RenderingIntent.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('SVGRenderingIntent.RENDERING_INTENT_ABSOLUTE_COLORIMETRIC')
   @DocsEditable()
   static const int RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5;
@@ -5145,6 +6531,18 @@
   @DomName('SVGScriptElement.SVGScriptElement')
   @DocsEditable()
   factory ScriptElement() => _SvgElementFactoryProvider.createSvgElement_tag("script");
+
+
+  static ScriptElement internalCreateScriptElement() {
+    return new ScriptElement._internalWrap();
+  }
+
+  factory ScriptElement._internalWrap() {
+    return new ScriptElement.internal_();
+  }
+
+  ScriptElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -5158,7 +6556,7 @@
   
   @DomName('SVGScriptElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkSVGScriptElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkSVGScriptElement.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGScriptElement.href')
   @DocsEditable()
@@ -5185,6 +6583,18 @@
   @DomName('SVGSetElement.SVGSetElement')
   @DocsEditable()
   factory SetElement() => _SvgElementFactoryProvider.createSvgElement_tag("set");
+
+
+  static SetElement internalCreateSetElement() {
+    return new SetElement._internalWrap();
+  }
+
+  factory SetElement._internalWrap() {
+    return new SetElement.internal_();
+  }
+
+  SetElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -5213,6 +6623,18 @@
   @DomName('SVGStopElement.SVGStopElement')
   @DocsEditable()
   factory StopElement() => _SvgElementFactoryProvider.createSvgElement_tag("stop");
+
+
+  static StopElement internalCreateStopElement() {
+    return new StopElement._internalWrap();
+  }
+
+  factory StopElement._internalWrap() {
+    return new StopElement.internal_();
+  }
+
+  StopElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -5235,10 +6657,25 @@
 @DocsEditable()
 @DomName('SVGStringList')
 @Unstable()
-class StringList extends NativeFieldWrapperClass2 with ListMixin<String>, ImmutableListMixin<String> implements List<String> {
+class StringList extends JsoNativeFieldWrapper with ListMixin<String>, ImmutableListMixin<String> implements List<String> {
   // To suppress missing implicit constructor warnings.
   factory StringList._() { throw new UnsupportedError("Not supported"); }
 
+  static StringList internalCreateStringList() {
+    return new StringList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory StringList._internalWrap() {
+    return new StringList.internal_();
+  }
+
+  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
@@ -5261,7 +6698,7 @@
   // String is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -5344,6 +6781,18 @@
   @DomName('SVGStyleElement.SVGStyleElement')
   @DocsEditable()
   factory StyleElement() => _SvgElementFactoryProvider.createSvgElement_tag("style");
+
+
+  static StyleElement internalCreateStyleElement() {
+    return new StyleElement._internalWrap();
+  }
+
+  factory StyleElement._internalWrap() {
+    return new StyleElement.internal_();
+  }
+
+  StyleElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -5357,7 +6806,7 @@
   
   @DomName('SVGStyleElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkSVGStyleElement.instance.disabled_Setter_(unwrap_jso(this), value);
+  set disabled(bool value) => _blink.BlinkSVGStyleElement.instance.disabled_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGStyleElement.media')
   @DocsEditable()
@@ -5365,7 +6814,7 @@
   
   @DomName('SVGStyleElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkSVGStyleElement.instance.media_Setter_(unwrap_jso(this), value);
+  set media(String value) => _blink.BlinkSVGStyleElement.instance.media_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGStyleElement.sheet')
   @DocsEditable()
@@ -5378,7 +6827,7 @@
   
   @DomName('SVGStyleElement.title')
   @DocsEditable()
-  void set title(String value) => _blink.BlinkSVGStyleElement.instance.title_Setter_(unwrap_jso(this), value);
+  set title(String value) => _blink.BlinkSVGStyleElement.instance.title_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGStyleElement.type')
   @DocsEditable()
@@ -5386,7 +6835,7 @@
   
   @DomName('SVGStyleElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkSVGStyleElement.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkSVGStyleElement.instance.type_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
@@ -5450,7 +6899,7 @@
 
   List<Element> get children => new FilteredElementList(this);
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     final children = this.children;
     children.clear();
     children.addAll(value);
@@ -5470,7 +6919,7 @@
     return container.innerHtml;
   }
 
-  void set innerHtml(String value) {
+  set innerHtml(String value) {
     this.setInnerHtml(value);
   }
 
@@ -5535,6 +6984,20 @@
     var e = new SvgElement.tag(tag);
     return e is SvgElement && !(e is UnknownElement);
   }
+
+  set _svgClassName(AnimatedString value) =>
+      _blink.BlinkSVGElement.instance.className_Setter_(unwrap_jso(this), unwrap_jso(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"); }
 
@@ -5797,6 +7260,18 @@
   @DocsEditable()
   @Experimental() // untriaged
   static const EventStreamProvider<Event> waitingEvent = const EventStreamProvider<Event>('waiting');
+
+
+  static SvgElement internalCreateSvgElement() {
+    return new SvgElement._internalWrap();
+  }
+
+  factory SvgElement._internalWrap() {
+    return new SvgElement.internal_();
+  }
+
+  SvgElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -5826,7 +7301,7 @@
   @DomName('SVGElement.tabIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  void set tabIndex(int value) => _blink.BlinkSVGElement.instance.tabIndex_Setter_(unwrap_jso(this), value);
+  set tabIndex(int value) => _blink.BlinkSVGElement.instance.tabIndex_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGElement.viewportElement')
   @DocsEditable()
@@ -5838,7 +7313,7 @@
   
   @DomName('SVGElement.xmlbase')
   @DocsEditable()
-  void set xmlbase(String value) => _blink.BlinkSVGElement.instance.xmlbase_Setter_(unwrap_jso(this), value);
+  set xmlbase(String value) => _blink.BlinkSVGElement.instance.xmlbase_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGElement.xmllang')
   @DocsEditable()
@@ -5848,7 +7323,7 @@
   @DomName('SVGElement.xmllang')
   @DocsEditable()
   @Experimental() // untriaged
-  void set xmllang(String value) => _blink.BlinkSVGElement.instance.xmllang_Setter_(unwrap_jso(this), value);
+  set xmllang(String value) => _blink.BlinkSVGElement.instance.xmllang_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGElement.xmlspace')
   @DocsEditable()
@@ -5858,7 +7333,7 @@
   @DomName('SVGElement.xmlspace')
   @DocsEditable()
   @Experimental() // untriaged
-  void set xmlspace(String value) => _blink.BlinkSVGElement.instance.xmlspace_Setter_(unwrap_jso(this), value);
+  set xmlspace(String value) => _blink.BlinkSVGElement.instance.xmlspace_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGElement.onabort')
   @DocsEditable()
@@ -6138,6 +7613,18 @@
 
   // To suppress missing implicit constructor warnings.
   factory SvgSvgElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static SvgSvgElement internalCreateSvgSvgElement() {
+    return new SvgSvgElement._internalWrap();
+  }
+
+  factory SvgSvgElement._internalWrap() {
+    return new SvgSvgElement.internal_();
+  }
+
+  SvgSvgElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6151,7 +7638,7 @@
   
   @DomName('SVGSVGElement.currentScale')
   @DocsEditable()
-  void set currentScale(num value) => _blink.BlinkSVGSVGElement.instance.currentScale_Setter_(unwrap_jso(this), value);
+  set currentScale(num value) => _blink.BlinkSVGSVGElement.instance.currentScale_Setter_(unwrap_jso(this), value);
   
   @DomName('SVGSVGElement.currentTranslate')
   @DocsEditable()
@@ -6167,19 +7654,19 @@
   
   @DomName('SVGSVGElement.pixelUnitToMillimeterX')
   @DocsEditable()
-  double get pixelUnitToMillimeterX => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterX_Getter_(unwrap_jso(this));
+  num get pixelUnitToMillimeterX => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterX_Getter_(unwrap_jso(this));
   
   @DomName('SVGSVGElement.pixelUnitToMillimeterY')
   @DocsEditable()
-  double get pixelUnitToMillimeterY => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterY_Getter_(unwrap_jso(this));
+  num get pixelUnitToMillimeterY => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterY_Getter_(unwrap_jso(this));
   
   @DomName('SVGSVGElement.screenPixelToMillimeterX')
   @DocsEditable()
-  double get screenPixelToMillimeterX => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterX_Getter_(unwrap_jso(this));
+  num get screenPixelToMillimeterX => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterX_Getter_(unwrap_jso(this));
   
   @DomName('SVGSVGElement.screenPixelToMillimeterY')
   @DocsEditable()
-  double get screenPixelToMillimeterY => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterY_Getter_(unwrap_jso(this));
+  num get screenPixelToMillimeterY => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterY_Getter_(unwrap_jso(this));
   
   @DomName('SVGSVGElement.useCurrentView')
   @DocsEditable()
@@ -6215,23 +7702,23 @@
   
   @DomName('SVGSVGElement.createSVGAngle')
   @DocsEditable()
-  Angle createSvgAngle() => _blink.BlinkSVGSVGElement.instance.createSVGAngle_Callback_0_(unwrap_jso(this));
+  Angle createSvgAngle() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGAngle_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGSVGElement.createSVGLength')
   @DocsEditable()
-  Length createSvgLength() => _blink.BlinkSVGSVGElement.instance.createSVGLength_Callback_0_(unwrap_jso(this));
+  Length createSvgLength() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGLength_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGSVGElement.createSVGMatrix')
   @DocsEditable()
-  Matrix createSvgMatrix() => _blink.BlinkSVGSVGElement.instance.createSVGMatrix_Callback_0_(unwrap_jso(this));
+  Matrix createSvgMatrix() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGMatrix_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGSVGElement.createSVGNumber')
   @DocsEditable()
-  Number createSvgNumber() => _blink.BlinkSVGSVGElement.instance.createSVGNumber_Callback_0_(unwrap_jso(this));
+  Number createSvgNumber() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGNumber_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGSVGElement.createSVGPoint')
   @DocsEditable()
-  Point createSvgPoint() => _blink.BlinkSVGSVGElement.instance.createSVGPoint_Callback_0_(unwrap_jso(this));
+  Point createSvgPoint() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGPoint_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGSVGElement.createSVGRect')
   @DocsEditable()
@@ -6239,11 +7726,11 @@
   
   @DomName('SVGSVGElement.createSVGTransform')
   @DocsEditable()
-  Transform createSvgTransform() => _blink.BlinkSVGSVGElement.instance.createSVGTransform_Callback_0_(unwrap_jso(this));
+  Transform createSvgTransform() => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGTransform_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGSVGElement.createSVGTransformFromMatrix')
   @DocsEditable()
-  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGSVGElement.instance.createSVGTransformFromMatrix_Callback_1_(unwrap_jso(this), unwrap_jso(matrix));
+  Transform createSvgTransformFromMatrix(Matrix matrix) => wrap_jso(_blink.BlinkSVGSVGElement.instance.createSVGTransformFromMatrix_Callback_1_(unwrap_jso(this), unwrap_jso(matrix)));
   
   @DomName('SVGSVGElement.deselectAll')
   @DocsEditable()
@@ -6255,7 +7742,7 @@
   
   @DomName('SVGSVGElement.getCurrentTime')
   @DocsEditable()
-  double getCurrentTime() => _blink.BlinkSVGSVGElement.instance.getCurrentTime_Callback_0_(unwrap_jso(this));
+  num getCurrentTime() => _blink.BlinkSVGSVGElement.instance.getCurrentTime_Callback_0_(unwrap_jso(this));
   
   @DomName('SVGSVGElement.getElementById')
   @DocsEditable()
@@ -6263,11 +7750,11 @@
   
   @DomName('SVGSVGElement.getEnclosureList')
   @DocsEditable()
-  List<Node> getEnclosureList(Rect rect, SvgElement referenceElement) => wrap_jso_list(_blink.BlinkSVGSVGElement.instance.getEnclosureList_Callback_2_(unwrap_jso(this), unwrap_jso(rect), unwrap_jso(referenceElement)));
+  List<Node> getEnclosureList(Rect rect, SvgElement referenceElement) => wrap_jso(_blink.BlinkSVGSVGElement.instance.getEnclosureList_Callback_2_(unwrap_jso(this), unwrap_jso(rect), unwrap_jso(referenceElement)));
   
   @DomName('SVGSVGElement.getIntersectionList')
   @DocsEditable()
-  List<Node> getIntersectionList(Rect rect, SvgElement referenceElement) => wrap_jso_list(_blink.BlinkSVGSVGElement.instance.getIntersectionList_Callback_2_(unwrap_jso(this), unwrap_jso(rect), unwrap_jso(referenceElement)));
+  List<Node> getIntersectionList(Rect rect, SvgElement referenceElement) => wrap_jso(_blink.BlinkSVGSVGElement.instance.getIntersectionList_Callback_2_(unwrap_jso(this), unwrap_jso(rect), unwrap_jso(referenceElement)));
   
   @DomName('SVGSVGElement.pauseAnimations')
   @DocsEditable()
@@ -6307,7 +7794,7 @@
   
   @DomName('SVGSVGElement.zoomAndPan')
   @DocsEditable()
-  void set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
+  set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6327,6 +7814,18 @@
   @DomName('SVGSwitchElement.SVGSwitchElement')
   @DocsEditable()
   factory SwitchElement() => _SvgElementFactoryProvider.createSvgElement_tag("switch");
+
+
+  static SwitchElement internalCreateSwitchElement() {
+    return new SwitchElement._internalWrap();
+  }
+
+  factory SwitchElement._internalWrap() {
+    return new SwitchElement.internal_();
+  }
+
+  SwitchElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6352,6 +7851,18 @@
   @DomName('SVGSymbolElement.SVGSymbolElement')
   @DocsEditable()
   factory SymbolElement() => _SvgElementFactoryProvider.createSvgElement_tag("symbol");
+
+
+  static SymbolElement internalCreateSymbolElement() {
+    return new SymbolElement._internalWrap();
+  }
+
+  factory SymbolElement._internalWrap() {
+    return new SymbolElement.internal_();
+  }
+
+  SymbolElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6385,6 +7896,18 @@
   @DomName('SVGTSpanElement.SVGTSpanElement')
   @DocsEditable()
   factory TSpanElement() => _SvgElementFactoryProvider.createSvgElement_tag("tspan");
+
+
+  static TSpanElement internalCreateTSpanElement() {
+    return new TSpanElement._internalWrap();
+  }
+
+  factory TSpanElement._internalWrap() {
+    return new TSpanElement.internal_();
+  }
+
+  TSpanElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6437,6 +7960,18 @@
 class TextContentElement extends GraphicsElement {
   // To suppress missing implicit constructor warnings.
   factory TextContentElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static TextContentElement internalCreateTextContentElement() {
+    return new TextContentElement._internalWrap();
+  }
+
+  factory TextContentElement._internalWrap() {
+    return new TextContentElement.internal_();
+  }
+
+  TextContentElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6470,11 +8005,11 @@
   
   @DomName('SVGTextContentElement.getComputedTextLength')
   @DocsEditable()
-  double getComputedTextLength() => _blink.BlinkSVGTextContentElement.instance.getComputedTextLength_Callback_0_(unwrap_jso(this));
+  num getComputedTextLength() => _blink.BlinkSVGTextContentElement.instance.getComputedTextLength_Callback_0_(unwrap_jso(this));
   
   @DomName('SVGTextContentElement.getEndPositionOfChar')
   @DocsEditable()
-  Point getEndPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getEndPositionOfChar_Callback_1_(unwrap_jso(this), offset);
+  Point getEndPositionOfChar(int offset) => wrap_jso(_blink.BlinkSVGTextContentElement.instance.getEndPositionOfChar_Callback_1_(unwrap_jso(this), offset));
   
   @DomName('SVGTextContentElement.getExtentOfChar')
   @DocsEditable()
@@ -6486,15 +8021,15 @@
   
   @DomName('SVGTextContentElement.getRotationOfChar')
   @DocsEditable()
-  double getRotationOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getRotationOfChar_Callback_1_(unwrap_jso(this), offset);
+  num getRotationOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getRotationOfChar_Callback_1_(unwrap_jso(this), offset);
   
   @DomName('SVGTextContentElement.getStartPositionOfChar')
   @DocsEditable()
-  Point getStartPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getStartPositionOfChar_Callback_1_(unwrap_jso(this), offset);
+  Point getStartPositionOfChar(int offset) => wrap_jso(_blink.BlinkSVGTextContentElement.instance.getStartPositionOfChar_Callback_1_(unwrap_jso(this), offset));
   
   @DomName('SVGTextContentElement.getSubStringLength')
   @DocsEditable()
-  double getSubStringLength(int offset, int length) => _blink.BlinkSVGTextContentElement.instance.getSubStringLength_Callback_2_(unwrap_jso(this), offset, length);
+  num getSubStringLength(int offset, int length) => _blink.BlinkSVGTextContentElement.instance.getSubStringLength_Callback_2_(unwrap_jso(this), offset, length);
   
   @DomName('SVGTextContentElement.selectSubString')
   @DocsEditable()
@@ -6518,6 +8053,18 @@
   @DomName('SVGTextElement.SVGTextElement')
   @DocsEditable()
   factory TextElement() => _SvgElementFactoryProvider.createSvgElement_tag("text");
+
+
+  static TextElement internalCreateTextElement() {
+    return new TextElement._internalWrap();
+  }
+
+  factory TextElement._internalWrap() {
+    return new TextElement.internal_();
+  }
+
+  TextElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6539,6 +8086,18 @@
 class TextPathElement extends TextContentElement implements UriReference {
   // To suppress missing implicit constructor warnings.
   factory TextPathElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static TextPathElement internalCreateTextPathElement() {
+    return new TextPathElement._internalWrap();
+  }
+
+  factory TextPathElement._internalWrap() {
+    return new TextPathElement.internal_();
+  }
+
+  TextPathElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6600,6 +8159,18 @@
 class TextPositioningElement extends TextContentElement {
   // To suppress missing implicit constructor warnings.
   factory TextPositioningElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static TextPositioningElement internalCreateTextPositioningElement() {
+    return new TextPositioningElement._internalWrap();
+  }
+
+  factory TextPositioningElement._internalWrap() {
+    return new TextPositioningElement.internal_();
+  }
+
+  TextPositioningElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6645,6 +8216,18 @@
   @DomName('SVGTitleElement.SVGTitleElement')
   @DocsEditable()
   factory TitleElement() => _SvgElementFactoryProvider.createSvgElement_tag("title");
+
+
+  static TitleElement internalCreateTitleElement() {
+    return new TitleElement._internalWrap();
+  }
+
+  factory TitleElement._internalWrap() {
+    return new TitleElement.internal_();
+  }
+
+  TitleElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6667,6 +8250,21 @@
   // To suppress missing implicit constructor warnings.
   factory Transform._() { throw new UnsupportedError("Not supported"); }
 
+  static Transform internalCreateTransform() {
+    return new Transform._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Transform._internalWrap() {
+    return new Transform.internal_();
+  }
+
+  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;
@@ -6697,7 +8295,7 @@
 
   @DomName('SVGTransform.angle')
   @DocsEditable()
-  double get angle => _blink.BlinkSVGTransform.instance.angle_Getter_(unwrap_jso(this));
+  num get angle => _blink.BlinkSVGTransform.instance.angle_Getter_(unwrap_jso(this));
   
   @DomName('SVGTransform.matrix')
   @DocsEditable()
@@ -6742,10 +8340,25 @@
 @DocsEditable()
 @DomName('SVGTransformList')
 @Unstable()
-class TransformList extends NativeFieldWrapperClass2 with ListMixin<Transform>, ImmutableListMixin<Transform> implements List<Transform> {
+class TransformList extends JsoNativeFieldWrapper with ListMixin<Transform>, ImmutableListMixin<Transform> implements List<Transform> {
   // To suppress missing implicit constructor warnings.
   factory TransformList._() { throw new UnsupportedError("Not supported"); }
 
+  static TransformList internalCreateTransformList() {
+    return new TransformList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory TransformList._internalWrap() {
+    return new TransformList.internal_();
+  }
+
+  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
@@ -6768,7 +8381,7 @@
   // Transform is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -6806,7 +8419,7 @@
   
   @DomName('SVGTransformList.appendItem')
   @DocsEditable()
-  Transform appendItem(Transform item) => _blink.BlinkSVGTransformList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Transform appendItem(Transform item) => wrap_jso(_blink.BlinkSVGTransformList.instance.appendItem_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGTransformList.clear')
   @DocsEditable()
@@ -6814,31 +8427,31 @@
   
   @DomName('SVGTransformList.consolidate')
   @DocsEditable()
-  Transform consolidate() => _blink.BlinkSVGTransformList.instance.consolidate_Callback_0_(unwrap_jso(this));
+  Transform consolidate() => wrap_jso(_blink.BlinkSVGTransformList.instance.consolidate_Callback_0_(unwrap_jso(this)));
   
   @DomName('SVGTransformList.createSVGTransformFromMatrix')
   @DocsEditable()
-  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGTransformList.instance.createSVGTransformFromMatrix_Callback_1_(unwrap_jso(this), unwrap_jso(matrix));
+  Transform createSvgTransformFromMatrix(Matrix matrix) => wrap_jso(_blink.BlinkSVGTransformList.instance.createSVGTransformFromMatrix_Callback_1_(unwrap_jso(this), unwrap_jso(matrix)));
   
   @DomName('SVGTransformList.getItem')
   @DocsEditable()
-  Transform getItem(int index) => _blink.BlinkSVGTransformList.instance.getItem_Callback_1_(unwrap_jso(this), index);
+  Transform getItem(int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.getItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGTransformList.initialize')
   @DocsEditable()
-  Transform initialize(Transform item) => _blink.BlinkSVGTransformList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item));
+  Transform initialize(Transform item) => wrap_jso(_blink.BlinkSVGTransformList.instance.initialize_Callback_1_(unwrap_jso(this), unwrap_jso(item)));
   
   @DomName('SVGTransformList.insertItemBefore')
   @DocsEditable()
-  Transform insertItemBefore(Transform item, int index) => _blink.BlinkSVGTransformList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Transform insertItemBefore(Transform item, int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.insertItemBefore_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
   @DomName('SVGTransformList.removeItem')
   @DocsEditable()
-  Transform removeItem(int index) => _blink.BlinkSVGTransformList.instance.removeItem_Callback_1_(unwrap_jso(this), index);
+  Transform removeItem(int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.removeItem_Callback_1_(unwrap_jso(this), index));
   
   @DomName('SVGTransformList.replaceItem')
   @DocsEditable()
-  Transform replaceItem(Transform item, int index) => _blink.BlinkSVGTransformList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index);
+  Transform replaceItem(Transform item, int index) => wrap_jso(_blink.BlinkSVGTransformList.instance.replaceItem_Callback_2_(unwrap_jso(this), unwrap_jso(item), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6855,6 +8468,21 @@
   // To suppress missing implicit constructor warnings.
   factory UnitTypes._() { throw new UnsupportedError("Not supported"); }
 
+  static UnitTypes internalCreateUnitTypes() {
+    return new UnitTypes._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory UnitTypes._internalWrap() {
+    return new UnitTypes.internal_();
+  }
+
+  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;
@@ -6904,6 +8532,18 @@
   @DomName('SVGUseElement.SVGUseElement')
   @DocsEditable()
   factory UseElement() => _SvgElementFactoryProvider.createSvgElement_tag("use");
+
+
+  static UseElement internalCreateUseElement() {
+    return new UseElement._internalWrap();
+  }
+
+  factory UseElement._internalWrap() {
+    return new UseElement.internal_();
+  }
+
+  UseElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6949,6 +8589,18 @@
   @DomName('SVGViewElement.SVGViewElement')
   @DocsEditable()
   factory ViewElement() => _SvgElementFactoryProvider.createSvgElement_tag("view");
+
+
+  static ViewElement internalCreateViewElement() {
+    return new ViewElement._internalWrap();
+  }
+
+  factory ViewElement._internalWrap() {
+    return new ViewElement.internal_();
+  }
+
+  ViewElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -6974,7 +8626,7 @@
   
   @DomName('SVGViewElement.zoomAndPan')
   @DocsEditable()
-  void set zoomAndPan(int value) => _blink.BlinkSVGViewElement.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
+  set zoomAndPan(int value) => _blink.BlinkSVGViewElement.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6991,6 +8643,21 @@
   // To suppress missing implicit constructor warnings.
   factory ViewSpec._() { throw new UnsupportedError("Not supported"); }
 
+  static ViewSpec internalCreateViewSpec() {
+    return new ViewSpec._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ViewSpec._internalWrap() {
+    return new ViewSpec.internal_();
+  }
+
+  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));
@@ -7033,7 +8700,7 @@
   @DomName('SVGViewSpec.zoomAndPan')
   @DocsEditable()
   @Experimental() // nonstandard
-  void set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
+  set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7068,7 +8735,7 @@
 
   @DomName('SVGZoomAndPan.zoomAndPan')
   @DocsEditable()
-  void set zoomAndPan(int value);
+  set zoomAndPan(int value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7085,9 +8752,21 @@
   // To suppress missing implicit constructor warnings.
   factory ZoomEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ZoomEvent internalCreateZoomEvent() {
+    return new ZoomEvent._internalWrap();
+  }
+
+  factory ZoomEvent._internalWrap() {
+    return new ZoomEvent.internal_();
+  }
+
+  ZoomEvent.internal_() : super.internal_();
+
+
   @DomName('SVGZoomEvent.newScale')
   @DocsEditable()
-  double get newScale => _blink.BlinkSVGZoomEvent.instance.newScale_Getter_(unwrap_jso(this));
+  num get newScale => _blink.BlinkSVGZoomEvent.instance.newScale_Getter_(unwrap_jso(this));
   
   @DomName('SVGZoomEvent.newTranslate')
   @DocsEditable()
@@ -7095,7 +8774,7 @@
   
   @DomName('SVGZoomEvent.previousScale')
   @DocsEditable()
-  double get previousScale => _blink.BlinkSVGZoomEvent.instance.previousScale_Getter_(unwrap_jso(this));
+  num get previousScale => _blink.BlinkSVGZoomEvent.instance.previousScale_Getter_(unwrap_jso(this));
   
   @DomName('SVGZoomEvent.previousTranslate')
   @DocsEditable()
@@ -7119,6 +8798,18 @@
 class _GradientElement extends SvgElement implements UriReference {
   // To suppress missing implicit constructor warnings.
   factory _GradientElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _GradientElement internalCreate_GradientElement() {
+    return new _GradientElement._internalWrap();
+  }
+
+  factory _GradientElement._internalWrap() {
+    return new _GradientElement.internal_();
+  }
+
+  _GradientElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7169,9 +8860,21 @@
 @DocsEditable()
 @DomName('SVGAltGlyphDefElement')
 @Unstable()
-abstract class _SVGAltGlyphDefElement extends SvgElement {
+class _SVGAltGlyphDefElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGAltGlyphDefElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGAltGlyphDefElement internalCreate_SVGAltGlyphDefElement() {
+    return new _SVGAltGlyphDefElement._internalWrap();
+  }
+
+  factory _SVGAltGlyphDefElement._internalWrap() {
+    return new _SVGAltGlyphDefElement.internal_();
+  }
+
+  _SVGAltGlyphDefElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7190,9 +8893,21 @@
 @DocsEditable()
 @DomName('SVGAltGlyphItemElement')
 @Unstable()
-abstract class _SVGAltGlyphItemElement extends SvgElement {
+class _SVGAltGlyphItemElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGAltGlyphItemElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGAltGlyphItemElement internalCreate_SVGAltGlyphItemElement() {
+    return new _SVGAltGlyphItemElement._internalWrap();
+  }
+
+  factory _SVGAltGlyphItemElement._internalWrap() {
+    return new _SVGAltGlyphItemElement.internal_();
+  }
+
+  _SVGAltGlyphItemElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7211,9 +8926,21 @@
 @DocsEditable()
 @DomName('SVGComponentTransferFunctionElement')
 @Unstable()
-abstract class _SVGComponentTransferFunctionElement extends SvgElement {
+class _SVGComponentTransferFunctionElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGComponentTransferFunctionElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGComponentTransferFunctionElement internalCreate_SVGComponentTransferFunctionElement() {
+    return new _SVGComponentTransferFunctionElement._internalWrap();
+  }
+
+  factory _SVGComponentTransferFunctionElement._internalWrap() {
+    return new _SVGComponentTransferFunctionElement.internal_();
+  }
+
+  _SVGComponentTransferFunctionElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7226,19 +8953,29 @@
 // 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.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('SVGCursorElement')
 @Unstable()
-abstract class _SVGCursorElement extends SvgElement implements UriReference, Tests {
+class _SVGCursorElement extends SvgElement implements UriReference, Tests {
   // To suppress missing implicit constructor warnings.
   factory _SVGCursorElement._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('SVGCursorElement.SVGCursorElement')
   @DocsEditable()
   factory _SVGCursorElement() => _SvgElementFactoryProvider.createSvgElement_tag("cursor");
+
+
+  static _SVGCursorElement internalCreate_SVGCursorElement() {
+    return new _SVGCursorElement._internalWrap();
+  }
+
+  factory _SVGCursorElement._internalWrap() {
+    return new _SVGCursorElement.internal_();
+  }
+
+  _SVGCursorElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7249,20 +8986,37 @@
   /// Checks if this type is supported on the current platform.
   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);
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('SVGFEDropShadowElement')
 @Experimental() // nonstandard
-abstract class _SVGFEDropShadowElement extends SvgElement implements FilterPrimitiveStandardAttributes {
+class _SVGFEDropShadowElement extends SvgElement implements FilterPrimitiveStandardAttributes {
   // To suppress missing implicit constructor warnings.
   factory _SVGFEDropShadowElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGFEDropShadowElement internalCreate_SVGFEDropShadowElement() {
+    return new _SVGFEDropShadowElement._internalWrap();
+  }
+
+  factory _SVGFEDropShadowElement._internalWrap() {
+    return new _SVGFEDropShadowElement.internal_();
+  }
+
+  _SVGFEDropShadowElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7270,7 +9024,14 @@
    */
   _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)));
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -7281,9 +9042,21 @@
 @DocsEditable()
 @DomName('SVGFontElement')
 @Unstable()
-abstract class _SVGFontElement extends SvgElement {
+class _SVGFontElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGFontElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGFontElement internalCreate_SVGFontElement() {
+    return new _SVGFontElement._internalWrap();
+  }
+
+  factory _SVGFontElement._internalWrap() {
+    return new _SVGFontElement.internal_();
+  }
+
+  _SVGFontElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7302,9 +9075,21 @@
 @DocsEditable()
 @DomName('SVGFontFaceElement')
 @Unstable()
-abstract class _SVGFontFaceElement extends SvgElement {
+class _SVGFontFaceElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGFontFaceElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGFontFaceElement internalCreate_SVGFontFaceElement() {
+    return new _SVGFontFaceElement._internalWrap();
+  }
+
+  factory _SVGFontFaceElement._internalWrap() {
+    return new _SVGFontFaceElement.internal_();
+  }
+
+  _SVGFontFaceElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7323,9 +9108,21 @@
 @DocsEditable()
 @DomName('SVGFontFaceFormatElement')
 @Unstable()
-abstract class _SVGFontFaceFormatElement extends SvgElement {
+class _SVGFontFaceFormatElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGFontFaceFormatElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGFontFaceFormatElement internalCreate_SVGFontFaceFormatElement() {
+    return new _SVGFontFaceFormatElement._internalWrap();
+  }
+
+  factory _SVGFontFaceFormatElement._internalWrap() {
+    return new _SVGFontFaceFormatElement.internal_();
+  }
+
+  _SVGFontFaceFormatElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7344,9 +9141,21 @@
 @DocsEditable()
 @DomName('SVGFontFaceNameElement')
 @Unstable()
-abstract class _SVGFontFaceNameElement extends SvgElement {
+class _SVGFontFaceNameElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGFontFaceNameElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGFontFaceNameElement internalCreate_SVGFontFaceNameElement() {
+    return new _SVGFontFaceNameElement._internalWrap();
+  }
+
+  factory _SVGFontFaceNameElement._internalWrap() {
+    return new _SVGFontFaceNameElement.internal_();
+  }
+
+  _SVGFontFaceNameElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7365,9 +9174,21 @@
 @DocsEditable()
 @DomName('SVGFontFaceSrcElement')
 @Unstable()
-abstract class _SVGFontFaceSrcElement extends SvgElement {
+class _SVGFontFaceSrcElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGFontFaceSrcElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGFontFaceSrcElement internalCreate_SVGFontFaceSrcElement() {
+    return new _SVGFontFaceSrcElement._internalWrap();
+  }
+
+  factory _SVGFontFaceSrcElement._internalWrap() {
+    return new _SVGFontFaceSrcElement.internal_();
+  }
+
+  _SVGFontFaceSrcElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7386,9 +9207,21 @@
 @DocsEditable()
 @DomName('SVGFontFaceUriElement')
 @Unstable()
-abstract class _SVGFontFaceUriElement extends SvgElement {
+class _SVGFontFaceUriElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGFontFaceUriElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGFontFaceUriElement internalCreate_SVGFontFaceUriElement() {
+    return new _SVGFontFaceUriElement._internalWrap();
+  }
+
+  factory _SVGFontFaceUriElement._internalWrap() {
+    return new _SVGFontFaceUriElement.internal_();
+  }
+
+  _SVGFontFaceUriElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7407,13 +9240,25 @@
 @DocsEditable()
 @DomName('SVGGlyphElement')
 @Unstable()
-abstract class _SVGGlyphElement extends SvgElement {
+class _SVGGlyphElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGGlyphElement._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('SVGGlyphElement.SVGGlyphElement')
   @DocsEditable()
   factory _SVGGlyphElement() => _SvgElementFactoryProvider.createSvgElement_tag("glyph");
+
+
+  static _SVGGlyphElement internalCreate_SVGGlyphElement() {
+    return new _SVGGlyphElement._internalWrap();
+  }
+
+  factory _SVGGlyphElement._internalWrap() {
+    return new _SVGGlyphElement.internal_();
+  }
+
+  _SVGGlyphElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7426,15 +9271,25 @@
 // 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.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('SVGGlyphRefElement')
 @Unstable()
-abstract class _SVGGlyphRefElement extends SvgElement implements UriReference {
+class _SVGGlyphRefElement extends SvgElement implements UriReference {
   // To suppress missing implicit constructor warnings.
   factory _SVGGlyphRefElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGGlyphRefElement internalCreate_SVGGlyphRefElement() {
+    return new _SVGGlyphRefElement._internalWrap();
+  }
+
+  factory _SVGGlyphRefElement._internalWrap() {
+    return new _SVGGlyphRefElement.internal_();
+  }
+
+  _SVGGlyphRefElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7442,7 +9297,10 @@
    */
   _SVGGlyphRefElement.created() : super.created();
 
+  // Override these methods for Dartium _SVGGlyphRefElement can't be abstract.
+  AnimatedString get href => wrap_jso(_blink.BlinkSVGGlyphRefElement.instance.href_Getter_(unwrap_jso(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
 // BSD-style license that can be found in the LICENSE file.
@@ -7453,13 +9311,25 @@
 @DocsEditable()
 @DomName('SVGHKernElement')
 @Unstable()
-abstract class _SVGHKernElement extends SvgElement {
+class _SVGHKernElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGHKernElement._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('SVGHKernElement.SVGHKernElement')
   @DocsEditable()
   factory _SVGHKernElement() => _SvgElementFactoryProvider.createSvgElement_tag("hkern");
+
+
+  static _SVGHKernElement internalCreate_SVGHKernElement() {
+    return new _SVGHKernElement._internalWrap();
+  }
+
+  factory _SVGHKernElement._internalWrap() {
+    return new _SVGHKernElement.internal_();
+  }
+
+  _SVGHKernElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7472,18 +9342,28 @@
 // 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.
 
-// WARNING: Do not edit - generated code.
-
 
 @DocsEditable()
 @DomName('SVGMPathElement')
-abstract class _SVGMPathElement extends SvgElement implements UriReference {
+class _SVGMPathElement extends SvgElement implements UriReference {
   // To suppress missing implicit constructor warnings.
   factory _SVGMPathElement._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('SVGMPathElement.SVGMPathElement')
   @DocsEditable()
   factory _SVGMPathElement() => _SvgElementFactoryProvider.createSvgElement_tag("mpath");
+
+
+  static _SVGMPathElement internalCreate_SVGMPathElement() {
+    return new _SVGMPathElement._internalWrap();
+  }
+
+  factory _SVGMPathElement._internalWrap() {
+    return new _SVGMPathElement.internal_();
+  }
+
+  _SVGMPathElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7491,7 +9371,10 @@
    */
   _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)));
 }
+
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -7502,9 +9385,21 @@
 @DocsEditable()
 @DomName('SVGMissingGlyphElement')
 @Unstable()
-abstract class _SVGMissingGlyphElement extends SvgElement {
+class _SVGMissingGlyphElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGMissingGlyphElement._() { throw new UnsupportedError("Not supported"); }
+
+
+  static _SVGMissingGlyphElement internalCreate_SVGMissingGlyphElement() {
+    return new _SVGMissingGlyphElement._internalWrap();
+  }
+
+  factory _SVGMissingGlyphElement._internalWrap() {
+    return new _SVGMissingGlyphElement.internal_();
+  }
+
+  _SVGMissingGlyphElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
@@ -7523,13 +9418,25 @@
 @DocsEditable()
 @DomName('SVGVKernElement')
 @Unstable()
-abstract class _SVGVKernElement extends SvgElement {
+class _SVGVKernElement extends SvgElement {
   // To suppress missing implicit constructor warnings.
   factory _SVGVKernElement._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('SVGVKernElement.SVGVKernElement')
   @DocsEditable()
   factory _SVGVKernElement() => _SvgElementFactoryProvider.createSvgElement_tag("vkern");
+
+
+  static _SVGVKernElement internalCreate_SVGVKernElement() {
+    return new _SVGVKernElement._internalWrap();
+  }
+
+  factory _SVGVKernElement._internalWrap() {
+    return new _SVGVKernElement.internal_();
+  }
+
+  _SVGVKernElement.internal_() : super.internal_();
+
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
    *
diff --git a/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart b/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart
index 9524b80..6005329 100644
--- a/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart
+++ b/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart
@@ -5,7 +5,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_native_typed_data';
diff --git a/sdk/lib/web_audio/dartium/web_audio_dartium.dart b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
index f38441b..00f927d 100644
--- a/sdk/lib/web_audio/dartium/web_audio_dartium.dart
+++ b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
@@ -5,12 +5,13 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:typed_data';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 // DO NOT EDIT
 // Auto-generated dart:audio library.
 
@@ -49,6 +50,37 @@
 
 };
 
+// FIXME: Can we make this private?
+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,
+  'WaveShaperNode': () => WaveShaperNode.internalCreateWaveShaperNode,
+
+};
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -64,13 +96,25 @@
   // To suppress missing implicit constructor warnings.
   factory AnalyserNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AnalyserNode internalCreateAnalyserNode() {
+    return new AnalyserNode._internalWrap();
+  }
+
+  factory AnalyserNode._internalWrap() {
+    return new AnalyserNode.internal_();
+  }
+
+  AnalyserNode.internal_() : super.internal_();
+
+
   @DomName('AnalyserNode.fftSize')
   @DocsEditable()
   int get fftSize => _blink.BlinkAnalyserNode.instance.fftSize_Getter_(unwrap_jso(this));
   
   @DomName('AnalyserNode.fftSize')
   @DocsEditable()
-  void set fftSize(int value) => _blink.BlinkAnalyserNode.instance.fftSize_Setter_(unwrap_jso(this), value);
+  set fftSize(int value) => _blink.BlinkAnalyserNode.instance.fftSize_Setter_(unwrap_jso(this), value);
   
   @DomName('AnalyserNode.frequencyBinCount')
   @DocsEditable()
@@ -82,7 +126,7 @@
   
   @DomName('AnalyserNode.maxDecibels')
   @DocsEditable()
-  void set maxDecibels(num value) => _blink.BlinkAnalyserNode.instance.maxDecibels_Setter_(unwrap_jso(this), value);
+  set maxDecibels(num value) => _blink.BlinkAnalyserNode.instance.maxDecibels_Setter_(unwrap_jso(this), value);
   
   @DomName('AnalyserNode.minDecibels')
   @DocsEditable()
@@ -90,7 +134,7 @@
   
   @DomName('AnalyserNode.minDecibels')
   @DocsEditable()
-  void set minDecibels(num value) => _blink.BlinkAnalyserNode.instance.minDecibels_Setter_(unwrap_jso(this), value);
+  set minDecibels(num value) => _blink.BlinkAnalyserNode.instance.minDecibels_Setter_(unwrap_jso(this), value);
   
   @DomName('AnalyserNode.smoothingTimeConstant')
   @DocsEditable()
@@ -98,7 +142,7 @@
   
   @DomName('AnalyserNode.smoothingTimeConstant')
   @DocsEditable()
-  void set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Setter_(unwrap_jso(this), value);
+  set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Setter_(unwrap_jso(this), value);
   
   @DomName('AnalyserNode.getByteFrequencyData')
   @DocsEditable()
@@ -133,9 +177,24 @@
   // To suppress missing implicit constructor warnings.
   factory AudioBuffer._() { throw new UnsupportedError("Not supported"); }
 
+  static AudioBuffer internalCreateAudioBuffer() {
+    return new AudioBuffer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AudioBuffer._internalWrap() {
+    return new AudioBuffer.internal_();
+  }
+
+  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()
-  double get duration => _blink.BlinkAudioBuffer.instance.duration_Getter_(unwrap_jso(this));
+  num get duration => _blink.BlinkAudioBuffer.instance.duration_Getter_(unwrap_jso(this));
   
   @DomName('AudioBuffer.length')
   @DocsEditable()
@@ -147,7 +206,7 @@
   
   @DomName('AudioBuffer.sampleRate')
   @DocsEditable()
-  double get sampleRate => _blink.BlinkAudioBuffer.instance.sampleRate_Getter_(unwrap_jso(this));
+  num get sampleRate => _blink.BlinkAudioBuffer.instance.sampleRate_Getter_(unwrap_jso(this));
   
   @DomName('AudioBuffer.getChannelData')
   @DocsEditable()
@@ -193,13 +252,25 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> endedEvent = const EventStreamProvider<Event>('ended');
 
+
+  static AudioBufferSourceNode internalCreateAudioBufferSourceNode() {
+    return new AudioBufferSourceNode._internalWrap();
+  }
+
+  factory AudioBufferSourceNode._internalWrap() {
+    return new AudioBufferSourceNode.internal_();
+  }
+
+  AudioBufferSourceNode.internal_() : super.internal_();
+
+
   @DomName('AudioBufferSourceNode.buffer')
   @DocsEditable()
   AudioBuffer get buffer => wrap_jso(_blink.BlinkAudioBufferSourceNode.instance.buffer_Getter_(unwrap_jso(this)));
   
   @DomName('AudioBufferSourceNode.buffer')
   @DocsEditable()
-  void set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.instance.buffer_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.instance.buffer_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
@@ -207,7 +278,7 @@
   
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
-  void set loop(bool value) => _blink.BlinkAudioBufferSourceNode.instance.loop_Setter_(unwrap_jso(this), value);
+  set loop(bool value) => _blink.BlinkAudioBufferSourceNode.instance.loop_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioBufferSourceNode.loopEnd')
   @DocsEditable()
@@ -215,7 +286,7 @@
   
   @DomName('AudioBufferSourceNode.loopEnd')
   @DocsEditable()
-  void set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Setter_(unwrap_jso(this), value);
+  set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioBufferSourceNode.loopStart')
   @DocsEditable()
@@ -223,7 +294,7 @@
   
   @DomName('AudioBufferSourceNode.loopStart')
   @DocsEditable()
-  void set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Setter_(unwrap_jso(this), value);
+  set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioBufferSourceNode.playbackRate')
   @DocsEditable()
@@ -289,15 +360,27 @@
   @DomName('AudioContext.AudioContext')
   @DocsEditable()
   factory AudioContext() {
-    return _blink.BlinkAudioContext.instance.constructorCallback_0_();
+    return wrap_jso(_blink.BlinkAudioContext.instance.constructorCallback_0_());
   }
 
+
+  static AudioContext internalCreateAudioContext() {
+    return new AudioContext._internalWrap();
+  }
+
+  factory AudioContext._internalWrap() {
+    return new AudioContext.internal_();
+  }
+
+  AudioContext.internal_() : super.internal_();
+
+
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('AudioContext.currentTime')
   @DocsEditable()
-  double get currentTime => _blink.BlinkAudioContext.instance.currentTime_Getter_(unwrap_jso(this));
+  num get currentTime => _blink.BlinkAudioContext.instance.currentTime_Getter_(unwrap_jso(this));
   
   @DomName('AudioContext.destination')
   @DocsEditable()
@@ -309,7 +392,7 @@
   
   @DomName('AudioContext.sampleRate')
   @DocsEditable()
-  double get sampleRate => _blink.BlinkAudioContext.instance.sampleRate_Getter_(unwrap_jso(this));
+  num get sampleRate => _blink.BlinkAudioContext.instance.sampleRate_Getter_(unwrap_jso(this));
   
   @DomName('AudioContext.createAnalyser')
   @DocsEditable()
@@ -404,7 +487,7 @@
   
   @DomName('AudioContext.decodeAudioData')
   @DocsEditable()
-  void _decodeAudioData(ByteBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) => _blink.BlinkAudioContext.instance.decodeAudioData_Callback_3_(unwrap_jso(this), audioData, unwrap_jso(successCallback), unwrap_jso(errorCallback));
+  void _decodeAudioData(ByteBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) => _blink.BlinkAudioContext.instance.decodeAudioData_Callback_3_(unwrap_jso(this), audioData, unwrap_jso((audioBuffer) => successCallback(wrap_jso(audioBuffer))), unwrap_jso((audioBuffer) => errorCallback(wrap_jso(audioBuffer))));
   
   @DomName('AudioContext.startRendering')
   @DocsEditable()
@@ -445,6 +528,18 @@
   // To suppress missing implicit constructor warnings.
   factory AudioDestinationNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AudioDestinationNode internalCreateAudioDestinationNode() {
+    return new AudioDestinationNode._internalWrap();
+  }
+
+  factory AudioDestinationNode._internalWrap() {
+    return new AudioDestinationNode.internal_();
+  }
+
+  AudioDestinationNode.internal_() : super.internal_();
+
+
   @DomName('AudioDestinationNode.maxChannelCount')
   @DocsEditable()
   int get maxChannelCount => _blink.BlinkAudioDestinationNode.instance.maxChannelCount_Getter_(unwrap_jso(this));
@@ -465,13 +560,28 @@
   // To suppress missing implicit constructor warnings.
   factory AudioListener._() { throw new UnsupportedError("Not supported"); }
 
+  static AudioListener internalCreateAudioListener() {
+    return new AudioListener._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AudioListener._internalWrap() {
+    return new AudioListener.internal_();
+  }
+
+  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));
   
   @DomName('AudioListener.dopplerFactor')
   @DocsEditable()
-  void set dopplerFactor(num value) => _blink.BlinkAudioListener.instance.dopplerFactor_Setter_(unwrap_jso(this), value);
+  set dopplerFactor(num value) => _blink.BlinkAudioListener.instance.dopplerFactor_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioListener.speedOfSound')
   @DocsEditable()
@@ -479,7 +589,7 @@
   
   @DomName('AudioListener.speedOfSound')
   @DocsEditable()
-  void set speedOfSound(num value) => _blink.BlinkAudioListener.instance.speedOfSound_Setter_(unwrap_jso(this), value);
+  set speedOfSound(num value) => _blink.BlinkAudioListener.instance.speedOfSound_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioListener.setOrientation')
   @DocsEditable()
@@ -506,13 +616,25 @@
   // To suppress missing implicit constructor warnings.
   factory AudioNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AudioNode internalCreateAudioNode() {
+    return new AudioNode._internalWrap();
+  }
+
+  factory AudioNode._internalWrap() {
+    return new AudioNode.internal_();
+  }
+
+  AudioNode.internal_() : super.internal_();
+
+
   @DomName('AudioNode.channelCount')
   @DocsEditable()
   int get channelCount => _blink.BlinkAudioNode.instance.channelCount_Getter_(unwrap_jso(this));
   
   @DomName('AudioNode.channelCount')
   @DocsEditable()
-  void set channelCount(int value) => _blink.BlinkAudioNode.instance.channelCount_Setter_(unwrap_jso(this), value);
+  set channelCount(int value) => _blink.BlinkAudioNode.instance.channelCount_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioNode.channelCountMode')
   @DocsEditable()
@@ -520,7 +642,7 @@
   
   @DomName('AudioNode.channelCountMode')
   @DocsEditable()
-  void set channelCountMode(String value) => _blink.BlinkAudioNode.instance.channelCountMode_Setter_(unwrap_jso(this), value);
+  set channelCountMode(String value) => _blink.BlinkAudioNode.instance.channelCountMode_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioNode.channelInterpretation')
   @DocsEditable()
@@ -528,7 +650,7 @@
   
   @DomName('AudioNode.channelInterpretation')
   @DocsEditable()
-  void set channelInterpretation(String value) => _blink.BlinkAudioNode.instance.channelInterpretation_Setter_(unwrap_jso(this), value);
+  set channelInterpretation(String value) => _blink.BlinkAudioNode.instance.channelInterpretation_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioNode.context')
   @DocsEditable()
@@ -581,9 +703,24 @@
   // To suppress missing implicit constructor warnings.
   factory AudioParam._() { throw new UnsupportedError("Not supported"); }
 
+  static AudioParam internalCreateAudioParam() {
+    return new AudioParam._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AudioParam._internalWrap() {
+    return new AudioParam.internal_();
+  }
+
+  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()
-  double get defaultValue => _blink.BlinkAudioParam.instance.defaultValue_Getter_(unwrap_jso(this));
+  num get defaultValue => _blink.BlinkAudioParam.instance.defaultValue_Getter_(unwrap_jso(this));
   
   @DomName('AudioParam.value')
   @DocsEditable()
@@ -591,7 +728,7 @@
   
   @DomName('AudioParam.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkAudioParam.instance.value_Setter_(unwrap_jso(this), value);
+  set value(num value) => _blink.BlinkAudioParam.instance.value_Setter_(unwrap_jso(this), value);
   
   @DomName('AudioParam.cancelScheduledValues')
   @DocsEditable()
@@ -633,6 +770,18 @@
   // To suppress missing implicit constructor warnings.
   factory AudioProcessingEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AudioProcessingEvent internalCreateAudioProcessingEvent() {
+    return new AudioProcessingEvent._internalWrap();
+  }
+
+  factory AudioProcessingEvent._internalWrap() {
+    return new AudioProcessingEvent.internal_();
+  }
+
+  AudioProcessingEvent.internal_() : super.internal_();
+
+
   @DomName('AudioProcessingEvent.inputBuffer')
   @DocsEditable()
   AudioBuffer get inputBuffer => wrap_jso(_blink.BlinkAudioProcessingEvent.instance.inputBuffer_Getter_(unwrap_jso(this)));
@@ -644,7 +793,7 @@
   @DomName('AudioProcessingEvent.playbackTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get playbackTime => _blink.BlinkAudioProcessingEvent.instance.playbackTime_Getter_(unwrap_jso(this));
+  num get playbackTime => _blink.BlinkAudioProcessingEvent.instance.playbackTime_Getter_(unwrap_jso(this));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -662,6 +811,18 @@
   // To suppress missing implicit constructor warnings.
   factory AudioSourceNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static AudioSourceNode internalCreateAudioSourceNode() {
+    return new AudioSourceNode._internalWrap();
+  }
+
+  factory AudioSourceNode._internalWrap() {
+    return new AudioSourceNode.internal_();
+  }
+
+  AudioSourceNode.internal_() : super.internal_();
+
+
 }
 // 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
@@ -678,6 +839,18 @@
   // To suppress missing implicit constructor warnings.
   factory BiquadFilterNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static BiquadFilterNode internalCreateBiquadFilterNode() {
+    return new BiquadFilterNode._internalWrap();
+  }
+
+  factory BiquadFilterNode._internalWrap() {
+    return new BiquadFilterNode.internal_();
+  }
+
+  BiquadFilterNode.internal_() : super.internal_();
+
+
   @DomName('BiquadFilterNode.Q')
   @DocsEditable()
   AudioParam get Q => wrap_jso(_blink.BlinkBiquadFilterNode.instance.Q_Getter_(unwrap_jso(this)));
@@ -700,7 +873,7 @@
   
   @DomName('BiquadFilterNode.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkBiquadFilterNode.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkBiquadFilterNode.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('BiquadFilterNode.getFrequencyResponse')
   @DocsEditable()
@@ -722,6 +895,18 @@
   // To suppress missing implicit constructor warnings.
   factory ChannelMergerNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ChannelMergerNode internalCreateChannelMergerNode() {
+    return new ChannelMergerNode._internalWrap();
+  }
+
+  factory ChannelMergerNode._internalWrap() {
+    return new ChannelMergerNode.internal_();
+  }
+
+  ChannelMergerNode.internal_() : super.internal_();
+
+
 }
 // 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
@@ -738,6 +923,18 @@
   // To suppress missing implicit constructor warnings.
   factory ChannelSplitterNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ChannelSplitterNode internalCreateChannelSplitterNode() {
+    return new ChannelSplitterNode._internalWrap();
+  }
+
+  factory ChannelSplitterNode._internalWrap() {
+    return new ChannelSplitterNode.internal_();
+  }
+
+  ChannelSplitterNode.internal_() : super.internal_();
+
+
 }
 // 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
@@ -754,13 +951,25 @@
   // To suppress missing implicit constructor warnings.
   factory ConvolverNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ConvolverNode internalCreateConvolverNode() {
+    return new ConvolverNode._internalWrap();
+  }
+
+  factory ConvolverNode._internalWrap() {
+    return new ConvolverNode.internal_();
+  }
+
+  ConvolverNode.internal_() : super.internal_();
+
+
   @DomName('ConvolverNode.buffer')
   @DocsEditable()
   AudioBuffer get buffer => wrap_jso(_blink.BlinkConvolverNode.instance.buffer_Getter_(unwrap_jso(this)));
   
   @DomName('ConvolverNode.buffer')
   @DocsEditable()
-  void set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.instance.buffer_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.instance.buffer_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('ConvolverNode.normalize')
   @DocsEditable()
@@ -768,7 +977,7 @@
   
   @DomName('ConvolverNode.normalize')
   @DocsEditable()
-  void set normalize(bool value) => _blink.BlinkConvolverNode.instance.normalize_Setter_(unwrap_jso(this), value);
+  set normalize(bool value) => _blink.BlinkConvolverNode.instance.normalize_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -786,6 +995,18 @@
   // To suppress missing implicit constructor warnings.
   factory DelayNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DelayNode internalCreateDelayNode() {
+    return new DelayNode._internalWrap();
+  }
+
+  factory DelayNode._internalWrap() {
+    return new DelayNode.internal_();
+  }
+
+  DelayNode.internal_() : super.internal_();
+
+
   @DomName('DelayNode.delayTime')
   @DocsEditable()
   AudioParam get delayTime => wrap_jso(_blink.BlinkDelayNode.instance.delayTime_Getter_(unwrap_jso(this)));
@@ -806,6 +1027,18 @@
   // To suppress missing implicit constructor warnings.
   factory DynamicsCompressorNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static DynamicsCompressorNode internalCreateDynamicsCompressorNode() {
+    return new DynamicsCompressorNode._internalWrap();
+  }
+
+  factory DynamicsCompressorNode._internalWrap() {
+    return new DynamicsCompressorNode.internal_();
+  }
+
+  DynamicsCompressorNode.internal_() : super.internal_();
+
+
   @DomName('DynamicsCompressorNode.attack')
   @DocsEditable()
   AudioParam get attack => wrap_jso(_blink.BlinkDynamicsCompressorNode.instance.attack_Getter_(unwrap_jso(this)));
@@ -846,6 +1079,18 @@
   // To suppress missing implicit constructor warnings.
   factory GainNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static GainNode internalCreateGainNode() {
+    return new GainNode._internalWrap();
+  }
+
+  factory GainNode._internalWrap() {
+    return new GainNode.internal_();
+  }
+
+  GainNode.internal_() : super.internal_();
+
+
   @DomName('GainNode.gain')
   @DocsEditable()
   AudioParam get gain => wrap_jso(_blink.BlinkGainNode.instance.gain_Getter_(unwrap_jso(this)));
@@ -866,6 +1111,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaElementAudioSourceNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaElementAudioSourceNode internalCreateMediaElementAudioSourceNode() {
+    return new MediaElementAudioSourceNode._internalWrap();
+  }
+
+  factory MediaElementAudioSourceNode._internalWrap() {
+    return new MediaElementAudioSourceNode.internal_();
+  }
+
+  MediaElementAudioSourceNode.internal_() : super.internal_();
+
+
   @DomName('MediaElementAudioSourceNode.mediaElement')
   @DocsEditable()
   @Experimental() // non-standard
@@ -887,6 +1144,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaStreamAudioDestinationNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaStreamAudioDestinationNode internalCreateMediaStreamAudioDestinationNode() {
+    return new MediaStreamAudioDestinationNode._internalWrap();
+  }
+
+  factory MediaStreamAudioDestinationNode._internalWrap() {
+    return new MediaStreamAudioDestinationNode.internal_();
+  }
+
+  MediaStreamAudioDestinationNode.internal_() : super.internal_();
+
+
   @DomName('MediaStreamAudioDestinationNode.stream')
   @DocsEditable()
   MediaStream get stream => wrap_jso(_blink.BlinkMediaStreamAudioDestinationNode.instance.stream_Getter_(unwrap_jso(this)));
@@ -907,6 +1176,18 @@
   // To suppress missing implicit constructor warnings.
   factory MediaStreamAudioSourceNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static MediaStreamAudioSourceNode internalCreateMediaStreamAudioSourceNode() {
+    return new MediaStreamAudioSourceNode._internalWrap();
+  }
+
+  factory MediaStreamAudioSourceNode._internalWrap() {
+    return new MediaStreamAudioSourceNode.internal_();
+  }
+
+  MediaStreamAudioSourceNode.internal_() : super.internal_();
+
+
   @DomName('MediaStreamAudioSourceNode.mediaStream')
   @DocsEditable()
   MediaStream get mediaStream => wrap_jso(_blink.BlinkMediaStreamAudioSourceNode.instance.mediaStream_Getter_(unwrap_jso(this)));
@@ -927,6 +1208,18 @@
   // To suppress missing implicit constructor warnings.
   factory OfflineAudioCompletionEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static OfflineAudioCompletionEvent internalCreateOfflineAudioCompletionEvent() {
+    return new OfflineAudioCompletionEvent._internalWrap();
+  }
+
+  factory OfflineAudioCompletionEvent._internalWrap() {
+    return new OfflineAudioCompletionEvent.internal_();
+  }
+
+  OfflineAudioCompletionEvent.internal_() : super.internal_();
+
+
   @DomName('OfflineAudioCompletionEvent.renderedBuffer')
   @DocsEditable()
   AudioBuffer get renderedBuffer => wrap_jso(_blink.BlinkOfflineAudioCompletionEvent.instance.renderedBuffer_Getter_(unwrap_jso(this)));
@@ -950,9 +1243,21 @@
   @DomName('OfflineAudioContext.OfflineAudioContext')
   @DocsEditable()
   factory OfflineAudioContext(int numberOfChannels, int numberOfFrames, num sampleRate) {
-    return _blink.BlinkOfflineAudioContext.instance.constructorCallback_3_(numberOfChannels, numberOfFrames, sampleRate);
+    return wrap_jso(_blink.BlinkOfflineAudioContext.instance.constructorCallback_3_(numberOfChannels, numberOfFrames, sampleRate));
   }
 
+
+  static OfflineAudioContext internalCreateOfflineAudioContext() {
+    return new OfflineAudioContext._internalWrap();
+  }
+
+  factory OfflineAudioContext._internalWrap() {
+    return new OfflineAudioContext.internal_();
+  }
+
+  OfflineAudioContext.internal_() : super.internal_();
+
+
 }
 // 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
@@ -980,6 +1285,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<Event> endedEvent = const EventStreamProvider<Event>('ended');
 
+
+  static OscillatorNode internalCreateOscillatorNode() {
+    return new OscillatorNode._internalWrap();
+  }
+
+  factory OscillatorNode._internalWrap() {
+    return new OscillatorNode.internal_();
+  }
+
+  OscillatorNode.internal_() : super.internal_();
+
+
   @DomName('OscillatorNode.detune')
   @DocsEditable()
   AudioParam get detune => wrap_jso(_blink.BlinkOscillatorNode.instance.detune_Getter_(unwrap_jso(this)));
@@ -994,7 +1311,7 @@
   
   @DomName('OscillatorNode.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkOscillatorNode.instance.type_Setter_(unwrap_jso(this), value);
+  set type(String value) => _blink.BlinkOscillatorNode.instance.type_Setter_(unwrap_jso(this), value);
   
   @DomName('OscillatorNode.noteOff')
   @DocsEditable()
@@ -1049,13 +1366,25 @@
   // To suppress missing implicit constructor warnings.
   factory PannerNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static PannerNode internalCreatePannerNode() {
+    return new PannerNode._internalWrap();
+  }
+
+  factory PannerNode._internalWrap() {
+    return new PannerNode.internal_();
+  }
+
+  PannerNode.internal_() : super.internal_();
+
+
   @DomName('PannerNode.coneInnerAngle')
   @DocsEditable()
   num get coneInnerAngle => _blink.BlinkPannerNode.instance.coneInnerAngle_Getter_(unwrap_jso(this));
   
   @DomName('PannerNode.coneInnerAngle')
   @DocsEditable()
-  void set coneInnerAngle(num value) => _blink.BlinkPannerNode.instance.coneInnerAngle_Setter_(unwrap_jso(this), value);
+  set coneInnerAngle(num value) => _blink.BlinkPannerNode.instance.coneInnerAngle_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.coneOuterAngle')
   @DocsEditable()
@@ -1063,7 +1392,7 @@
   
   @DomName('PannerNode.coneOuterAngle')
   @DocsEditable()
-  void set coneOuterAngle(num value) => _blink.BlinkPannerNode.instance.coneOuterAngle_Setter_(unwrap_jso(this), value);
+  set coneOuterAngle(num value) => _blink.BlinkPannerNode.instance.coneOuterAngle_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.coneOuterGain')
   @DocsEditable()
@@ -1071,7 +1400,7 @@
   
   @DomName('PannerNode.coneOuterGain')
   @DocsEditable()
-  void set coneOuterGain(num value) => _blink.BlinkPannerNode.instance.coneOuterGain_Setter_(unwrap_jso(this), value);
+  set coneOuterGain(num value) => _blink.BlinkPannerNode.instance.coneOuterGain_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.distanceModel')
   @DocsEditable()
@@ -1079,7 +1408,7 @@
   
   @DomName('PannerNode.distanceModel')
   @DocsEditable()
-  void set distanceModel(String value) => _blink.BlinkPannerNode.instance.distanceModel_Setter_(unwrap_jso(this), value);
+  set distanceModel(String value) => _blink.BlinkPannerNode.instance.distanceModel_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.maxDistance')
   @DocsEditable()
@@ -1087,7 +1416,7 @@
   
   @DomName('PannerNode.maxDistance')
   @DocsEditable()
-  void set maxDistance(num value) => _blink.BlinkPannerNode.instance.maxDistance_Setter_(unwrap_jso(this), value);
+  set maxDistance(num value) => _blink.BlinkPannerNode.instance.maxDistance_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.panningModel')
   @DocsEditable()
@@ -1095,7 +1424,7 @@
   
   @DomName('PannerNode.panningModel')
   @DocsEditable()
-  void set panningModel(String value) => _blink.BlinkPannerNode.instance.panningModel_Setter_(unwrap_jso(this), value);
+  set panningModel(String value) => _blink.BlinkPannerNode.instance.panningModel_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.refDistance')
   @DocsEditable()
@@ -1103,7 +1432,7 @@
   
   @DomName('PannerNode.refDistance')
   @DocsEditable()
-  void set refDistance(num value) => _blink.BlinkPannerNode.instance.refDistance_Setter_(unwrap_jso(this), value);
+  set refDistance(num value) => _blink.BlinkPannerNode.instance.refDistance_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.rolloffFactor')
   @DocsEditable()
@@ -1111,7 +1440,7 @@
   
   @DomName('PannerNode.rolloffFactor')
   @DocsEditable()
-  void set rolloffFactor(num value) => _blink.BlinkPannerNode.instance.rolloffFactor_Setter_(unwrap_jso(this), value);
+  set rolloffFactor(num value) => _blink.BlinkPannerNode.instance.rolloffFactor_Setter_(unwrap_jso(this), value);
   
   @DomName('PannerNode.setOrientation')
   @DocsEditable()
@@ -1140,6 +1469,21 @@
   // To suppress missing implicit constructor warnings.
   factory PeriodicWave._() { throw new UnsupportedError("Not supported"); }
 
+  static PeriodicWave internalCreatePeriodicWave() {
+    return new PeriodicWave._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory PeriodicWave._internalWrap() {
+    return new PeriodicWave.internal_();
+  }
+
+  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
@@ -1167,6 +1511,18 @@
   @Experimental() // untriaged
   static const EventStreamProvider<AudioProcessingEvent> audioProcessEvent = const EventStreamProvider<AudioProcessingEvent>('audioprocess');
 
+
+  static ScriptProcessorNode internalCreateScriptProcessorNode() {
+    return new ScriptProcessorNode._internalWrap();
+  }
+
+  factory ScriptProcessorNode._internalWrap() {
+    return new ScriptProcessorNode.internal_();
+  }
+
+  ScriptProcessorNode.internal_() : super.internal_();
+
+
   @DomName('ScriptProcessorNode.bufferSize')
   @DocsEditable()
   int get bufferSize => _blink.BlinkScriptProcessorNode.instance.bufferSize_Getter_(unwrap_jso(this));
@@ -1174,7 +1530,7 @@
   @DomName('ScriptProcessorNode.setEventListener')
   @DocsEditable()
   @Experimental() // untriaged
-  void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.instance.setEventListener_Callback_1_(unwrap_jso(this), unwrap_jso(eventListener));
+  void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.instance.setEventListener_Callback_1_(unwrap_jso(this), unwrap_jso((event) => eventListener(wrap_jso(event))));
   
   /// Stream of `audioprocess` events handled by this [ScriptProcessorNode].
 /**
@@ -1205,13 +1561,25 @@
   // To suppress missing implicit constructor warnings.
   factory WaveShaperNode._() { throw new UnsupportedError("Not supported"); }
 
+
+  static WaveShaperNode internalCreateWaveShaperNode() {
+    return new WaveShaperNode._internalWrap();
+  }
+
+  factory WaveShaperNode._internalWrap() {
+    return new WaveShaperNode.internal_();
+  }
+
+  WaveShaperNode.internal_() : super.internal_();
+
+
   @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_(unwrap_jso(this));
   
   @DomName('WaveShaperNode.curve')
   @DocsEditable()
-  void set curve(Float32List value) => _blink.BlinkWaveShaperNode.instance.curve_Setter_(unwrap_jso(this), unwrap_jso(value));
+  set curve(Float32List value) => _blink.BlinkWaveShaperNode.instance.curve_Setter_(unwrap_jso(this), unwrap_jso(value));
   
   @DomName('WaveShaperNode.oversample')
   @DocsEditable()
@@ -1219,6 +1587,6 @@
   
   @DomName('WaveShaperNode.oversample')
   @DocsEditable()
-  void set oversample(String value) => _blink.BlinkWaveShaperNode.instance.oversample_Setter_(unwrap_jso(this), value);
+  set oversample(String value) => _blink.BlinkWaveShaperNode.instance.oversample_Setter_(unwrap_jso(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 29d3070..2ce52d4 100644
--- a/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart
+++ b/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart
@@ -4,12 +4,12 @@
 library dart.dom.web_gl;
 
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_native_typed_data';
 import 'dart:typed_data';
-import 'dart:_js_helper' show Creates, JSName, Native, Null, Returns, convertDartClosureToJS;
+import 'dart:_js_helper' show Creates, JSName, Native, Returns, convertDartClosureToJS;
 import 'dart:_foreign_helper' show JS;
 import 'dart:_interceptors' show Interceptor, JSExtendableArray;
 // DO NOT EDIT - unless you are editing documentation as per:
diff --git a/sdk/lib/web_gl/dartium/web_gl_dartium.dart b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
index d587afd..356cca8 100644
--- a/sdk/lib/web_gl/dartium/web_gl_dartium.dart
+++ b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
@@ -5,12 +5,13 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:typed_data';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 // DO NOT EDIT
 // Auto-generated dart:web_gl library.
 
@@ -58,6 +59,44 @@
 
 };
 
+// FIXME: Can we make this private?
+final web_glBlinkFunctionMap = {
+  'ANGLEInstancedArrays': () => AngleInstancedArrays.internalCreateAngleInstancedArrays,
+  'EXTBlendMinMax': () => ExtBlendMinMax.internalCreateExtBlendMinMax,
+  'EXTFragDepth': () => ExtFragDepth.internalCreateExtFragDepth,
+  'EXTShaderTextureLOD': () => ExtShaderTextureLod.internalCreateExtShaderTextureLod,
+  'EXTTextureFilterAnisotropic': () => ExtTextureFilterAnisotropic.internalCreateExtTextureFilterAnisotropic,
+  'OESElementIndexUint': () => OesElementIndexUint.internalCreateOesElementIndexUint,
+  'OESStandardDerivatives': () => OesStandardDerivatives.internalCreateOesStandardDerivatives,
+  'OESTextureFloat': () => OesTextureFloat.internalCreateOesTextureFloat,
+  'OESTextureFloatLinear': () => OesTextureFloatLinear.internalCreateOesTextureFloatLinear,
+  'OESTextureHalfFloat': () => OesTextureHalfFloat.internalCreateOesTextureHalfFloat,
+  'OESTextureHalfFloatLinear': () => OesTextureHalfFloatLinear.internalCreateOesTextureHalfFloatLinear,
+  'OESVertexArrayObject': () => OesVertexArrayObject.internalCreateOesVertexArrayObject,
+  'WebGLActiveInfo': () => ActiveInfo.internalCreateActiveInfo,
+  'WebGLBuffer': () => Buffer.internalCreateBuffer,
+  'WebGLCompressedTextureATC': () => CompressedTextureAtc.internalCreateCompressedTextureAtc,
+  'WebGLCompressedTextureETC1': () => CompressedTextureETC1.internalCreateCompressedTextureETC1,
+  'WebGLCompressedTexturePVRTC': () => CompressedTexturePvrtc.internalCreateCompressedTexturePvrtc,
+  'WebGLCompressedTextureS3TC': () => CompressedTextureS3TC.internalCreateCompressedTextureS3TC,
+  'WebGLContextAttributes': () => ContextAttributes.internalCreateContextAttributes,
+  'WebGLContextEvent': () => ContextEvent.internalCreateContextEvent,
+  'WebGLDebugRendererInfo': () => DebugRendererInfo.internalCreateDebugRendererInfo,
+  'WebGLDebugShaders': () => DebugShaders.internalCreateDebugShaders,
+  'WebGLDepthTexture': () => DepthTexture.internalCreateDepthTexture,
+  'WebGLDrawBuffers': () => DrawBuffers.internalCreateDrawBuffers,
+  'WebGLFramebuffer': () => Framebuffer.internalCreateFramebuffer,
+  'WebGLLoseContext': () => LoseContext.internalCreateLoseContext,
+  'WebGLProgram': () => Program.internalCreateProgram,
+  'WebGLRenderbuffer': () => Renderbuffer.internalCreateRenderbuffer,
+  'WebGLRenderingContext': () => RenderingContext.internalCreateRenderingContext,
+  'WebGLShader': () => Shader.internalCreateShader,
+  'WebGLShaderPrecisionFormat': () => ShaderPrecisionFormat.internalCreateShaderPrecisionFormat,
+  'WebGLTexture': () => Texture.internalCreateTexture,
+  'WebGLUniformLocation': () => UniformLocation.internalCreateUniformLocation,
+  'WebGLVertexArrayObjectOES': () => VertexArrayObject.internalCreateVertexArrayObject,
+
+};
 // 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.
@@ -373,6 +412,21 @@
   // To suppress missing implicit constructor warnings.
   factory ActiveInfo._() { throw new UnsupportedError("Not supported"); }
 
+  static ActiveInfo internalCreateActiveInfo() {
+    return new ActiveInfo._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ActiveInfo._internalWrap() {
+    return new ActiveInfo.internal_();
+  }
+
+  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));
@@ -400,6 +454,21 @@
   // To suppress missing implicit constructor warnings.
   factory AngleInstancedArrays._() { throw new UnsupportedError("Not supported"); }
 
+  static AngleInstancedArrays internalCreateAngleInstancedArrays() {
+    return new AngleInstancedArrays._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory AngleInstancedArrays._internalWrap() {
+    return new AngleInstancedArrays.internal_();
+  }
+
+  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
@@ -435,6 +504,21 @@
   // To suppress missing implicit constructor warnings.
   factory Buffer._() { throw new UnsupportedError("Not supported"); }
 
+  static Buffer internalCreateBuffer() {
+    return new Buffer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Buffer._internalWrap() {
+    return new Buffer.internal_();
+  }
+
+  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
@@ -451,6 +535,21 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTextureAtc._() { throw new UnsupportedError("Not supported"); }
 
+  static CompressedTextureAtc internalCreateCompressedTextureAtc() {
+    return new CompressedTextureAtc._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CompressedTextureAtc._internalWrap() {
+    return new CompressedTextureAtc.internal_();
+  }
+
+  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;
@@ -478,6 +577,21 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTextureETC1._() { throw new UnsupportedError("Not supported"); }
 
+  static CompressedTextureETC1 internalCreateCompressedTextureETC1() {
+    return new CompressedTextureETC1._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CompressedTextureETC1._internalWrap() {
+    return new CompressedTextureETC1.internal_();
+  }
+
+  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
@@ -499,6 +613,21 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTexturePvrtc._() { throw new UnsupportedError("Not supported"); }
 
+  static CompressedTexturePvrtc internalCreateCompressedTexturePvrtc() {
+    return new CompressedTexturePvrtc._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CompressedTexturePvrtc._internalWrap() {
+    return new CompressedTexturePvrtc.internal_();
+  }
+
+  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;
@@ -531,6 +660,21 @@
   // To suppress missing implicit constructor warnings.
   factory CompressedTextureS3TC._() { throw new UnsupportedError("Not supported"); }
 
+  static CompressedTextureS3TC internalCreateCompressedTextureS3TC() {
+    return new CompressedTextureS3TC._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory CompressedTextureS3TC._internalWrap() {
+    return new CompressedTextureS3TC.internal_();
+  }
+
+  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;
@@ -584,13 +728,28 @@
   // To suppress missing implicit constructor warnings.
   factory ContextAttributes._() { throw new UnsupportedError("Not supported"); }
 
+  static ContextAttributes internalCreateContextAttributes() {
+    return new ContextAttributes._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ContextAttributes._internalWrap() {
+    return new ContextAttributes.internal_();
+  }
+
+  ContextAttributes.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('WebGLContextAttributes.alpha')
   @DocsEditable()
   bool get alpha => _blink.BlinkWebGLContextAttributes.instance.alpha_Getter_(unwrap_jso(this));
   
   @DomName('WebGLContextAttributes.alpha')
   @DocsEditable()
-  void set alpha(bool value) => _blink.BlinkWebGLContextAttributes.instance.alpha_Setter_(unwrap_jso(this), value);
+  set alpha(bool value) => _blink.BlinkWebGLContextAttributes.instance.alpha_Setter_(unwrap_jso(this), value);
   
   @DomName('WebGLContextAttributes.antialias')
   @DocsEditable()
@@ -598,7 +757,7 @@
   
   @DomName('WebGLContextAttributes.antialias')
   @DocsEditable()
-  void set antialias(bool value) => _blink.BlinkWebGLContextAttributes.instance.antialias_Setter_(unwrap_jso(this), value);
+  set antialias(bool value) => _blink.BlinkWebGLContextAttributes.instance.antialias_Setter_(unwrap_jso(this), value);
   
   @DomName('WebGLContextAttributes.depth')
   @DocsEditable()
@@ -606,7 +765,7 @@
   
   @DomName('WebGLContextAttributes.depth')
   @DocsEditable()
-  void set depth(bool value) => _blink.BlinkWebGLContextAttributes.instance.depth_Setter_(unwrap_jso(this), value);
+  set depth(bool value) => _blink.BlinkWebGLContextAttributes.instance.depth_Setter_(unwrap_jso(this), value);
   
   @DomName('WebGLContextAttributes.failIfMajorPerformanceCaveat')
   @DocsEditable()
@@ -616,7 +775,7 @@
   @DomName('WebGLContextAttributes.failIfMajorPerformanceCaveat')
   @DocsEditable()
   @Experimental() // untriaged
-  void set failIfMajorPerformanceCaveat(bool value) => _blink.BlinkWebGLContextAttributes.instance.failIfMajorPerformanceCaveat_Setter_(unwrap_jso(this), value);
+  set failIfMajorPerformanceCaveat(bool value) => _blink.BlinkWebGLContextAttributes.instance.failIfMajorPerformanceCaveat_Setter_(unwrap_jso(this), value);
   
   @DomName('WebGLContextAttributes.premultipliedAlpha')
   @DocsEditable()
@@ -624,7 +783,7 @@
   
   @DomName('WebGLContextAttributes.premultipliedAlpha')
   @DocsEditable()
-  void set premultipliedAlpha(bool value) => _blink.BlinkWebGLContextAttributes.instance.premultipliedAlpha_Setter_(unwrap_jso(this), value);
+  set premultipliedAlpha(bool value) => _blink.BlinkWebGLContextAttributes.instance.premultipliedAlpha_Setter_(unwrap_jso(this), value);
   
   @DomName('WebGLContextAttributes.preserveDrawingBuffer')
   @DocsEditable()
@@ -632,7 +791,7 @@
   
   @DomName('WebGLContextAttributes.preserveDrawingBuffer')
   @DocsEditable()
-  void set preserveDrawingBuffer(bool value) => _blink.BlinkWebGLContextAttributes.instance.preserveDrawingBuffer_Setter_(unwrap_jso(this), value);
+  set preserveDrawingBuffer(bool value) => _blink.BlinkWebGLContextAttributes.instance.preserveDrawingBuffer_Setter_(unwrap_jso(this), value);
   
   @DomName('WebGLContextAttributes.stencil')
   @DocsEditable()
@@ -640,7 +799,7 @@
   
   @DomName('WebGLContextAttributes.stencil')
   @DocsEditable()
-  void set stencil(bool value) => _blink.BlinkWebGLContextAttributes.instance.stencil_Setter_(unwrap_jso(this), value);
+  set stencil(bool value) => _blink.BlinkWebGLContextAttributes.instance.stencil_Setter_(unwrap_jso(this), value);
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -657,6 +816,18 @@
   // To suppress missing implicit constructor warnings.
   factory ContextEvent._() { throw new UnsupportedError("Not supported"); }
 
+
+  static ContextEvent internalCreateContextEvent() {
+    return new ContextEvent._internalWrap();
+  }
+
+  factory ContextEvent._internalWrap() {
+    return new ContextEvent.internal_();
+  }
+
+  ContextEvent.internal_() : super.internal_();
+
+
   @DomName('WebGLContextEvent.statusMessage')
   @DocsEditable()
   String get statusMessage => _blink.BlinkWebGLContextEvent.instance.statusMessage_Getter_(unwrap_jso(this));
@@ -677,6 +848,21 @@
   // To suppress missing implicit constructor warnings.
   factory DebugRendererInfo._() { throw new UnsupportedError("Not supported"); }
 
+  static DebugRendererInfo internalCreateDebugRendererInfo() {
+    return new DebugRendererInfo._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DebugRendererInfo._internalWrap() {
+    return new DebugRendererInfo.internal_();
+  }
+
+  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;
@@ -701,6 +887,21 @@
   // To suppress missing implicit constructor warnings.
   factory DebugShaders._() { throw new UnsupportedError("Not supported"); }
 
+  static DebugShaders internalCreateDebugShaders() {
+    return new DebugShaders._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DebugShaders._internalWrap() {
+    return new DebugShaders.internal_();
+  }
+
+  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));
@@ -721,6 +922,21 @@
   // To suppress missing implicit constructor warnings.
   factory DepthTexture._() { throw new UnsupportedError("Not supported"); }
 
+  static DepthTexture internalCreateDepthTexture() {
+    return new DepthTexture._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DepthTexture._internalWrap() {
+    return new DepthTexture.internal_();
+  }
+
+  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;
@@ -741,6 +957,21 @@
   // To suppress missing implicit constructor warnings.
   factory DrawBuffers._() { throw new UnsupportedError("Not supported"); }
 
+  static DrawBuffers internalCreateDrawBuffers() {
+    return new DrawBuffers._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DrawBuffers._internalWrap() {
+    return new DrawBuffers.internal_();
+  }
+
+  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;
@@ -896,6 +1127,21 @@
   // To suppress missing implicit constructor warnings.
   factory ExtBlendMinMax._() { throw new UnsupportedError("Not supported"); }
 
+  static ExtBlendMinMax internalCreateExtBlendMinMax() {
+    return new ExtBlendMinMax._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ExtBlendMinMax._internalWrap() {
+    return new ExtBlendMinMax.internal_();
+  }
+
+  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
@@ -922,6 +1168,21 @@
   // To suppress missing implicit constructor warnings.
   factory ExtFragDepth._() { throw new UnsupportedError("Not supported"); }
 
+  static ExtFragDepth internalCreateExtFragDepth() {
+    return new ExtFragDepth._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ExtFragDepth._internalWrap() {
+    return new ExtFragDepth.internal_();
+  }
+
+  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
@@ -937,6 +1198,21 @@
   // To suppress missing implicit constructor warnings.
   factory ExtShaderTextureLod._() { throw new UnsupportedError("Not supported"); }
 
+  static ExtShaderTextureLod internalCreateExtShaderTextureLod() {
+    return new ExtShaderTextureLod._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ExtShaderTextureLod._internalWrap() {
+    return new ExtShaderTextureLod.internal_();
+  }
+
+  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
@@ -953,6 +1229,21 @@
   // To suppress missing implicit constructor warnings.
   factory ExtTextureFilterAnisotropic._() { throw new UnsupportedError("Not supported"); }
 
+  static ExtTextureFilterAnisotropic internalCreateExtTextureFilterAnisotropic() {
+    return new ExtTextureFilterAnisotropic._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ExtTextureFilterAnisotropic._internalWrap() {
+    return new ExtTextureFilterAnisotropic.internal_();
+  }
+
+  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;
@@ -976,6 +1267,21 @@
   // To suppress missing implicit constructor warnings.
   factory Framebuffer._() { throw new UnsupportedError("Not supported"); }
 
+  static Framebuffer internalCreateFramebuffer() {
+    return new Framebuffer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Framebuffer._internalWrap() {
+    return new Framebuffer.internal_();
+  }
+
+  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
@@ -992,6 +1298,21 @@
   // To suppress missing implicit constructor warnings.
   factory LoseContext._() { throw new UnsupportedError("Not supported"); }
 
+  static LoseContext internalCreateLoseContext() {
+    return new LoseContext._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory LoseContext._internalWrap() {
+    return new LoseContext.internal_();
+  }
+
+  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));
@@ -1016,6 +1337,21 @@
   // To suppress missing implicit constructor warnings.
   factory OesElementIndexUint._() { throw new UnsupportedError("Not supported"); }
 
+  static OesElementIndexUint internalCreateOesElementIndexUint() {
+    return new OesElementIndexUint._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory OesElementIndexUint._internalWrap() {
+    return new OesElementIndexUint.internal_();
+  }
+
+  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
@@ -1032,6 +1368,21 @@
   // To suppress missing implicit constructor warnings.
   factory OesStandardDerivatives._() { throw new UnsupportedError("Not supported"); }
 
+  static OesStandardDerivatives internalCreateOesStandardDerivatives() {
+    return new OesStandardDerivatives._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory OesStandardDerivatives._internalWrap() {
+    return new OesStandardDerivatives.internal_();
+  }
+
+  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;
@@ -1052,6 +1403,21 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureFloat._() { throw new UnsupportedError("Not supported"); }
 
+  static OesTextureFloat internalCreateOesTextureFloat() {
+    return new OesTextureFloat._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory OesTextureFloat._internalWrap() {
+    return new OesTextureFloat.internal_();
+  }
+
+  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
@@ -1068,6 +1434,21 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureFloatLinear._() { throw new UnsupportedError("Not supported"); }
 
+  static OesTextureFloatLinear internalCreateOesTextureFloatLinear() {
+    return new OesTextureFloatLinear._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory OesTextureFloatLinear._internalWrap() {
+    return new OesTextureFloatLinear.internal_();
+  }
+
+  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
@@ -1084,6 +1465,21 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureHalfFloat._() { throw new UnsupportedError("Not supported"); }
 
+  static OesTextureHalfFloat internalCreateOesTextureHalfFloat() {
+    return new OesTextureHalfFloat._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory OesTextureHalfFloat._internalWrap() {
+    return new OesTextureHalfFloat.internal_();
+  }
+
+  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;
@@ -1104,6 +1500,21 @@
   // To suppress missing implicit constructor warnings.
   factory OesTextureHalfFloatLinear._() { throw new UnsupportedError("Not supported"); }
 
+  static OesTextureHalfFloatLinear internalCreateOesTextureHalfFloatLinear() {
+    return new OesTextureHalfFloatLinear._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory OesTextureHalfFloatLinear._internalWrap() {
+    return new OesTextureHalfFloatLinear.internal_();
+  }
+
+  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
@@ -1120,6 +1531,21 @@
   // To suppress missing implicit constructor warnings.
   factory OesVertexArrayObject._() { throw new UnsupportedError("Not supported"); }
 
+  static OesVertexArrayObject internalCreateOesVertexArrayObject() {
+    return new OesVertexArrayObject._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory OesVertexArrayObject._internalWrap() {
+    return new OesVertexArrayObject.internal_();
+  }
+
+  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;
@@ -1130,7 +1556,7 @@
   
   @DomName('OESVertexArrayObject.createVertexArrayOES')
   @DocsEditable()
-  VertexArrayObject createVertexArray() => _blink.BlinkOESVertexArrayObject.instance.createVertexArrayOES_Callback_0_(unwrap_jso(this));
+  VertexArrayObject createVertexArray() => wrap_jso(_blink.BlinkOESVertexArrayObject.instance.createVertexArrayOES_Callback_0_(unwrap_jso(this)));
   
   @DomName('OESVertexArrayObject.deleteVertexArrayOES')
   @DocsEditable()
@@ -1155,6 +1581,21 @@
   // To suppress missing implicit constructor warnings.
   factory Program._() { throw new UnsupportedError("Not supported"); }
 
+  static Program internalCreateProgram() {
+    return new Program._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Program._internalWrap() {
+    return new Program.internal_();
+  }
+
+  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
@@ -1170,6 +1611,21 @@
   // To suppress missing implicit constructor warnings.
   factory Renderbuffer._() { throw new UnsupportedError("Not supported"); }
 
+  static Renderbuffer internalCreateRenderbuffer() {
+    return new Renderbuffer._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Renderbuffer._internalWrap() {
+    return new Renderbuffer.internal_();
+  }
+
+  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
@@ -1185,6 +1641,21 @@
   // To suppress missing implicit constructor warnings.
   factory RenderingContext._() { throw new UnsupportedError("Not supported"); }
 
+  static RenderingContext internalCreateRenderingContext() {
+    return new RenderingContext._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory RenderingContext._internalWrap() {
+    return new RenderingContext.internal_();
+  }
+
+  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;
 
@@ -2529,27 +3000,27 @@
   
   @DomName('WebGLRenderingContext.createBuffer')
   @DocsEditable()
-  Buffer createBuffer() => _blink.BlinkWebGLRenderingContext.instance.createBuffer_Callback_0_(unwrap_jso(this));
+  Buffer createBuffer() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createBuffer_Callback_0_(unwrap_jso(this)));
   
   @DomName('WebGLRenderingContext.createFramebuffer')
   @DocsEditable()
-  Framebuffer createFramebuffer() => _blink.BlinkWebGLRenderingContext.instance.createFramebuffer_Callback_0_(unwrap_jso(this));
+  Framebuffer createFramebuffer() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createFramebuffer_Callback_0_(unwrap_jso(this)));
   
   @DomName('WebGLRenderingContext.createProgram')
   @DocsEditable()
-  Program createProgram() => _blink.BlinkWebGLRenderingContext.instance.createProgram_Callback_0_(unwrap_jso(this));
+  Program createProgram() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createProgram_Callback_0_(unwrap_jso(this)));
   
   @DomName('WebGLRenderingContext.createRenderbuffer')
   @DocsEditable()
-  Renderbuffer createRenderbuffer() => _blink.BlinkWebGLRenderingContext.instance.createRenderbuffer_Callback_0_(unwrap_jso(this));
+  Renderbuffer createRenderbuffer() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createRenderbuffer_Callback_0_(unwrap_jso(this)));
   
   @DomName('WebGLRenderingContext.createShader')
   @DocsEditable()
-  Shader createShader(int type) => _blink.BlinkWebGLRenderingContext.instance.createShader_Callback_1_(unwrap_jso(this), type);
+  Shader createShader(int type) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createShader_Callback_1_(unwrap_jso(this), type));
   
   @DomName('WebGLRenderingContext.createTexture')
   @DocsEditable()
-  Texture createTexture() => _blink.BlinkWebGLRenderingContext.instance.createTexture_Callback_0_(unwrap_jso(this));
+  Texture createTexture() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.createTexture_Callback_0_(unwrap_jso(this)));
   
   @DomName('WebGLRenderingContext.cullFace')
   @DocsEditable()
@@ -2645,15 +3116,15 @@
   
   @DomName('WebGLRenderingContext.getActiveAttrib')
   @DocsEditable()
-  ActiveInfo getActiveAttrib(Program program, int index) => _blink.BlinkWebGLRenderingContext.instance.getActiveAttrib_Callback_2_(unwrap_jso(this), unwrap_jso(program), index);
+  ActiveInfo getActiveAttrib(Program program, int index) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getActiveAttrib_Callback_2_(unwrap_jso(this), unwrap_jso(program), index));
   
   @DomName('WebGLRenderingContext.getActiveUniform')
   @DocsEditable()
-  ActiveInfo getActiveUniform(Program program, int index) => _blink.BlinkWebGLRenderingContext.instance.getActiveUniform_Callback_2_(unwrap_jso(this), unwrap_jso(program), index);
+  ActiveInfo getActiveUniform(Program program, int index) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getActiveUniform_Callback_2_(unwrap_jso(this), unwrap_jso(program), index));
   
   @DomName('WebGLRenderingContext.getAttachedShaders')
   @DocsEditable()
-  List<Shader> getAttachedShaders(Program program) => _blink.BlinkWebGLRenderingContext.instance.getAttachedShaders_Callback_1_(unwrap_jso(this), unwrap_jso(program));
+  List<Shader> getAttachedShaders(Program program) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getAttachedShaders_Callback_1_(unwrap_jso(this), unwrap_jso(program)));
   
   @DomName('WebGLRenderingContext.getAttribLocation')
   @DocsEditable()
@@ -2665,7 +3136,7 @@
   
   @DomName('WebGLRenderingContext.getContextAttributes')
   @DocsEditable()
-  ContextAttributes getContextAttributes() => _blink.BlinkWebGLRenderingContext.instance.getContextAttributes_Callback_0_(unwrap_jso(this));
+  ContextAttributes getContextAttributes() => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getContextAttributes_Callback_0_(unwrap_jso(this)));
   
   @DomName('WebGLRenderingContext.getError')
   @DocsEditable()
@@ -2705,7 +3176,7 @@
   
   @DomName('WebGLRenderingContext.getShaderPrecisionFormat')
   @DocsEditable()
-  ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => _blink.BlinkWebGLRenderingContext.instance.getShaderPrecisionFormat_Callback_2_(unwrap_jso(this), shadertype, precisiontype);
+  ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getShaderPrecisionFormat_Callback_2_(unwrap_jso(this), shadertype, precisiontype));
   
   @DomName('WebGLRenderingContext.getShaderSource')
   @DocsEditable()
@@ -2725,7 +3196,7 @@
   
   @DomName('WebGLRenderingContext.getUniformLocation')
   @DocsEditable()
-  UniformLocation getUniformLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.instance.getUniformLocation_Callback_2_(unwrap_jso(this), unwrap_jso(program), name);
+  UniformLocation getUniformLocation(Program program, String name) => wrap_jso(_blink.BlinkWebGLRenderingContext.instance.getUniformLocation_Callback_2_(unwrap_jso(this), unwrap_jso(program), name));
   
   @DomName('WebGLRenderingContext.getVertexAttrib')
   @DocsEditable()
@@ -3117,6 +3588,21 @@
   // To suppress missing implicit constructor warnings.
   factory Shader._() { throw new UnsupportedError("Not supported"); }
 
+  static Shader internalCreateShader() {
+    return new Shader._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Shader._internalWrap() {
+    return new Shader.internal_();
+  }
+
+  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
@@ -3131,6 +3617,21 @@
   // To suppress missing implicit constructor warnings.
   factory ShaderPrecisionFormat._() { throw new UnsupportedError("Not supported"); }
 
+  static ShaderPrecisionFormat internalCreateShaderPrecisionFormat() {
+    return new ShaderPrecisionFormat._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory ShaderPrecisionFormat._internalWrap() {
+    return new ShaderPrecisionFormat.internal_();
+  }
+
+  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));
@@ -3157,6 +3658,21 @@
   // To suppress missing implicit constructor warnings.
   factory Texture._() { throw new UnsupportedError("Not supported"); }
 
+  static Texture internalCreateTexture() {
+    return new Texture._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory Texture._internalWrap() {
+    return new Texture.internal_();
+  }
+
+  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
@@ -3171,6 +3687,21 @@
   // To suppress missing implicit constructor warnings.
   factory UniformLocation._() { throw new UnsupportedError("Not supported"); }
 
+  static UniformLocation internalCreateUniformLocation() {
+    return new UniformLocation._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory UniformLocation._internalWrap() {
+    return new UniformLocation.internal_();
+  }
+
+  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
@@ -3187,6 +3718,21 @@
   // To suppress missing implicit constructor warnings.
   factory VertexArrayObject._() { throw new UnsupportedError("Not supported"); }
 
+  static VertexArrayObject internalCreateVertexArrayObject() {
+    return new VertexArrayObject._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory VertexArrayObject._internalWrap() {
+    return new VertexArrayObject.internal_();
+  }
+
+  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
@@ -3198,7 +3744,7 @@
 @DocsEditable()
 @DomName('WebGLRenderingContextBase')
 @Experimental() // untriaged
-abstract class _WebGLRenderingContextBase extends NativeFieldWrapperClass2 {
+class _WebGLRenderingContextBase extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory _WebGLRenderingContextBase._() { throw new UnsupportedError("Not supported"); }
 
diff --git a/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart b/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart
index d19fa39..34838d5 100644
--- a/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart
+++ b/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart
@@ -12,7 +12,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_js_helper' show convertDartClosureToJS, Creates, JSName, Native;
@@ -228,7 +228,7 @@
   // Map is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
diff --git a/sdk/lib/web_sql/dartium/web_sql_dartium.dart b/sdk/lib/web_sql/dartium/web_sql_dartium.dart
index 540f88d..73bc18c 100644
--- a/sdk/lib/web_sql/dartium/web_sql_dartium.dart
+++ b/sdk/lib/web_sql/dartium/web_sql_dartium.dart
@@ -12,17 +12,24 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
+
 // DO NOT EDIT - unless you are editing documentation as per:
 // https://code.google.com/p/dart/wiki/ContributingHTMLDocumentation
 // Auto-generated dart:audio library.
 
 
 
+// Need a default constructor for constructing classes with mixins that are
+// also extending NativeFieldWrapperClass2.  Defining JsoNativeFieldWrapper
+// extending NativeFieldWrapperClass2 creates a default constructor.
+class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {}
+
 
 // FIXME: Can we make this private?
 final web_sqlBlinkMap = {
@@ -34,6 +41,15 @@
 
 };
 
+// FIXME: Can we make this private?
+final web_sqlBlinkFunctionMap = {
+  'Database': () => SqlDatabase.internalCreateSqlDatabase,
+  'SQLError': () => SqlError.internalCreateSqlError,
+  'SQLResultSet': () => SqlResultSet.internalCreateSqlResultSet,
+  'SQLResultSetRowList': () => SqlResultSetRowList.internalCreateSqlResultSetRowList,
+  'SQLTransaction': () => SqlTransaction.internalCreateSqlTransaction,
+
+};
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
@@ -96,6 +112,21 @@
   // To suppress missing implicit constructor warnings.
   factory SqlDatabase._() { throw new UnsupportedError("Not supported"); }
 
+  static SqlDatabase internalCreateSqlDatabase() {
+    return new SqlDatabase._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SqlDatabase._internalWrap() {
+    return new SqlDatabase.internal_();
+  }
+
+  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;
 
@@ -105,15 +136,15 @@
   
   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(callback), unwrap_jso(errorCallback), unwrap_jso(successCallback));
+      _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()));
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.instance.changeVersion_Callback_4_(unwrap_jso(this), oldVersion, newVersion, unwrap_jso(callback), unwrap_jso(errorCallback));
+      _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))));
       return;
     }
     if (callback != null) {
-      _blink.BlinkDatabase.instance.changeVersion_Callback_3_(unwrap_jso(this), oldVersion, newVersion, unwrap_jso(callback));
+      _blink.BlinkDatabase.instance.changeVersion_Callback_3_(unwrap_jso(this), oldVersion, newVersion, unwrap_jso((transaction) => callback(wrap_jso(transaction))));
       return;
     }
     _blink.BlinkDatabase.instance.changeVersion_Callback_2_(unwrap_jso(this), oldVersion, newVersion);
@@ -122,27 +153,27 @@
 
   void readTransaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) {
     if (successCallback != null) {
-      _blink.BlinkDatabase.instance.readTransaction_Callback_3_(unwrap_jso(this), unwrap_jso(callback), unwrap_jso(errorCallback), unwrap_jso(successCallback));
+      _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()));
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.instance.readTransaction_Callback_2_(unwrap_jso(this), unwrap_jso(callback), unwrap_jso(errorCallback));
+      _blink.BlinkDatabase.instance.readTransaction_Callback_2_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkDatabase.instance.readTransaction_Callback_1_(unwrap_jso(this), unwrap_jso(callback));
+    _blink.BlinkDatabase.instance.readTransaction_Callback_1_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))));
     return;
   }
 
   void transaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) {
     if (successCallback != null) {
-      _blink.BlinkDatabase.instance.transaction_Callback_3_(unwrap_jso(this), unwrap_jso(callback), unwrap_jso(errorCallback), unwrap_jso(successCallback));
+      _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()));
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso(callback), unwrap_jso(errorCallback));
+      _blink.BlinkDatabase.instance.transaction_Callback_2_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))), unwrap_jso((error) => errorCallback(wrap_jso(error))));
       return;
     }
-    _blink.BlinkDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso(callback));
+    _blink.BlinkDatabase.instance.transaction_Callback_1_(unwrap_jso(this), unwrap_jso((transaction) => callback(wrap_jso(transaction))));
     return;
   }
 
@@ -162,6 +193,21 @@
   // To suppress missing implicit constructor warnings.
   factory SqlError._() { throw new UnsupportedError("Not supported"); }
 
+  static SqlError internalCreateSqlError() {
+    return new SqlError._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SqlError._internalWrap() {
+    return new SqlError.internal_();
+  }
+
+  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;
@@ -218,6 +264,21 @@
   // To suppress missing implicit constructor warnings.
   factory SqlResultSet._() { throw new UnsupportedError("Not supported"); }
 
+  static SqlResultSet internalCreateSqlResultSet() {
+    return new SqlResultSet._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SqlResultSet._internalWrap() {
+    return new SqlResultSet.internal_();
+  }
+
+  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));
@@ -242,10 +303,25 @@
 @DomName('SQLResultSetRowList')
 // http://www.w3.org/TR/webdatabase/#sqlresultsetrowlist
 @Experimental() // deprecated
-class SqlResultSetRowList extends NativeFieldWrapperClass2 with ListMixin<Map>, ImmutableListMixin<Map> implements List<Map> {
+class SqlResultSetRowList extends JsoNativeFieldWrapper with ListMixin<Map>, ImmutableListMixin<Map> implements List<Map> {
   // To suppress missing implicit constructor warnings.
   factory SqlResultSetRowList._() { throw new UnsupportedError("Not supported"); }
 
+  static SqlResultSetRowList internalCreateSqlResultSetRowList() {
+    return new SqlResultSetRowList._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SqlResultSetRowList._internalWrap() {
+    return new SqlResultSetRowList.internal_();
+  }
+
+  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));
@@ -253,11 +329,11 @@
   Map operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.index(index, this);
-    return _blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index);
+    return wrap_jso(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index));
   }
 
-  Map _nativeIndexedGetter(int index) => _blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index);
- 
+  Map _nativeIndexedGetter(int index) => wrap_jso(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index));
+
   void operator[]=(int index, Map value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
   }
@@ -265,7 +341,7 @@
   // Map is the element type.
 
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 
@@ -298,7 +374,7 @@
 
   @DomName('SQLResultSetRowList.item')
   @DocsEditable()
-  Map item(int index) => _blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index);
+  Map item(int index) => wrap_jso(_blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(unwrap_jso(this), index));
   
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -319,8 +395,23 @@
   // To suppress missing implicit constructor warnings.
   factory SqlTransaction._() { throw new UnsupportedError("Not supported"); }
 
+  static SqlTransaction internalCreateSqlTransaction() {
+    return new SqlTransaction._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory SqlTransaction._internalWrap() {
+    return new SqlTransaction.internal_();
+  }
+
+  SqlTransaction.internal_() { }
+
+  bool operator ==(other) => unwrap_jso(other) == unwrap_jso(this) || identical(this, other);
+  int get hashCode => unwrap_jso(this).hashCode;
+
   @DomName('SQLTransaction.executeSql')
   @DocsEditable()
-  void executeSql(String sqlStatement, List<Object> arguments, [SqlStatementCallback callback, SqlStatementErrorCallback errorCallback]) => _blink.BlinkSQLTransaction.instance.executeSql_Callback_4_(unwrap_jso(this), sqlStatement, arguments, unwrap_jso(callback), unwrap_jso(errorCallback));
+  void executeSql(String sqlStatement, List<Object> arguments, [SqlStatementCallback callback, SqlStatementErrorCallback errorCallback]) => _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))));
   
 }
diff --git a/tests/co19/co19-analyzer.status b/tests/co19/co19-analyzer.status
index ed616b4..c11877e 100644
--- a/tests/co19/co19-analyzer.status
+++ b/tests/co19/co19-analyzer.status
@@ -291,3 +291,4 @@
 WebPlatformTest/html/semantics/forms/the-input-element/email_t02: StaticWarning # co19 issue 701
 Language/12_Expressions/12_Instance_Creation/2_Const_A11_t01: MissingCompileTimeError # Issue 22010
 Language/12_Expressions/12_Instance_Creation/2_Const_A11_t03: MissingCompileTimeError # Issue 22010
+
diff --git a/tests/co19/co19-analyzer2.status b/tests/co19/co19-analyzer2.status
index 6790464..ac59077 100644
--- a/tests/co19/co19-analyzer2.status
+++ b/tests/co19/co19-analyzer2.status
@@ -290,3 +290,26 @@
 Language/13_Statements/15_Assert_A04_t07: StaticWarning # Issue 23663
 Language/13_Statements/15_Assert_A03_t08: StaticWarning # Issue 23663
 
+# isProtocolHandlerRegistered and unregisterProtocolHandler don't exist
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip
+WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t01: StaticWarning
+WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t02: StaticWarning
+WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t03: StaticWarning
+WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t04: StaticWarning
+WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t05: StaticWarning
+WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t06: StaticWarning
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: StaticWarning
+
+# 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
+LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: StaticWarning
+LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: StaticWarning
+LayoutTests/fast/xpath/attr-namespace_t01: StaticWarning
+LayoutTests/fast/xpath/attr-namespace_t02: StaticWarning
+LayoutTests/fast/xpath/node-name-case-sensitivity_t01: StaticWarning
+LayoutTests/fast/xpath/node-name-case-sensitivity_t02: StaticWarning
+LayoutTests/fast/xpath/py-dom-xpath/data_t01: StaticWarning
+LayoutTests/fast/svg/getbbox_t01: StaticWarning
+
diff --git a/tests/co19/co19-dart2js.status b/tests/co19/co19-dart2js.status
index 224f620..403ee76 100644
--- a/tests/co19/co19-dart2js.status
+++ b/tests/co19/co19-dart2js.status
@@ -198,8 +198,8 @@
 LibTest/typed_data/Uint8List/Uint8List_A02_t01: fail # co19-roll r576: Please triage this failure
 Utils/tests/Expect/identical_A01_t01: fail # co19-roll r546: Please triage this failure
 WebPlatformTest/Utils/test/testFail_t01: RuntimeError # co19-roll r722: Please triage this failure.
-WebPlatformTest/dom/nodes/DOMImplementation-createHTMLDocument_t01: CompileTimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/dom/nodes/Document-createElement_t01: CompileTimeError # co19-roll r722: Please triage this failure.
+WebPlatformTest/dom/nodes/DOMImplementation-createHTMLDocument_t01: CompileTimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/dom/nodes/Element-childElementCount-nochild_t01: CompileTimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/webstorage/storage_session_setitem_quotaexceedederr_t01: Pass, Slow
 LayoutTests/fast/loader/loadInProgress_t01: Skip # Issue 23466
@@ -373,7 +373,6 @@
 LayoutTests/fast/multicol/orphans-relayout_t01: Pass, RuntimeError
 LayoutTests/fast/multicol/zeroColumnCount_t01: RuntimeError
 LayoutTests/fast/media/media-query-serialization_t01: RuntimeError
-LayoutTests/fast/media/color-does-not-include-alpha_t01: RuntimeError
 LayoutTests/fast/media/mq-append-delete_t01: RuntimeError
 LayoutTests/fast/media/mq-color-index_t02: RuntimeError
 LayoutTests/fast/media/mq-js-media-except_t02: RuntimeError
@@ -568,7 +567,7 @@
 LayoutTests/fast/canvas/canvas-arc-negative-radius_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-as-image-incremental-repaint_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/canvas/canvas-blending-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is behind a flag.
 LayoutTests/fast/canvas/canvas-empty-image-pattern_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
@@ -778,7 +777,6 @@
 LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-protocol_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-search_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-autofocus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unfocusable_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unselectable_t01: RuntimeError # Please triage this failure
@@ -824,7 +822,6 @@
 LayoutTests/fast/dom/Range/range-insertNode-separate-endContainer_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/TreeWalker/TreeWalker-basic_t01: RuntimeError # Please triage this failure
@@ -839,6 +836,7 @@
 LayoutTests/fast/dom/characterdata-api-arguments_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/client-width-height-quirks_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/css-selectorText_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/custom/document-register-basic_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/dom/custom/document-register-svg-extends_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/custom/element-names_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/dom/dataset-xhtml_t01: RuntimeError # Please triage this failure
@@ -852,9 +850,10 @@
 LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/location-hash_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
 LayoutTests/fast/dom/option-properties_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/partial-layout-overlay-scrollbars_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/set-innerHTML_t01: RuntimeError # Please triage this failure
@@ -927,7 +926,6 @@
 LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-onblur-setvalue-onfocusremoved_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/forms/date/input-valueasdate-date_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/file/file-input-capture_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/focus-style-pending_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/forms/focus_t01: Pass, RuntimeError # Please triage this failure
@@ -1108,6 +1106,7 @@
 LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # Please triage this failure
@@ -1116,6 +1115,7 @@
 LayoutTests/fast/xpath/node-name-case-sensitivity_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/node-name-case-sensitivity_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/position_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/paths_t01: RuntimeError # Please triage this failure
@@ -1254,7 +1254,6 @@
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
@@ -1367,8 +1366,6 @@
 WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-009_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/event_constructor_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/event_constructor_t02: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/storage_local_setitem_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/storage_session_setitem_t01: RuntimeError # Please triage this failure
 
 [ $compiler == dart2js && $runtime == chrome && $checked ]
 LayoutTests/fast/css-intrinsic-dimensions/css-tables_t01: RuntimeError # Please triage this failure
@@ -1430,6 +1427,8 @@
 LayoutTests/fast/text/line-break-after-inline-latin1_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xmlhttprequest/xmlhttprequest-bad-mimetype_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xmlhttprequest/xmlhttprequest-invalid-values_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/xpath-result-eventlistener-crash_t01: RuntimeError # Please triage this failure
 LibTest/html/Node/ownerDocument_A01_t01: RuntimeError # Issue 18251
 WebPlatformTest/DOMEvents/approved/Propagation.path.target.removed_t01: RuntimeError # Please triage this failure
@@ -1549,6 +1548,15 @@
 LayoutTests/fast/multicol/balance-trailing-border_t01: Pass
 LayoutTests/fast/multicol/columns-shorthand-parsing_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/multicol/widows_t02: Pass
+LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Issue 24398
+
+[ $compiler == dart2js && $runtime == ff && $system == linux]
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/forms/change-form-element-document-crash_t01: RuntimeError # Dartium JSInterop failure, or else Firefox roll error. Issue 24409
+
+[ $compiler == dart2js && $runtime == chrome && $system == linux]
+LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
 
 [ $compiler == dart2js && $runtime == ff ]
 Language/12_Expressions/28_Postfix_Expressions_A07_t02: Skip # Times out. Please triage this failure
@@ -1586,7 +1594,7 @@
 LayoutTests/fast/canvas/canvas-composite-text-alpha_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-css-crazy_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-currentColor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is not implemented.
 LayoutTests/fast/canvas/canvas-drawImage-incomplete_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
@@ -2010,7 +2018,6 @@
 LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: RuntimeError # Please triage this failure
@@ -2115,7 +2122,6 @@
 LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/caseTagX_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
@@ -2184,7 +2190,7 @@
 LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/dom/importNode-unsupported-node-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/insert-span-into-long-text-bug-28245_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/insertBefore-refChild-crash_t01: RuntimeError # Please triage this failure
@@ -2192,9 +2198,9 @@
 LayoutTests/fast/dom/length-attribute-mapping_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/location-hash_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/dom/navigator-userAgent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
 LayoutTests/fast/dom/object-plugin-hides-properties_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/offset-position-writing-modes_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/option-properties_t01: RuntimeError # Please triage this failure
@@ -2408,6 +2414,7 @@
 LayoutTests/fast/forms/date/input-valueasdate-date_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/date/input-valueasnumber-date_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-change-layout-by-value_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/forms/datetimelocal/ValidityState-rangeOverflow-datetimelocal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/ValidityState-rangeUnderflow-datetimelocal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/ValidityState-stepMismatch-datetimelocal_t01: RuntimeError # Please triage this failure
@@ -2415,7 +2422,6 @@
 LayoutTests/fast/forms/datetimelocal/datetimelocal-input-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/datetimelocal-pseudo-classes_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/delete-text-with-invisible-br_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/fieldset/fieldset-disabled_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/fieldset/fieldset-elements_t01: RuntimeError # Please triage this failure
@@ -2521,7 +2527,6 @@
 LayoutTests/fast/masking/parsing-clip-path-shape_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/masking/parsing-mask-source-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/masking/parsing-mask_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/color-does-not-include-alpha_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/media/invalid-lengths_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/media/matchmedium-query-api_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/media/media-query-list-syntax_t01: RuntimeError # Please triage this failure
@@ -2701,6 +2706,7 @@
 LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # Please triage this failure
@@ -2709,6 +2715,8 @@
 LayoutTests/fast/xpath/node-name-case-sensitivity_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/node-name-case-sensitivity_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/position_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/paths_t01: RuntimeError # Please triage this failure
@@ -2887,7 +2895,6 @@
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
@@ -3063,36 +3070,13 @@
 WebPlatformTest/webstorage/event_constructor_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/event_constructor_t02: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/storage_local_setitem_quotaexceedederr_t01: Skip # Times out. Please triage this failure. Note that Chrome also requires the Slow flag. (Could just be a slow test).
-WebPlatformTest/webstorage/storage_local_setitem_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/storage_session_setitem_quotaexceedederr_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/webstorage/storage_session_setitem_t01: RuntimeError # Please triage this failure
 
 [ $compiler == dart2js && $runtime == ff && $system == windows ]
 LayoutTests/fast/dom/Window/window-scroll-arguments_t01: RuntimeError # Issue 22564
 WebPlatformTest/html/syntax/parsing/math-parse_t03: RuntimeError # Issue 22564
-LayoutTests/fast/dom/Attr/access-after-element-destruction_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/surroundContents-check-boundary-points_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/surroundContents-for-detached-node_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/encoding/css-charset-dom_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/insertAdjacentElement_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/insertAllBefore_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/insertAllBefore_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/insertBefore_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/insertBefore_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/nodes_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/replaceWith_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/children_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/insertAdjacentElement_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/insertAllBefore_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/insertAllBefore_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/insertBefore_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/insertBefore_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/nodes_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/nodes_setter_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/replaceWith_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/serializing-html-templates/outerhtml_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/forms/change-form-element-document-crash_t01: RuntimeError # Dartium JSInterop failure, or else Firefox roll error. Issue 24409
 
 [ $compiler == dart2js && $runtime == ff && $system != windows ]
 LayoutTests/fast/canvas/canvas-resetTransform_t01: RuntimeError # Please triage this failure
@@ -3153,7 +3137,7 @@
 LayoutTests/fast/canvas/canvas-blending-shadow_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-blending-text_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-blending-transforms_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_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
@@ -3457,7 +3441,6 @@
 LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: RuntimeError # Please triage this failure
@@ -3520,7 +3503,6 @@
 LayoutTests/fast/dom/Range/range-on-detached-node_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/Range/surroundContents-for-detached-node_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
@@ -3567,14 +3549,13 @@
 LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/html-collections-named-getter-mandatory-arg_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/dom/implementation-api-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNode-unsupported-node-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/location-hash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/location-missing-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
 LayoutTests/fast/dom/object-plugin-hides-properties_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/dom/option-properties_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/partial-layout-overlay-scrollbars_t01: RuntimeError # Please triage this failure
@@ -3737,6 +3718,7 @@
 LayoutTests/fast/forms/color/input-value-sanitization-color_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datalist/datalist_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datalist/input-list_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-change-layout-by-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-onblur-setvalue-onfocusremoved_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/date/ValidityState-rangeOverflow-date_t01: RuntimeError # Please triage this failure
@@ -3759,7 +3741,6 @@
 LayoutTests/fast/forms/datetimelocal/datetimelocal-pseudo-classes_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/datetimelocal-setrangetext_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/file/file-input-capture_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/form-attribute_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/input-appearance-elementFromPoint_t01: RuntimeError # Please triage this failure
@@ -3981,6 +3962,7 @@
 LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # Please triage this failure
@@ -3989,6 +3971,7 @@
 LayoutTests/fast/xpath/node-name-case-sensitivity_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/node-name-case-sensitivity_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/position_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: RuntimeError # Please triage this failure
@@ -4171,7 +4154,6 @@
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: Skip # Times out. Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
@@ -4352,9 +4334,7 @@
 WebPlatformTest/webstorage/event_session_key_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/event_session_storagearea_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
 WebPlatformTest/webstorage/event_session_url_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/webstorage/storage_local_setitem_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/storage_session_setitem_quotaexceedederr_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/webstorage/storage_session_setitem_t01: Skip # Times out. Please triage this failure
 
 [ $compiler == dart2js && $runtime == safarimobilesim ]
 LayoutTests/fast/alignment/parse-align-items_t01: RuntimeError # Please triage this failure
@@ -4402,7 +4382,7 @@
 LayoutTests/fast/canvas/canvas-composite-canvas_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-composite-stroke-alpha_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-composite-text-alpha_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_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
@@ -4715,7 +4695,6 @@
 LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: RuntimeError # Please triage this failure
@@ -4792,7 +4771,7 @@
 LayoutTests/fast/dom/SelectorAPI/caseID-almost-strict_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/caseID_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/id-fastpath-almost-strict_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/id-fastpath-strict_t01: RuntimeError # Please triage this failure
@@ -4850,15 +4829,14 @@
 LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/html-collections-named-getter-mandatory-arg_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/dom/implementation-api-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNode-unsupported-node-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/jsDevicePixelRatio_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/location-hash_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/location-missing-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
 LayoutTests/fast/dom/node-iterator-with-doctype-root_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/option-properties_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars_t01: RuntimeError # Please triage this failure
@@ -5035,7 +5013,7 @@
 LayoutTests/fast/forms/date/input-valueasnumber-date_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-change-layout-by-value_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/forms/file/file-input-capture_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/forms/focus-style-pending_t01: Skip # Times out. Please triage this failure
 LayoutTests/fast/forms/form-attribute_t01: RuntimeError # Please triage this failure
@@ -5274,6 +5252,7 @@
 LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # Please triage this failure
@@ -5282,6 +5261,7 @@
 LayoutTests/fast/xpath/node-name-case-sensitivity_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/node-name-case-sensitivity_t02: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/position_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
 LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: RuntimeError # Please triage this failure
@@ -5493,7 +5473,6 @@
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: Skip # Times out. Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
@@ -5672,8 +5651,6 @@
 WebPlatformTest/webstorage/event_constructor_t02: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/event_local_key_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/event_session_key_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/storage_local_setitem_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/storage_session_setitem_t01: RuntimeError # Please triage this failure
 
 # This test is not flaky: IE10 on Windows 7 is different from IE10 on Windows 8.
 # The test fails on Windows 7's version, but it is currently not possible to test
@@ -5741,7 +5718,7 @@
 LayoutTests/fast/canvas/canvas-composite-canvas_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-css-crazy_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-currentColor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is not implemented
 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
@@ -6200,7 +6177,7 @@
 LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Issue 24396
 LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: RuntimeError # Please triage this failure
@@ -6375,7 +6352,6 @@
 LayoutTests/fast/dom/SelectorAPI/caseID_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/caseTagX_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
@@ -6473,7 +6449,6 @@
 LayoutTests/fast/dom/icon-size-property_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/image-object_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/implementation-api-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNode-unsupported-node-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNodeHTML_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNodeXML_t01: RuntimeError # Please triage this failure
@@ -6483,9 +6458,9 @@
 LayoutTests/fast/dom/location-hash_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/navigator-userAgent_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/navigator-vendorSub_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
 LayoutTests/fast/dom/node-iterator-with-doctype-root_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/noscript-style_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/offset-position-writing-modes_t01: RuntimeError # Please triage this failure
@@ -7499,7 +7474,6 @@
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: Skip # Times out. Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: Skip # Times out. Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
@@ -7704,8 +7678,6 @@
 WebPlatformTest/webstorage/event_session_url_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/storage_builtins_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/storage_local_setitem_quotaexceedederr_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/webstorage/storage_local_setitem_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/storage_session_setitem_t01: RuntimeError # Please triage this failure
 
 [ $compiler == dart2js && $runtime == ie11 ]
 Language/05_Variables/05_Variables_A14_t07: Skip # Times out. Please triage this failure
@@ -7770,7 +7742,7 @@
 LayoutTests/fast/canvas/canvas-composite-text-alpha_t01: Pass, RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-css-crazy_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/canvas/canvas-currentColor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is not implemented
 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
@@ -8213,7 +8185,7 @@
 LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Issue 24396
 LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: RuntimeError # Please triage this failure
@@ -8369,7 +8341,6 @@
 LayoutTests/fast/dom/SelectorAPI/caseID_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/caseTagX_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
@@ -8464,7 +8435,6 @@
 LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/icon-size-property_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/image-object_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNode-unsupported-node-type_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNodeHTML_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/importNodeXML_t01: RuntimeError # Please triage this failure
@@ -8473,9 +8443,9 @@
 LayoutTests/fast/dom/location-hash_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/navigator-userAgent_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/navigator-vendorSub_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: RuntimeError # Please triage this failure
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
 LayoutTests/fast/dom/node-iterator-with-doctype-root_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/noscript-style_t01: RuntimeError # Please triage this failure
 LayoutTests/fast/dom/offset-position-writing-modes_t01: RuntimeError # Please triage this failure
@@ -9366,7 +9336,6 @@
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: Skip # Times out. Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: Skip # Times out. Please triage this failure
 WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/Document.getElementsByClassName-null_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
@@ -9569,8 +9538,6 @@
 WebPlatformTest/webstorage/event_session_url_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/storage_builtins_t01: RuntimeError # Please triage this failure
 WebPlatformTest/webstorage/storage_local_setitem_quotaexceedederr_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/webstorage/storage_local_setitem_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/storage_session_setitem_t01: RuntimeError # Please triage this failure
 
 [ $compiler == dart2js && $cps_ir ]
 Language/12_Expressions/12_Instance_Creation/1_New_A06_t12: RuntimeError # Please triage this failure.
diff --git a/tests/co19/co19-dartium.status b/tests/co19/co19-dartium.status
index 26e1d15..47d5f46 100644
--- a/tests/co19/co19-dartium.status
+++ b/tests/co19/co19-dartium.status
@@ -11,6 +11,23 @@
 LayoutTests/fast/writing-mode/vertical-inline-block-hittest_t01: Pass, RuntimeError # Issue 21605
 LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow_t01: Pass, RuntimeError # Issue 21605
 
+[ $compiler == none && $runtime == dartium ]
+LayoutTests/fast/canvas/canvas-lineDash-input-sequence_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/events/remove-event-listener_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
+LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Dartium JSInterop failure
+LibTest/html/Element/offsetParent_A01_t01: RuntimeError # Dartium JSInterop failure
+LibTest/html/Event/currentTarget_A01_t01: RuntimeError # Dartium JSInterop failure
+LibTest/html/Event/matchingTarget_A01_t01: RuntimeError # Dartium JSInterop failure
+LibTest/html/Event/target_A01_t01: RuntimeError # Dartium JSInterop failure
+
+[ $compiler == none && $runtime == dartium && $checked ]
+LayoutTests/fast/css/style-scoped/style-scoped-scoping-nodes-different-order_t01: RuntimeError # Dartium JSInterop failure
+
 [ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) ]
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba4444_t01: Skip # Issue 20540
 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565_t01: Skip # Issue 20540
@@ -38,9 +55,6 @@
 LayoutTests/fast/sub-pixel/size-of-span-with-different-positions_t01: Skip # co19 issue 732.
 LayoutTests/fast/text/international/complex-text-rectangle_t01: Skip # co19 issue 732.
 LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: Skip # co19 issue 732.
-LibTest/html/Window/document_A01_t01: RuntimeError # Issue 20146
-LibTest/html/Window/postMessage_A01_t02: RuntimeError # Issue 20146
-LibTest/html/Window/moveBy_A01_t01: RuntimeError # Issue 20146
 LayoutTests/fast/css-generated-content/bug91547_t01: Skip # Test reloads itself. Issue 18558.
 LayoutTests/fast/filesystem/file-after-reload-crash_t01: Skip # Test reloads itself. Issue 18558.
 LayoutTests/fast/dom/HTMLButtonElement/change-type_t01: Skip # Test reloads itself. Issue 18558.
@@ -204,7 +218,6 @@
 LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/IFrameElement/borderEdge_A01_t01: RuntimeError # co19-roll r706.  Issue 16574
 LibTest/html/IFrameElement/clone_A01_t02: RuntimeError # co19-roll r706.  Please triage this failure.
-LibTest/html/IFrameElement/contentWindow_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/IFrameElement/createFragment_A01_t01: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/IFrameElement/createFragment_A01_t02: RuntimeError # co19-roll r706.  Please triage this failure.
 LibTest/html/IFrameElement/createFragment_A01_t03: RuntimeError # co19-roll r706.  Please triage this failure.
@@ -253,7 +266,6 @@
 LayoutTests/fast/dom/HTMLDialogElement/multiple-centered-dialogs_t01: RuntimeError # co19-roll r722: Please triage this failure.
 LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning_t01: RuntimeError # co19-roll r722: Please triage this failure.
 LayoutTests/fast/dom/HTMLOutputElement/dom-settable-token-list_t01: RuntimeError # Issue 18931
-LayoutTests/fast/dom/HTMLObjectElement/set-type-to-null-crash_t01: RuntimeError # Issue 18931
 LayoutTests/fast/dom/HTMLDialogElement/show-modal-focusing-steps_t01: RuntimeError # co19-roll r722: Please triage this failure.
 LayoutTests/fast/dom/HTMLElement/set-inner-outer-optimization_t01: RuntimeError # co19-roll r722: Please triage this failure.
 LayoutTests/fast/dom/HTMLElement/spellcheck_t01: RuntimeError # co19-roll r722: Please triage this failure.
@@ -292,13 +304,11 @@
 WebPlatformTest/shadow-dom/events/event-dispatch/test-001_t01: RuntimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/events/event-dispatch/test-003_t01: RuntimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/events/event-retargeting/test-001_t01: RuntimeError # co19-roll r722: Please triage this failure.
-WebPlatformTest/shadow-dom/events/event-retargeting/test-002_t01: RuntimeError # co19-roll r722: Please triage this failure.
+WebPlatformTest/shadow-dom/events/event-retargeting/test-002_t01: RuntimeError # Not clear that any of this works. Also suppressed in dart2js
 WebPlatformTest/shadow-dom/events/event-retargeting/test-004_t01: RuntimeError # co19-roll r722: Please triage this failure.
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: RuntimeError, Skip # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t02: Skip # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t05: Skip # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t06: Skip # co19-roll r722: Please triage this failure.
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: RuntimeError, Pass # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-003_t01: RuntimeError, Pass # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-003_t01: RuntimeError # co19-roll r722: Please triage this failure.
 WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-001_t01: RuntimeError # co19-roll r722: Please triage this failure.
@@ -323,7 +333,6 @@
 LayoutTests/fast/dom/HTMLTemplateElement/custom-element-wrapper-gc_t01: RuntimeError # co19-roll r722: Issue 18250
 LayoutTests/fast/dom/HTMLTemplateElement/innerHTML_t01: RuntimeError # co19-roll r722: Issue 18249
 LayoutTests/fast/dom/HTMLTemplateElement/ownerDocumentXHTML_t01: RuntimeError # co19-roll r722: Please triage this failure.
-LayoutTests/fast/dom/MutationObserver/observe-attributes_t01: RuntimeError # Issue 18931
 LayoutTests/fast/dom/MutationObserver/observe-childList_t01: RuntimeError # co19-roll r722: Issue 18253
 LayoutTests/fast/dom/MutationObserver/weak-callback-gc-crash_t01: RuntimeError # co19-roll r722: Please triage this failure.
 LayoutTests/fast/dom/Node/initial-values_t01: RuntimeError # co19-roll r722: Please triage this failure.
@@ -369,9 +378,6 @@
 WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t02: RuntimeError # Please triage this failure.
 WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t01: RuntimeError # Please triage this failure.
 WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t02: RuntimeError # Please triage this failure.
-WebPlatformTest/shadow-dom/events/event-dispatch/test-002_t01: RuntimeError # Please triage this failure.
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-001_t01: RuntimeError # Please triage this failure.
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-002_t01: RuntimeError # Please triage this failure.
 WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-009_t01: RuntimeError # Please triage this failure.
 
 LayoutTests/fast/dom/css-innerHTML_t01: RuntimeError # Test is incorrect.
@@ -388,8 +394,6 @@
 LayoutTests/fast/dom/blur-contenteditable_t01: RuntimeError, Pass # co19-roll r738: Please triage this failure.
 LayoutTests/fast/dom/characterdata-api-arguments_t01: RuntimeError # co19-roll r738: Please triage this failure.
 LayoutTests/fast/dom/client-width-height-quirks_t01: RuntimeError # co19-roll r738: Please triage this failure.
-LayoutTests/fast/dom/css-mediarule-functions_t01: RuntimeError # co19-roll r738: Please triage this failure.
-LayoutTests/fast/dom/custom/attribute-changed-callback_t01: RuntimeError # co19-roll r738: Please triage this failure.
 LayoutTests/fast/dom/custom/document-register-svg-extends_t01: RuntimeError # co19-roll r738: Please triage this failure.
 LayoutTests/fast/dom/dataset-xhtml_t01: RuntimeError # co19-roll r738: Please triage this failure.
 LayoutTests/fast/dom/dataset_t01: RuntimeError # co19-roll r738: Please triage this failure.
@@ -413,7 +417,6 @@
 WebPlatformTest/DOMEvents/approved/addEventListener.optional.useCapture_t01: RuntimeError # co19-roll r738: Please triage this failure.
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # co19-roll r738: Please triage this failure.
 WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: RuntimeError # co19-roll r738: Please triage this failure.
-WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # co19-roll r738: Please triage this failure.
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # co19-roll r738: Please triage this failure.
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # co19-roll r738: Please triage this failure.
 WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # co19-roll r738: Please triage this failure.
@@ -446,8 +449,6 @@
 LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.negative_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.verySmall_t01: RuntimeError # co19-roll r761: Please triage this failure.
-LayoutTests/fast/canvas/alpha_t01: RuntimeError # co19-roll r761: Please triage this failure.
-LayoutTests/fast/canvas/canvas-2d-imageData-create-nonfinite_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/canvas-arc-negative-radius_t01: Skip # Times out. co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/canvas-blending-text_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/canvas-empty-image-pattern_t01: RuntimeError # co19-roll r761: Please triage this failure.
@@ -456,12 +457,9 @@
 LayoutTests/fast/canvas/canvas-large-fills_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/canvas-lose-restore-googol-size_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/canvas-lose-restore-max-int-size_t01: RuntimeError # co19-roll r761: Please triage this failure.
-LayoutTests/fast/canvas/canvas-putImageData_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/draw-custom-focus-ring_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/drawImage-with-broken-image_t01: Timeout, Pass # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/getPutImageDataPairTest_t01: RuntimeError # co19-roll r761: Please triage this failure.
-LayoutTests/fast/canvas/linearGradient-infinite-values_t01: RuntimeError # co19-roll r761: Please triage this failure.
-LayoutTests/fast/canvas/radialGradient-infinite-values_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/webgl/bad-arguments-test_t01: RuntimeError # co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/webgl/canvas-resize-crash_t01: Skip # Causes following tests to fail. co19-roll r761: Please triage this failure.
 LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: RuntimeError # co19-roll r761: Please triage this failure.
@@ -576,6 +574,7 @@
 WebPlatformTest/html/semantics/tabular-data/the-table-element/table-rows_t01: RuntimeError # co19-roll r761: Please triage this failure.
 WebPlatformTest/html/semantics/tabular-data/the-tr-element/rowIndex_t01: RuntimeError # co19-roll r761: Please triage this failure.
 WebPlatformTest/html/syntax/serializing-html-fragments/outerHTML_t01: RuntimeError # co19-roll r761: Please triage this failure.
+WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t01: RuntimeError # Tests APIs that aren't yet visible. Tests should be deleted.
 WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t02: RuntimeError # co19-roll r761: Please triage this failure.
 WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t03: RuntimeError # co19-roll r761: Please triage this failure.
 WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t05: RuntimeError # co19-roll r761: Please triage this failure.
@@ -679,9 +678,6 @@
 LayoutTests/fast/exclusions/parsing/parsing-wrap-through_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/files/blob-close-read_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/files/blob-close_t01: RuntimeError # co19-roll r786: Please triage this failure.
-LayoutTests/fast/files/blob-constructor_t01: RuntimeError # co19-roll r786: Please triage this failure.
-LayoutTests/fast/files/file-reader-methods-illegal-arguments_t01: RuntimeError # co19-roll r786: Please triage this failure.
-LayoutTests/fast/files/url-null_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/files/xhr-response-blob_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/filesystem/async-operations_t01: Pass, RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/filesystem/directory-entry-to-uri_t01: RuntimeError # co19-roll r786: Please triage this failure.
@@ -774,7 +770,6 @@
 WebPlatformTest/html/semantics/forms/the-input-element/password_t01: RuntimeError # co19-roll r786: Please triage this failure.
 WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t02: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/dom/52776_t01: RuntimeError # Please triage this failure.
-LayoutTests/fast/dom/DOMException/XPathException_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/Node/fragment-mutation_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/Range/bug-19527_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/Range/insertNode-empty-fragment-crash_t01: RuntimeError # Please triage this failure.
@@ -784,9 +779,8 @@
 LayoutTests/fast/dom/Range/range-insertNode-separate-endContainer_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/document-importNode-arguments_t01: RuntimeError # Please triage this failure.
-LayoutTests/fast/dom/domparser-parsefromstring-mimetype-support_t01: RuntimeError # Please triage this failure.
 LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure.
-LayoutTests/fast/dom/text-api-arguments_t01: RuntimeError # Please triage this failure.
+
 
 # co19-roll r801
 LayoutTests/fast/canvas/webgl/canvas-test_t01: Pass, RuntimeError # co19-roll r801: Please triage this failure.
@@ -852,9 +846,7 @@
 LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. co19-roll r801: Please triage this failure.
 LayoutTests/fast/loader/scroll-position-restored-on-back_t01: RuntimeError # co19-roll r801: Please triage this failure.
 LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: Skip # Times out. co19-roll r801: Please triage this failure.
-LayoutTests/fast/loader/stateobjects/pushstate-updates-location_t01: RuntimeError # co19-roll r801: Please triage this failure.
 LayoutTests/fast/loader/stateobjects/replacestate-in-onunload_t01: RuntimeError # co19-roll r801: Please triage this failure.
-LayoutTests/fast/loader/stateobjects/replacestate-updates-location_t01: RuntimeError # co19-roll r801: Please triage this failure.
 LayoutTests/fast/masking/parsing-clip-path-shape_t01: RuntimeError # co19-roll r801: Please triage this failure.
 LayoutTests/fast/masking/parsing-mask-source-type_t01: RuntimeError # co19-roll r801: Please triage this failure.
 LayoutTests/fast/masking/parsing-mask_t01: RuntimeError # co19-roll r801: Please triage this failure.
@@ -942,7 +934,6 @@
 LayoutTests/fast/multicol/orphans-relayout_t01: Pass, RuntimeError
 LayoutTests/fast/multicol/zeroColumnCount_t01: RuntimeError
 LayoutTests/fast/media/media-query-serialization_t01: RuntimeError
-LayoutTests/fast/media/color-does-not-include-alpha_t01: RuntimeError
 LayoutTests/fast/media/mq-append-delete_t01: RuntimeError
 LayoutTests/fast/media/mq-color-index_t02: RuntimeError
 LayoutTests/fast/media/mq-js-media-except_t02: RuntimeError
@@ -1153,8 +1144,6 @@
 LayoutTests/fast/text/line-break-after-inline-latin1_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/url/trivial-segments_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/url/trivial_t01: RuntimeError # co19-roll r786: Please triage this failure.
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-bad-mimetype_t01: RuntimeError # co19-roll r786: Please triage this failure.
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-invalid-values_t01: RuntimeError # co19-roll r786: Please triage this 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.
 
@@ -1328,6 +1317,10 @@
 LayoutTests/fast/css/fontfaceset-events_t01: Pass, RuntimeError # Issue 23433
 LayoutTests/fast/events/clipboard-dataTransferItemList-remove_t01: RuntimeError # Issue 22532
 LayoutTests/fast/forms/textarea-paste-newline_t01: Pass, RuntimeError # Issue 23433
+LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is behind a flag in Chrome
+LayoutTests/fast/files/blob-close-revoke_t01: RuntimeError # Experimental feature not exposed anywhere yet
+LayoutTests/fast/forms/file/file-input-capture_t01: RuntimeError # Experimental feature not exposed in Chrome yet
+LayoutTests/fast/forms/input-inputmode_t01: RuntimeError # Experimental feature not exposed in Chrome yet
 
 [ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) && $system != windows ]
 LayoutTests/fast/css/font-face-unicode-range-monospace_t01: RuntimeError # co19-roll r761: Please triage this failure.
diff --git a/tests/compiler/dart2js/analyze_dart2js_helpers_test.dart b/tests/compiler/dart2js/analyze_dart2js_helpers_test.dart
index 98555ea..0787dd3 100644
--- a/tests/compiler/dart2js/analyze_dart2js_helpers_test.dart
+++ b/tests/compiler/dart2js/analyze_dart2js_helpers_test.dart
@@ -27,7 +27,7 @@
 import 'package:compiler/src/source_file_provider.dart' show
     FormattingDiagnosticHandler;
 import 'package:compiler/src/tree/tree.dart';
-import 'package:compiler/src/universe/universe.dart' show
+import 'package:compiler/src/universe/call_structure.dart' show
     CallStructure;
 import 'package:expect/expect.dart';
 
diff --git a/tests/compiler/dart2js/analyze_unused_dart2js_test.dart b/tests/compiler/dart2js/analyze_unused_dart2js_test.dart
index 8c68b18..10fc5a5 100644
--- a/tests/compiler/dart2js/analyze_unused_dart2js_test.dart
+++ b/tests/compiler/dart2js/analyze_unused_dart2js_test.dart
@@ -18,9 +18,10 @@
   // Helper methods for debugging should never be called from production code:
   "lib/src/helpers/": const [" is never "],
 
-  // Node.asLiteralBool is never used.
+  // Node.asAssert, Node.asLiteralBool is never used.
   "lib/src/tree/nodes.dart": const [
-      "The method 'asLiteralBool' is never called"],
+      "The method 'asAssert' is never called.",
+      "The method 'asLiteralBool' is never called."],
 
   // Some things in dart_printer are not yet used
   "lib/src/dart_backend/backend_ast_nodes.dart": const [" is never "],
diff --git a/tests/compiler/dart2js/backend_dart/dart_printer_test.dart b/tests/compiler/dart2js/backend_dart/dart_printer_test.dart
index 801b75d..f6fd38b 100644
--- a/tests/compiler/dart2js/backend_dart/dart_printer_test.dart
+++ b/tests/compiler/dart2js/backend_dart/dart_printer_test.dart
@@ -587,9 +587,14 @@
     push(new ForIn(declaredIdentifier, exp, body));
   }
 
-  handleAssertStatement(Token assertKeyword, Token semicolonToken) {
+  handleAssertStatement(Token assertKeyword,
+                        Token commaToken, Token semicolonToken) {
+    Expression message;
+    if (commaToken != null) message = pop();
     Expression exp = pop();
-    Expression call = new CallFunction(new Identifier("assert"), [exp]);
+    var arguments = [exp];
+    if (message != null) arguments.add(message);
+    Expression call = new CallFunction(new Identifier("assert"), arguments);
     push(new ExpressionStatement(call));
   }
 
diff --git a/tests/compiler/dart2js/backend_dart/sexpr_unstringifier.dart b/tests/compiler/dart2js/backend_dart/sexpr_unstringifier.dart
index 736faf0..e0252e7 100644
--- a/tests/compiler/dart2js/backend_dart/sexpr_unstringifier.dart
+++ b/tests/compiler/dart2js/backend_dart/sexpr_unstringifier.dart
@@ -17,8 +17,10 @@
 import 'package:compiler/src/elements/modelx.dart'
     show ErroneousElementX, TypeVariableElementX;
 import 'package:compiler/src/tree/tree.dart' show LiteralDartString;
-import 'package:compiler/src/universe/universe.dart'
-    show Selector, SelectorKind, CallStructure;
+import 'package:compiler/src/universe/call_structure.dart'
+    show CallStructure;
+import 'package:compiler/src/universe/selector.dart'
+    show Selector, SelectorKind;
 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart';
 
 /// Used whenever a node constructed by [SExpressionUnstringifier] needs a
diff --git a/tests/compiler/dart2js/cpa_inference_test.dart b/tests/compiler/dart2js/cpa_inference_test.dart
index 114cf3c..50e458b 100644
--- a/tests/compiler/dart2js/cpa_inference_test.dart
+++ b/tests/compiler/dart2js/cpa_inference_test.dart
@@ -7,8 +7,9 @@
 import "package:async_helper/async_helper.dart";
 import 'package:compiler/src/types/types.dart';
 import 'package:compiler/src/inferrer/concrete_types_inferrer.dart';
-import 'package:compiler/src/universe/universe.dart' show
-    CallStructure,
+import 'package:compiler/src/universe/call_structure.dart' show
+    CallStructure;
+import 'package:compiler/src/universe/selector.dart' show
     Selector;
 
 import "compiler_helper.dart";
diff --git a/tests/compiler/dart2js/dart2js.status b/tests/compiler/dart2js/dart2js.status
index 0ae992d..3b0aae1 100644
--- a/tests/compiler/dart2js/dart2js.status
+++ b/tests/compiler/dart2js/dart2js.status
@@ -20,12 +20,6 @@
 simple_inferrer_const_closure_test: Fail # Issue 16507
 simple_inferrer_const_closure2_test: Fail # Issue 16507
 simple_inferrer_global_field_closure_test: Fail # Issue 16507
-simple_inferrer_const_closure_default_test/05: Fail # Issue 24297
-simple_inferrer_const_closure_default_test/06: Fail # Issue 24297
-simple_inferrer_const_closure_default_test/09: Fail # Issue 24297
-simple_inferrer_const_closure_default_test/10: Fail # Issue 24297
-simple_inferrer_const_closure_default_test/11: Fail # Issue 24297
-simple_inferrer_const_closure_default_test/12: Fail # Issue 24297
 
 logical_expression_test: Fail # Issue 17027
 
diff --git a/tests/compiler/dart2js/gvn_dynamic_field_get_test.dart b/tests/compiler/dart2js/gvn_dynamic_field_get_test.dart
index 2dafdf2..350dcc4 100644
--- a/tests/compiler/dart2js/gvn_dynamic_field_get_test.dart
+++ b/tests/compiler/dart2js/gvn_dynamic_field_get_test.dart
@@ -7,7 +7,7 @@
 import 'package:expect/expect.dart';
 import 'package:async_helper/async_helper.dart';
 import 'compiler_helper.dart';
-import 'package:compiler/src/universe/universe.dart' show Selector;
+import 'package:compiler/src/universe/selector.dart' show Selector;
 
 const String TEST = r"""
 class A {
diff --git a/tests/compiler/dart2js/js_backend_cps_ir.dart b/tests/compiler/dart2js/js_backend_cps_ir.dart
index f1fd70a..c2b0595 100644
--- a/tests/compiler/dart2js/js_backend_cps_ir.dart
+++ b/tests/compiler/dart2js/js_backend_cps_ir.dart
@@ -79,8 +79,9 @@
             Expect.fail('Expected:\n$expected\nbut found\n$found');
           }
         }
-      } catch (e) {
+      } catch (e, st) {
         print(e);
+        print(st);
         Expect.fail('The following test failed to compile:\n'
                     '${formatTest(files)}');
       }
diff --git a/tests/compiler/dart2js/js_spec_string_test.dart b/tests/compiler/dart2js/js_spec_string_test.dart
index ca1ac9a..d86a4c7 100644
--- a/tests/compiler/dart2js/js_spec_string_test.dart
+++ b/tests/compiler/dart2js/js_spec_string_test.dart
@@ -7,7 +7,7 @@
 import 'package:expect/expect.dart';
 import 'package:compiler/src/native/native.dart';
 import 'package:compiler/src/diagnostics/diagnostic_listener.dart';
-import 'package:compiler/src/universe/universe.dart'
+import 'package:compiler/src/universe/side_effects.dart'
     show SideEffects;
 
 const OBJECT = 'Object';
diff --git a/tests/compiler/dart2js/mock_compiler.dart b/tests/compiler/dart2js/mock_compiler.dart
index b52951c..06265f4 100644
--- a/tests/compiler/dart2js/mock_compiler.dart
+++ b/tests/compiler/dart2js/mock_compiler.dart
@@ -74,6 +74,7 @@
   MockCompiler.internal(
       {Map<String, String> coreSource,
        bool enableTypeAssertions: false,
+       bool enableUserAssertions: false,
        bool enableMinification: false,
        bool enableConcreteTypeInference: false,
        int maxConcreteTypeSize: 5,
@@ -95,6 +96,8 @@
       : sourceFiles = new Map<String, SourceFile>(),
         testedPatchVersion = patchVersion,
         super(enableTypeAssertions: enableTypeAssertions,
+              enableUserAssertions: enableUserAssertions,
+              enableAssertMessage: true,
               enableMinification: enableMinification,
               enableConcreteTypeInference: enableConcreteTypeInference,
               maxConcreteTypeSize: maxConcreteTypeSize,
@@ -447,6 +450,7 @@
                           bool minify: false,
                           bool trustTypeAnnotations: false,
                           bool enableTypeAssertions: false,
+                          bool enableUserAssertions: false,
                           int expectedErrors,
                           int expectedWarnings,
                           api.CompilerOutputProvider outputProvider}) {
@@ -458,6 +462,7 @@
       enableMinification: minify,
       trustTypeAnnotations: trustTypeAnnotations,
       enableTypeAssertions: enableTypeAssertions,
+      enableUserAssertions: enableUserAssertions,
       expectedErrors: expectedErrors,
       expectedWarnings: expectedWarnings,
       outputProvider: outputProvider);
diff --git a/tests/compiler/dart2js/mock_libraries.dart b/tests/compiler/dart2js/mock_libraries.dart
index 5de30cb..9a87e5f 100644
--- a/tests/compiler/dart2js/mock_libraries.dart
+++ b/tests/compiler/dart2js/mock_libraries.dart
@@ -107,7 +107,10 @@
 ''';
 
 const Map<String, String> DEFAULT_JS_HELPER_LIBRARY = const <String, String>{
+  'assertTest': 'assertTest(a) {}',
+  'assertThrow': 'assertThrow(a) {}',
   'assertHelper': 'assertHelper(a) {}',
+  'assertUnreachable': 'assertUnreachable() {}',
   'assertIsSubtype': 'assertIsSubtype(subtype, supertype, message) {}',
   'assertSubtype': 'assertSubtype(object, isField, checks, asField) {}',
   'assertSubtypeOfRuntimeType': 'assertSubtypeOfRuntimeType(object, type) {}',
@@ -368,8 +371,8 @@
       }''',
   'JSString': r'''
       class JSString extends Interceptor implements String, JSIndexable {
-        var split;
-        var length;
+        split(pattern) => [];
+        int get length => 42;
         operator[](index) {}
         toString() {}
         operator+(other) => this;
diff --git a/tests/compiler/dart2js/patch_test.dart b/tests/compiler/dart2js/patch_test.dart
index 6077db8..10c8bca 100644
--- a/tests/compiler/dart2js/patch_test.dart
+++ b/tests/compiler/dart2js/patch_test.dart
@@ -12,8 +12,9 @@
 import 'package:compiler/src/elements/modelx.dart';
 import 'package:compiler/src/tree/tree.dart';
 import 'package:compiler/src/types/types.dart';
-import 'package:compiler/src/universe/universe.dart' show
-    CallStructure,
+import 'package:compiler/src/universe/call_structure.dart' show
+    CallStructure;
+import 'package:compiler/src/universe/selector.dart' show
     Selector;
 import 'package:compiler/src/world.dart';
 
diff --git a/tests/compiler/dart2js/related_types.dart b/tests/compiler/dart2js/related_types.dart
index 9843180..9a20d0b 100644
--- a/tests/compiler/dart2js/related_types.dart
+++ b/tests/compiler/dart2js/related_types.dart
@@ -13,7 +13,8 @@
 import 'package:compiler/src/filenames.dart';
 import 'package:compiler/src/resolution/semantic_visitor.dart';
 import 'package:compiler/src/tree/tree.dart';
-import 'package:compiler/src/universe/universe.dart';
+import 'package:compiler/src/universe/call_structure.dart';
+import 'package:compiler/src/universe/selector.dart';
 import 'package:compiler/src/world.dart';
 import 'memory_compiler.dart';
 
diff --git a/tests/compiler/dart2js/semantic_visitor_test.dart b/tests/compiler/dart2js/semantic_visitor_test.dart
index 575b758..3376a67 100644
--- a/tests/compiler/dart2js/semantic_visitor_test.dart
+++ b/tests/compiler/dart2js/semantic_visitor_test.dart
@@ -19,8 +19,9 @@
 import 'package:compiler/src/resolution/semantic_visitor.dart';
 import 'package:compiler/src/resolution/tree_elements.dart';
 import 'package:compiler/src/tree/tree.dart';
-import 'package:compiler/src/universe/universe.dart' show
-    CallStructure,
+import 'package:compiler/src/universe/call_structure.dart' show
+    CallStructure;
+import 'package:compiler/src/universe/selector.dart' show
     Selector;
 import 'memory_compiler.dart';
 
@@ -672,7 +673,6 @@
   VISIT_UNRESOLVED_SUPER_GETTER_COMPOUND_INDEX_SET,
   VISIT_UNRESOLVED_SUPER_SETTER_COMPOUND_INDEX_SET,
 
-  VISIT_ASSERT,
   VISIT_LOGICAL_AND,
   VISIT_LOGICAL_OR,
   VISIT_IS,
@@ -734,7 +734,6 @@
   VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_PREFIX,
   VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_POSTFIX,
 
-  ERROR_INVALID_ASSERT,
   ERROR_UNDEFINED_UNARY_EXPRESSION,
   ERROR_UNDEFINED_BINARY_EXPRESSION,
   ERROR_INVALID_GET,
diff --git a/tests/compiler/dart2js/semantic_visitor_test_send_data.dart b/tests/compiler/dart2js/semantic_visitor_test_send_data.dart
index 8dc6e3d..c407766 100644
--- a/tests/compiler/dart2js/semantic_visitor_test_send_data.dart
+++ b/tests/compiler/dart2js/semantic_visitor_test_send_data.dart
@@ -1742,19 +1742,11 @@
     // Assert
     const Test(
         '''
-        m() { assert(false); }
+        m() { assert(m()); }
         ''',
-        const Visit(VisitKind.VISIT_ASSERT, expression: 'false')),
-    const Test(
-        '''
-        m() { assert(); }
-        ''',
-        const Visit(VisitKind.ERROR_INVALID_ASSERT, arguments: '()')),
-    const Test(
-        '''
-        m() { assert(42, true); }
-        ''',
-        const Visit(VisitKind.ERROR_INVALID_ASSERT, arguments: '(42,true)')),
+        const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
+                    element: 'function(m)',
+                    arguments: '()')),
   ],
   'Logical and': const [
     // Logical and
diff --git a/tests/compiler/dart2js/semantic_visitor_test_send_visitor.dart b/tests/compiler/dart2js/semantic_visitor_test_send_visitor.dart
index 3aa941e..0125b43 100644
--- a/tests/compiler/dart2js/semantic_visitor_test_send_visitor.dart
+++ b/tests/compiler/dart2js/semantic_visitor_test_send_visitor.dart
@@ -20,24 +20,6 @@
   }
 
   @override
-  visitAssert(
-      Send node,
-      Node expression,
-      arg) {
-    visits.add(new Visit(VisitKind.VISIT_ASSERT, expression: expression));
-    super.visitAssert(node, expression, arg);
-  }
-
-  @override
-  errorInvalidAssert(
-      Send node,
-      NodeList arguments,
-      arg) {
-    visits.add(new Visit(VisitKind.ERROR_INVALID_ASSERT, arguments: arguments));
-    super.errorInvalidAssert(node, arguments, arg);
-  }
-
-  @override
   errorInvalidCompound(
       Send node,
       ErroneousElement error,
diff --git a/tests/compiler/dart2js/simple_inferrer_const_closure_default_test.dart b/tests/compiler/dart2js/simple_inferrer_const_closure_default_test.dart
index e6d2e92..b5bc4e6 100644
--- a/tests/compiler/dart2js/simple_inferrer_const_closure_default_test.dart
+++ b/tests/compiler/dart2js/simple_inferrer_const_closure_default_test.dart
@@ -71,8 +71,8 @@
     checkArgument('foo2', compiler.typesTask.functionType);   /// 02: ok
     checkArgument('foo3', compiler.typesTask.functionType);   /// 03: ok
     checkArgument('foo4', compiler.typesTask.functionType);   /// 04: ok
-    checkArgument('foo5', compiler.typesTask.functionType);   /// 05: ok
-    checkArgument('foo6', compiler.typesTask.functionType);   /// 06: ok
+    checkArgument('foo5', compiler.typesTask.dynamicType);    /// 05: ok
+    checkArgument('foo6', compiler.typesTask.dynamicType);    /// 06: ok
 
     checkArgument('defaultFn1', compiler.typesTask.uint31Type);   /// 07: ok
     checkArgument('defaultFn2', compiler.typesTask.uint31Type);   /// 08: ok
diff --git a/tests/compiler/dart2js/type_inference7_test.dart b/tests/compiler/dart2js/type_inference7_test.dart
new file mode 100644
index 0000000..64b8cbc
--- /dev/null
+++ b/tests/compiler/dart2js/type_inference7_test.dart
@@ -0,0 +1,79 @@
+// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "package:async_helper/async_helper.dart";
+import "package:expect/expect.dart";
+import 'compiler_helper.dart';
+import 'type_mask_test_helper.dart';
+import 'dart:async';
+
+const String TEST = r"""
+foo(x, [y]) => y;
+
+main() {
+  assert(foo('Hi', true), foo(true));
+  foo(1);
+}
+""";
+
+Future runTest() async {
+  Uri uri = new Uri(scheme: 'source');
+  {
+    // Assertions enabled:
+    var compiler = compilerFor(TEST, uri, enableUserAssertions: true);
+    await compiler.runCompiler(uri);
+    var typesTask = compiler.typesTask;
+    var typesInferrer = typesTask.typesInferrer;
+    var foo = findElement(compiler, "foo");
+    // Return type is null|bool.
+    var mask = typesInferrer.getReturnTypeOfElement(foo);
+    Expect.isTrue(mask.isNullable);
+    Expect.equals(typesTask.boolType, simplify(mask.nonNullable(), compiler));
+    // First parameter is uint31|String|bool.
+    var mask1 = typesInferrer.getTypeOfElement(foo.parameters[0]);
+    Expect.isTrue(mask1.isUnion);
+    var expectedTypes = new Set.from([typesTask.uint31Type,
+                                      typesTask.stringType,
+                                      typesTask.boolType]);
+    for (var typeMask in mask1.disjointMasks) {
+      Expect.isFalse(typeMask.isNullable);
+      var simpleType = simplify(typeMask, compiler);
+      Expect.isTrue(expectedTypes.remove(simpleType), "$simpleType");
+    }
+    Expect.isTrue(expectedTypes.isEmpty);
+    // Second parameter is bool or null.
+    var mask2 = typesInferrer.getTypeOfElement(foo.parameters[1]);
+    Expect.isTrue(mask2.isNullable);
+    Expect.equals(typesTask.boolType, simplify(mask2.nonNullable(), compiler));
+  }
+
+  {
+    // Assertions disabled:
+    var compiler = compilerFor(TEST, uri, enableUserAssertions: false);
+    await compiler.runCompiler(uri);
+    var typesTask = compiler.typesTask;
+    var typesInferrer = typesTask.typesInferrer;
+    var foo = findElement(compiler, "foo");
+    // Return type is null.
+    var mask = typesInferrer.getReturnTypeOfElement(foo);
+    Expect.isTrue(mask.isNullable);
+    Expect.isTrue(mask.nonNullable().isEmpty);
+    // First parameter is uint31.
+    var mask1 = typesInferrer.getTypeOfElement(foo.parameters[0]);
+    Expect.isFalse(mask1.isNullable);
+    Expect.equals(typesTask.uint31Type, simplify(mask1, compiler));
+    // Second parameter is null.
+    var mask2 = typesInferrer.getTypeOfElement(foo.parameters[1]);
+    Expect.isTrue(mask2.isNullable);
+    Expect.isTrue(simplify(mask2.nonNullable(), compiler).isEmpty);
+  }
+}
+
+main() {
+  asyncStart();
+  runTest().then((_) {
+    // Make sure that the type is still correct when we do a second compilation.
+    return runTest();
+  }).whenComplete(asyncEnd);
+}
diff --git a/tests/compiler/dart2js_extra/assert_with_message_test.dart b/tests/compiler/dart2js_extra/assert_with_message_test.dart
new file mode 100644
index 0000000..58b7796
--- /dev/null
+++ b/tests/compiler/dart2js_extra/assert_with_message_test.dart
@@ -0,0 +1,109 @@
+// 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.
+// SharedOptions=--assert-message
+
+import "package:expect/expect.dart";
+
+@AssumeDynamic() @NoInline()
+confuse(x) => x;
+
+
+testFalse(name, fault) {
+  try {
+    fault();
+  } catch (e) {
+    Expect.isTrue(e is AssertionError, '$name: is AssertionError');
+    Expect.isTrue('$e'.contains('Mumble'), '$name: <<$e>> contains "Mumble"');
+    return;
+  }
+  Expect.fail('Expected assert to throw');
+}
+
+test1() {
+  testFalse('constant false', () { assert(false, 'Mumble'); });
+}
+
+test2() {
+  testFalse('constant function', () { assert(() => false, 'Mumble'); });
+}
+
+test3() {
+  testFalse('variable false', () { assert(confuse(false), 'Mumble'); });
+}
+
+test4() {
+  testFalse('variable function',
+      () { assert(confuse(() => false), 'Mumble'); });
+}
+
+testTypeErrors() {
+  check(name, fault) {
+    try {
+      fault();
+    } catch (e) {
+      Expect.isTrue(e is TypeError,
+          'name: <<$e>> (${e.runtimeType}) is TypeError');
+      return;
+    }
+    Expect.fail('Expected assert to throw');
+  }
+
+  check('constant type error', () { assert(null, 'Mumble'); });
+  check('variable type error', () { assert(confuse(null), 'Mumble'); });
+  check('function type error', () { assert(confuse(() => null), 'Mumble'); });
+}
+
+testMessageEffect1() {
+  var v = 1;
+  // Message is not evaluated on succeeding assert.
+  assert(confuse(true), '${v = 123}');
+  Expect.equals(1, v);
+}
+
+testMessageEffect2() {
+  var v = 1;
+  try {
+    // Message is evaluated to produce AssertionError argument on failing
+    // assert.
+    assert(confuse(false), '${v = 123}');
+  } catch (e) {
+    Expect.equals(123, v);
+    Expect.isTrue('$e'.contains('123'), '<<$e>> contains "123"');
+    return;
+  }
+  Expect.fail('Expected assert to throw');
+}
+
+testMessageEffect3() {
+  var v = 1;
+  try {
+    // Message is evaluated to produce AssertionError argument on failing
+    // assert.
+    assert(confuse(() => ++v > 100), '${++v}');
+  } catch (e) {
+    Expect.equals(3, v);
+    Expect.isTrue('$e'.contains('3'), '<<$e>> contains "3"');
+    return;
+  }
+  Expect.fail('Expected assert to throw');
+}
+
+bool get checkedMode {
+  bool b = false;
+  assert((b = true));
+  return b;
+}
+
+main() {
+  if (!checkedMode) return;
+
+  test1();
+  test2();
+  test3();
+  test4();
+  testTypeErrors();
+  testMessageEffect1();
+  testMessageEffect2();
+  testMessageEffect3();
+}
diff --git a/tests/compiler/dart2js_extra/dart2js_extra.status b/tests/compiler/dart2js_extra/dart2js_extra.status
index 2edae80..c530b1e 100644
--- a/tests/compiler/dart2js_extra/dart2js_extra.status
+++ b/tests/compiler/dart2js_extra/dart2js_extra.status
@@ -69,21 +69,15 @@
 
 [ $compiler == dart2js && $cps_ir ]
 16407_test: Pass # Please triage this failure.
-22868_test: RuntimeError # Issue 23997
 23432_test: RuntimeError # Issue 23432
 async_stacktrace_test/asyncStar: Crash # (foo()async*{try {tr...  cannot handle sync*/async* functions
-async_stacktrace_test/none: RuntimeError # $async$temp1.Tracer$ is not a function
 closure_capture5_test: Crash # (i=0): For-loop variable captured in loop header
 deferred/deferred_class_test: RuntimeError # Z.loadLibrary is not a function
-deferred/deferred_constant2_test: RuntimeError # TypeError: U.loadLibrary is not a function
-deferred/deferred_constant3_test: RuntimeError # TypeError: Y.loadLibrary is not a function
+deferred/deferred_constant2_test: RuntimeError # U.loadLibrary is not a function
+deferred/deferred_constant3_test: RuntimeError # Y.loadLibrary is not a function
 deferred/deferred_constant4_test: RuntimeError # B.loadLibrary is not a function
-deferred/deferred_function_test: Crash # (lib.foo): deferred access is not implemented
-deferred/deferred_mirrors1_test: RuntimeError # TypeError: U.loadLibrary is not a function
+deferred/deferred_function_test: Crash # (lib.foo('a')): deferred access is not implemented
+deferred/deferred_mirrors1_test: RuntimeError # U.loadLibrary is not a function
 deferred/deferred_overlapping_test: RuntimeError # E.loadLibrary is not a function
-deferred_split_test: RuntimeError # TypeError: Z.loadLibrary is not a function
-lookup_map/live_entry_through_mirrors_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirror_printer_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirror_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-reflect_native_types_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
+deferred_split_test: RuntimeError # Z.loadLibrary is not a function
 switch_test/none: Crash # (switch (val){foo:ba...  continue to a labeled switch case
diff --git a/tests/compiler/dart2js_native/dart2js_native.status b/tests/compiler/dart2js_native/dart2js_native.status
index 9d325b2..c125da1 100644
--- a/tests/compiler/dart2js_native/dart2js_native.status
+++ b/tests/compiler/dart2js_native/dart2js_native.status
@@ -21,10 +21,7 @@
 compute_this_script_test: Skip # Issue 17458
 
 [ $compiler == dart2js && $cps_ir ]
-mirror_intercepted_field_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-native_exception_test: RuntimeError # J.getInterceptor(...).toString$0 is not a function
 native_method_inlining_test: RuntimeError # Please triage this failure.
-native_mirror_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 native_no_such_method_exception3_frog_test: RuntimeError # Please triage this failure.
 optimization_hints_test: RuntimeError # Please triage this failure.
 subclassing_constructor_1_test: RuntimeError # Please triage this failure.
diff --git a/tests/compiler/dart2js_native/error_safeToString_test.dart b/tests/compiler/dart2js_native/error_safeToString_test.dart
new file mode 100644
index 0000000..3322560
--- /dev/null
+++ b/tests/compiler/dart2js_native/error_safeToString_test.dart
@@ -0,0 +1,169 @@
+// 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.
+
+import "package:expect/expect.dart";
+import 'dart:_foreign_helper' show JS_INTERCEPTOR_CONSTANT, JS;
+import 'dart:_js_helper' show Native, Creates;
+import 'dart:_interceptors' show
+    Interceptor,
+    JavaScriptObject,
+    PlainJavaScriptObject,
+    UnknownJavaScriptObject;
+
+// Test for safe formatting of JavaScript objects by Error.safeToString.
+
+@Native('PPPP')
+class Purple {}
+
+@Native('QQQQ')
+class Q {}
+
+@Native('RRRR')
+class Rascal {
+  toString() => 'RRRRRRRR';
+}
+
+makeA() native;
+makeB() native;
+makeC() native;
+makeD() native;
+makeE() native;
+makeP() native;
+makeQ() native;
+makeR() native;
+
+void setup() native r"""
+makeA = function(){return {hello: 123};};
+
+function BB(){}
+makeB = function(){return new BB();};
+
+function CC(){}
+makeC = function(){
+  var x = new CC();
+  x.constructor = null;  // Foils constructor lookup.
+  return x;
+};
+
+function DD(){}
+makeD = function(){
+  var x = new DD();
+  x.constructor = {name: 'DDxxx'};  // Foils constructor lookup.
+  return x;
+};
+
+function EE(){}
+makeE = function(){
+  var x = new EE();
+  x.constructor = function Liar(){};  // Looks like a legitimate constructor.
+  return x;
+};
+
+function PPPP(){}
+makeP = function(){return new PPPP();};
+
+function QQQQ(){}
+makeQ = function(){return new QQQQ();};
+
+function RRRR(){}
+makeR = function(){return new RRRR();};
+
+""";
+
+
+expectTypeName(expectedName, s) {
+  var m = new RegExp(r"Instance of '(.*)'").firstMatch(s);
+  Expect.isNotNull(m);
+  var name = m.group(1);
+  Expect.isTrue(expectedName == name || name.length <= 3,
+      "Is '$expectedName' or minified: '$name'");
+}
+
+final plainJsString =
+    Error.safeToString(JS_INTERCEPTOR_CONSTANT(PlainJavaScriptObject));
+
+final unknownJsString =
+    Error.safeToString(JS_INTERCEPTOR_CONSTANT(UnknownJavaScriptObject));
+
+final interceptorString =
+    Error.safeToString(JS_INTERCEPTOR_CONSTANT(Interceptor));
+
+
+testDistinctInterceptors() {
+  // Test invariants needed for the other tests.
+
+  Expect.notEquals(plainJsString, unknownJsString);
+  Expect.notEquals(plainJsString, interceptorString);
+  Expect.notEquals(unknownJsString, interceptorString);
+
+  expectTypeName('PlainJavaScriptObject', plainJsString);
+  expectTypeName('UnknownJavaScriptObject', unknownJsString);
+  expectTypeName('Interceptor', interceptorString);
+
+  // Sometimes interceptor *objects* are used instead of the prototypes. Check
+  // these work too.
+  var plain2 = Error.safeToString(const PlainJavaScriptObject());
+  Expect.equals(plainJsString, plain2);
+
+  var unk2 = Error.safeToString(const UnknownJavaScriptObject());
+  Expect.equals(unknownJsString, unk2);
+}
+
+
+testExternal() {
+  var x = makeA();
+  Expect.equals(plainJsString, Error.safeToString(x));
+
+  x = makeB();
+  // Gets name from constructor, regardless of minification.
+  Expect.equals("Instance of 'BB'", Error.safeToString(x));
+
+  x = makeC();
+  Expect.equals(unknownJsString, Error.safeToString(x));
+
+  x = makeD();
+  Expect.equals(unknownJsString, Error.safeToString(x));
+
+  x = makeE();
+  Expect.equals("Instance of 'Liar'", Error.safeToString(x));
+}
+
+testNative() {
+  var x = makeP();
+  Expect.isTrue(x is Purple);  // This test forces Purple to be distinguished.
+  Expect.notEquals(plainJsString, Error.safeToString(x));
+  Expect.notEquals(unknownJsString, Error.safeToString(x));
+  Expect.notEquals(interceptorString, Error.safeToString(x));
+  // And not the native class constructor.
+  Expect.notEquals("Instance of 'PPPP'", Error.safeToString(x));
+  expectTypeName('Purple', Error.safeToString(x));
+
+  x = makeQ();
+  print('Q:  $x  ${Error.safeToString(x)}');
+  // We are going to get either the general interceptor or the JavaScript
+  // constructor.
+  Expect.isTrue(
+      "Instance of 'QQQQ'" == Error.safeToString(x) ||
+      interceptorString == Error.safeToString(x));
+
+  x = makeR();
+
+  // Rascal overrides 'toString'.  The toString() call causes Rascal to be
+  // distinguished.
+  x.toString();
+  Expect.notEquals(plainJsString, Error.safeToString(x));
+  Expect.notEquals(unknownJsString, Error.safeToString(x));
+  Expect.notEquals(interceptorString, Error.safeToString(x));
+  // And not the native class constructor.
+  Expect.notEquals("Instance of 'RRRR'", Error.safeToString(x));
+  expectTypeName('Rascal', Error.safeToString(x));
+}
+
+main() {
+  setup();
+
+  testDistinctInterceptors();
+  testExternal();
+  testNative();
+}
diff --git a/tests/html/fontface_loaded_test.dart b/tests/html/fontface_loaded_test.dart
index d192688..8a80f5d 100644
--- a/tests/html/fontface_loaded_test.dart
+++ b/tests/html/fontface_loaded_test.dart
@@ -8,17 +8,18 @@
 import 'dart:html';
 
 class NullTreeSanitizer implements NodeTreeSanitizer {
-    void sanitizeTree(Node node) {}
+  void sanitizeTree(Node node) {}
 }
 
 main() {
   useHtmlConfiguration();
 
-  var style = new Element.html('''
+  var style = new Element.html(
+      '''
       <style>
       @font-face {
         font-family: 'Ahem';
-        src: url(../../resources/Ahem.ttf);
+        src: url(/root_dart/tests/html/Ahem.ttf);
         font-style: italic;
         font-weight: 300;
         unicode-range: U+0-3FF;
@@ -27,20 +28,26 @@
         /* font-stretch property is not supported */
       }
       </style>
-      ''', treeSanitizer: new NullTreeSanitizer());
+      ''',
+      treeSanitizer: new NullTreeSanitizer());
   document.head.append(style);
 
-
   test('document fonts - temporary', () {
     var atLeastOneFont = false;
+    var loaded = [];
     document.fonts.forEach((FontFace fontFace, _, __) {
       atLeastOneFont = true;
       Future f1 = fontFace.loaded;
       Future f2 = fontFace.loaded;
-      expect(f1, equals(f2)); // Repeated calls should answer the same Future.
-
-      expect(fontFace.load(), throws);
+      loaded.add(fontFace.load());
+      loaded.add(f1);
+      loaded.add(f2);
     });
     expect(atLeastOneFont, isTrue);
+    return Future.wait(loaded).then(expectAsync((_) {
+      document.fonts.forEach((fontFace, _, __) {
+        expect(fontFace.status, 'loaded');
+      });
+    }));
   });
 }
diff --git a/tests/html/html.status b/tests/html/html.status
index aba5566..835f48d 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -9,18 +9,28 @@
 js_array_test: Skip # Issue 23676, 23677
 js_typed_interop_test: Skip # Issue 23676, 23677
 
+[ $compiler == none && $runtime == dartium ]
+cross_domain_iframe_test: RuntimeError # Dartium JSInterop failure
+crypto_test/functional: RuntimeError # Dartium JSInterop failure
+custom/created_callback_test: Skip # Dartium JSInterop failure
+custom/document_register_basic_test: RuntimeError # Dartium JSInterop failure
+custom/document_register_type_extensions_test/registration: RuntimeError # Dartium JSInterop failure
+custom/element_upgrade_test: RuntimeError # Dartium JSInterop failure
+custom/js_custom_test: RuntimeError # Dartium JSInterop failure
+custom_elements_test/register: RuntimeError # Dartium JSInterop failure
+indexeddb_2_test: Skip # Dartium JSInterop failure
+js_test: RuntimeError # Dartium JSInterop failure
+native_gc_test: Skip # Dartium JSInterop failure
+speechrecognition_test/types: RuntimeError # Dartium JSInterop failure
+storage_quota_test/missingenumcheck: RuntimeError # Dartium JSInterop failure
+storage_quota_test/none: RuntimeError # Dartium JSInterop failure
+transferables_test: RuntimeError # Dartium JSInterop failure
+
 [ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
-custom/attribute_changed_callback_test/unsupported_on_polyfill: Fail # Issue 18931 (Disabled for Chrome 35 roll)
 form_data_test/functional: Skip # Issue 19726
 indexeddb_1_test/functional: Skip # Issue 19512 (timing out)
 indexeddb_4_test: Skip # Issue 19726
-mouse_event_test: Fail # Issue 20437
 worker_api_test: Fail # Issue 10223
-media_stream_test/constructors: Pass, Crash # Issue 22267
-element_animate_test/simple_timing: Fail # Not supported on Dartium
-element_animate_test/omit_timing: Fail # Not supported on Dartium
-element_animate_test/timing_dict: Fail # Not supported on Dartium
-trusted_html_tree_sanitizer_test/untrusted: Fail # We make adoptNode throw to verify it's not being called. That doesn't work on Dartium.
 resource_http_test: Fail # Issue 24203
 
 [ $compiler == none && $mode == debug && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
@@ -36,7 +46,7 @@
 [ $compiler == dart2js && $browser ]
 custom/created_callback_test: Fail # Support for created constructor. Issue 14835
 fontface_loaded_test: Fail # Support for promises.
-storage_quota_test: Fail # Support for promises.
+storage_quota_test: Fail # Support for promises. API also not yet available anywhere.
 
 [ $compiler == dart2js && ($runtime == safari || $runtime == safarimobilesim || $runtime == ff  || $ie) ]
 custom/entered_left_view_test/viewless_document: Fail # Polyfill does not handle this
@@ -51,25 +61,16 @@
 # postMessage in dartium always transfers the typed array buffer, never a view
 postmessage_structured_test/typed_arrays: Fail
 # Dartium seems to lose the data from the dispatchEvent.
-postmessage_structured_test/more_primitives: Fail
 async_test: Fail # Uses spawn, not implemented from a DOM isolate in Dartium
 keyboard_event_test: Fail # Issue 13902
 isolates_test: Fail # Issue 13921
 indexeddb_3_test: Skip # Issue 19578.  Timeouts and RuntimeError
 fileapi_test/getFile: Pass, Fail # Issue 20488
 
-# DO NOT Suppress/Skip the below XSS security test for dart2js - any failure is a P0 bug.
-node_validator_important_if_you_suppress_make_the_bug_critical_test/dom_clobbering: Fail # Dartium is immune to DOM clobbering, so the HTML passes through the sanitizer.
-
 [ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) && $mode == debug ]
 websocket_test/websocket: Skip # Issue 17666
 canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Skip # Issue 17666
 
-[ $compiler == none && $runtime == ContentShellOnAndroid ]
-canvasrenderingcontext2d_test/drawImage_video_element: RuntimeError # Issue 19127
-canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Pass, Fail # Issue 20524
-notification_test/constructors: Skip # Times out on Android Dartium. Issue 22835
-
 element_offset_test/offset: RuntimeError # Issue 17550
 request_animation_frame_test: Skip # Times out, and also passes while taking 4.00 minutes. Issue 19127.
 fileapi_test/fileEntry: Pass, RuntimeError # Issue 20488
@@ -207,6 +208,7 @@
 css_test/functional: Fail # Issues 21710
 
 [ $runtime == ie11 ]
+node_validator_important_if_you_suppress_make_the_bug_critical_test/dom_clobbering: RuntimeError # Issue 24387
 custom/document_register_type_extensions_test/single-parameter: Fail # Issue 13193.
 canvasrenderingcontext2d_test/arc: Pass, Fail # Pixel unexpected value. Please triage this failure.
 worker_test/functional: Pass, Fail # Issues 20659.
@@ -348,7 +350,9 @@
 speechrecognition_test/supported: Fail
 websql_test/supported: Fail
 
-[ $runtime == ff ]
+[  $compiler == dart2js && $runtime == ff ]
+node_validator_important_if_you_suppress_make_the_bug_critical_test/DOM_sanitization: RuntimeError # Issue 24384
+history_test/history: Skip # Issue 22050
 xhr_test/xhr: Pass, Fail # Issue 11602
 dart_object_local_storage_test: Skip  # sessionStorage NS_ERROR_DOM_NOT_SUPPORTED_ERR
 webgl_1_test: Pass, Fail   # Issue 8219
@@ -385,9 +389,6 @@
 [ $compiler == dart2js && ($runtime == drt || $runtime == ff) ]
 request_animation_frame_test: Skip # Async test hangs.
 
-[ $compiler == dart2js && $runtime == ff ]
-history_test/history: Skip # Issue 22050
-
 [ $compiler == dart2js && $csp && ($runtime == drt || $runtime == safari || $runtime == ff || $runtime == chrome || $runtime == chromeOnAndroid) ]
 # Note: these tests are all injecting scripts by design.  This is not allowed under CSP.
 event_customevent_test: Fail       # Test cannot run under CSP restrictions.
diff --git a/tests/html/messageevent_test.dart b/tests/html/messageevent_test.dart
index 9ef3681..86348fd 100644
--- a/tests/html/messageevent_test.dart
+++ b/tests/html/messageevent_test.dart
@@ -17,7 +17,7 @@
       expect(event.origin, equals('origin'));
       // IE allows setting this but just ignores it.
       // expect(event.lastEventId, equals('lastEventId'));
-      expect(event.source, same(window));
+      expect(event.source, window);
       // TODO(antonm): accessing ports is not supported yet.
   });
 }
diff --git a/tests/html/worker_test.dart b/tests/html/worker_test.dart
index dccb8b5..a43887b 100644
--- a/tests/html/worker_test.dart
+++ b/tests/html/worker_test.dart
@@ -50,4 +50,3 @@
     });
   });
 }
-
diff --git a/tests/isolate/isolate.status b/tests/isolate/isolate.status
index d686774..84e4e3a 100644
--- a/tests/isolate/isolate.status
+++ b/tests/isolate/isolate.status
@@ -45,6 +45,7 @@
 issue_21398_parent_isolate_test: SkipByDesign # Test uses a ".dart" URI.
 issue_21398_parent_isolate1_test: SkipByDesign # Test uses a ".dart" URI.
 issue_21398_parent_isolate2_test: SkipByDesign # Test uses a ".dart" URI.
+issue_24243_parent_isolate_test: SkipByDesign # Test uses a ".dart" URI.
 function_send1_test: SkipByDesign   # Test uses a ".dart" URI.
 error_exit_at_spawnuri_test: SkipByDesign  # Test uses a ".dart" URI.
 error_at_spawnuri_test: SkipByDesign  # Test uses a ".dart" URI.
@@ -138,7 +139,7 @@
 package_root_test: SkipByDesign # Uses dart:io.
 
 [ $compiler == dart2js && $cps_ir ]
-deferred_in_isolate2_test: RuntimeError # Exception: Some tests failed.
+deferred_in_isolate2_test: RuntimeError # A.loadLibrary is not a function
 isolate_current_test: RuntimeError # Please triage this failure.
 message3_test/byteBuffer: RuntimeError # Please triage this failure.
 message3_test/fun: RuntimeError # Please triage this failure.
diff --git a/tests/isolate/issue_24243_child1_isolate.dart b/tests/isolate/issue_24243_child1_isolate.dart
new file mode 100644
index 0000000..950f123
--- /dev/null
+++ b/tests/isolate/issue_24243_child1_isolate.dart
@@ -0,0 +1,18 @@
+// 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.
+
+import 'dart:isolate';
+
+main(List<String> args, message) {
+  var sendPort = message;
+  try {
+    var list0 = <int>[1, 2, 3];
+    var list1 = <int>[4, 5, 6];
+    var list2 = <int>[7, 8, 9];
+    var list = new List<List<int>>.from([list0, list1, list2]);
+    sendPort.send(list);
+  } catch(error) {
+    sendPort.send("Invalid Argument(s).");
+  }
+}
diff --git a/tests/isolate/issue_24243_child2_isolate.dart b/tests/isolate/issue_24243_child2_isolate.dart
new file mode 100644
index 0000000..0196653
--- /dev/null
+++ b/tests/isolate/issue_24243_child2_isolate.dart
@@ -0,0 +1,18 @@
+// 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.
+
+import 'dart:isolate';
+
+main(List<String> args, message) {
+  var sendPort = message;
+  try {
+    var map0 = <int, String>{1:'one', 2:'two', 3:'three'};
+    var map1 = <int, String>{4:'four', 5:'five', 6:'six'};
+    var map2 = <int, String>{7:'seven', 8:'eight', 9:'nine'};
+    var map = new Map<int, Map<int, String>>.from({0:map0, 1:map1, 2:map2});
+    sendPort.send(map);
+  } catch(error) {
+    sendPort.send("Invalid Argument(s).");
+  }
+}
diff --git a/tests/isolate/issue_24243_child3_isolate.dart b/tests/isolate/issue_24243_child3_isolate.dart
new file mode 100644
index 0000000..9667a91
--- /dev/null
+++ b/tests/isolate/issue_24243_child3_isolate.dart
@@ -0,0 +1,30 @@
+// 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.
+
+import 'dart:collection';
+import 'dart:isolate';
+
+main(List<String> args, message) {
+  var sendPort = message;
+  try {
+    var map0 = new LinkedHashMap<int, String>();
+    map0[1] = 'one';
+    map0[2] = 'two';
+    map0[3] = 'three';
+    var map1 = new LinkedHashMap<int, String>();
+    map1[4] = 'four';
+    map1[5] = 'five';
+    map1[6] = 'size';
+    var map2 = new LinkedHashMap<int, String>();
+    map2[7] = 'seven';
+    map2[8] = 'eight';
+    map2[9] = 'nine';
+
+    var map = new Map<int, LinkedHashMap<int, String>>.from(
+        { 0:map0, 1:map1, 2:map2 });
+    sendPort.send(map);
+  } catch(error) {
+    sendPort.send("Invalid Argument(s).");
+  }
+}
diff --git a/tests/isolate/issue_24243_parent_isolate_test.dart b/tests/isolate/issue_24243_parent_isolate_test.dart
new file mode 100644
index 0000000..b4e20ca
--- /dev/null
+++ b/tests/isolate/issue_24243_parent_isolate_test.dart
@@ -0,0 +1,99 @@
+// 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.
+
+// Note: the following comment is used by test.dart to additionally compile the
+// other isolate's code.
+// OtherScripts=issue_24243_child1_isolate.dart
+// OtherScripts=issue_24243_child2_isolate.dart
+// OtherScripts=issue_24243_child3_isolate.dart
+// VMOptions=--checked
+
+import 'dart:collection';
+import 'dart:isolate';
+
+import "package:expect/expect.dart";
+
+main() {
+  // First spawn an isolate using spawnURI and have it
+  // send back a "literal" like list object.
+  var receive1 = new ReceivePort();
+  Isolate.spawnUri(Uri.parse('issue_24243_child1_isolate.dart'),
+                   [],
+                   receive1.sendPort).then(
+    (isolate) {
+      receive1.listen(
+        (msg) {
+          var list0 = <int>[1, 2, 3];
+          var list1 = <int>[4, 5, 6];
+          var list2 = <int>[7, 8, 9];
+          Expect.isTrue(msg is List<List<int>>);
+          Expect.listEquals(msg[0], list0);
+          Expect.listEquals(msg[1], list1);
+          Expect.listEquals(msg[2], list2);
+          Expect.throws(() => msg[0] = "throw an exception");
+          receive1.close();
+        },
+        onError: (e) => print('$e')
+      );
+    }
+  );
+
+  // Now spawn an isolate using spawnURI and have it
+  // send back a "literal" like map object.
+  var receive2 = new ReceivePort();
+  Isolate.spawnUri(Uri.parse('issue_24243_child2_isolate.dart'),
+                   [],
+                   receive2.sendPort).then(
+    (isolate) {
+      receive2.listen(
+        (msg) {
+          var map0 = <int, String>{1:'one', 2:'two', 3:'three'};
+          var map1 = <int, String>{4:'four', 5:'five', 6:'six'};
+          var map2 = <int, String>{7:'seven', 8:'eight', 9:'nine'};
+          Expect.isTrue(msg is Map<int, Map<int, String>>);
+          Expect.mapEquals(msg[0], map0);
+          Expect.mapEquals(msg[1], map1);
+          Expect.mapEquals(msg[2], map2);
+          Expect.throws(() => msg[0] = "throw an exception");
+          receive2.close();
+        },
+        onError: (e) => print('$e')
+      );
+    }
+  );
+
+  // Now spawn an isolate using spawnURI and have it
+  // send back a "literal" like LinkedHashMap object.
+  var receive3 = new ReceivePort();
+  Isolate.spawnUri(Uri.parse('issue_24243_child3_isolate.dart'),
+                   [],
+                   receive3.sendPort).then(
+    (isolate) {
+      receive3.listen(
+        (msg) {
+          var map0 = new LinkedHashMap<int, String>();
+          map0[1] = 'one';
+          map0[2] = 'two';
+          map0[3] = 'three';
+          var map1 = new LinkedHashMap<int, String>();
+          map1[4] = 'four';
+          map1[5] = 'five';
+          map1[6] = 'size';
+          var map2 = new LinkedHashMap<int, String>();
+          map2[7] = 'seven';
+          map2[8] = 'eight';
+          map2[9] = 'nine';
+          Expect.isTrue(msg is Map<int, LinkedHashMap<int, String>>);
+          Expect.mapEquals(msg[0], map0);
+          Expect.mapEquals(msg[1], map1);
+          Expect.mapEquals(msg[2], map2);
+          Expect.throws(() => msg[0] = "throw an exception");
+          receive3.close();
+        },
+        onError: (e) => print('$e')
+      );
+    }
+  );
+
+}
diff --git a/tests/language/invocation_mirror_empty_arguments_test.dart b/tests/language/invocation_mirror_empty_arguments_test.dart
new file mode 100644
index 0000000..8212536
--- /dev/null
+++ b/tests/language/invocation_mirror_empty_arguments_test.dart
@@ -0,0 +1,46 @@
+// 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.
+
+import "package:expect/expect.dart";
+
+class Getter {
+  noSuchMethod(invocation) {
+    Expect.isTrue(invocation.isGetter);
+    Expect.identical(const [], invocation.positionalArguments);
+    Expect.identical(const {}, invocation.namedArguments);
+  }
+}
+
+class Setter {
+  noSuchMethod(invocation) {
+    Expect.isTrue(invocation.isSetter);
+    Expect.identical(const {}, invocation.namedArguments);
+  }
+}
+
+class Method {
+  noSuchMethod(invocation) {
+    Expect.isTrue(invocation.isMethod);
+    Expect.identical(const [], invocation.positionalArguments);
+    Expect.identical(const {}, invocation.namedArguments);
+  }
+}
+
+class Operator {
+  noSuchMethod(invocation) {
+    Expect.isTrue(invocation.isMethod);
+    Expect.identical(const {}, invocation.namedArguments);
+  }
+}
+
+main() {
+  var g = new Getter();
+  print(g.getterThatDoesNotExist);
+  var s = new Setter();
+  print(s.setterThatDoesNotExist = 42);
+  var m = new Method();
+  print(m.methodThatDoesNotExist());
+  var o = new Operator();
+  print(o + 42); // Operator that does not exist.
+}
diff --git a/tests/language/language_dart2js.status b/tests/language/language_dart2js.status
index 58c8f07..49f028d 100644
--- a/tests/language/language_dart2js.status
+++ b/tests/language/language_dart2js.status
@@ -23,6 +23,7 @@
 async_star_test: RuntimeError # Jsshell does not provide non-zero timers, Issue 7728
 
 [ $compiler == dart2js ]
+invocation_mirror_empty_arguments_test: Fail # Issue 24331
 nan_identical_test: Fail # Issue 11551
 symbol_literal_test/*: Fail # Issue 21825
 constructor_duplicate_final_test/01: Fail # Issue 13363
@@ -231,57 +232,37 @@
 [ $compiler == dart2js && $cps_ir ]
 async_await_syntax_test/a03a: Crash # (a03a()async*{}): cannot handle sync*/async* functions
 async_await_syntax_test/a03b: Crash # (a03b()async*{}): cannot handle sync*/async* functions
-async_await_syntax_test/a04a: Crash # (a04a()sync*{}): cannot handle sync*/async* functions
-async_await_syntax_test/a04c: Crash # (a04c()sync*{}): cannot handle sync*/async* functions
 async_await_syntax_test/a06a: Crash # (await for(var o in st){}): await for
-async_await_syntax_test/a07a: Crash # (a07a()sync*{yield 0;}): cannot handle sync*/async* functions
-async_await_syntax_test/a08a: Crash # (a08a()sync*{yield* [] ;}): cannot handle sync*/async* functions
 async_await_syntax_test/a09a: Crash # (a09a()async*{yield 0;}): cannot handle sync*/async* functions
 async_await_syntax_test/a10a: Crash # (a10a()async*{yield* [] ;}): cannot handle sync*/async* functions
-async_await_syntax_test/a11b: Crash # (get sync sync*{}): cannot handle sync*/async* functions
 async_await_syntax_test/a11d: Crash # (get async async*{}): cannot handle sync*/async* functions
 async_await_syntax_test/b03a: Crash # (b03a()async*{}): cannot handle sync*/async* functions
-async_await_syntax_test/b04a: Crash # (b04a()sync*{}): cannot handle sync*/async* functions
 async_await_syntax_test/b06a: Crash # (await for(var o in st){}): await for
-async_await_syntax_test/b07a: Crash # (b07a()sync*{yield 0;}): cannot handle sync*/async* functions
-async_await_syntax_test/b08a: Crash # (b08a()sync*{yield* [] ;}): cannot handle sync*/async* functions
 async_await_syntax_test/b09a: Crash # (b09a()async*{yield 0;}): cannot handle sync*/async* functions
 async_await_syntax_test/b10a: Crash # (b10a()async*{yield* [] ;}): cannot handle sync*/async* functions
-async_await_syntax_test/b11b: Crash # (get sync sync*{}): cannot handle sync*/async* functions
 async_await_syntax_test/b11d: Crash # (get async async*{}): cannot handle sync*/async* functions
 async_await_syntax_test/c03a: Crash # (c03a()async*{}): cannot handle sync*/async* functions
-async_await_syntax_test/c04a: Crash # (c04a()sync*{}): cannot handle sync*/async* functions
 async_await_syntax_test/c06a: Crash # (await for(var o in st){}): await for
-async_await_syntax_test/c07a: Crash # (c07a()sync*{yield 0;}): cannot handle sync*/async* functions
-async_await_syntax_test/c08a: Crash # (c08a()sync*{yield* [] ;}): cannot handle sync*/async* functions
 async_await_syntax_test/c09a: Crash # (c09a()async*{yield 0;}): cannot handle sync*/async* functions
 async_await_syntax_test/c10a: Crash # (c10a()async*{yield* [] ;}): cannot handle sync*/async* functions
 async_await_syntax_test/d03a: Crash # (()async*{}): cannot handle sync*/async* functions
-async_await_syntax_test/d04a: Crash # (()sync*{}): cannot handle sync*/async* functions
 async_await_syntax_test/d06a: Crash # (await for(var o in st){}): await for
-async_await_syntax_test/d07a: Crash # (()sync*{yield 0;}): cannot handle sync*/async* functions
-async_await_syntax_test/d08a: Crash # (()sync*{yield* [] ;}): cannot handle sync*/async* functions
-async_await_syntax_test/d08b: Crash # (()sync*{yield* 0+1;}): cannot handle sync*/async* functions
 async_await_syntax_test/d09a: Crash # (()async*{yield 0;}): cannot handle sync*/async* functions
 async_await_syntax_test/d10a: Crash # (()async*{yield* [] ;}): cannot handle sync*/async* functions
 async_await_test/02: Crash # (switch (v){label:ca...  continue to a labeled switch case
 async_await_test/03: Crash # (switch (v){label:ca...  continue to a labeled switch case
 async_await_test/none: Crash # (switch (v){label:ca...  continue to a labeled switch case
-async_continue_label_test/await_in_init: RuntimeError # Please triage this failure.
-async_continue_label_test/await_in_update: RuntimeError # Please triage this failure.
 async_or_generator_return_type_stacktrace_test/02: Crash # (void badReturnTypeAsyncStar()async*{}): cannot handle sync*/async* functions
-async_or_generator_return_type_stacktrace_test/03: Crash # (void badReturnTypeSyncStar()sync*{}): cannot handle sync*/async* functions
 async_star_await_pauses_test: Crash # (await for(var i in ...  await for
 async_star_cancel_and_throw_in_finally_test: Crash # (foo()async*{try {in...  cannot handle sync*/async* functions
 async_star_cancel_while_paused_test: Crash # (f()async*{list.add(...  cannot handle sync*/async* functions
 async_star_regression_2238_test: Crash # (f()async*{label1:label2:yield 0;}): cannot handle sync*/async* functions
 async_star_regression_23116_test: Crash # (Stream<int> foo(Com...  cannot handle sync*/async* functions
 async_star_regression_fisk_test: Crash # (fisk()async*{res.ad...  cannot handle sync*/async* functions
-async_star_stream_take_test: Crash # (await for(var v in s.take(5))r+= v;): await for
+async_star_stream_take_test: Crash # (Stream makeStream(i...  cannot handle sync*/async* functions
 async_star_take_reyield_test: Crash # (fivePartialSums(Str...  cannot handle sync*/async* functions
 async_star_test: Crash # (f()async*{}): cannot handle sync*/async* functions
-async_switch_test/none: RuntimeError # Uncaught Error: Expect.equals(expected: <1>, actual: <null>) fails.
-async_switch_test/withDefault: RuntimeError # Uncaught Error: Expect.equals(expected: <1>, actual: <null>) fails.
+async_this_bound_test: RuntimeError # Cannot read property 'set$f' of undefined
 asyncstar_concat_test: Crash # (concat(a,b)async*{yield* a;yield* b;}): cannot handle sync*/async* functions
 asyncstar_throw_in_catch_test: Crash # (foo4(Tracer tracer)...  cannot handle sync*/async* functions
 asyncstar_yield_test: Crash # (Stream<int> foo4()a...  cannot handle sync*/async* functions
@@ -289,62 +270,62 @@
 await_for_cancel_test: Crash # (await for(var x in controller.stream){for(int j=0;j<10;j++ ){if(j==5)continue outer;}}): await for
 await_for_test: Crash # (await for(var x in infiniteStream()){i++ ;if(i>10)break;t4.record(x);}): await for
 await_for_use_local_test: Crash # (await for(var v in s){accum+= v;}): await for
-await_future_test: Timeout
+await_future_test: RuntimeError # Cannot read property '_await_future_test$_box_0' of undefined
+await_postfix_expr_test: RuntimeError # Please triage this failure.
 await_regression_test: RuntimeError # "Obelix".then$1 is not a function
+await_test: RuntimeError # Cannot read property '$add' of undefined
 cha_deopt1_test: Crash # (d.make_u()): deferred access is not implemented
 cha_deopt2_test: Crash # (d.make_u()): deferred access is not implemented
 cha_deopt3_test: Crash # (d.make_u()): deferred access is not implemented
-closure_in_constructor_test: RuntimeError # Typed lists.
+closure_in_constructor_test: RuntimeError # Please triage this failure.
 closures_initializer_test: RuntimeError # Please triage this failure.
-const_evaluation_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 constructor12_test: RuntimeError # Please triage this failure.
 crash_6725_test/01: Crash # unsupported operation on erroneous element
 cyclic_default_values_test: RuntimeError # Z.cyclic_default_values_test__foo$closure is not a function
 deferred_call_empty_before_load_test: Crash # (lib1.thefun()): deferred access is not implemented
-deferred_closurize_load_library_test: RuntimeError # TypeError: D.loadLibrary is not a function
-deferred_constant_list_test: RuntimeError # TypeError: K.loadLibrary is not a function
-deferred_constraints_constants_test/none: Crash # (lib.constantInstance): deferred access is not implemented
-deferred_constraints_constants_test/reference_after_load: Crash # (lib.constantInstance): deferred access is not implemented
-deferred_constraints_type_annotation_test/as_operation: RuntimeError # TypeError: Z.loadLibrary is not a function
-deferred_constraints_type_annotation_test/catch_check: RuntimeError # TypeError: D.loadLibrary is not a function
-deferred_constraints_type_annotation_test/is_check: RuntimeError # TypeError: L.loadLibrary is not a function
-deferred_constraints_type_annotation_test/new: RuntimeError # TypeError: R.loadLibrary is not a function
-deferred_constraints_type_annotation_test/new_before_load: RuntimeError # TypeError: K.loadLibrary is not a function
-deferred_constraints_type_annotation_test/new_generic1: RuntimeError # TypeError: R.loadLibrary is not a function
-deferred_constraints_type_annotation_test/new_generic2: RuntimeError # TypeError: X.loadLibrary is not a function
-deferred_constraints_type_annotation_test/new_generic3: RuntimeError # TypeError: K.loadLibrary is not a function
-deferred_constraints_type_annotation_test/none: RuntimeError # TypeError: D.loadLibrary is not a function
-deferred_constraints_type_annotation_test/static_method: RuntimeError # TypeError: F.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation1: RuntimeError # TypeError: K.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation_generic1: RuntimeError # TypeError: T.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation_generic2: RuntimeError # TypeError: Q.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation_generic3: RuntimeError # TypeError: Z.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation_generic4: RuntimeError # TypeError: Q.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation_non_deferred: RuntimeError # TypeError: R.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation_null: RuntimeError # TypeError: Z.loadLibrary is not a function
-deferred_constraints_type_annotation_test/type_annotation_top_level: RuntimeError # TypeError: U.loadLibrary is not a function
-deferred_function_type_test: RuntimeError # TypeError: N.loadLibrary is not a function
-deferred_global_test: RuntimeError # TypeError: Y.loadLibrary is not a function
+deferred_closurize_load_library_test: RuntimeError # D.loadLibrary is not a function
+deferred_constant_list_test: RuntimeError # K.loadLibrary is not a function
+deferred_constraints_constants_test/none: RuntimeError # S.loadLibrary is not a function
+deferred_constraints_constants_test/reference_after_load: RuntimeError # G.loadLibrary is not a function
+deferred_constraints_type_annotation_test/as_operation: RuntimeError # Z.loadLibrary is not a function
+deferred_constraints_type_annotation_test/catch_check: RuntimeError # D.loadLibrary is not a function
+deferred_constraints_type_annotation_test/is_check: RuntimeError # L.loadLibrary is not a function
+deferred_constraints_type_annotation_test/new: RuntimeError # R.loadLibrary is not a function
+deferred_constraints_type_annotation_test/new_before_load: RuntimeError # K.loadLibrary is not a function
+deferred_constraints_type_annotation_test/new_generic1: RuntimeError # R.loadLibrary is not a function
+deferred_constraints_type_annotation_test/new_generic2: RuntimeError # X.loadLibrary is not a function
+deferred_constraints_type_annotation_test/new_generic3: RuntimeError # K.loadLibrary is not a function
+deferred_constraints_type_annotation_test/none: RuntimeError # D.loadLibrary is not a function
+deferred_constraints_type_annotation_test/static_method: RuntimeError # F.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation1: RuntimeError # K.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation_generic1: RuntimeError # T.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation_generic2: RuntimeError # Q.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation_generic3: RuntimeError # Z.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation_generic4: RuntimeError # Q.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation_non_deferred: RuntimeError # R.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation_null: RuntimeError # Z.loadLibrary is not a function
+deferred_constraints_type_annotation_test/type_annotation_top_level: RuntimeError # U.loadLibrary is not a function
+deferred_function_type_test: RuntimeError # N.loadLibrary is not a function
+deferred_global_test: RuntimeError # Y.loadLibrary is not a function
 deferred_inlined_test: Crash # (lib.foo()): deferred access is not implemented
-deferred_load_constants_test/none: Crash # (foo.c): deferred access is not implemented
+deferred_load_constants_test/none: Crash # (foo.toplevel): deferred access is not implemented
 deferred_load_inval_code_test: Crash # (d.foo()): deferred access is not implemented
 deferred_load_library_wrong_args_test/none: RuntimeError # Y.loadLibrary is not a function
 deferred_mixin_test: RuntimeError # X.loadLibrary is not a function
 deferred_no_such_method_test: RuntimeError # D.loadLibrary is not a function
 deferred_not_loaded_check_test: Crash # (lib.closure(sideEffect())): deferred access is not implemented
-deferred_only_constant_test: RuntimeError # TypeError: O.loadLibrary is not a function
+deferred_only_constant_test: RuntimeError # O.loadLibrary is not a function
 deferred_optimized_test: Crash # (lib.foo()): deferred access is not implemented
 deferred_redirecting_factory_test: Crash # (lib1.loadLib2()): deferred access is not implemented
-deferred_regression_22995_test: RuntimeError # TypeError: U.loadLibrary is not a function
-deferred_shadow_load_library_test: RuntimeError # TypeError: Y.loadLibrary is not a function
-deferred_shared_and_unshared_classes_test: RuntimeError # TypeError: U.loadLibrary is not a function
-deferred_static_seperate_test: RuntimeError # TypeError: L.loadLibrary is not a function
-deferred_super_dependency_test/01: RuntimeError # Uncaught Error: NoSuchMethodError: method not found: 'loadLibrary' ($async$temp1.loadLibrary is not a function)
+deferred_regression_22995_test: RuntimeError # U.loadLibrary is not a function
+deferred_shadow_load_library_test: RuntimeError # Y.loadLibrary is not a function
+deferred_shared_and_unshared_classes_test: RuntimeError # U.loadLibrary is not a function
+deferred_static_seperate_test: RuntimeError # L.loadLibrary is not a function
+deferred_super_dependency_test/01: RuntimeError # $async$temp1.loadLibrary is not a function
 deferred_type_dependency_test/as: Crash # (lib1.fooAs("string")): deferred access is not implemented
 deferred_type_dependency_test/is: Crash # (lib1.fooIs("string")): deferred access is not implemented
 deferred_type_dependency_test/none: Crash # (lib2.getInstance()): deferred access is not implemented
 deferred_type_dependency_test/type_annotation: Crash # (lib1.fooAnnotation("string")): deferred access is not implemented
-enum_mirror_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 field3a_negative_test: Fail # Bogus result from type inference in case of invalid program.
 first_class_types_test: RuntimeError # Please triage this failure.
 for2_test: Crash # The null object does not have a getter 'field'.
@@ -354,12 +335,10 @@
 generic_instanceof_test: RuntimeError # Please triage this failure.
 generic_native_test: RuntimeError # Please triage this failure.
 infinite_switch_label_test: Crash # (switch (target){l0:...  continue to a labeled switch case
-instance_creation_in_function_annotation_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 instanceof2_test: RuntimeError # Please triage this failure.
 instanceof4_test/01: RuntimeError # Please triage this failure.
 invocation_mirror_invoke_on_test: RuntimeError # Please triage this failure.
 invocation_mirror_test: Crash # (super[37]=42): visitUnresolvedSuperIndexSet
-issue21079_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 issue_1751477_test: RuntimeError # O.loadLibrary is not a function
 list_is_test: RuntimeError # Please triage this failure.
 list_test: RuntimeError # Please triage this failure.
@@ -367,10 +346,7 @@
 many_overridden_no_such_method_test: RuntimeError # Please triage this failure.
 nested_switch_label_test: Crash # (switch (target){out...  continue to a labeled switch case
 no_such_method_test: RuntimeError # Please triage this failure.
-null_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 overridden_no_such_method_test: RuntimeError # Please triage this failure.
-redirecting_factory_reflection_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-regress_18535_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 regress_22443_test: RuntimeError # M.loadLibrary is not a function
 regress_23408_test: RuntimeError # G.loadLibrary is not a function
 regress_23500_test/01: Crash # (await for(var c in new Stream.fromIterable([] )){}): await for
@@ -387,18 +363,13 @@
 switch_label2_test: Crash # (switch (target){cas...  continue to a labeled switch case
 switch_label_test: Crash # (switch (animal){cas...  continue to a labeled switch case
 switch_try_catch_test: Crash # (switch (0){_0:case ...  continue to a labeled switch case
-sync_generator1_test/01: Crash # (dreiVier()sync*{yield* 3;}): cannot handle sync*/async* functions
-sync_generator1_test/none: Crash # (einsZwei()sync*{yie...  cannot handle sync*/async* functions
-sync_generator2_test/07: Crash # (sync()sync*{yield sync;}): cannot handle sync*/async* functions
-sync_generator2_test/08: Crash # (sync()sync*{yield sync;}): cannot handle sync*/async* functions
-sync_generator2_test/10: Crash # (sync()sync*{yield sync;}): cannot handle sync*/async* functions
-sync_generator2_test/none: Crash # (sync()sync*{yield sync;}): cannot handle sync*/async* functions
-sync_generator3_test/test1: Crash # (f()sync*{try {yield...  cannot handle sync*/async* functions
-sync_generator3_test/test2: Crash # (g()sync*{try {yield "a";throw "pow!";}finally {yield "b";}}): cannot handle sync*/async* functions
-syncstar_less_than_test: Crash # (Iterable<int> foo()...  cannot handle sync*/async* functions
-syncstar_yield_test/copyParameters: Crash # (Iterable<int> foo3(int p)sync*{int i=0;i++ ;p++ ;yield p+i;}): cannot handle sync*/async* functions
-syncstar_yield_test/none: Crash # (Iterable<int> foo3(int p)sync*{int i=0;i++ ;p++ ;yield p+i;}): cannot handle sync*/async* functions
-syncstar_yieldstar_test: Crash # (foo()sync*{yield* [1,2,3];yield null;yield* bar();}): cannot handle sync*/async* functions
+sync_generator1_test/01: Timeout # Please triage this failure.
+sync_generator1_test/none: Timeout # Please triage this failure.
+sync_generator3_test/test1: RuntimeError # Please triage this failure.
+sync_generator3_test/test2: RuntimeError # Please triage this failure.
+syncstar_yield_test/copyParameters: RuntimeError # Please triage this failure.
+syncstar_yield_test/none: RuntimeError # Please triage this failure.
+syncstar_yieldstar_test: RuntimeError # Please triage this failure.
 type_variable_closure2_test: RuntimeError # Please triage this failure.
 type_variable_field_initializer_closure_test: RuntimeError # Please triage this failure.
 type_variable_field_initializer_test: RuntimeError # Please triage this failure.
diff --git a/tests/lib/analyzer/analyze_library.status b/tests/lib/analyzer/analyze_library.status
index 5d72855..4016986 100644
--- a/tests/lib/analyzer/analyze_library.status
+++ b/tests/lib/analyzer/analyze_library.status
@@ -24,3 +24,5 @@
 lib/indexed_db/dartium/indexed_db_dartium: CompileTimeError # Issue 21647
 lib/web_audio/dartium/web_audio_dartium: CompileTimeError # Issue 21647
 lib/svg/dartium/svg_dartium: CompileTimeError # Issue 21647
+lib/_blink/dartium/_blink_dartium: CompileTimeError # Dartium JsInterop roll (js.JsObjectImpl)
+lib/js/dartium/js_dartium: CompileTimeError # Dartium JsInterop roll (js.JsObjectImpl)
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
index 9a65284..c35ec1d 100644
--- a/tests/lib/lib.status
+++ b/tests/lib/lib.status
@@ -336,229 +336,13 @@
 async/async_await_zones_test: Crash # (await for(var x in bar().take(100)){sum+= x;}): await for
 async/stream_empty_test: RuntimeError # $async$temp1.runTest_unreachable is not a function
 async/stream_iterator_test: Crash # (Stream createCancel...  cannot handle sync*/async* functions
-convert/json_pretty_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-convert/line_splitter_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/abstract_class_test/00: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/abstract_class_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/abstract_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/accessor_cache_overflow_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/array_tracing2_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/array_tracing_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/basic_types_in_dart_core_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/circular_factory_redirection_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/class_declarations_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/class_declarations_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/class_mirror_location_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/class_mirror_type_variables_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/closures_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/closurization_equivalence_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/constructor_kinds_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/constructor_kinds_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/constructors_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/dart2js_mirrors_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/declarations_type_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/deferred_mirrors_metadata_test: RuntimeError # TypeError: U.loadLibrary is not a function
-mirrors/deferred_mirrors_metatarget_test: RuntimeError # TypeError: X.loadLibrary is not a function
-mirrors/deferred_mirrors_update_test: RuntimeError # TypeError: U.loadLibrary is not a function
-mirrors/deferred_type_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
+convert/json_pretty_test: RuntimeError # Please triage this failure.
+convert/line_splitter_test: RuntimeError # Please triage this failure.
+mirrors/deferred_mirrors_metadata_test: RuntimeError # U.loadLibrary is not a function
+mirrors/deferred_mirrors_metatarget_test: RuntimeError # X.loadLibrary is not a function
+mirrors/deferred_mirrors_update_test: RuntimeError # U.loadLibrary is not a function
 mirrors/delegate_call_through_getter_test: RuntimeError # Please triage this failure.
-mirrors/delegate_class_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/delegate_library_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 mirrors/delegate_test: RuntimeError # Please triage this failure.
-mirrors/disable_tree_shaking_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/empty_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/enum_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/equality_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/fake_function_with_call_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/fake_function_without_call_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/field_type_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/function_type_mirror_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_bounded_by_type_parameter_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_bounded_by_type_parameter_test/02: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_bounded_by_type_parameter_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_bounded_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_bounded_test/02: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_bounded_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_class_declaration_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_f_bounded_mixin_application_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_f_bounded_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_f_bounded_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_function_typedef_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_interface_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_interface_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_list_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_local_function_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_mixin_applications_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_mixin_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_superclass_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_superclass_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generic_type_mirror_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generics_double_substitution_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generics_double_substitution_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generics_dynamic_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generics_special_types_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generics_substitution_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generics_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/generics_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/globalized_closures2_test/00: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/globalized_closures2_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/globalized_closures_test/00: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/globalized_closures_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/hierarchy_invariants_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/immutable_collections_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/inherit_field_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/initializing_formals_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/initializing_formals_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/instance_members_easier_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/instance_members_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/instance_members_unimplemented_interface_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/instance_members_with_override_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/instantiate_abstract_class_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/intercepted_cache_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/intercepted_class_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/intercepted_object_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/intercepted_superclass_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invocation_fuzz_test/emptyarray: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invocation_fuzz_test/false: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invocation_fuzz_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invocation_fuzz_test/smi: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invocation_fuzz_test/string: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_on_closure_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_through_getter_previously_accessed_test/named: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_through_getter_previously_accessed_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_through_getter_test/named: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_through_getter_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_through_implicit_getter_previously_accessed_test/named: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_through_implicit_getter_previously_accessed_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_call_through_implicit_getter_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_closurization2_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_closurization_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_import_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_named_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_named_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_natives_malicious_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/invoke_throws_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/io_html_mutual_exclusion_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/is_odd_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/lazy_static_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/libraries_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_declarations_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_declarations_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_enumeration_deferred_loading_test: Crash # (other.topLevelMethod()): deferred access is not implemented
-mirrors/library_exports_hidden_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_exports_shown_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_import_deferred_loading_test: Crash # (other.topLevelMethod()): deferred access is not implemented
-mirrors/library_imports_bad_metadata_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_imports_deferred_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_imports_hidden_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_imports_metadata_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_imports_prefixed_show_hide_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_imports_prefixed_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_imports_shown_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_metadata2_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_metadata_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/library_uri_package_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/list_constructor_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/list_constructor_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/load_library_test: Crash # (other.topLevelMethod()): deferred access is not implemented
-mirrors/local_function_is_static_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/local_isolate_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_allowed_values_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_allowed_values_test/05: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_allowed_values_test/10: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_allowed_values_test/11: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_allowed_values_test/13: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_allowed_values_test/14: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_allowed_values_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_class_mirror_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_constructed_constant_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_constructor_arguments_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_nested_constructor_call_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/metadata_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/method_mirror_location_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/method_mirror_name_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/method_mirror_properties_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/method_mirror_returntype_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/method_mirror_source_line_ending_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/method_mirror_source_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mirror_in_static_init_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mirrors_nsm_mismatch_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mirrors_nsm_test/dart2js: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mirrors_nsm_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mirrors_reader_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mirrors_resolve_fields_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mirrors_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mixin_application_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mixin_members_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/mixin_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/native_class_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/new_instance_with_type_arguments_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/no_metadata_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/null2_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/null_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/operator_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/parameter_is_const_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/parameter_metadata_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/parameter_of_mixin_app_constructor_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/private_symbol_mangling_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/private_types_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/proxy_type_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/raw_type_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/raw_type_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/redirecting_factory_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/redirecting_factory_test/02: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/redirecting_factory_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflect_class_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflect_class_test/02: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflect_class_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflect_model_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflect_runtime_type_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflect_uninstantiated_class_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_classes_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_classes_test/02: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_classes_test/03: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_classes_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_function_type_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_special_types_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_test/02: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_test/03: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_typedefs_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflected_type_typevars_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/reflectively_instantiate_uninstantiated_class_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/regress_14304_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/regress_16321_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/regress_16321_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/regress_19731_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/relation_assignable_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/relation_subclass_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/relation_subtype_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/removed_api_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/repeated_private_anon_mixin_app_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/set_field_with_final_inheritance_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/set_field_with_final_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/spawn_function_root_library_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/static_members_easier_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/static_members_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/static_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/superclass2_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/superclass_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/symbol_validation_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
+mirrors/library_enumeration_deferred_loading_test: RuntimeError # L.loadLibrary is not a function
 mirrors/symbol_validation_test/none: RuntimeError # Please triage this failure.
-mirrors/syntax_error_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/synthetic_accessor_properties_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/to_string_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/top_level_accessors_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/type_argument_is_type_variable_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/type_variable_is_static_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/type_variable_owner_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/type_variable_owner_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/typearguments_mirror_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 mirrors/typedef_deferred_library_test: RuntimeError # G.loadLibrary is not a function
-mirrors/typedef_metadata_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/typedef_reflected_type_test/01: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/typedef_reflected_type_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/unnamed_library_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-mirrors/variable_is_const_test/none: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 7d7fc8f..827482f 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -198,8 +198,4 @@
 io/secure_socket_bad_data_test: RuntimeError  # An error in a secure connection just puts a READ_CLOSED on the stream, rather than signaling an error on the stream.
 
 [ $compiler == dart2js && $cps_ir ]
-io/file_error_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-io/file_read_encoded_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-io/file_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
-io/observatory_test: Crash # (static Iterable<Str...  cannot handle sync*/async* functions
 priority_queue_stress_test: RuntimeError # Cannot read property 'length' of undefined
diff --git a/tools/VERSION b/tools/VERSION
index 19d22f0..fd55717 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 1
 MINOR 13
 PATCH 0
-PRERELEASE 3
-PRERELEASE_PATCH 1
+PRERELEASE 4
+PRERELEASE_PATCH 0
diff --git a/tools/bots/cross-vm.py b/tools/bots/cross-vm.py
index 1296fe9..9fd751f 100644
--- a/tools/bots/cross-vm.py
+++ b/tools/bots/cross-vm.py
@@ -51,8 +51,7 @@
 
       with bot.BuildStep('Upload build tarball'):
         uri = "%s/%s" % (GCS_BUCKET, tarball)
-        run([GSUTIL, 'cp', tarball, uri])
-        run([GSUTIL, 'setacl', 'public-read', uri])
+        run([GSUTIL, 'cp', '-a', 'public-read', tarball, uri])
 
     elif num_run == 2:
       with bot.BuildStep('tests'):
diff --git a/tools/bots/dart_sdk.py b/tools/bots/dart_sdk.py
index 3356940..decf876 100644
--- a/tools/bots/dart_sdk.py
+++ b/tools/bots/dart_sdk.py
@@ -24,13 +24,6 @@
     Run([sys.executable, './tools/build.py', '--mode=release',
          '--arch=ia32,x64', 'create_sdk'])
 
-def BuildAPIDocs():
-  with bot.BuildStep('Build API docs'):
-    Run([sys.executable, './tools/build.py', '--mode=release',
-         '--arch=ia32', 'api_docs'])
-    Run([sys.executable, './tools/build.py', '--mode=release',
-         '--arch=ia32', 'dartdocgen'])
-
 def BuildDartdocAPIDocs(dirname):
   dart_sdk = os.path.join(bot_utils.DART_DIR,
                           utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
@@ -44,10 +37,12 @@
                               'packages')
   footer_file = os.path.join(bot_utils.DART_DIR,
                               'tools', 'bots', 'dartdoc_footer.html')
+  url = 'https://api.dartlang.org/stable'
   with bot.BuildStep('Build API docs by dartdoc'):
     subprocess.call([dart_exe, '--package-root=' + packages_dir, dartdoc_dart, 
                     '--sdk-docs','--output', dirname, '--dart-sdk', dart_sdk, 
-                    '--footer' , footer_file], 
+                    '--footer' , footer_file,
+                    '--rel-canonical-prefix=' + url], 
                      stdout=open(os.devnull, 'wb'))
 
 def CreateUploadVersionFile():
@@ -100,57 +95,18 @@
   CreateUploadSDKZips()
 
 def CreateUploadAPIDocs():
-  api_path = os.path.join(bot_utils.DART_DIR,
-                          utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
-                          'api_docs')
-  api_zip = os.path.join(bot_utils.DART_DIR,
-                         utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
-                         'dart-api-docs.zip')
   dartdoc_dir =  os.path.join(bot_utils.DART_DIR,
                               utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
                               'gen-dartdocs')
   dartdoc_zip =  os.path.join(bot_utils.DART_DIR,
                               utils.GetBuildRoot(BUILD_OS, 'release', 'ia32'),
                               'dartdocs-api.zip')
-  shutil.rmtree(api_path, ignore_errors=True)
-  FileDelete(api_zip)
-  BuildAPIDocs()
-  UploadApiDocs(api_path)
   UploadApiLatestFile()
-  CreateZip(api_path, api_zip)
-  DartArchiveUploadAPIDocs(api_zip)
   BuildDartdocAPIDocs(dartdoc_dir) 
   UploadDartdocApiDocs(dartdoc_dir)  
   CreateZip(dartdoc_dir, dartdoc_zip)  
   DartArchiveUploadDartdocAPIDocs(dartdoc_zip)
 
-def DartArchiveUploadAPIDocs(api_zip):
-  namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
-  revision = utils.GetArchiveVersion()
-  for revision in [revision, 'latest']:
-    destination = (namer.apidocs_directory(revision) + '/' +
-        namer.apidocs_zipfilename())
-    DartArchiveFile(api_zip, destination, checksum_files=False)
-
-def UploadApiDocs(dir_name):
-  apidocs_namer = bot_utils.GCSNamerApiDocs(CHANNEL)
-  revision = utils.GetArchiveVersion()
-  apidocs_destination_gcsdir = apidocs_namer.docs_dirpath(revision)
-  apidocs_destination_latestfile = apidocs_namer.docs_latestpath(revision)
-
-  # Return early if the documents have already been uploaded.
-  # (This can happen if a build was forced, or a commit had no changes in the
-  # dart repository (e.g. DEPS file update).)
-  if GsutilExists(apidocs_destination_gcsdir):
-    print ("Not uploading api docs, since %s is already present."
-           % apidocs_destination_gcsdir)
-    return
-
-  # Upload everything inside the built apidocs directory.
-  gsutil = bot_utils.GSUtil()
-  gsutil.upload(dir_name, apidocs_destination_gcsdir, recursive=True,
-                public=True)
-
 def DartArchiveUploadDartdocAPIDocs(api_zip):
   namer = bot_utils.GCSNamer(CHANNEL, bot_utils.ReleaseType.RAW)
   revision = utils.GetArchiveVersion()
diff --git a/tools/create_sdk.py b/tools/create_sdk.py
index b4e2135..431b2a8 100755
--- a/tools/create_sdk.py
+++ b/tools/create_sdk.py
@@ -120,8 +120,8 @@
 
 
 def CopyDartScripts(home, sdk_root):
-  for executable in ['dart2js_sdk', 'dartanalyzer_sdk', 'dartfmt_sdk', 'docgen',
-                     'dartdocgen', 'pub_sdk', 'dartdoc']:
+  for executable in ['dart2js_sdk', 'dartanalyzer_sdk', 'dartfmt_sdk',
+                     'pub_sdk', 'dartdoc']:
     CopyShellScript(os.path.join(home, 'sdk', 'bin', executable),
                     os.path.join(sdk_root, 'bin'))
 
diff --git a/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS b/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS
index 82a82d9..2e2224a 100644
--- a/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS
+++ b/tools/dart2js/angular2_testing_deps/CURRENT_ANGULAR_DEPS
@@ -1 +1 @@
-63e785902fbc6d5edbc1a4ed135f65d1cdf00acd
+da6def3772e22665c381306fd5f8be30a60c2058
diff --git a/tools/dartium/upload_steps.py b/tools/dartium/upload_steps.py
index 8665f84..2ab3fc8 100755
--- a/tools/dartium/upload_steps.py
+++ b/tools/dartium/upload_steps.py
@@ -192,7 +192,7 @@
 
   # Set ACL.
   if ACL is not None:
-    cmd = [GSUTIL, 'setacl', ACL, target]
+    cmd = [GSUTIL, 'acl', 'set', ACL, target]
     (status, output) = ExecuteCommand(cmd)
   return status
 
diff --git a/tools/deps/dartium.deps/DEPS b/tools/deps/dartium.deps/DEPS
index b79b1dc..7425710 100644
--- a/tools/deps/dartium.deps/DEPS
+++ b/tools/deps/dartium.deps/DEPS
@@ -1,3 +1,4 @@
+
 import gclient_utils
 import os
 
@@ -12,8 +13,8 @@
   "dartium_chromium_branch": "master",
   "dartium_chromium_commit": "62a7524d4f71c9e0858d24b0aa1bbff3a2d09bff",
   "chromium_base_revision": "297060",
-  "dartium_webkit_branch": "/blink/branches/dart/2171_3/dartium",
-  "dartium_webkit_revision": "201240",
+  "dartium_webkit_branch": "/blink/branches/dart/dartium",
+  "dartium_webkit_revision": "202538",
 
   # We use mirrors of all github repos to guarantee reproducibility and
   # consistency between what users see and what the bots see.
@@ -68,7 +69,7 @@
   "zlib_rev": "@c3d0a6190f2f8c924a05ab6cc97b8f975bddd33f",
   "web_components_rev": "@0e636b534d9b12c9e96f841e6679398e91a986ec",
 
-  "co19_rev": "@f95f109fea67127a220958794ef5200a63cb454c",
+  "co19_rev": "@fad777939a2b891c0a79b69a4d79c914049c69b0",
   "fake_async_rev": "@38614",
 })
 
diff --git a/tools/dom/scripts/css_code_generator.py b/tools/dom/scripts/css_code_generator.py
index 3a00dde..74de8e4 100644
--- a/tools/dom/scripts/css_code_generator.py
+++ b/tools/dom/scripts/css_code_generator.py
@@ -102,18 +102,8 @@
 
 
   class_file.write("""
-$if DART2JS
 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME $EXTENDS with
     $(CLASSNAME)Base $IMPLEMENTS {
-$else
-  $if JSINTEROP
-$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS) class $CLASSNAME extends
-    $(CLASSNAME)Base $IMPLEMENTS {
-  $else
-$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME $EXTENDS with
-    $(CLASSNAME)Base $IMPLEMENTS {
-  $endif
-$endif
   factory $CLASSNAME() => new CssStyleDeclaration.css('');
 
   factory $CLASSNAME.css(String css) {
@@ -252,7 +242,7 @@
   String get %s => this._%s;
 
   /** Sets the value of "%s" */
-  void set %s(String value) {
+  set %s(String value) {
     _%s = value == null ? '' : value;
   }
   @Returns('String')
@@ -266,15 +256,7 @@
 $endif
 }
 
-$if DART2JS
 class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase {
-$else
-  $if JSINTEROP
-class _CssStyleDeclarationSet extends CssStyleDeclarationBase {
-  $else
-class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase {
-  $endif
-$endif
   final Iterable<Element> _elementIterable;
   Iterable<CssStyleDeclaration> _elementCssStyleDeclarationSetIterable;
 
@@ -309,7 +291,7 @@
     property = dashifyName(camelName)
     class_file.write("""
   /** Sets the value of "%s" */
-  void set %s(String value) {
+  set %s(String value) {
     _setAll('%s', value);
   }
     """ % (property, camelName, camelName))
@@ -371,7 +353,7 @@
     if base_css_name in annotated:
       class_lines.append(annotated[base_css_name])
     class_lines.append("""
-  void set %s(String value) {
+  set %s(String value) {
     setProperty('%s', value, '');
   }
 """ % (camel_case_name, css_name))
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 688a5f9..fe4e03e 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -167,7 +167,7 @@
 
     'RTCIceCandidate': 'RTCIceCandidate,mozRTCIceCandidate',
 
-    'RTCIceCandidateEvent': 'RTCIceCandidateEvent,RTCPeerConnectionIceEvent', 
+    'RTCIceCandidateEvent': 'RTCIceCandidateEvent,RTCPeerConnectionIceEvent',
 
     'RTCSessionDescription': 'RTCSessionDescription,mozRTCSessionDescription',
 
@@ -514,21 +514,19 @@
       parameter_count = len(self.param_infos)
     return ', '.join(map(param_name, self.param_infos[:parameter_count]))
 
-  def wrap_unwrap_list_blink(self, return_type, type_registry):
-    """Return True if the type is a List<Node>"""
-    return return_type.startswith('List<Node>')
+  def isCallback(self, type_registry, type_id):
+    if type_id:
+      callback_type = type_registry._database._all_interfaces[type_id]
+      return callback_type.operations[0].id == 'handleEvent' if len(callback_type.operations) > 0 else False
+    else:
+      return False
 
-  def wrap_unwrap_type_blink(self, return_type, type_registry):
-    """Returns True if the type is a blink type that requires wrap_jso or unwrap_jso.
-    Notice we look for any class that starts with HtmlNNNN e.g., HtmlDocument, etc. """
-    return (type_registry.HasInterface(return_type) or not(return_type) or
-            return_type == 'Object' or return_type.startswith('Html') or
-            return_type == 'MutationObserver')
-
-  def ParametersAsListOfVariables(self, parameter_count=None, type_registry=None, dart_js_interop=False):
+  def ParametersAsListOfVariables(self, parameter_count=None, type_registry=None, dart_js_interop=False, backend = None):
     """Returns a list of the first parameter_count parameter names
     as raw variables.
     """
+    isRemoveOperation = self.name == 'removeEventListener' or self.name == 'removeListener'
+
     if parameter_count is None:
       parameter_count = len(self.param_infos)
     if not type_registry:
@@ -545,19 +543,56 @@
         #    - type is Object
         #
         # JsObject maybe stored in the Dart class.
-        if (self.wrap_unwrap_type_blink(type_id, type_registry)):
-          if dart_js_interop and type_id == 'EventListener' and (self.name == 'addEventListener' or
-                                                                 self.name == 'addListener'):
-            # Events fired need to wrap the Javascript Object passed as a parameter in event.
-            parameters.append('unwrap_jso((Event event) => %s(wrap_jso(event)))' % p.name)
+        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 == 'addEventListener')):
+              # Events fired need use a JsFunction not a anonymous closure to
+              # insure the event can really be removed.
+              parameters.append('wrap_event_listener(this, %s)' % p.name)
+          elif (dart_js_interop and type_id == 'EventListener' and
+              (self.name == 'removeEventListener')):
+              # Find the JsFunction that corresponds to this Dart function.
+              parameters.append('_knownListeners[this.hashCode][identityHashCode(%s)]' % p.name)
+          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':
+              # 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)
+          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
+            callback_type = type_registry._database._all_interfaces[type_id]
+            callback_args_decl = []
+            callback_args_call = []
+            for callback_arg in callback_type.operations[0].arguments:
+              if dart_js_interop:
+                dart_type = '' # For non-primitives we will be passing JsObject for non-primitives, so ignore types
+              else:
+                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)
+              else:
+                callback_args_call.append(callback_arg.id)
+            parameters.append('unwrap_jso((%s) => %s(%s))' %
+                              (", ".join(callback_args_decl),
+                               p.name,
+                               ", ".join(callback_args_call)))
           else:
             parameters.append('unwrap_jso(%s)' % p.name)
         else:
           if dart_js_interop:
+            conversion = backend._InputConversion(p.type_id, self.declared_name)
             passParam = p.name
-            if type_id == 'Dictionary':
+            if conversion:
               # Need to pass the IDL Dictionary from Dart Map to JavaScript object.
-              passParam = '{0} != null ? new js.JsObject.jsify({0}) : {0}'.format(p.name)
+              passParam = '{0}({1})'.format(conversion.function_name, p.name)
           else:
             passParam = p.name
           parameters.append(passParam)
@@ -1396,3 +1431,34 @@
 
     class_name = '%sIDLTypeInfo' % type_data.clazz
     return globals()[class_name](type_name, type_data)
+
+def wrap_unwrap_list_blink(return_type, type_registry):
+    """Return True if the type is a List<Node>"""
+    return return_type.startswith('List<Node>')
+
+def wrap_unwrap_type_blink(return_type, type_registry):
+    """Returns True if the type is a blink type that requires wrap_jso or
+    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_type == 'Object' or
+            return_type == 'Future' or
+            return_type == 'SqlDatabase' or # renamed to Database
+            return_type == 'HTMLElement' or
+            return_type == 'MutationObserver')
+
+def wrap_type_blink(return_type, type_registry):
+    """Returns True if the type is a blink type that requires wrap_jso but
+    NOT unwrap_jso"""
+    return (return_type == 'Map' or
+            return_type == 'Rectangle')
+
+def wrap_return_type_blink(return_type, type_name, type_registry):
+    """Returns True if we should wrap the returned value. This checks
+    a number of different variations, calling the more basic functions
+    above."""
+    return (wrap_unwrap_type_blink(return_type, type_registry) or
+            wrap_unwrap_type_blink(type_name, type_registry) or
+            wrap_type_blink(return_type, type_registry) or
+            wrap_unwrap_list_blink(return_type, type_registry))
diff --git a/tools/dom/scripts/go.sh b/tools/dom/scripts/go.sh
index 815c24c..946bdb9 100755
--- a/tools/dom/scripts/go.sh
+++ b/tools/dom/scripts/go.sh
@@ -34,4 +34,4 @@
 fi
 
 reset && \
-./dartdomgenerator.py --systems="$SYSTEMS" --logging=40 --update-dom-metadata
+./dartdomgenerator.py --systems="$SYSTEMS" --logging=40 --update-dom-metadata --gen-interop
diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py
index 3edf60e..e7e500f 100644
--- a/tools/dom/scripts/htmldartgenerator.py
+++ b/tools/dom/scripts/htmldartgenerator.py
@@ -14,6 +14,7 @@
 from htmlrenamer import convert_to_future_members, custom_html_constructors, \
     keep_overloaded_members, overloaded_and_renamed, private_html_members, \
     renamed_html_members, renamed_overloads, removed_html_members
+from generator import TypeOrVar
 import logging
 import monitored
 import sys
@@ -324,6 +325,7 @@
                                              info.operations[0],
                                              info.name,
                                              'call:')
+
     if not method_name:
       if info.name == 'item':
         # FIXME: item should be renamed to operator[], not removed.
@@ -526,7 +528,7 @@
   def _AddConstructor(self,
       constructor_info, factory_name, factory_constructor_name):
     # Hack to ignore the Image constructor used by JavaScript.
-    if (self._interface.id == 'HTMLImageElement'
+    if ((self._interface.id == 'HTMLImageElement' or self._interface.id == 'Blob')
       and not constructor_info.pure_dart_constructor):
       return
 
@@ -595,6 +597,7 @@
         name = emitter.Format('_create_$VERSION', VERSION=version)
         arguments = constructor_info.idl_args[signature_index][:argument_count]
         args = None
+        call_template = ''
         if self._dart_use_blink:
             type_ids = [p.type.id for p in arguments]
             base_name, rs = \
@@ -603,6 +606,12 @@
                 self.DeriveQualifiedBlinkName(self._interface.id,
                                               base_name)
             args = constructor_info.ParametersAsArgumentList(argument_count)
+
+            # Handle converting Maps to Dictionaries, etc.
+            (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))'
         else:
             qualified_name = emitter.Format(
                 '$FACTORY.$NAME',
@@ -611,9 +620,8 @@
             (factory_params, converted_arguments) = self._ConvertArgumentTypes(
                 stmts_emitter, arguments, argument_count, constructor_info)
             args = ', '.join(converted_arguments)
-        call_emitter.Emit('$FACTORY_NAME($FACTORY_PARAMS)',
-            FACTORY_NAME=qualified_name,
-            FACTORY_PARAMS=args)
+            call_template = '$FACTORY_NAME($FACTORY_PARAMS)'
+        call_emitter.Emit(call_template, FACTORY_NAME=qualified_name, FACTORY_PARAMS=args)
         self.EmitStaticFactoryOverload(constructor_info, name, arguments)
 
       def IsOptional(signature_index, argument):
@@ -699,7 +707,14 @@
     """ Declares an attribute but does not include the code to invoke it.
     """
     if read_only:
-      template = '\n  $TYPE get $NAME;\n'
+      # HACK(terry): Element is not abstract for Dartium so isContentEditable
+      # must have a body see impl_Element.darttemplate
+      if (self._interface.id == 'Element' and
+          attr_name == 'isContentEditable' and
+          self._dart_js_interop):
+        return
+      else:
+        template = '\n  $TYPE get $NAME;\n'
     else:
       template = '\n  $TYPE $NAME;\n'
 
@@ -714,9 +729,17 @@
       return_type_name - The name of the return type.
       method_name - The name of the method.
     """
+      # HACK(terry): Element is not abstract for Dartium so click
+      # must have a body see impl_Element.darttemplate
+    if (self._interface.id == 'Element' and
+        method_name == 'click' and
+        self._dart_js_interop):
+      return
+    else:
+      template = '\n  $TYPE $NAME($PARAMS);\n'
+
     self._members_emitter.Emit(
-             '\n'
-             '  $TYPE $NAME($PARAMS);\n',
+             template,
              TYPE=return_type_name,
              NAME=method_name,
              PARAMS=operation.ParametersAsDeclaration(self._DartType))
@@ -804,3 +827,49 @@
 
   def _TypeInfo(self, type_name):
     return self._type_registry.TypeInfo(type_name)
+
+  def _ConvertArgumentTypes(self, stmts_emitter, arguments, argument_count, info):
+    temp_version = [0]
+    converted_arguments = []
+    target_parameters = []
+    for position, arg in enumerate(arguments[:argument_count]):
+      conversion = self._InputConversion(arg.type.id, info.declared_name)
+      param_name = arguments[position].id
+      if conversion:
+        temp_version[0] += 1
+        temp_name = '%s_%s' % (param_name, temp_version[0])
+        temp_type = conversion.output_type
+        stmts_emitter.Emit(
+            '$(INDENT)$TYPE $NAME = $CONVERT($ARG);\n',
+            TYPE=TypeOrVar(temp_type),
+            NAME=temp_name,
+            CONVERT=conversion.function_name,
+            ARG=info.param_infos[position].name)
+        converted_arguments.append(temp_name)
+        param_type = temp_type
+        verified_type = temp_type  # verified by assignment in checked mode.
+      else:
+        converted_arguments.append(info.param_infos[position].name)
+        param_type = self._NarrowInputType(arg.type.id)
+        # Verified by argument checking on entry to the dispatcher.
+
+        verified_type = self._InputType(
+            info.param_infos[position].type_id, info)
+        # The native method does not need an argument type if we know the type.
+        # But we do need the native methods to have correct function types, so
+        # be conservative.
+        if param_type == verified_type:
+          if param_type in ['String', 'num', 'int', 'double', 'bool', 'Object']:
+            param_type = 'dynamic'
+
+      target_parameters.append(
+          '%s%s' % (TypeOrNothing(param_type), param_name))
+
+    return target_parameters, converted_arguments
+
+  def _InputType(self, type_name, info):
+    conversion = self._InputConversion(type_name, info.declared_name)
+    if conversion:
+      return conversion.input_type
+    else:
+      return self._NarrowInputType(type_name) if type_name else 'dynamic'
diff --git a/tools/dom/scripts/htmlrenamer.py b/tools/dom/scripts/htmlrenamer.py
index 96d3cfc..2dd6db6 100644
--- a/tools/dom/scripts/htmlrenamer.py
+++ b/tools/dom/scripts/htmlrenamer.py
@@ -176,6 +176,7 @@
 # constructor for dispatch purposes.
 custom_html_constructors = monitored.Set(
     'htmlrenamer.custom_html_constructors', [
+  'HTMLAudioElement',
   'HTMLOptionElement',
   'MutationObserver',
 ])
@@ -204,6 +205,7 @@
   'CustomEvent.initCustomEvent',
   'DeviceOrientationEvent.initDeviceOrientationEvent',
   'Document.createElement',
+  'Document.createElementNS',
   'Document.createEvent',
   'Document.createNodeIterator',
   'Document.createTextNode',
@@ -233,6 +235,7 @@
   'Document.webkitIsFullScreen',
   'Document.webkitVisibilityState',
 
+  'Element.animate',
   'Element.children',
   'Element.childElementCount',
   'Element.firstElementChild',
@@ -780,6 +783,8 @@
     'MouseEvent.y',
     'Navigator.registerServiceWorker',
     'Navigator.unregisterServiceWorker',
+    'Navigator.isProtocolHandlerRegistered',
+    'Navigator.unregisterProtocolHandler',
     'Node.compareDocumentPosition',
     'Node.get:DOCUMENT_POSITION_CONTAINED_BY',
     'Node.get:DOCUMENT_POSITION_CONTAINS',
@@ -821,6 +826,7 @@
     'Window.on:wheel',
     'WindowEventHandlers.on:beforeUnload',
     'WorkerGlobalScope.webkitIndexedDB',
+    'XMLHttpRequest.open',
 # TODO(jacobr): should these be removed?
     'Document.close',
     'Document.hasFocus',
diff --git a/tools/dom/scripts/systemhtml.py b/tools/dom/scripts/systemhtml.py
index 69ee642..222d8b1 100644
--- a/tools/dom/scripts/systemhtml.py
+++ b/tools/dom/scripts/systemhtml.py
@@ -494,6 +494,7 @@
 
   def GenerateInterface(self):
     interface_name = self._interface_type_info.interface_name()
+
     implementation_name = self._interface_type_info.implementation_name()
     self._library_emitter.AddTypeEntry(self._library_name,
                                        self._interface.id, implementation_name)
@@ -559,15 +560,15 @@
 
     mixins = self._backend.Mixins()
 
-    # TODO(terry): Do we need a more generic solution other than handling NamedNodeMap
-    #              we can't call super on a mixin interface - yet.
-    if self._options.templates._conditions['DARTIUM'] and self._options.dart_js_interop and self._interface.id == 'NamedNodeMap':
-      mixins = None
     mixins_str = ''
     if mixins:
       mixins_str = ' with ' + ', '.join(mixins)
       if not base_class:
         base_class = 'Interceptor'
+      elif (base_class == 'NativeFieldWrapperClass2' and
+            self._options.dart_js_interop and
+            not(isinstance(self._backend, Dart2JSBackend))):
+        base_class = 'JsoNativeFieldWrapper'
 
     annotations = self._metadata.GetFormattedMetadata(
         self._library_name, self._interface, None, '')
@@ -578,12 +579,20 @@
       # XMLHttpRequestProgressEvent can't be abstract we need to instantiate
       # for JsInterop.
       if (not(isinstance(self._backend, Dart2JSBackend)) and
-        self._interface.id == 'XMLHttpRequestProgressEvent'):
-        # Only suppress abstract for XMLHttpRequestProgressEvent for Dartium.
-        # Need to be able to instantiate the class; can't be abstract.
+        (self._interface.id == 'XMLHttpRequestProgressEvent' or
+         self._interface.id == 'DOMStringMap')):
+        # Suppress abstract for XMLHttpRequestProgressEvent and DOMStringMap
+        # for Dartium.  Need to be able to instantiate the class; can't be abstract.
         class_modifiers = ''
       else:
-        class_modifiers = 'abstract '
+        # For Dartium w/ JsInterop these suppressed interfaces are needed to
+        # instanciate the internal classes when wrap_jso is called for a JS object.
+        if (self._renamer.ShouldSuppressInterface(self._interface) and
+            not(isinstance(self._backend, Dart2JSBackend)) and
+            self._options.dart_js_interop):
+          class_modifiers = ''
+        else:
+          class_modifiers = 'abstract '
 
     native_spec = ''
     if not IsPureInterface(self._interface.id):
@@ -592,7 +601,8 @@
     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'
+      '  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 = ''
@@ -604,39 +614,42 @@
   }}
 
   factory {0}._internalWrap() {{
-    return new {0}._internal();
+    return new {0}.internal_();
   }}
 
-  {0}._internal() : super._internal();
+  {0}.internal_() : super.internal_();
 
 '''.format(class_name)
-    """
-    TODO(terry): Don't use Dart expando really don't need.
-      final Object expandoJsObject = new Object();
-      final Expando<JsObject> dartium_expando = new Expando<JsObject>("Expando_jsObject");
-    """
-    if base_class == 'NativeFieldWrapperClass2':
+    if base_class == 'NativeFieldWrapperClass2' or base_class == 'JsoNativeFieldWrapper':
         js_interop_wrapper = '''
   static {0} internalCreate{0}() {{
     return new {0}._internalWrap();
   }}
 
-  JsObject blink_jsObject = null;
+  js.JsObject blink_jsObject;
 
   factory {0}._internalWrap() {{
-    return new {0}._internal();
+    return new {0}.internal_();
   }}
 
-  {0}._internal() {{ }}
+  {0}.internal_() {{ }}
 
 {1}'''.format(class_name, js_interop_equivalence_op)
+        # 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.
+        if (self._options.templates._conditions['DARTIUM'] and
+            self._options.dart_js_interop and
+            (self._interface.id == 'NamedNodeMap' or
+             self._interface.id == 'CSSStyleDeclaration')):
+            base_class = 'JsoNativeFieldWrapper'
 
     implementation_members_emitter = implementation_emitter.Emit(
         self._backend.ImplementationTemplate(),
         LIBRARYNAME='dart.dom.%s' % self._library_name,
         ANNOTATIONS=annotations,
         CLASS_MODIFIERS=class_modifiers,
-        CLASSNAME=self._interface_type_info.implementation_name(),
+        CLASSNAME=class_name,
         EXTENDS=' extends %s' % base_class if base_class else '',
         IMPLEMENTS=implements_str,
         MIXINS=mixins_str,
@@ -673,7 +686,8 @@
     # Write out the JsInterop code.
     if (implementation_members_emitter and
         self._options.templates._conditions['DARTIUM'] and
-        self._options.dart_js_interop):
+        self._options.dart_js_interop and
+        not IsPureInterface(self._interface.id)):
       implementation_members_emitter.Emit(js_interop_wrapper)
 
     if isElement and self._interface.id != 'Element':
@@ -980,7 +994,7 @@
       return self._AddConvertingSetter(attr, html_name, conversion)
     self._members_emitter.Emit(
         # TODO(sra): Use metadata to provide native name.
-        '\n  void set $HTML_NAME($TYPE value) {'
+        '\n  set $HTML_NAME($TYPE value) {'
         '\n    JS("void", "#.$NAME = #", this, value);'
         '\n  }'
         '\n',
@@ -1007,10 +1021,10 @@
   def _AddConvertingSetter(self, attr, html_name, conversion):
     self._members_emitter.Emit(
         # TODO(sra): Use metadata to provide native name.
-        '\n  void set $HTML_NAME($INPUT_TYPE value) {'
+        '\n  set $HTML_NAME($INPUT_TYPE value) {'
         '\n    this._set_$HTML_NAME = $CONVERT(value);'
         '\n  }'
-        '\n  void set _set_$HTML_NAME(/*$NATIVE_TYPE*/ value) {'
+        '\n  set _set_$HTML_NAME(/*$NATIVE_TYPE*/ value) {'
         '\n    JS("void", "#.$NAME = #", this, value);'
         '\n  }'
         '\n',
@@ -1059,53 +1073,6 @@
         NAME=html_name,
         PARAMS=info.ParametersAsDeclaration(self._NarrowInputType))
 
-  def _ConvertArgumentTypes(
-          self, stmts_emitter, arguments, argument_count, info):
-    temp_version = [0]
-    converted_arguments = []  
-    target_parameters = []
-    for position, arg in enumerate(arguments[:argument_count]):
-      conversion = self._InputConversion(arg.type.id, info.declared_name)
-      param_name = arguments[position].id
-      if conversion:
-        temp_version[0] += 1
-        temp_name = '%s_%s' % (param_name, temp_version[0])
-        temp_type = conversion.output_type
-        stmts_emitter.Emit(
-            '$(INDENT)$TYPE $NAME = $CONVERT($ARG);\n',
-            TYPE=TypeOrVar(temp_type),
-            NAME=temp_name,
-            CONVERT=conversion.function_name,
-            ARG=info.param_infos[position].name)
-        converted_arguments.append(temp_name)
-        param_type = temp_type
-        verified_type = temp_type  # verified by assignment in checked mode.
-      else:
-        converted_arguments.append(info.param_infos[position].name)
-        param_type = self._NarrowInputType(arg.type.id)
-        # Verified by argument checking on entry to the dispatcher.
-
-        verified_type = self._InputType(
-            info.param_infos[position].type_id, info)
-        # The native method does not need an argument type if we know the type.
-        # But we do need the native methods to have correct function types, so
-        # be conservative.
-        if param_type == verified_type:
-          if param_type in ['String', 'num', 'int', 'double', 'bool', 'Object']:
-            param_type = 'dynamic'
-
-      target_parameters.append(
-          '%s%s' % (TypeOrNothing(param_type), param_name))
-
-    return target_parameters, converted_arguments
-
-  def _InputType(self, type_name, info):
-    conversion = self._InputConversion(type_name, info.declared_name)
-    if conversion:
-      return conversion.input_type
-    else:
-      return self._NarrowInputType(type_name) if type_name else 'dynamic'
-
   def _AddOperationWithConversions(self, info, html_name):
     # Assert all operations have same return type.
     assert len(set([op.type.id for op in info.operations])) == 1
@@ -1346,10 +1313,14 @@
       items = self._typeMap.items()
       items.sort()
       for (idl_name, dart_name) in items:
-        function_emitter.Emit(
-          "  '$IDL_NAME': () => $DART_NAME.internalCreate$DART_NAME,\n",
-          IDL_NAME=idl_name,
-          DART_NAME=dart_name)
+        # 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 99e511a..7177bc5 100644
--- a/tools/dom/scripts/systemnative.py
+++ b/tools/dom/scripts/systemnative.py
@@ -394,8 +394,8 @@
   def CustomJSMembers(self):
     return {}
 
-  def _InputConversion(self, type_name, info):
-    return None
+  def _InputConversion(self, idl_type, member):
+    return FindConversion(idl_type, 'set', self._interface.id, member)
 
   def GenerateCallback(self, info):
     if IsPureInterface(self._interface.id) or IsCustomType(self._interface.id):
@@ -645,7 +645,7 @@
         self._members_emitter.Emit(
             '\n  @DocsEditable()\n'
             '  static $INTERFACE_NAME $FACTORY_METHOD_NAME($PARAMETERS) => '
-            '$TOPLEVEL_NAME($OUTPARAMETERS);\n',
+            'wrap_jso($TOPLEVEL_NAME($OUTPARAMETERS));\n',
             INTERFACE_NAME=self._interface_type_info.interface_name(),
             FACTORY_METHOD_NAME=factory_method_name,
             PARAMETERS=typed_formals,
@@ -914,7 +914,7 @@
     if self._interface.id == 'ImageData' and html_name == 'data':
       html_name = '_data'
     type_info = self._TypeInfo(attr.type.id)
-    return_type = self.SecureOutputType(attr.type.id, False, read_only)
+    return_type = self.SecureOutputType(attr.type.id, False, False if self._dart_use_blink else True)
     parameters = []
     dart_declaration = '%s get %s' % (return_type, html_name)
     is_custom = _IsCustom(attr) and (_IsCustomValue(attr, None) or
@@ -932,8 +932,7 @@
         #    - type is Object
         #
         # JsObject maybe stored in the Dart class.
-        return_wrap_jso = (isinstance(type_info, InterfaceIDLTypeInfo) or
-                           not(type_info) or attr.type.id == 'Object')
+        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
 
@@ -996,7 +995,7 @@
                                           not(attr.type.id) or ptype == 'Object')
                   else 'value']
 
-    dart_declaration = 'void set %s(%s value)' % (html_name, ptype)
+    dart_declaration = 'set %s(%s value)' % (html_name, ptype)
     is_custom = _IsCustom(attr) and (_IsCustomValue(attr, None) or
                                      _IsCustomValue(attr, 'Setter'))
     # This seems to have been replaced with Custom=Setter (see above), but
@@ -1086,7 +1085,8 @@
       # Does nativeIndexGetter return a DartClass (JsObject) if so wrap_jso.
       wrap_jso_start = ''
       wrap_jso_end = ''
-      if isinstance(type_info, InterfaceIDLTypeInfo):
+      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 = """
@@ -1097,7 +1097,7 @@
   }
 
   $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_jso_start, wrap_jso_end, wrap_jso_start, wrap_jso_end)
       # Wrap the type to store the JsObject if Type is:
       #
       #    - known IDL type
@@ -1189,11 +1189,14 @@
     Arguments:
       info: An OperationInfo object.
     """
-    return_type = self.SecureOutputType(info.type_name, False, True)
+    return_type = self.SecureOutputType(info.type_name, False, False if dart_js_interop else True)
 
     formals = info.ParametersAsDeclaration(self._DartType)
 
-    parameters = info.ParametersAsListOfVariables(None, self._type_registry if self._dart_use_blink else None, dart_js_interop)
+    parameters = info.ParametersAsListOfVariables(None,
+                                                  self._type_registry if self._dart_use_blink else None,
+                                                  dart_js_interop,
+                                                  self)
     dart_declaration = '%s%s %s(%s)' % (
         'static ' if info.IsStatic() else '',
         return_type,
@@ -1219,11 +1222,15 @@
         #    - type is Object
         #
         # JsObject maybe stored in the Dart class.
-        return_wrap_jso = (info.wrap_unwrap_type_blink(return_type, self._type_registry) or
-                           return_type == 'Rectangle' or
-                           info.wrap_unwrap_list_blink(return_type, self._type_registry))
-    wrap_unwrap_list.append(return_wrap_jso)       # wrap_jso the returned object
-    wrap_unwrap_list.append(self._dart_use_blink)  # The 'this' parameter must be unwrap_jso
+        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:
       self._AddFutureifiedOperation(info, html_name)
@@ -1252,14 +1259,15 @@
       native_suffix = 'Callback'
       actuals = info.ParametersAsListOfVariables(argument_count,
                                                  self._type_registry if self._dart_use_blink else None,
-                                                 self._dart_js_interop)
+                                                 self._dart_js_interop,
+                                                 self)
       actuals_s = ", ".join(actuals)
       formals=actuals
       return_type = self.SecureOutputType(operation.type.id)
 
       return_wrap_jso = False
       if self._dart_use_blink:
-         return_wrap_jso = self._type_registry.HasInterface(return_type)
+          return_wrap_jso = wrap_return_type_blink(return_type, info.type_name, self._type_registry)
 
       native_suffix = 'Callback'
       is_custom = _IsCustom(operation)
@@ -1742,19 +1750,19 @@
   '''
                 if return_type == 'Rectangle':
                     jso_util_method = 'make_dart_rectangle'
-                # TODO(terry): More checks that the return is a List<Node>.
-                elif return_type.startswith('List<'):
-                    jso_util_method = 'wrap_jso_list'
-                else:
+                elif wrap_unwrap_list[0]:
                     jso_util_method = 'wrap_jso'
+
                 # Always return List<String> unwrapped.
                 if return_type != 'List<String>':
                   emit_template = emit_jso_template % jso_util_method
-            caller_emitter.Emit(emit_template,
-                                METADATA=metadata,
-                                DART_DECLARATION=dart_declaration,
-                                DART_NAME=full_dart_name,
-                                ACTUALS=actuals)
+
+            if caller_emitter:
+              caller_emitter.Emit(emit_template,
+                                  METADATA=metadata,
+                                  DART_DECLARATION=dart_declaration,
+                                  DART_NAME=full_dart_name,
+                                  ACTUALS=actuals)
     cpp_callback_name = '%s%s' % (idl_name, native_suffix)
 
     self._cpp_resolver_emitter.Emit(
diff --git a/tools/dom/src/CssRectangle.dart b/tools/dom/src/CssRectangle.dart
index e82ddd9..440bebe 100644
--- a/tools/dom/src/CssRectangle.dart
+++ b/tools/dom/src/CssRectangle.dart
@@ -27,7 +27,7 @@
    * `height` function in jQuery and the calculated `height` CSS value,
    * converted to a num in pixels.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     if (newHeight is Dimension) {
       if (newHeight.value < 0) newHeight = new Dimension.px(0);
       _element.style.height = newHeight.toString();
@@ -45,7 +45,7 @@
    * and the calculated
    * `width` CSS value, converted to a dimensionless num in pixels.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     if (newWidth is Dimension) {
       if (newWidth.value < 0) newWidth = new Dimension.px(0);
       _element.style.width = newWidth.toString();
@@ -80,7 +80,7 @@
    * function in jQuery and the calculated `height` CSS value, converted to a
    * num in pixels.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     _elementList.forEach((e) => e.contentEdge.height = newHeight);
   }
 
@@ -90,7 +90,7 @@
    * This is equivalent to the `width` function in jQuery and the calculated
    * `width` CSS value, converted to a dimensionless num in pixels.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     _elementList.forEach((e) => e.contentEdge.width = newWidth);
   }
 }
@@ -197,7 +197,7 @@
    *
    * Note that only the content height can actually be set via this method.
    */
-  void set height(newHeight) {
+  set height(newHeight) {
     throw new UnsupportedError("Can only set height for content rect.");
   }
 
@@ -211,7 +211,7 @@
    *
    * Note that only the content width can be set via this method.
    */
-  void set width(newWidth) {
+  set width(newWidth) {
     throw new UnsupportedError("Can only set width for content rect.");
   }
 
diff --git a/tools/dom/src/Html5NodeValidator.dart b/tools/dom/src/Html5NodeValidator.dart
index a5e0e57..c935d07 100644
--- a/tools/dom/src/Html5NodeValidator.dart
+++ b/tools/dom/src/Html5NodeValidator.dart
@@ -423,11 +423,11 @@
   }
 
   bool allowsElement(Element element) {
-    return _allowedElements.contains(element.tagName);
+    return _allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
-    var tagName = element.tagName;
+    var tagName = element._safeTagName;
     var validator = _attributeValidators['$tagName::$attributeName'];
     if (validator == null) {
       validator = _attributeValidators['*::$attributeName'];
diff --git a/tools/dom/src/NodeValidatorBuilder.dart b/tools/dom/src/NodeValidatorBuilder.dart
index 4a41232..f884cae 100644
--- a/tools/dom/src/NodeValidatorBuilder.dart
+++ b/tools/dom/src/NodeValidatorBuilder.dart
@@ -358,11 +358,11 @@
   }
 
   bool allowsElement(Element element) {
-    return allowedElements.contains(element.tagName);
+    return allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
-    var tagName = element.tagName;
+    var tagName = element._safeTagName;
     if (allowedUriAttributes.contains('$tagName::$attributeName')) {
       return uriPolicy.allowsUri(value);
     } else if (allowedUriAttributes.contains('*::$attributeName')) {
@@ -403,10 +403,10 @@
       var isAttr = element.attributes['is'];
       if (isAttr != null) {
         return allowedElements.contains(isAttr.toUpperCase()) &&
-          allowedElements.contains(element.tagName);
+          allowedElements.contains(element._safeTagName);
       }
     }
-    return allowCustomTag && allowedElements.contains(element.tagName);
+    return allowCustomTag && allowedElements.contains(element._safeTagName);
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
@@ -462,7 +462,7 @@
     // foreignobject tag as SvgElement. We don't want foreignobject contents
     // anyway, so just remove the whole tree outright. And we can't rely
     // on IE recognizing the SvgForeignObject type, so go by tagName. Bug 23144
-    if (element is svg.SvgElement && element.tagName == 'foreignObject') {
+    if (element is svg.SvgElement && element._safeTagName == 'foreignObject') {
       return false;
     }
     if (element is svg.SvgElement) {
diff --git a/tools/dom/src/Validators.dart b/tools/dom/src/Validators.dart
index 809f8e5..11cb3d0 100644
--- a/tools/dom/src/Validators.dart
+++ b/tools/dom/src/Validators.dart
@@ -72,7 +72,7 @@
   /**
    * A sanitizer for trees that we trust. It does no validation and allows
    * any elements. It is also more efficient, since it can pass the text
-   * directly through to the underlying APIs without creating a document 
+   * directly through to the underlying APIs without creating a document
    * fragment to be sanitized.
    */
   static const trusted = const _TrustedHtmlTreeSanitizer();
@@ -87,7 +87,7 @@
 
   sanitizeTree(Node node) {}
 }
-  
+
 /**
  * Defines the policy for what types of uris are allowed for particular
  * attribute values.
@@ -141,14 +141,14 @@
 
   bool allowsElement(Element element) {
     if (!validator.allowsElement(element)) {
-      throw new ArgumentError(element.tagName);
+      throw new ArgumentError(element._safeTagName);
     }
     return true;
   }
 
   bool allowsAttribute(Element element, String attributeName, String value) {
     if (!validator.allowsAttribute(element, attributeName, value)) {
-      throw new ArgumentError('${element.tagName}[$attributeName="$value"]');
+      throw new ArgumentError('${element._safeTagName}[$attributeName="$value"]');
     }
   }
 }
@@ -213,10 +213,7 @@
     try {
       elementText = element.toString();
     } catch(e) {}
-    var elementTagName = 'element tag unavailable';
-    try {
-      elementTagName = element.tagName;
-    } catch(e) {}
+    var elementTagName = element._safeTagName;
     _sanitizeElement(element, parent, corrupted, elementText, elementTagName,
         attrs, isAttr);
   }
diff --git a/tools/dom/src/WrappedList.dart b/tools/dom/src/WrappedList.dart
index 375ce7c..fd3ca95 100644
--- a/tools/dom/src/WrappedList.dart
+++ b/tools/dom/src/WrappedList.dart
@@ -34,7 +34,7 @@
 
   void operator []=(int index, E value) { _list[index] = value; }
 
-  void set length(int newLength) { _list.length = newLength; }
+  set length(int newLength) { _list.length = newLength; }
 
   void sort([int compare(E a, E b)]) { _list.sort(compare); }
 
diff --git a/tools/dom/src/_chrome/app_runtime.dart b/tools/dom/src/_chrome/app_runtime.dart
index 31aa9cd..03658f0 100644
--- a/tools/dom/src/_chrome/app_runtime.dart
+++ b/tools/dom/src/_chrome/app_runtime.dart
@@ -32,14 +32,14 @@
   /// FileEntry for the file.
   FileEntry get entry => JS('FileEntry', '#.entry', this._jsObject);
 
-  void set entry(FileEntry entry) {
+  set entry(FileEntry entry) {
     JS('void', '#.entry = #', this._jsObject, convertArgument(entry));
   }
 
   /// The MIME type of the file.
   String get type => JS('String', '#.type', this._jsObject);
 
-  void set type(String type) {
+  set type(String type) {
     JS('void', '#.type = #', this._jsObject, type);
   }
 
@@ -67,7 +67,7 @@
   /// The id of the file handler that the app is being invoked with.
   String get id => JS('String', '#.id', this._jsObject);
 
-  void set id(String id) {
+  set id(String id) {
     JS('void', '#.id = #', this._jsObject, id);
   }
 
@@ -81,7 +81,7 @@
     return __proxy_items;
   }
 
-  void set items(List<AppRuntimeLaunchItem> items) {
+  set items(List<AppRuntimeLaunchItem> items) {
     JS('void', '#.items = #', this._jsObject, convertArgument(items));
   }
 
diff --git a/tools/dom/src/_chrome/app_window.dart b/tools/dom/src/_chrome/app_window.dart
index 6c62ab0..515061e 100644
--- a/tools/dom/src/_chrome/app_window.dart
+++ b/tools/dom/src/_chrome/app_window.dart
@@ -35,25 +35,25 @@
    */
   int get left => JS('int', '#.left', this._jsObject);
 
-  void set left(int left) {
+  set left(int left) {
     JS('void', '#.left = #', this._jsObject, left);
   }
 
   int get top => JS('int', '#.top', this._jsObject);
 
-  void set top(int top) {
+  set top(int top) {
     JS('void', '#.top = #', this._jsObject, top);
   }
 
   int get width => JS('int', '#.width', this._jsObject);
 
-  void set width(int width) {
+  set width(int width) {
     JS('void', '#.width = #', this._jsObject, width);
   }
 
   int get height => JS('int', '#.height', this._jsObject);
 
-  void set height(int height) {
+  set height(int height) {
     JS('void', '#.height = #', this._jsObject, height);
   }
 
@@ -121,7 +121,7 @@
   /// same id is later opened.
   String get id => JS('String', '#.id', this._jsObject);
 
-  void set id(String id) {
+  set id(String id) {
     JS('void', '#.id = #', this._jsObject, id);
   }
 
@@ -129,7 +129,7 @@
   /// now.)
   int get defaultWidth => JS('int', '#.defaultWidth', this._jsObject);
 
-  void set defaultWidth(int defaultWidth) {
+  set defaultWidth(int defaultWidth) {
     JS('void', '#.defaultWidth = #', this._jsObject, defaultWidth);
   }
 
@@ -137,7 +137,7 @@
   /// now.)
   int get defaultHeight => JS('int', '#.defaultHeight', this._jsObject);
 
-  void set defaultHeight(int defaultHeight) {
+  set defaultHeight(int defaultHeight) {
     JS('void', '#.defaultHeight = #', this._jsObject, defaultHeight);
   }
 
@@ -145,7 +145,7 @@
   /// this now.)
   int get defaultLeft => JS('int', '#.defaultLeft', this._jsObject);
 
-  void set defaultLeft(int defaultLeft) {
+  set defaultLeft(int defaultLeft) {
     JS('void', '#.defaultLeft = #', this._jsObject, defaultLeft);
   }
 
@@ -153,77 +153,77 @@
   /// this now.)
   int get defaultTop => JS('int', '#.defaultTop', this._jsObject);
 
-  void set defaultTop(int defaultTop) {
+  set defaultTop(int defaultTop) {
     JS('void', '#.defaultTop = #', this._jsObject, defaultTop);
   }
 
   /// Width of the window. (Deprecated; use 'bounds'.)
   int get width => JS('int', '#.width', this._jsObject);
 
-  void set width(int width) {
+  set width(int width) {
     JS('void', '#.width = #', this._jsObject, width);
   }
 
   /// Height of the window. (Deprecated; use 'bounds'.)
   int get height => JS('int', '#.height', this._jsObject);
 
-  void set height(int height) {
+  set height(int height) {
     JS('void', '#.height = #', this._jsObject, height);
   }
 
   /// X coordinate of the window. (Deprecated; use 'bounds'.)
   int get left => JS('int', '#.left', this._jsObject);
 
-  void set left(int left) {
+  set left(int left) {
     JS('void', '#.left = #', this._jsObject, left);
   }
 
   /// Y coordinate of the window. (Deprecated; use 'bounds'.)
   int get top => JS('int', '#.top', this._jsObject);
 
-  void set top(int top) {
+  set top(int top) {
     JS('void', '#.top = #', this._jsObject, top);
   }
 
   /// Minimum width for the lifetime of the window.
   int get minWidth => JS('int', '#.minWidth', this._jsObject);
 
-  void set minWidth(int minWidth) {
+  set minWidth(int minWidth) {
     JS('void', '#.minWidth = #', this._jsObject, minWidth);
   }
 
   /// Minimum height for the lifetime of the window.
   int get minHeight => JS('int', '#.minHeight', this._jsObject);
 
-  void set minHeight(int minHeight) {
+  set minHeight(int minHeight) {
     JS('void', '#.minHeight = #', this._jsObject, minHeight);
   }
 
   /// Maximum width for the lifetime of the window.
   int get maxWidth => JS('int', '#.maxWidth', this._jsObject);
 
-  void set maxWidth(int maxWidth) {
+  set maxWidth(int maxWidth) {
     JS('void', '#.maxWidth = #', this._jsObject, maxWidth);
   }
 
   /// Maximum height for the lifetime of the window.
   int get maxHeight => JS('int', '#.maxHeight', this._jsObject);
 
-  void set maxHeight(int maxHeight) {
+  set maxHeight(int maxHeight) {
     JS('void', '#.maxHeight = #', this._jsObject, maxHeight);
   }
 
   /// Type of window to create.
   String get type => JS('String', '#.type', this._jsObject);
 
-  void set type(String type) {
+  set type(String type) {
     JS('void', '#.type = #', this._jsObject, type);
   }
 
   /// Frame type: 'none' or 'chrome' (defaults to 'chrome').
   String get frame => JS('String', '#.frame', this._jsObject);
 
-  void set frame(String frame) {
+  set frame(String frame) {
     JS('void', '#.frame = #', this._jsObject, frame);
   }
 
@@ -232,7 +232,7 @@
   /// before, the remembered bounds of the window will be used instead.
   AppWindowBounds get bounds => new AppWindowBounds._proxy(JS('', '#.bounds', this._jsObject));
 
-  void set bounds(AppWindowBounds bounds) {
+  set bounds(AppWindowBounds bounds) {
     JS('void', '#.bounds = #', this._jsObject, convertArgument(bounds));
   }
 
@@ -240,7 +240,7 @@
   /// experimental API permission.
   bool get transparentBackground => JS('bool', '#.transparentBackground', this._jsObject);
 
-  void set transparentBackground(bool transparentBackground) {
+  set transparentBackground(bool transparentBackground) {
     JS('void', '#.transparentBackground = #', this._jsObject, transparentBackground);
   }
 
@@ -248,7 +248,7 @@
   /// fullscreen, maximized, or minimized. Defaults to 'normal'.
   String get state => JS('String', '#.state', this._jsObject);
 
-  void set state(String state) {
+  set state(String state) {
     JS('void', '#.state = #', this._jsObject, state);
   }
 
@@ -256,14 +256,14 @@
   /// window to show it once it has been created. Defaults to false.
   bool get hidden => JS('bool', '#.hidden', this._jsObject);
 
-  void set hidden(bool hidden) {
+  set hidden(bool hidden) {
     JS('void', '#.hidden = #', this._jsObject, hidden);
   }
 
   /// If true, the window will be resizable by the user. Defaults to true.
   bool get resizable => JS('bool', '#.resizable', this._jsObject);
 
-  void set resizable(bool resizable) {
+  set resizable(bool resizable) {
     JS('void', '#.resizable = #', this._jsObject, resizable);
   }
 
@@ -274,7 +274,7 @@
   /// property to false.
   bool get singleton => JS('bool', '#.singleton', this._jsObject);
 
-  void set singleton(bool singleton) {
+  set singleton(bool singleton) {
     JS('void', '#.singleton = #', this._jsObject, singleton);
   }
 
diff --git a/tools/dom/src/_chrome/file_system.dart b/tools/dom/src/_chrome/file_system.dart
index b3d532a..83212c5 100644
--- a/tools/dom/src/_chrome/file_system.dart
+++ b/tools/dom/src/_chrome/file_system.dart
@@ -37,7 +37,7 @@
   /// *.htm").
   String get description => JS('String', '#.description', this._jsObject);
 
-  void set description(String description) {
+  set description(String description) {
     JS('void', '#.description = #', this._jsObject, description);
   }
 
@@ -45,14 +45,14 @@
   /// extensions must contain at least one valid element.
   List<String> get mimeTypes => JS('List<String>', '#.mimeTypes', this._jsObject);
 
-  void set mimeTypes(List<String> mimeTypes) {
+  set mimeTypes(List<String> mimeTypes) {
     JS('void', '#.mimeTypes = #', this._jsObject, mimeTypes);
   }
 
   /// Extensions to accept, e.g. "jpg", "gif", "crx".
   List<String> get extensions => JS('List<String>', '#.extensions', this._jsObject);
 
-  void set extensions(List<String> extensions) {
+  set extensions(List<String> extensions) {
     JS('void', '#.extensions = #', this._jsObject, extensions);
   }
 
@@ -84,7 +84,7 @@
   /// Type of the prompt to show. The default is 'openFile'.
   String get type => JS('String', '#.type', this._jsObject);
 
-  void set type(String type) {
+  set type(String type) {
     JS('void', '#.type = #', this._jsObject, type);
   }
 
@@ -92,7 +92,7 @@
   /// name to read or write. This is optional.
   String get suggestedName => JS('String', '#.suggestedName', this._jsObject);
 
-  void set suggestedName(String suggestedName) {
+  set suggestedName(String suggestedName) {
     JS('void', '#.suggestedName = #', this._jsObject, suggestedName);
   }
 
@@ -108,7 +108,7 @@
     return __proxy_accepts;
   }
 
-  void set accepts(List<FilesystemAcceptOption> accepts) {
+  set accepts(List<FilesystemAcceptOption> accepts) {
     JS('void', '#.accepts = #', this._jsObject, convertArgument(accepts));
   }
 
@@ -117,7 +117,7 @@
   /// contains no valid entries, this will always be reset to true.
   bool get acceptsAllTypes => JS('bool', '#.acceptsAllTypes', this._jsObject);
 
-  void set acceptsAllTypes(bool acceptsAllTypes) {
+  set acceptsAllTypes(bool acceptsAllTypes) {
     JS('void', '#.acceptsAllTypes = #', this._jsObject, acceptsAllTypes);
   }
 
diff --git a/tools/dom/src/_chrome/utils.dart b/tools/dom/src/_chrome/utils.dart
index b88019c..6770113 100644
--- a/tools/dom/src/_chrome/utils.dart
+++ b/tools/dom/src/_chrome/utils.dart
@@ -117,27 +117,27 @@
    */
   String get id => JS('String', '#.id', this._jsObject);
 
-  void set id(String id) {
+  set id(String id) {
     JS('void', '#.id = #', this._jsObject, id);
   }
 
   // TODO(sashab): Wrap these generic Lists somehow.
   List get conditions => JS('List', '#.conditions', this._jsObject);
 
-  void set conditions(List conditions) {
+  set conditions(List conditions) {
     JS('void', '#.conditions = #', this._jsObject, convertArgument(conditions));
   }
 
   // TODO(sashab): Wrap these generic Lists somehow.
   List get actions => JS('List', '#.actions', this._jsObject);
 
-  void set actions(List actions) {
+  set actions(List actions) {
     JS('void', '#.actions = #', this._jsObject, convertArgument(actions));
   }
 
   int get priority => JS('int', '#.priority', this._jsObject);
 
-  void set priority(int priority) {
+  set priority(int priority) {
     JS('void', '#.priority = #', this._jsObject, priority);
   }
 
diff --git a/tools/dom/src/dart2js_DOMImplementation.dart b/tools/dom/src/dart2js_DOMImplementation.dart
index dd82ad8..24e6a6c 100644
--- a/tools/dom/src/dart2js_DOMImplementation.dart
+++ b/tools/dom/src/dart2js_DOMImplementation.dart
@@ -83,7 +83,7 @@
   // properly.  Its fields and methods can only be accessed via JavaScript.
   var _location;
 
-  void set href(String val) => _setHref(_location, val);
+  set href(String val) => _setHref(_location, val);
   static void _setHref(location, val) {
     JS('void', '#.href = #', location, val);
   }
diff --git a/tools/dom/src/dartium_KeyEvent.dart b/tools/dom/src/dartium_KeyEvent.dart
index 2d133d3..b93feeb 100644
--- a/tools/dom/src/dartium_KeyEvent.dart
+++ b/tools/dom/src/dartium_KeyEvent.dart
@@ -29,6 +29,13 @@
 
 @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.
+   */
+  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 2f7b8b8..9fa56fd 100644
--- a/tools/dom/src/dartium_WrappedEvent.dart
+++ b/tools/dom/src/dartium_WrappedEvent.dart
@@ -8,6 +8,13 @@
  * Helper class to implement custom events which wrap DOM events.
  */
 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 34c032b..9f74d3e 100644
--- a/tools/dom/src/native_DOMImplementation.dart
+++ b/tools/dom/src/native_DOMImplementation.dart
@@ -187,9 +187,7 @@
     return element;
   }
 
-  // TODO(terry): Enable below for Dartium w/ interop and remove other static window().
-  // static window() => wrap_jso(_blink.Blink_Utils.window()['window']);
-  static window() => _blink.Blink_Utils.window();
+  static window() => wrap_jso(js.context['window']);
 
   static forwardingPrint(String message) => _blink.Blink_Utils.forwardingPrint(message);
   static void spawnDomHelper(Function f, int replyTo) =>
@@ -806,15 +804,19 @@
   static Element createElement(Document document, String tagName) =>
     wrap_jso(_blink.Blink_Utils.createElement(unwrap_jso(document), tagName));
 
-  static void initializeCustomElement(HtmlElement element) =>
-    _blink.Blink_Utils.initializeCustomElement(unwrap_jso(element));
-
   static Element changeElementWrapper(HtmlElement element, Type type) =>
     _blink.Blink_Utils.changeElementWrapper(unwrap_jso(element), type);
 }
 
 class _DOMWindowCrossFrame extends NativeFieldWrapperClass2 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();
 
   // Fields.
@@ -873,7 +875,7 @@
   _LocationCrossFrame.internal();
 
   // Fields.
-  void set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
+  set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
 
   // Implementation support.
   String get typeName => "Location";
@@ -1109,10 +1111,6 @@
   throw new UnimplementedError("scheduleMicrotask in background isolates "
                                "are not supported in the browser"));
 
-void _initializeCustomElement(Element e) {
-  _Utils.initializeCustomElement(e);
-}
-
 // Class for unsupported native browser 'DOM' objects.
 class _UnsupportedBrowserObject extends NativeFieldWrapperClass2 {
 }
diff --git a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
index e12a06c..952f556 100644
--- a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
@@ -34,7 +34,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide Symbol, deprecated;
+import 'dart:_internal' hide Symbol;
 import 'dart:html_common';
 import 'dart:indexed_db';
 import 'dart:isolate';
@@ -52,7 +52,7 @@
 import 'dart:web_sql';
 import 'dart:_js_helper' show
     convertDartClosureToJS, Creates, JavaScriptIndexingBehavior,
-    JSName, Native, Null, Returns, Inline, ForceInline,
+    JSName, Native, Returns, ForceInline,
     findDispatchTagForInterceptorClass, setNativeSubclassDispatchRecord,
     makeLeafDispatchRecord;
 import 'dart:_interceptors' show
diff --git a/tools/dom/templates/html/dart2js/indexed_db_dart2js.darttemplate b/tools/dom/templates/html/dart2js/indexed_db_dart2js.darttemplate
index 43a18e5..128f945 100644
--- a/tools/dom/templates/html/dart2js/indexed_db_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/indexed_db_dart2js.darttemplate
@@ -85,7 +85,7 @@
 import 'dart:html_common';
 import 'dart:_native_typed_data';
 import 'dart:typed_data';
-import 'dart:_js_helper' show Creates, Returns, JSName, Native, Null;
+import 'dart:_js_helper' show Creates, Returns, JSName, Native;
 import 'dart:_foreign_helper' show JS;
 import 'dart:_interceptors' show Interceptor, JSExtendableArray;
 
diff --git a/tools/dom/templates/html/dart2js/svg_dart2js.darttemplate b/tools/dom/templates/html/dart2js/svg_dart2js.darttemplate
index 7fc18ae..f36b929 100644
--- a/tools/dom/templates/html/dart2js/svg_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/svg_dart2js.darttemplate
@@ -14,7 +14,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_js_helper' show Creates, Returns, JSName, Native;
diff --git a/tools/dom/templates/html/dart2js/web_audio_dart2js.darttemplate b/tools/dom/templates/html/dart2js/web_audio_dart2js.darttemplate
index 5aef22c..2959405 100644
--- a/tools/dom/templates/html/dart2js/web_audio_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/web_audio_dart2js.darttemplate
@@ -9,7 +9,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_native_typed_data';
diff --git a/tools/dom/templates/html/dart2js/web_gl_dart2js.darttemplate b/tools/dom/templates/html/dart2js/web_gl_dart2js.darttemplate
index 107c1f6..c6d31c0 100644
--- a/tools/dom/templates/html/dart2js/web_gl_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/web_gl_dart2js.darttemplate
@@ -8,12 +8,12 @@
 library dart.dom.web_gl;
 
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_native_typed_data';
 import 'dart:typed_data';
-import 'dart:_js_helper' show Creates, JSName, Native, Null, Returns, convertDartClosureToJS;
+import 'dart:_js_helper' show Creates, JSName, Native, Returns, convertDartClosureToJS;
 import 'dart:_foreign_helper' show JS;
 import 'dart:_interceptors' show Interceptor, JSExtendableArray;
 
diff --git a/tools/dom/templates/html/dart2js/web_sql_dart2js.darttemplate b/tools/dom/templates/html/dart2js/web_sql_dart2js.darttemplate
index 4555e4d..2de24a0 100644
--- a/tools/dom/templates/html/dart2js/web_sql_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/web_sql_dart2js.darttemplate
@@ -16,7 +16,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:_js_helper' show convertDartClosureToJS, Creates, JSName, Native;
diff --git a/tools/dom/templates/html/dartium/html_dartium.darttemplate b/tools/dom/templates/html/dartium/html_dartium.darttemplate
index c6a200f..b15dab2 100644
--- a/tools/dom/templates/html/dartium/html_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/html_dartium.darttemplate
@@ -33,7 +33,7 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide Symbol, deprecated;
+import 'dart:_internal' hide Symbol;
 import 'dart:html_common';
 import 'dart:indexed_db';
 import 'dart:indexed_db' show indexed_dbBlinkMap;
@@ -250,7 +250,6 @@
   return null;
 }
 
-
 $if JSINTEROP
 // FIXME: Can we make this private?
 final htmlBlinkFunctionMap = {
@@ -303,42 +302,42 @@
   return null;
 }
 
-Type _getHtmlFunction(String key) {
+Function _getHtmlFunction(String key) {
   if (htmlBlinkFunctionMap.containsKey(key)) {
     return htmlBlinkFunctionMap[key]();
   }
   return null;
 }
 
-Type _getWebGlFunction(String key) {
+Function _getWebGlFunction(String key) {
   if (web_glBlinkFunctionMap.containsKey(key)) {
     return web_glBlinkFunctionMap[key]();
   }
   return null;
 }
 
-Type _getIndexDbFunction(String key) {
+Function _getIndexDbFunction(String key) {
   if (indexed_dbBlinkFunctionMap.containsKey(key)) {
     return indexed_dbBlinkFunctionMap[key]();
   }
   return null;
 }
 
-Type _getWebAudioFunction(String key) {
+Function _getWebAudioFunction(String key) {
   if (web_audioBlinkFunctionMap.containsKey(key)) {
     return web_audioBlinkFunctionMap[key]();
   }
   return null;
 }
 
-Type _getWebSqlFunction(String key) {
+Function _getWebSqlFunction(String key) {
   if (web_sqlBlinkFunctionMap.containsKey(key)) {
     return web_sqlBlinkFunctionMap[key]();
   }
   return null;
 }
 
-Type _getSvgFunction(String key) {
+Function _getSvgFunction(String key) {
   if (svgBlinkFunctionMap.containsKey(key)) {
     return svgBlinkFunctionMap[key]();
   }
@@ -352,8 +351,17 @@
  **********                                                          **********
  ******************************************************************************/
 
-Rectangle make_dart_rectangle(r) => new Rectangle(r['top'], r['left'], r['width'], r['height']);
+Rectangle make_dart_rectangle(r) =>
+    r == null ? null : new Rectangle(r['left'], r['top'], r['width'], r['height']);
 
+// Need a default constructor for constructing classes with mixins that are
+// also extending NativeFieldWrapperClass2.  Defining JsoNativeFieldWrapper
+// extending NativeFieldWrapperClass2 creates a default constructor.
+class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {}
+
+// Flag to disable JS interop asserts.  Setting to false will speed up the
+// wrap_jso calls.
+bool __interop_checks = true;
 
 /** Expando for JsObject, used by every Dart class associated with a Javascript
  *  class (e.g., DOM, WebAudio, etc.).
@@ -362,47 +370,108 @@
 /**
  * Return the JsObject associated with a Dart class [dartClass_instance].
  */
-js.JsObject unwrap_jso(dartClass_instance) {
+unwrap_jso(dartClass_instance) {
   try {
-      if (dartClass_instance != null)
-          return dartClass_instance is! Function ? dartClass_instance.blink_jsObject : dartClass_instance;
-      else
-          return null;
-//      return dartClass_instance.dartium_expando[dartClass_instance.expandoJsObject];
+    if (dartClass_instance != null)
+      return dartClass_instance is NativeFieldWrapperClass2 ?
+          dartClass_instance.blink_jsObject : dartClass_instance;
+    else
+      return null;
   } catch(NoSuchMethodException) {
-      // No blink_jsObject then return the dartClass_instance is probably an
-      // array that was already converted to a Dart class e.g., Uint8ClampedList.
-      return dartClass_instance;
+    // No blink_jsObject then return the dartClass_instance is probably an
+    // array that was already converted to a Dart class e.g., Uint8ClampedList.
+    return dartClass_instance;
   }
 }
 
 /**
  * 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. 
+ * on the Dart class and return the created Dart class.
  */
 wrap_jso(jsObject) {
-try {
-//  debug_or_assert("jsObject != null", jsObject != null);
-  if (jsObject is! js.JsObject) {
+  try {
+    if (jsObject is! js.JsObject) {
       // JS Interop converted the object to a Dart class e.g., Uint8ClampedList.
       return jsObject;
+    }
+    // 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;
+    }
+    var constructor = jsObject['constructor'];
+    if (__interop_checks) {
+      debug_or_assert("constructor != null", constructor != null);
+    }
+    var jsTypeName = constructor['name'];
+    if (__interop_checks) {
+      debug_or_assert("constructor != null && jsTypeName.length > 0", constructor != null && jsTypeName.length > 0);
+    }
+
+    var dartClass_instance;
+    if (jsObject.hasProperty('dart_class')) {
+      // Got a dart_class (it's a custom element) use it it's already set up.
+      dartClass_instance = jsObject['dart_class'];
+    } else {
+      var func = getHtmlCreateFunction(jsTypeName);
+      if (func != null) {
+        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}");
+    }
   }
-  var constructor = jsObject['constructor'];
-  debug_or_assert("constructor != null", constructor != null);
-  var jsTypeName = constructor['name'];
-  debug_or_assert("constructor != null && jsTypeName.length > 0", constructor != null && jsTypeName.length > 0);
-  var func = getHtmlCreateFunction(jsTypeName);
-  debug_or_assert("func != null name = ${jsTypeName}", func != null);
-  var dartClass_instance = func();
-  dartClass_instance.blink_jsObject = jsObject;
-//  dartClass_instance.dartium_expando[dartClass_instance.expandoJsObject] = jsObject;
-  return dartClass_instance;
-} catch(e, stacktrace){
-  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;
+  }
 }
 
 class DebugAssertException implements Exception {
@@ -416,20 +485,67 @@
   }
 }
 
-// Wrap JsObject node list to return a List<node>.
-List<Node> wrap_jso_list(jso_nodes) {
-  List<Node> nodes = new List<Node>();
-  var collectionLen = jso_nodes['length'];
-  for (var i = 0; i < collectionLen; i++) {
-    nodes.add(wrap_jso(jso_nodes.callMethod('item', [i])));
-  }
-  var frozen_nodes = new _FrozenElementList._wrap(nodes);
-  frozen_nodes.dartClass_instance = jso_nodes;
-  return frozen_nodes;
+// TODO(terry): Manage JS interop JsFunctions for each listener used for add/
+//              removeEventListener.  These JsFunctions will leak look at
+//              fixing with weak-refs in C++.  The key are the hashcodes of the
+//              user's this (this is needed for futures) and listener function.
+Map<int, Map<int, js.JsFunction>> _knownListeners = {};
+
+js.JsFunction wrap_event_listener(theObject, Function listener) {
+  var thisHashCode = theObject.hashCode;
+  var listenerHashCode = identityHashCode(listener);
+
+  _knownListeners.putIfAbsent(thisHashCode, () => new Map<int, js.JsFunction>());
+  _knownListeners[thisHashCode].putIfAbsent(listenerHashCode, () =>
+    new js.JsFunction.withThis((theObject, event) => listener(wrap_jso(event))));
+
+  return _knownListeners[thisHashCode][listenerHashCode];
 }
+
+Map<String, dynamic> convertNativeObjectToDartMap(js.JsObject jsObject) {
+  var result = new Map();
+  var keys = js.context['Object'].callMethod('keys', [jsObject]);
+  for (var key in keys) {
+    result[key] = wrap_jso(jsObject[key]);
+  }
+  return result;
+}
+
+// Converts a flat Dart map into a JavaScript object with properties this is
+// is the Dartium only version it uses dart:js.
+// TODO(alanknight): This could probably be unified with the dart2js conversions
+// code in html_common and be more general.
+convertDartToNative_Dictionary(Map dict) {
+  if (dict == null) return null;
+  var jsObject = new js.JsObject(js.context['Object']);
+  dict.forEach((String key, value) {
+    if (value is List) {
+      var jsArray = new js.JsArray();
+      value.forEach((elem) {
+        jsArray.add(elem is Map ? convertDartToNative_Dictionary(elem): elem);
+      });
+      jsObject[key] = jsArray;
+    } else {
+      jsObject[key] = value;
+    }
+  });
+  return jsObject;
+}
+
+// Converts a Dart list into a JsArray. For the Dartium version only.
+convertDartToNative_List(List input) => new js.JsArray()..addAll(input);
+
+// Conversion function place holder (currently not used in dart2js or dartium).
+List convertDartToNative_StringArray(List<String> input) => input;
+
 $else
+class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {}
+
 unwrap_jso(dartClass_instance) => dartClass_instance;
 wrap_jso(jsObject) => jsObject;
-wrap_jso_list(jso_nodes) => jso_nodes;
 make_dart_rectangle(r) => r;
+convertDartToNative_Dictionary(Map dict) => dict;
+List convertDartToNative_StringArray(List<String> input) => input;
+convertDartToNative_List(List input) => input;
+
 $endif
diff --git a/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate b/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate
index 62dd7e9..9804405 100644
--- a/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/indexed_db_dartium.darttemplate
@@ -69,7 +69,7 @@
  * and where both the keys and the values are strings.
  *
  * * [dart:web_sql]&mdash;a database that can be queried with SQL.
- * 
+ *
  * For a tutorial about using the indexed_db library with Dart,
  * check out
  * [Use IndexedDB](http://www.dartlang.org/docs/tutorials/indexeddb/).
@@ -84,6 +84,7 @@
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 
 $!GENERATED_DART_FILES
 
diff --git a/tools/dom/templates/html/dartium/svg_dartium.darttemplate b/tools/dom/templates/html/dartium/svg_dartium.darttemplate
index 6dff8b6..07de26b 100644
--- a/tools/dom/templates/html/dartium/svg_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/svg_dartium.darttemplate
@@ -13,14 +13,20 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 
 part '$AUXILIARY_DIR/shared_SVGFactoryProviders.dart';
 
+// Need a default constructor for constructing classes with mixins that are
+// also extending NativeFieldWrapperClass2.  Defining JsoNativeFieldWrapper
+// extending NativeFieldWrapperClass2 creates a default constructor.
+class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {}
+
 $!GENERATED_DART_FILES
 // FIXME: Can we make this private?
 final svgBlinkMap = {
diff --git a/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate b/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate
index c79c9d4..15204d6 100644
--- a/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/web_audio_dartium.darttemplate
@@ -8,12 +8,13 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:typed_data';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 
 $!GENERATED_DART_FILES
 // FIXME: Can we make this private?
diff --git a/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate b/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate
index 5f12a23..56eee6e 100644
--- a/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/web_gl_dartium.darttemplate
@@ -8,12 +8,13 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:typed_data';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
 
 part '$AUXILIARY_DIR/WebGLConstants.dart';
 
diff --git a/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate b/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate
index 9823042..7c2ffbd 100644
--- a/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/web_sql_dartium.darttemplate
@@ -1,3 +1,4 @@
+
 // DO NOT EDIT - unless you are editing documentation as per:
 // https://code.google.com/p/dart/wiki/ContributingHTMLDocumentation
 // Auto-generated dart:audio library.
@@ -16,11 +17,17 @@
 
 import 'dart:async';
 import 'dart:collection';
-import 'dart:_internal' hide deprecated;
+import 'dart:_internal';
 import 'dart:html';
 import 'dart:html_common';
 import 'dart:nativewrappers';
 import 'dart:_blink' as _blink;
+import 'dart:js' as js;
+
+// Need a default constructor for constructing classes with mixins that are
+// also extending NativeFieldWrapperClass2.  Defining JsoNativeFieldWrapper
+// extending NativeFieldWrapperClass2 creates a default constructor.
+class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {}
 
 $!GENERATED_DART_FILES
 // FIXME: Can we make this private?
diff --git a/tools/dom/templates/html/impl/impl_Blob.darttemplate b/tools/dom/templates/html/impl/impl_Blob.darttemplate
index 3542811..0b12452 100644
--- a/tools/dom/templates/html/impl/impl_Blob.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Blob.darttemplate
@@ -25,5 +25,22 @@
 
   static _create_bag() => JS('var', '{}');
   static _bag_set(bag, key, value) { JS('void', '#[#] = #', bag, key, value); }
+$else
+  $if JSINTEROP
+  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());
+    if (type == null && endings == null) {
+      return wrap_jso(_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)));
+  }
+  $endif
 $endif
 }
diff --git a/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate b/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
index 12caf8c..7cb4628 100644
--- a/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
+++ b/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate
@@ -11,18 +11,8 @@
 
 part of $LIBRARYNAME;
 
-$if DART2JS
 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME $EXTENDS with
     $(CLASSNAME)Base $IMPLEMENTS {
-$else
-  $if JSINTEROP
-$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS) class $CLASSNAME extends
-    $(CLASSNAME)Base $IMPLEMENTS {
-  $else
-$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME $EXTENDS with
-    $(CLASSNAME)Base $IMPLEMENTS {
-  $endif
-$endif
   factory $CLASSNAME() => new CssStyleDeclaration.css('');
 
   factory $CLASSNAME.css(String css) {
@@ -157,7 +147,7 @@
   String get background => this._background;
 
   /** Sets the value of "background" */
-  void set background(String value) {
+  set background(String value) {
     _background = value == null ? '' : value;
   }
   @Returns('String')
@@ -168,7 +158,7 @@
   String get backgroundAttachment => this._backgroundAttachment;
 
   /** Sets the value of "background-attachment" */
-  void set backgroundAttachment(String value) {
+  set backgroundAttachment(String value) {
     _backgroundAttachment = value == null ? '' : value;
   }
   @Returns('String')
@@ -179,7 +169,7 @@
   String get backgroundColor => this._backgroundColor;
 
   /** Sets the value of "background-color" */
-  void set backgroundColor(String value) {
+  set backgroundColor(String value) {
     _backgroundColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -190,7 +180,7 @@
   String get backgroundImage => this._backgroundImage;
 
   /** Sets the value of "background-image" */
-  void set backgroundImage(String value) {
+  set backgroundImage(String value) {
     _backgroundImage = value == null ? '' : value;
   }
   @Returns('String')
@@ -201,7 +191,7 @@
   String get backgroundPosition => this._backgroundPosition;
 
   /** Sets the value of "background-position" */
-  void set backgroundPosition(String value) {
+  set backgroundPosition(String value) {
     _backgroundPosition = value == null ? '' : value;
   }
   @Returns('String')
@@ -212,7 +202,7 @@
   String get backgroundRepeat => this._backgroundRepeat;
 
   /** Sets the value of "background-repeat" */
-  void set backgroundRepeat(String value) {
+  set backgroundRepeat(String value) {
     _backgroundRepeat = value == null ? '' : value;
   }
   @Returns('String')
@@ -223,7 +213,7 @@
   String get border => this._border;
 
   /** Sets the value of "border" */
-  void set border(String value) {
+  set border(String value) {
     _border = value == null ? '' : value;
   }
   @Returns('String')
@@ -234,7 +224,7 @@
   String get borderBottom => this._borderBottom;
 
   /** Sets the value of "border-bottom" */
-  void set borderBottom(String value) {
+  set borderBottom(String value) {
     _borderBottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -245,7 +235,7 @@
   String get borderBottomColor => this._borderBottomColor;
 
   /** Sets the value of "border-bottom-color" */
-  void set borderBottomColor(String value) {
+  set borderBottomColor(String value) {
     _borderBottomColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -256,7 +246,7 @@
   String get borderBottomStyle => this._borderBottomStyle;
 
   /** Sets the value of "border-bottom-style" */
-  void set borderBottomStyle(String value) {
+  set borderBottomStyle(String value) {
     _borderBottomStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -267,7 +257,7 @@
   String get borderBottomWidth => this._borderBottomWidth;
 
   /** Sets the value of "border-bottom-width" */
-  void set borderBottomWidth(String value) {
+  set borderBottomWidth(String value) {
     _borderBottomWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -278,7 +268,7 @@
   String get borderCollapse => this._borderCollapse;
 
   /** Sets the value of "border-collapse" */
-  void set borderCollapse(String value) {
+  set borderCollapse(String value) {
     _borderCollapse = value == null ? '' : value;
   }
   @Returns('String')
@@ -289,7 +279,7 @@
   String get borderColor => this._borderColor;
 
   /** Sets the value of "border-color" */
-  void set borderColor(String value) {
+  set borderColor(String value) {
     _borderColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -300,7 +290,7 @@
   String get borderLeft => this._borderLeft;
 
   /** Sets the value of "border-left" */
-  void set borderLeft(String value) {
+  set borderLeft(String value) {
     _borderLeft = value == null ? '' : value;
   }
   @Returns('String')
@@ -311,7 +301,7 @@
   String get borderLeftColor => this._borderLeftColor;
 
   /** Sets the value of "border-left-color" */
-  void set borderLeftColor(String value) {
+  set borderLeftColor(String value) {
     _borderLeftColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -322,7 +312,7 @@
   String get borderLeftStyle => this._borderLeftStyle;
 
   /** Sets the value of "border-left-style" */
-  void set borderLeftStyle(String value) {
+  set borderLeftStyle(String value) {
     _borderLeftStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -333,7 +323,7 @@
   String get borderLeftWidth => this._borderLeftWidth;
 
   /** Sets the value of "border-left-width" */
-  void set borderLeftWidth(String value) {
+  set borderLeftWidth(String value) {
     _borderLeftWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -344,7 +334,7 @@
   String get borderRight => this._borderRight;
 
   /** Sets the value of "border-right" */
-  void set borderRight(String value) {
+  set borderRight(String value) {
     _borderRight = value == null ? '' : value;
   }
   @Returns('String')
@@ -355,7 +345,7 @@
   String get borderRightColor => this._borderRightColor;
 
   /** Sets the value of "border-right-color" */
-  void set borderRightColor(String value) {
+  set borderRightColor(String value) {
     _borderRightColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -366,7 +356,7 @@
   String get borderRightStyle => this._borderRightStyle;
 
   /** Sets the value of "border-right-style" */
-  void set borderRightStyle(String value) {
+  set borderRightStyle(String value) {
     _borderRightStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -377,7 +367,7 @@
   String get borderRightWidth => this._borderRightWidth;
 
   /** Sets the value of "border-right-width" */
-  void set borderRightWidth(String value) {
+  set borderRightWidth(String value) {
     _borderRightWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -388,7 +378,7 @@
   String get borderSpacing => this._borderSpacing;
 
   /** Sets the value of "border-spacing" */
-  void set borderSpacing(String value) {
+  set borderSpacing(String value) {
     _borderSpacing = value == null ? '' : value;
   }
   @Returns('String')
@@ -399,7 +389,7 @@
   String get borderStyle => this._borderStyle;
 
   /** Sets the value of "border-style" */
-  void set borderStyle(String value) {
+  set borderStyle(String value) {
     _borderStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -410,7 +400,7 @@
   String get borderTop => this._borderTop;
 
   /** Sets the value of "border-top" */
-  void set borderTop(String value) {
+  set borderTop(String value) {
     _borderTop = value == null ? '' : value;
   }
   @Returns('String')
@@ -421,7 +411,7 @@
   String get borderTopColor => this._borderTopColor;
 
   /** Sets the value of "border-top-color" */
-  void set borderTopColor(String value) {
+  set borderTopColor(String value) {
     _borderTopColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -432,7 +422,7 @@
   String get borderTopStyle => this._borderTopStyle;
 
   /** Sets the value of "border-top-style" */
-  void set borderTopStyle(String value) {
+  set borderTopStyle(String value) {
     _borderTopStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -443,7 +433,7 @@
   String get borderTopWidth => this._borderTopWidth;
 
   /** Sets the value of "border-top-width" */
-  void set borderTopWidth(String value) {
+  set borderTopWidth(String value) {
     _borderTopWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -454,7 +444,7 @@
   String get borderWidth => this._borderWidth;
 
   /** Sets the value of "border-width" */
-  void set borderWidth(String value) {
+  set borderWidth(String value) {
     _borderWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -465,7 +455,7 @@
   String get bottom => this._bottom;
 
   /** Sets the value of "bottom" */
-  void set bottom(String value) {
+  set bottom(String value) {
     _bottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -476,7 +466,7 @@
   String get captionSide => this._captionSide;
 
   /** Sets the value of "caption-side" */
-  void set captionSide(String value) {
+  set captionSide(String value) {
     _captionSide = value == null ? '' : value;
   }
   @Returns('String')
@@ -487,7 +477,7 @@
   String get clear => this._clear;
 
   /** Sets the value of "clear" */
-  void set clear(String value) {
+  set clear(String value) {
     _clear = value == null ? '' : value;
   }
   @Returns('String')
@@ -498,7 +488,7 @@
   String get clip => this._clip;
 
   /** Sets the value of "clip" */
-  void set clip(String value) {
+  set clip(String value) {
     _clip = value == null ? '' : value;
   }
   @Returns('String')
@@ -509,7 +499,7 @@
   String get color => this._color;
 
   /** Sets the value of "color" */
-  void set color(String value) {
+  set color(String value) {
     _color = value == null ? '' : value;
   }
   @Returns('String')
@@ -520,7 +510,7 @@
   String get content => this._content;
 
   /** Sets the value of "content" */
-  void set content(String value) {
+  set content(String value) {
     _content = value == null ? '' : value;
   }
   @Returns('String')
@@ -531,7 +521,7 @@
   String get cursor => this._cursor;
 
   /** Sets the value of "cursor" */
-  void set cursor(String value) {
+  set cursor(String value) {
     _cursor = value == null ? '' : value;
   }
   @Returns('String')
@@ -542,7 +532,7 @@
   String get direction => this._direction;
 
   /** Sets the value of "direction" */
-  void set direction(String value) {
+  set direction(String value) {
     _direction = value == null ? '' : value;
   }
   @Returns('String')
@@ -553,7 +543,7 @@
   String get display => this._display;
 
   /** Sets the value of "display" */
-  void set display(String value) {
+  set display(String value) {
     _display = value == null ? '' : value;
   }
   @Returns('String')
@@ -564,7 +554,7 @@
   String get emptyCells => this._emptyCells;
 
   /** Sets the value of "empty-cells" */
-  void set emptyCells(String value) {
+  set emptyCells(String value) {
     _emptyCells = value == null ? '' : value;
   }
   @Returns('String')
@@ -575,7 +565,7 @@
   String get font => this._font;
 
   /** Sets the value of "font" */
-  void set font(String value) {
+  set font(String value) {
     _font = value == null ? '' : value;
   }
   @Returns('String')
@@ -586,7 +576,7 @@
   String get fontFamily => this._fontFamily;
 
   /** Sets the value of "font-family" */
-  void set fontFamily(String value) {
+  set fontFamily(String value) {
     _fontFamily = value == null ? '' : value;
   }
   @Returns('String')
@@ -597,7 +587,7 @@
   String get fontSize => this._fontSize;
 
   /** Sets the value of "font-size" */
-  void set fontSize(String value) {
+  set fontSize(String value) {
     _fontSize = value == null ? '' : value;
   }
   @Returns('String')
@@ -608,7 +598,7 @@
   String get fontStyle => this._fontStyle;
 
   /** Sets the value of "font-style" */
-  void set fontStyle(String value) {
+  set fontStyle(String value) {
     _fontStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -619,7 +609,7 @@
   String get fontVariant => this._fontVariant;
 
   /** Sets the value of "font-variant" */
-  void set fontVariant(String value) {
+  set fontVariant(String value) {
     _fontVariant = value == null ? '' : value;
   }
   @Returns('String')
@@ -630,7 +620,7 @@
   String get fontWeight => this._fontWeight;
 
   /** Sets the value of "font-weight" */
-  void set fontWeight(String value) {
+  set fontWeight(String value) {
     _fontWeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -641,7 +631,7 @@
   String get height => this._height;
 
   /** Sets the value of "height" */
-  void set height(String value) {
+  set height(String value) {
     _height = value == null ? '' : value;
   }
   @Returns('String')
@@ -652,7 +642,7 @@
   String get left => this._left;
 
   /** Sets the value of "left" */
-  void set left(String value) {
+  set left(String value) {
     _left = value == null ? '' : value;
   }
   @Returns('String')
@@ -663,7 +653,7 @@
   String get letterSpacing => this._letterSpacing;
 
   /** Sets the value of "letter-spacing" */
-  void set letterSpacing(String value) {
+  set letterSpacing(String value) {
     _letterSpacing = value == null ? '' : value;
   }
   @Returns('String')
@@ -674,7 +664,7 @@
   String get lineHeight => this._lineHeight;
 
   /** Sets the value of "line-height" */
-  void set lineHeight(String value) {
+  set lineHeight(String value) {
     _lineHeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -685,7 +675,7 @@
   String get listStyle => this._listStyle;
 
   /** Sets the value of "list-style" */
-  void set listStyle(String value) {
+  set listStyle(String value) {
     _listStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -696,7 +686,7 @@
   String get listStyleImage => this._listStyleImage;
 
   /** Sets the value of "list-style-image" */
-  void set listStyleImage(String value) {
+  set listStyleImage(String value) {
     _listStyleImage = value == null ? '' : value;
   }
   @Returns('String')
@@ -707,7 +697,7 @@
   String get listStylePosition => this._listStylePosition;
 
   /** Sets the value of "list-style-position" */
-  void set listStylePosition(String value) {
+  set listStylePosition(String value) {
     _listStylePosition = value == null ? '' : value;
   }
   @Returns('String')
@@ -718,7 +708,7 @@
   String get listStyleType => this._listStyleType;
 
   /** Sets the value of "list-style-type" */
-  void set listStyleType(String value) {
+  set listStyleType(String value) {
     _listStyleType = value == null ? '' : value;
   }
   @Returns('String')
@@ -729,7 +719,7 @@
   String get margin => this._margin;
 
   /** Sets the value of "margin" */
-  void set margin(String value) {
+  set margin(String value) {
     _margin = value == null ? '' : value;
   }
   @Returns('String')
@@ -740,7 +730,7 @@
   String get marginBottom => this._marginBottom;
 
   /** Sets the value of "margin-bottom" */
-  void set marginBottom(String value) {
+  set marginBottom(String value) {
     _marginBottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -751,7 +741,7 @@
   String get marginLeft => this._marginLeft;
 
   /** Sets the value of "margin-left" */
-  void set marginLeft(String value) {
+  set marginLeft(String value) {
     _marginLeft = value == null ? '' : value;
   }
   @Returns('String')
@@ -762,7 +752,7 @@
   String get marginRight => this._marginRight;
 
   /** Sets the value of "margin-right" */
-  void set marginRight(String value) {
+  set marginRight(String value) {
     _marginRight = value == null ? '' : value;
   }
   @Returns('String')
@@ -773,7 +763,7 @@
   String get marginTop => this._marginTop;
 
   /** Sets the value of "margin-top" */
-  void set marginTop(String value) {
+  set marginTop(String value) {
     _marginTop = value == null ? '' : value;
   }
   @Returns('String')
@@ -784,7 +774,7 @@
   String get maxHeight => this._maxHeight;
 
   /** Sets the value of "max-height" */
-  void set maxHeight(String value) {
+  set maxHeight(String value) {
     _maxHeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -795,7 +785,7 @@
   String get maxWidth => this._maxWidth;
 
   /** Sets the value of "max-width" */
-  void set maxWidth(String value) {
+  set maxWidth(String value) {
     _maxWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -806,7 +796,7 @@
   String get minHeight => this._minHeight;
 
   /** Sets the value of "min-height" */
-  void set minHeight(String value) {
+  set minHeight(String value) {
     _minHeight = value == null ? '' : value;
   }
   @Returns('String')
@@ -817,7 +807,7 @@
   String get minWidth => this._minWidth;
 
   /** Sets the value of "min-width" */
-  void set minWidth(String value) {
+  set minWidth(String value) {
     _minWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -828,7 +818,7 @@
   String get outline => this._outline;
 
   /** Sets the value of "outline" */
-  void set outline(String value) {
+  set outline(String value) {
     _outline = value == null ? '' : value;
   }
   @Returns('String')
@@ -839,7 +829,7 @@
   String get outlineColor => this._outlineColor;
 
   /** Sets the value of "outline-color" */
-  void set outlineColor(String value) {
+  set outlineColor(String value) {
     _outlineColor = value == null ? '' : value;
   }
   @Returns('String')
@@ -850,7 +840,7 @@
   String get outlineStyle => this._outlineStyle;
 
   /** Sets the value of "outline-style" */
-  void set outlineStyle(String value) {
+  set outlineStyle(String value) {
     _outlineStyle = value == null ? '' : value;
   }
   @Returns('String')
@@ -861,7 +851,7 @@
   String get outlineWidth => this._outlineWidth;
 
   /** Sets the value of "outline-width" */
-  void set outlineWidth(String value) {
+  set outlineWidth(String value) {
     _outlineWidth = value == null ? '' : value;
   }
   @Returns('String')
@@ -872,7 +862,7 @@
   String get overflow => this._overflow;
 
   /** Sets the value of "overflow" */
-  void set overflow(String value) {
+  set overflow(String value) {
     _overflow = value == null ? '' : value;
   }
   @Returns('String')
@@ -883,7 +873,7 @@
   String get padding => this._padding;
 
   /** Sets the value of "padding" */
-  void set padding(String value) {
+  set padding(String value) {
     _padding = value == null ? '' : value;
   }
   @Returns('String')
@@ -894,7 +884,7 @@
   String get paddingBottom => this._paddingBottom;
 
   /** Sets the value of "padding-bottom" */
-  void set paddingBottom(String value) {
+  set paddingBottom(String value) {
     _paddingBottom = value == null ? '' : value;
   }
   @Returns('String')
@@ -905,7 +895,7 @@
   String get paddingLeft => this._paddingLeft;
 
   /** Sets the value of "padding-left" */
-  void set paddingLeft(String value) {
+  set paddingLeft(String value) {
     _paddingLeft = value == null ? '' : value;
   }
   @Returns('String')
@@ -916,7 +906,7 @@
   String get paddingRight => this._paddingRight;
 
   /** Sets the value of "padding-right" */
-  void set paddingRight(String value) {
+  set paddingRight(String value) {
     _paddingRight = value == null ? '' : value;
   }
   @Returns('String')
@@ -927,7 +917,7 @@
   String get paddingTop => this._paddingTop;
 
   /** Sets the value of "padding-top" */
-  void set paddingTop(String value) {
+  set paddingTop(String value) {
     _paddingTop = value == null ? '' : value;
   }
   @Returns('String')
@@ -938,7 +928,7 @@
   String get pageBreakAfter => this._pageBreakAfter;
 
   /** Sets the value of "page-break-after" */
-  void set pageBreakAfter(String value) {
+  set pageBreakAfter(String value) {
     _pageBreakAfter = value == null ? '' : value;
   }
   @Returns('String')
@@ -949,7 +939,7 @@
   String get pageBreakBefore => this._pageBreakBefore;
 
   /** Sets the value of "page-break-before" */
-  void set pageBreakBefore(String value) {
+  set pageBreakBefore(String value) {
     _pageBreakBefore = value == null ? '' : value;
   }
   @Returns('String')
@@ -960,7 +950,7 @@
   String get pageBreakInside => this._pageBreakInside;
 
   /** Sets the value of "page-break-inside" */
-  void set pageBreakInside(String value) {
+  set pageBreakInside(String value) {
     _pageBreakInside = value == null ? '' : value;
   }
   @Returns('String')
@@ -971,7 +961,7 @@
   String get position => this._position;
 
   /** Sets the value of "position" */
-  void set position(String value) {
+  set position(String value) {
     _position = value == null ? '' : value;
   }
   @Returns('String')
@@ -982,7 +972,7 @@
   String get quotes => this._quotes;
 
   /** Sets the value of "quotes" */
-  void set quotes(String value) {
+  set quotes(String value) {
     _quotes = value == null ? '' : value;
   }
   @Returns('String')
@@ -993,7 +983,7 @@
   String get right => this._right;
 
   /** Sets the value of "right" */
-  void set right(String value) {
+  set right(String value) {
     _right = value == null ? '' : value;
   }
   @Returns('String')
@@ -1004,7 +994,7 @@
   String get tableLayout => this._tableLayout;
 
   /** Sets the value of "table-layout" */
-  void set tableLayout(String value) {
+  set tableLayout(String value) {
     _tableLayout = value == null ? '' : value;
   }
   @Returns('String')
@@ -1015,7 +1005,7 @@
   String get textAlign => this._textAlign;
 
   /** Sets the value of "text-align" */
-  void set textAlign(String value) {
+  set textAlign(String value) {
     _textAlign = value == null ? '' : value;
   }
   @Returns('String')
@@ -1026,7 +1016,7 @@
   String get textDecoration => this._textDecoration;
 
   /** Sets the value of "text-decoration" */
-  void set textDecoration(String value) {
+  set textDecoration(String value) {
     _textDecoration = value == null ? '' : value;
   }
   @Returns('String')
@@ -1037,7 +1027,7 @@
   String get textIndent => this._textIndent;
 
   /** Sets the value of "text-indent" */
-  void set textIndent(String value) {
+  set textIndent(String value) {
     _textIndent = value == null ? '' : value;
   }
   @Returns('String')
@@ -1048,7 +1038,7 @@
   String get textTransform => this._textTransform;
 
   /** Sets the value of "text-transform" */
-  void set textTransform(String value) {
+  set textTransform(String value) {
     _textTransform = value == null ? '' : value;
   }
   @Returns('String')
@@ -1059,7 +1049,7 @@
   String get top => this._top;
 
   /** Sets the value of "top" */
-  void set top(String value) {
+  set top(String value) {
     _top = value == null ? '' : value;
   }
   @Returns('String')
@@ -1070,7 +1060,7 @@
   String get unicodeBidi => this._unicodeBidi;
 
   /** Sets the value of "unicode-bidi" */
-  void set unicodeBidi(String value) {
+  set unicodeBidi(String value) {
     _unicodeBidi = value == null ? '' : value;
   }
   @Returns('String')
@@ -1081,7 +1071,7 @@
   String get verticalAlign => this._verticalAlign;
 
   /** Sets the value of "vertical-align" */
-  void set verticalAlign(String value) {
+  set verticalAlign(String value) {
     _verticalAlign = value == null ? '' : value;
   }
   @Returns('String')
@@ -1092,7 +1082,7 @@
   String get visibility => this._visibility;
 
   /** Sets the value of "visibility" */
-  void set visibility(String value) {
+  set visibility(String value) {
     _visibility = value == null ? '' : value;
   }
   @Returns('String')
@@ -1103,7 +1093,7 @@
   String get whiteSpace => this._whiteSpace;
 
   /** Sets the value of "white-space" */
-  void set whiteSpace(String value) {
+  set whiteSpace(String value) {
     _whiteSpace = value == null ? '' : value;
   }
   @Returns('String')
@@ -1114,7 +1104,7 @@
   String get width => this._width;
 
   /** Sets the value of "width" */
-  void set width(String value) {
+  set width(String value) {
     _width = value == null ? '' : value;
   }
   @Returns('String')
@@ -1125,7 +1115,7 @@
   String get wordSpacing => this._wordSpacing;
 
   /** Sets the value of "word-spacing" */
-  void set wordSpacing(String value) {
+  set wordSpacing(String value) {
     _wordSpacing = value == null ? '' : value;
   }
   @Returns('String')
@@ -1136,7 +1126,7 @@
   String get zIndex => this._zIndex;
 
   /** Sets the value of "z-index" */
-  void set zIndex(String value) {
+  set zIndex(String value) {
     _zIndex = value == null ? '' : value;
   }
   @Returns('String')
@@ -1146,15 +1136,7 @@
 $endif
 }
 
-$if DART2JS
 class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase {
-$else
-  $if JSINTEROP
-class _CssStyleDeclarationSet extends CssStyleDeclarationBase {
-  $else
-class _CssStyleDeclarationSet extends Object with CssStyleDeclarationBase {
-  $endif
-$endif
   final Iterable<Element> _elementIterable;
   Iterable<CssStyleDeclaration> _elementCssStyleDeclarationSetIterable;
 
@@ -1182,452 +1164,452 @@
   }
 
   /** Sets the value of "background" */
-  void set background(String value) {
+  set background(String value) {
     _setAll('background', value);
   }
     
   /** Sets the value of "background-attachment" */
-  void set backgroundAttachment(String value) {
+  set backgroundAttachment(String value) {
     _setAll('backgroundAttachment', value);
   }
     
   /** Sets the value of "background-color" */
-  void set backgroundColor(String value) {
+  set backgroundColor(String value) {
     _setAll('backgroundColor', value);
   }
     
   /** Sets the value of "background-image" */
-  void set backgroundImage(String value) {
+  set backgroundImage(String value) {
     _setAll('backgroundImage', value);
   }
     
   /** Sets the value of "background-position" */
-  void set backgroundPosition(String value) {
+  set backgroundPosition(String value) {
     _setAll('backgroundPosition', value);
   }
     
   /** Sets the value of "background-repeat" */
-  void set backgroundRepeat(String value) {
+  set backgroundRepeat(String value) {
     _setAll('backgroundRepeat', value);
   }
     
   /** Sets the value of "border" */
-  void set border(String value) {
+  set border(String value) {
     _setAll('border', value);
   }
     
   /** Sets the value of "border-bottom" */
-  void set borderBottom(String value) {
+  set borderBottom(String value) {
     _setAll('borderBottom', value);
   }
     
   /** Sets the value of "border-bottom-color" */
-  void set borderBottomColor(String value) {
+  set borderBottomColor(String value) {
     _setAll('borderBottomColor', value);
   }
     
   /** Sets the value of "border-bottom-style" */
-  void set borderBottomStyle(String value) {
+  set borderBottomStyle(String value) {
     _setAll('borderBottomStyle', value);
   }
     
   /** Sets the value of "border-bottom-width" */
-  void set borderBottomWidth(String value) {
+  set borderBottomWidth(String value) {
     _setAll('borderBottomWidth', value);
   }
     
   /** Sets the value of "border-collapse" */
-  void set borderCollapse(String value) {
+  set borderCollapse(String value) {
     _setAll('borderCollapse', value);
   }
     
   /** Sets the value of "border-color" */
-  void set borderColor(String value) {
+  set borderColor(String value) {
     _setAll('borderColor', value);
   }
     
   /** Sets the value of "border-left" */
-  void set borderLeft(String value) {
+  set borderLeft(String value) {
     _setAll('borderLeft', value);
   }
     
   /** Sets the value of "border-left-color" */
-  void set borderLeftColor(String value) {
+  set borderLeftColor(String value) {
     _setAll('borderLeftColor', value);
   }
     
   /** Sets the value of "border-left-style" */
-  void set borderLeftStyle(String value) {
+  set borderLeftStyle(String value) {
     _setAll('borderLeftStyle', value);
   }
     
   /** Sets the value of "border-left-width" */
-  void set borderLeftWidth(String value) {
+  set borderLeftWidth(String value) {
     _setAll('borderLeftWidth', value);
   }
     
   /** Sets the value of "border-right" */
-  void set borderRight(String value) {
+  set borderRight(String value) {
     _setAll('borderRight', value);
   }
     
   /** Sets the value of "border-right-color" */
-  void set borderRightColor(String value) {
+  set borderRightColor(String value) {
     _setAll('borderRightColor', value);
   }
     
   /** Sets the value of "border-right-style" */
-  void set borderRightStyle(String value) {
+  set borderRightStyle(String value) {
     _setAll('borderRightStyle', value);
   }
     
   /** Sets the value of "border-right-width" */
-  void set borderRightWidth(String value) {
+  set borderRightWidth(String value) {
     _setAll('borderRightWidth', value);
   }
     
   /** Sets the value of "border-spacing" */
-  void set borderSpacing(String value) {
+  set borderSpacing(String value) {
     _setAll('borderSpacing', value);
   }
     
   /** Sets the value of "border-style" */
-  void set borderStyle(String value) {
+  set borderStyle(String value) {
     _setAll('borderStyle', value);
   }
     
   /** Sets the value of "border-top" */
-  void set borderTop(String value) {
+  set borderTop(String value) {
     _setAll('borderTop', value);
   }
     
   /** Sets the value of "border-top-color" */
-  void set borderTopColor(String value) {
+  set borderTopColor(String value) {
     _setAll('borderTopColor', value);
   }
     
   /** Sets the value of "border-top-style" */
-  void set borderTopStyle(String value) {
+  set borderTopStyle(String value) {
     _setAll('borderTopStyle', value);
   }
     
   /** Sets the value of "border-top-width" */
-  void set borderTopWidth(String value) {
+  set borderTopWidth(String value) {
     _setAll('borderTopWidth', value);
   }
     
   /** Sets the value of "border-width" */
-  void set borderWidth(String value) {
+  set borderWidth(String value) {
     _setAll('borderWidth', value);
   }
     
   /** Sets the value of "bottom" */
-  void set bottom(String value) {
+  set bottom(String value) {
     _setAll('bottom', value);
   }
     
   /** Sets the value of "caption-side" */
-  void set captionSide(String value) {
+  set captionSide(String value) {
     _setAll('captionSide', value);
   }
     
   /** Sets the value of "clear" */
-  void set clear(String value) {
+  set clear(String value) {
     _setAll('clear', value);
   }
     
   /** Sets the value of "clip" */
-  void set clip(String value) {
+  set clip(String value) {
     _setAll('clip', value);
   }
     
   /** Sets the value of "color" */
-  void set color(String value) {
+  set color(String value) {
     _setAll('color', value);
   }
     
   /** Sets the value of "content" */
-  void set content(String value) {
+  set content(String value) {
     _setAll('content', value);
   }
     
   /** Sets the value of "cursor" */
-  void set cursor(String value) {
+  set cursor(String value) {
     _setAll('cursor', value);
   }
     
   /** Sets the value of "direction" */
-  void set direction(String value) {
+  set direction(String value) {
     _setAll('direction', value);
   }
     
   /** Sets the value of "display" */
-  void set display(String value) {
+  set display(String value) {
     _setAll('display', value);
   }
     
   /** Sets the value of "empty-cells" */
-  void set emptyCells(String value) {
+  set emptyCells(String value) {
     _setAll('emptyCells', value);
   }
     
   /** Sets the value of "font" */
-  void set font(String value) {
+  set font(String value) {
     _setAll('font', value);
   }
     
   /** Sets the value of "font-family" */
-  void set fontFamily(String value) {
+  set fontFamily(String value) {
     _setAll('fontFamily', value);
   }
     
   /** Sets the value of "font-size" */
-  void set fontSize(String value) {
+  set fontSize(String value) {
     _setAll('fontSize', value);
   }
     
   /** Sets the value of "font-style" */
-  void set fontStyle(String value) {
+  set fontStyle(String value) {
     _setAll('fontStyle', value);
   }
     
   /** Sets the value of "font-variant" */
-  void set fontVariant(String value) {
+  set fontVariant(String value) {
     _setAll('fontVariant', value);
   }
     
   /** Sets the value of "font-weight" */
-  void set fontWeight(String value) {
+  set fontWeight(String value) {
     _setAll('fontWeight', value);
   }
     
   /** Sets the value of "height" */
-  void set height(String value) {
+  set height(String value) {
     _setAll('height', value);
   }
     
   /** Sets the value of "left" */
-  void set left(String value) {
+  set left(String value) {
     _setAll('left', value);
   }
     
   /** Sets the value of "letter-spacing" */
-  void set letterSpacing(String value) {
+  set letterSpacing(String value) {
     _setAll('letterSpacing', value);
   }
     
   /** Sets the value of "line-height" */
-  void set lineHeight(String value) {
+  set lineHeight(String value) {
     _setAll('lineHeight', value);
   }
     
   /** Sets the value of "list-style" */
-  void set listStyle(String value) {
+  set listStyle(String value) {
     _setAll('listStyle', value);
   }
     
   /** Sets the value of "list-style-image" */
-  void set listStyleImage(String value) {
+  set listStyleImage(String value) {
     _setAll('listStyleImage', value);
   }
     
   /** Sets the value of "list-style-position" */
-  void set listStylePosition(String value) {
+  set listStylePosition(String value) {
     _setAll('listStylePosition', value);
   }
     
   /** Sets the value of "list-style-type" */
-  void set listStyleType(String value) {
+  set listStyleType(String value) {
     _setAll('listStyleType', value);
   }
     
   /** Sets the value of "margin" */
-  void set margin(String value) {
+  set margin(String value) {
     _setAll('margin', value);
   }
     
   /** Sets the value of "margin-bottom" */
-  void set marginBottom(String value) {
+  set marginBottom(String value) {
     _setAll('marginBottom', value);
   }
     
   /** Sets the value of "margin-left" */
-  void set marginLeft(String value) {
+  set marginLeft(String value) {
     _setAll('marginLeft', value);
   }
     
   /** Sets the value of "margin-right" */
-  void set marginRight(String value) {
+  set marginRight(String value) {
     _setAll('marginRight', value);
   }
     
   /** Sets the value of "margin-top" */
-  void set marginTop(String value) {
+  set marginTop(String value) {
     _setAll('marginTop', value);
   }
     
   /** Sets the value of "max-height" */
-  void set maxHeight(String value) {
+  set maxHeight(String value) {
     _setAll('maxHeight', value);
   }
     
   /** Sets the value of "max-width" */
-  void set maxWidth(String value) {
+  set maxWidth(String value) {
     _setAll('maxWidth', value);
   }
     
   /** Sets the value of "min-height" */
-  void set minHeight(String value) {
+  set minHeight(String value) {
     _setAll('minHeight', value);
   }
     
   /** Sets the value of "min-width" */
-  void set minWidth(String value) {
+  set minWidth(String value) {
     _setAll('minWidth', value);
   }
     
   /** Sets the value of "outline" */
-  void set outline(String value) {
+  set outline(String value) {
     _setAll('outline', value);
   }
     
   /** Sets the value of "outline-color" */
-  void set outlineColor(String value) {
+  set outlineColor(String value) {
     _setAll('outlineColor', value);
   }
     
   /** Sets the value of "outline-style" */
-  void set outlineStyle(String value) {
+  set outlineStyle(String value) {
     _setAll('outlineStyle', value);
   }
     
   /** Sets the value of "outline-width" */
-  void set outlineWidth(String value) {
+  set outlineWidth(String value) {
     _setAll('outlineWidth', value);
   }
     
   /** Sets the value of "overflow" */
-  void set overflow(String value) {
+  set overflow(String value) {
     _setAll('overflow', value);
   }
     
   /** Sets the value of "padding" */
-  void set padding(String value) {
+  set padding(String value) {
     _setAll('padding', value);
   }
     
   /** Sets the value of "padding-bottom" */
-  void set paddingBottom(String value) {
+  set paddingBottom(String value) {
     _setAll('paddingBottom', value);
   }
     
   /** Sets the value of "padding-left" */
-  void set paddingLeft(String value) {
+  set paddingLeft(String value) {
     _setAll('paddingLeft', value);
   }
     
   /** Sets the value of "padding-right" */
-  void set paddingRight(String value) {
+  set paddingRight(String value) {
     _setAll('paddingRight', value);
   }
     
   /** Sets the value of "padding-top" */
-  void set paddingTop(String value) {
+  set paddingTop(String value) {
     _setAll('paddingTop', value);
   }
     
   /** Sets the value of "page-break-after" */
-  void set pageBreakAfter(String value) {
+  set pageBreakAfter(String value) {
     _setAll('pageBreakAfter', value);
   }
     
   /** Sets the value of "page-break-before" */
-  void set pageBreakBefore(String value) {
+  set pageBreakBefore(String value) {
     _setAll('pageBreakBefore', value);
   }
     
   /** Sets the value of "page-break-inside" */
-  void set pageBreakInside(String value) {
+  set pageBreakInside(String value) {
     _setAll('pageBreakInside', value);
   }
     
   /** Sets the value of "position" */
-  void set position(String value) {
+  set position(String value) {
     _setAll('position', value);
   }
     
   /** Sets the value of "quotes" */
-  void set quotes(String value) {
+  set quotes(String value) {
     _setAll('quotes', value);
   }
     
   /** Sets the value of "right" */
-  void set right(String value) {
+  set right(String value) {
     _setAll('right', value);
   }
     
   /** Sets the value of "table-layout" */
-  void set tableLayout(String value) {
+  set tableLayout(String value) {
     _setAll('tableLayout', value);
   }
     
   /** Sets the value of "text-align" */
-  void set textAlign(String value) {
+  set textAlign(String value) {
     _setAll('textAlign', value);
   }
     
   /** Sets the value of "text-decoration" */
-  void set textDecoration(String value) {
+  set textDecoration(String value) {
     _setAll('textDecoration', value);
   }
     
   /** Sets the value of "text-indent" */
-  void set textIndent(String value) {
+  set textIndent(String value) {
     _setAll('textIndent', value);
   }
     
   /** Sets the value of "text-transform" */
-  void set textTransform(String value) {
+  set textTransform(String value) {
     _setAll('textTransform', value);
   }
     
   /** Sets the value of "top" */
-  void set top(String value) {
+  set top(String value) {
     _setAll('top', value);
   }
     
   /** Sets the value of "unicode-bidi" */
-  void set unicodeBidi(String value) {
+  set unicodeBidi(String value) {
     _setAll('unicodeBidi', value);
   }
     
   /** Sets the value of "vertical-align" */
-  void set verticalAlign(String value) {
+  set verticalAlign(String value) {
     _setAll('verticalAlign', value);
   }
     
   /** Sets the value of "visibility" */
-  void set visibility(String value) {
+  set visibility(String value) {
     _setAll('visibility', value);
   }
     
   /** Sets the value of "white-space" */
-  void set whiteSpace(String value) {
+  set whiteSpace(String value) {
     _setAll('whiteSpace', value);
   }
     
   /** Sets the value of "width" */
-  void set width(String value) {
+  set width(String value) {
     _setAll('width', value);
   }
     
   /** Sets the value of "word-spacing" */
-  void set wordSpacing(String value) {
+  set wordSpacing(String value) {
     _setAll('wordSpacing', value);
   }
     
   /** Sets the value of "z-index" */
-  void set zIndex(String value) {
+  set zIndex(String value) {
     _setAll('zIndex', value);
   }
     
@@ -1663,7 +1645,7 @@
     getPropertyValue('align-content');
 
   /** Sets the value of "align-content" */
-  void set alignContent(String value) {
+  set alignContent(String value) {
     setProperty('align-content', value, '');
   }
 
@@ -1672,7 +1654,7 @@
     getPropertyValue('align-items');
 
   /** Sets the value of "align-items" */
-  void set alignItems(String value) {
+  set alignItems(String value) {
     setProperty('align-items', value, '');
   }
 
@@ -1681,7 +1663,7 @@
     getPropertyValue('align-self');
 
   /** Sets the value of "align-self" */
-  void set alignSelf(String value) {
+  set alignSelf(String value) {
     setProperty('align-self', value, '');
   }
 
@@ -1690,7 +1672,7 @@
     getPropertyValue('animation');
 
   /** Sets the value of "animation" */
-  void set animation(String value) {
+  set animation(String value) {
     setProperty('animation', value, '');
   }
 
@@ -1699,7 +1681,7 @@
     getPropertyValue('animation-delay');
 
   /** Sets the value of "animation-delay" */
-  void set animationDelay(String value) {
+  set animationDelay(String value) {
     setProperty('animation-delay', value, '');
   }
 
@@ -1708,7 +1690,7 @@
     getPropertyValue('animation-direction');
 
   /** Sets the value of "animation-direction" */
-  void set animationDirection(String value) {
+  set animationDirection(String value) {
     setProperty('animation-direction', value, '');
   }
 
@@ -1717,7 +1699,7 @@
     getPropertyValue('animation-duration');
 
   /** Sets the value of "animation-duration" */
-  void set animationDuration(String value) {
+  set animationDuration(String value) {
     setProperty('animation-duration', value, '');
   }
 
@@ -1726,7 +1708,7 @@
     getPropertyValue('animation-fill-mode');
 
   /** Sets the value of "animation-fill-mode" */
-  void set animationFillMode(String value) {
+  set animationFillMode(String value) {
     setProperty('animation-fill-mode', value, '');
   }
 
@@ -1735,7 +1717,7 @@
     getPropertyValue('animation-iteration-count');
 
   /** Sets the value of "animation-iteration-count" */
-  void set animationIterationCount(String value) {
+  set animationIterationCount(String value) {
     setProperty('animation-iteration-count', value, '');
   }
 
@@ -1744,7 +1726,7 @@
     getPropertyValue('animation-name');
 
   /** Sets the value of "animation-name" */
-  void set animationName(String value) {
+  set animationName(String value) {
     setProperty('animation-name', value, '');
   }
 
@@ -1753,7 +1735,7 @@
     getPropertyValue('animation-play-state');
 
   /** Sets the value of "animation-play-state" */
-  void set animationPlayState(String value) {
+  set animationPlayState(String value) {
     setProperty('animation-play-state', value, '');
   }
 
@@ -1762,7 +1744,7 @@
     getPropertyValue('animation-timing-function');
 
   /** Sets the value of "animation-timing-function" */
-  void set animationTimingFunction(String value) {
+  set animationTimingFunction(String value) {
     setProperty('animation-timing-function', value, '');
   }
 
@@ -1771,7 +1753,7 @@
     getPropertyValue('app-region');
 
   /** Sets the value of "app-region" */
-  void set appRegion(String value) {
+  set appRegion(String value) {
     setProperty('app-region', value, '');
   }
 
@@ -1780,7 +1762,7 @@
     getPropertyValue('appearance');
 
   /** Sets the value of "appearance" */
-  void set appearance(String value) {
+  set appearance(String value) {
     setProperty('appearance', value, '');
   }
 
@@ -1789,7 +1771,7 @@
     getPropertyValue('aspect-ratio');
 
   /** Sets the value of "aspect-ratio" */
-  void set aspectRatio(String value) {
+  set aspectRatio(String value) {
     setProperty('aspect-ratio', value, '');
   }
 
@@ -1798,7 +1780,7 @@
     getPropertyValue('backface-visibility');
 
   /** Sets the value of "backface-visibility" */
-  void set backfaceVisibility(String value) {
+  set backfaceVisibility(String value) {
     setProperty('backface-visibility', value, '');
   }
 
@@ -1807,7 +1789,7 @@
     getPropertyValue('background');
 
   /** Sets the value of "background" */
-  void set background(String value) {
+  set background(String value) {
     setProperty('background', value, '');
   }
 
@@ -1816,7 +1798,7 @@
     getPropertyValue('background-attachment');
 
   /** Sets the value of "background-attachment" */
-  void set backgroundAttachment(String value) {
+  set backgroundAttachment(String value) {
     setProperty('background-attachment', value, '');
   }
 
@@ -1825,7 +1807,7 @@
     getPropertyValue('background-blend-mode');
 
   /** Sets the value of "background-blend-mode" */
-  void set backgroundBlendMode(String value) {
+  set backgroundBlendMode(String value) {
     setProperty('background-blend-mode', value, '');
   }
 
@@ -1834,7 +1816,7 @@
     getPropertyValue('background-clip');
 
   /** Sets the value of "background-clip" */
-  void set backgroundClip(String value) {
+  set backgroundClip(String value) {
     setProperty('background-clip', value, '');
   }
 
@@ -1843,7 +1825,7 @@
     getPropertyValue('background-color');
 
   /** Sets the value of "background-color" */
-  void set backgroundColor(String value) {
+  set backgroundColor(String value) {
     setProperty('background-color', value, '');
   }
 
@@ -1852,7 +1834,7 @@
     getPropertyValue('background-composite');
 
   /** Sets the value of "background-composite" */
-  void set backgroundComposite(String value) {
+  set backgroundComposite(String value) {
     setProperty('background-composite', value, '');
   }
 
@@ -1861,7 +1843,7 @@
     getPropertyValue('background-image');
 
   /** Sets the value of "background-image" */
-  void set backgroundImage(String value) {
+  set backgroundImage(String value) {
     setProperty('background-image', value, '');
   }
 
@@ -1870,7 +1852,7 @@
     getPropertyValue('background-origin');
 
   /** Sets the value of "background-origin" */
-  void set backgroundOrigin(String value) {
+  set backgroundOrigin(String value) {
     setProperty('background-origin', value, '');
   }
 
@@ -1879,7 +1861,7 @@
     getPropertyValue('background-position');
 
   /** Sets the value of "background-position" */
-  void set backgroundPosition(String value) {
+  set backgroundPosition(String value) {
     setProperty('background-position', value, '');
   }
 
@@ -1888,7 +1870,7 @@
     getPropertyValue('background-position-x');
 
   /** Sets the value of "background-position-x" */
-  void set backgroundPositionX(String value) {
+  set backgroundPositionX(String value) {
     setProperty('background-position-x', value, '');
   }
 
@@ -1897,7 +1879,7 @@
     getPropertyValue('background-position-y');
 
   /** Sets the value of "background-position-y" */
-  void set backgroundPositionY(String value) {
+  set backgroundPositionY(String value) {
     setProperty('background-position-y', value, '');
   }
 
@@ -1906,7 +1888,7 @@
     getPropertyValue('background-repeat');
 
   /** Sets the value of "background-repeat" */
-  void set backgroundRepeat(String value) {
+  set backgroundRepeat(String value) {
     setProperty('background-repeat', value, '');
   }
 
@@ -1915,7 +1897,7 @@
     getPropertyValue('background-repeat-x');
 
   /** Sets the value of "background-repeat-x" */
-  void set backgroundRepeatX(String value) {
+  set backgroundRepeatX(String value) {
     setProperty('background-repeat-x', value, '');
   }
 
@@ -1924,7 +1906,7 @@
     getPropertyValue('background-repeat-y');
 
   /** Sets the value of "background-repeat-y" */
-  void set backgroundRepeatY(String value) {
+  set backgroundRepeatY(String value) {
     setProperty('background-repeat-y', value, '');
   }
 
@@ -1933,7 +1915,7 @@
     getPropertyValue('background-size');
 
   /** Sets the value of "background-size" */
-  void set backgroundSize(String value) {
+  set backgroundSize(String value) {
     setProperty('background-size', value, '');
   }
 
@@ -1942,7 +1924,7 @@
     getPropertyValue('border');
 
   /** Sets the value of "border" */
-  void set border(String value) {
+  set border(String value) {
     setProperty('border', value, '');
   }
 
@@ -1951,7 +1933,7 @@
     getPropertyValue('border-after');
 
   /** Sets the value of "border-after" */
-  void set borderAfter(String value) {
+  set borderAfter(String value) {
     setProperty('border-after', value, '');
   }
 
@@ -1960,7 +1942,7 @@
     getPropertyValue('border-after-color');
 
   /** Sets the value of "border-after-color" */
-  void set borderAfterColor(String value) {
+  set borderAfterColor(String value) {
     setProperty('border-after-color', value, '');
   }
 
@@ -1969,7 +1951,7 @@
     getPropertyValue('border-after-style');
 
   /** Sets the value of "border-after-style" */
-  void set borderAfterStyle(String value) {
+  set borderAfterStyle(String value) {
     setProperty('border-after-style', value, '');
   }
 
@@ -1978,7 +1960,7 @@
     getPropertyValue('border-after-width');
 
   /** Sets the value of "border-after-width" */
-  void set borderAfterWidth(String value) {
+  set borderAfterWidth(String value) {
     setProperty('border-after-width', value, '');
   }
 
@@ -1987,7 +1969,7 @@
     getPropertyValue('border-before');
 
   /** Sets the value of "border-before" */
-  void set borderBefore(String value) {
+  set borderBefore(String value) {
     setProperty('border-before', value, '');
   }
 
@@ -1996,7 +1978,7 @@
     getPropertyValue('border-before-color');
 
   /** Sets the value of "border-before-color" */
-  void set borderBeforeColor(String value) {
+  set borderBeforeColor(String value) {
     setProperty('border-before-color', value, '');
   }
 
@@ -2005,7 +1987,7 @@
     getPropertyValue('border-before-style');
 
   /** Sets the value of "border-before-style" */
-  void set borderBeforeStyle(String value) {
+  set borderBeforeStyle(String value) {
     setProperty('border-before-style', value, '');
   }
 
@@ -2014,7 +1996,7 @@
     getPropertyValue('border-before-width');
 
   /** Sets the value of "border-before-width" */
-  void set borderBeforeWidth(String value) {
+  set borderBeforeWidth(String value) {
     setProperty('border-before-width', value, '');
   }
 
@@ -2023,7 +2005,7 @@
     getPropertyValue('border-bottom');
 
   /** Sets the value of "border-bottom" */
-  void set borderBottom(String value) {
+  set borderBottom(String value) {
     setProperty('border-bottom', value, '');
   }
 
@@ -2032,7 +2014,7 @@
     getPropertyValue('border-bottom-color');
 
   /** Sets the value of "border-bottom-color" */
-  void set borderBottomColor(String value) {
+  set borderBottomColor(String value) {
     setProperty('border-bottom-color', value, '');
   }
 
@@ -2041,7 +2023,7 @@
     getPropertyValue('border-bottom-left-radius');
 
   /** Sets the value of "border-bottom-left-radius" */
-  void set borderBottomLeftRadius(String value) {
+  set borderBottomLeftRadius(String value) {
     setProperty('border-bottom-left-radius', value, '');
   }
 
@@ -2050,7 +2032,7 @@
     getPropertyValue('border-bottom-right-radius');
 
   /** Sets the value of "border-bottom-right-radius" */
-  void set borderBottomRightRadius(String value) {
+  set borderBottomRightRadius(String value) {
     setProperty('border-bottom-right-radius', value, '');
   }
 
@@ -2059,7 +2041,7 @@
     getPropertyValue('border-bottom-style');
 
   /** Sets the value of "border-bottom-style" */
-  void set borderBottomStyle(String value) {
+  set borderBottomStyle(String value) {
     setProperty('border-bottom-style', value, '');
   }
 
@@ -2068,7 +2050,7 @@
     getPropertyValue('border-bottom-width');
 
   /** Sets the value of "border-bottom-width" */
-  void set borderBottomWidth(String value) {
+  set borderBottomWidth(String value) {
     setProperty('border-bottom-width', value, '');
   }
 
@@ -2077,7 +2059,7 @@
     getPropertyValue('border-collapse');
 
   /** Sets the value of "border-collapse" */
-  void set borderCollapse(String value) {
+  set borderCollapse(String value) {
     setProperty('border-collapse', value, '');
   }
 
@@ -2086,7 +2068,7 @@
     getPropertyValue('border-color');
 
   /** Sets the value of "border-color" */
-  void set borderColor(String value) {
+  set borderColor(String value) {
     setProperty('border-color', value, '');
   }
 
@@ -2095,7 +2077,7 @@
     getPropertyValue('border-end');
 
   /** Sets the value of "border-end" */
-  void set borderEnd(String value) {
+  set borderEnd(String value) {
     setProperty('border-end', value, '');
   }
 
@@ -2104,7 +2086,7 @@
     getPropertyValue('border-end-color');
 
   /** Sets the value of "border-end-color" */
-  void set borderEndColor(String value) {
+  set borderEndColor(String value) {
     setProperty('border-end-color', value, '');
   }
 
@@ -2113,7 +2095,7 @@
     getPropertyValue('border-end-style');
 
   /** Sets the value of "border-end-style" */
-  void set borderEndStyle(String value) {
+  set borderEndStyle(String value) {
     setProperty('border-end-style', value, '');
   }
 
@@ -2122,7 +2104,7 @@
     getPropertyValue('border-end-width');
 
   /** Sets the value of "border-end-width" */
-  void set borderEndWidth(String value) {
+  set borderEndWidth(String value) {
     setProperty('border-end-width', value, '');
   }
 
@@ -2131,7 +2113,7 @@
     getPropertyValue('border-fit');
 
   /** Sets the value of "border-fit" */
-  void set borderFit(String value) {
+  set borderFit(String value) {
     setProperty('border-fit', value, '');
   }
 
@@ -2140,7 +2122,7 @@
     getPropertyValue('border-horizontal-spacing');
 
   /** Sets the value of "border-horizontal-spacing" */
-  void set borderHorizontalSpacing(String value) {
+  set borderHorizontalSpacing(String value) {
     setProperty('border-horizontal-spacing', value, '');
   }
 
@@ -2149,7 +2131,7 @@
     getPropertyValue('border-image');
 
   /** Sets the value of "border-image" */
-  void set borderImage(String value) {
+  set borderImage(String value) {
     setProperty('border-image', value, '');
   }
 
@@ -2158,7 +2140,7 @@
     getPropertyValue('border-image-outset');
 
   /** Sets the value of "border-image-outset" */
-  void set borderImageOutset(String value) {
+  set borderImageOutset(String value) {
     setProperty('border-image-outset', value, '');
   }
 
@@ -2167,7 +2149,7 @@
     getPropertyValue('border-image-repeat');
 
   /** Sets the value of "border-image-repeat" */
-  void set borderImageRepeat(String value) {
+  set borderImageRepeat(String value) {
     setProperty('border-image-repeat', value, '');
   }
 
@@ -2176,7 +2158,7 @@
     getPropertyValue('border-image-slice');
 
   /** Sets the value of "border-image-slice" */
-  void set borderImageSlice(String value) {
+  set borderImageSlice(String value) {
     setProperty('border-image-slice', value, '');
   }
 
@@ -2185,7 +2167,7 @@
     getPropertyValue('border-image-source');
 
   /** Sets the value of "border-image-source" */
-  void set borderImageSource(String value) {
+  set borderImageSource(String value) {
     setProperty('border-image-source', value, '');
   }
 
@@ -2194,7 +2176,7 @@
     getPropertyValue('border-image-width');
 
   /** Sets the value of "border-image-width" */
-  void set borderImageWidth(String value) {
+  set borderImageWidth(String value) {
     setProperty('border-image-width', value, '');
   }
 
@@ -2203,7 +2185,7 @@
     getPropertyValue('border-left');
 
   /** Sets the value of "border-left" */
-  void set borderLeft(String value) {
+  set borderLeft(String value) {
     setProperty('border-left', value, '');
   }
 
@@ -2212,7 +2194,7 @@
     getPropertyValue('border-left-color');
 
   /** Sets the value of "border-left-color" */
-  void set borderLeftColor(String value) {
+  set borderLeftColor(String value) {
     setProperty('border-left-color', value, '');
   }
 
@@ -2221,7 +2203,7 @@
     getPropertyValue('border-left-style');
 
   /** Sets the value of "border-left-style" */
-  void set borderLeftStyle(String value) {
+  set borderLeftStyle(String value) {
     setProperty('border-left-style', value, '');
   }
 
@@ -2230,7 +2212,7 @@
     getPropertyValue('border-left-width');
 
   /** Sets the value of "border-left-width" */
-  void set borderLeftWidth(String value) {
+  set borderLeftWidth(String value) {
     setProperty('border-left-width', value, '');
   }
 
@@ -2239,7 +2221,7 @@
     getPropertyValue('border-radius');
 
   /** Sets the value of "border-radius" */
-  void set borderRadius(String value) {
+  set borderRadius(String value) {
     setProperty('border-radius', value, '');
   }
 
@@ -2248,7 +2230,7 @@
     getPropertyValue('border-right');
 
   /** Sets the value of "border-right" */
-  void set borderRight(String value) {
+  set borderRight(String value) {
     setProperty('border-right', value, '');
   }
 
@@ -2257,7 +2239,7 @@
     getPropertyValue('border-right-color');
 
   /** Sets the value of "border-right-color" */
-  void set borderRightColor(String value) {
+  set borderRightColor(String value) {
     setProperty('border-right-color', value, '');
   }
 
@@ -2266,7 +2248,7 @@
     getPropertyValue('border-right-style');
 
   /** Sets the value of "border-right-style" */
-  void set borderRightStyle(String value) {
+  set borderRightStyle(String value) {
     setProperty('border-right-style', value, '');
   }
 
@@ -2275,7 +2257,7 @@
     getPropertyValue('border-right-width');
 
   /** Sets the value of "border-right-width" */
-  void set borderRightWidth(String value) {
+  set borderRightWidth(String value) {
     setProperty('border-right-width', value, '');
   }
 
@@ -2284,7 +2266,7 @@
     getPropertyValue('border-spacing');
 
   /** Sets the value of "border-spacing" */
-  void set borderSpacing(String value) {
+  set borderSpacing(String value) {
     setProperty('border-spacing', value, '');
   }
 
@@ -2293,7 +2275,7 @@
     getPropertyValue('border-start');
 
   /** Sets the value of "border-start" */
-  void set borderStart(String value) {
+  set borderStart(String value) {
     setProperty('border-start', value, '');
   }
 
@@ -2302,7 +2284,7 @@
     getPropertyValue('border-start-color');
 
   /** Sets the value of "border-start-color" */
-  void set borderStartColor(String value) {
+  set borderStartColor(String value) {
     setProperty('border-start-color', value, '');
   }
 
@@ -2311,7 +2293,7 @@
     getPropertyValue('border-start-style');
 
   /** Sets the value of "border-start-style" */
-  void set borderStartStyle(String value) {
+  set borderStartStyle(String value) {
     setProperty('border-start-style', value, '');
   }
 
@@ -2320,7 +2302,7 @@
     getPropertyValue('border-start-width');
 
   /** Sets the value of "border-start-width" */
-  void set borderStartWidth(String value) {
+  set borderStartWidth(String value) {
     setProperty('border-start-width', value, '');
   }
 
@@ -2329,7 +2311,7 @@
     getPropertyValue('border-style');
 
   /** Sets the value of "border-style" */
-  void set borderStyle(String value) {
+  set borderStyle(String value) {
     setProperty('border-style', value, '');
   }
 
@@ -2338,7 +2320,7 @@
     getPropertyValue('border-top');
 
   /** Sets the value of "border-top" */
-  void set borderTop(String value) {
+  set borderTop(String value) {
     setProperty('border-top', value, '');
   }
 
@@ -2347,7 +2329,7 @@
     getPropertyValue('border-top-color');
 
   /** Sets the value of "border-top-color" */
-  void set borderTopColor(String value) {
+  set borderTopColor(String value) {
     setProperty('border-top-color', value, '');
   }
 
@@ -2356,7 +2338,7 @@
     getPropertyValue('border-top-left-radius');
 
   /** Sets the value of "border-top-left-radius" */
-  void set borderTopLeftRadius(String value) {
+  set borderTopLeftRadius(String value) {
     setProperty('border-top-left-radius', value, '');
   }
 
@@ -2365,7 +2347,7 @@
     getPropertyValue('border-top-right-radius');
 
   /** Sets the value of "border-top-right-radius" */
-  void set borderTopRightRadius(String value) {
+  set borderTopRightRadius(String value) {
     setProperty('border-top-right-radius', value, '');
   }
 
@@ -2374,7 +2356,7 @@
     getPropertyValue('border-top-style');
 
   /** Sets the value of "border-top-style" */
-  void set borderTopStyle(String value) {
+  set borderTopStyle(String value) {
     setProperty('border-top-style', value, '');
   }
 
@@ -2383,7 +2365,7 @@
     getPropertyValue('border-top-width');
 
   /** Sets the value of "border-top-width" */
-  void set borderTopWidth(String value) {
+  set borderTopWidth(String value) {
     setProperty('border-top-width', value, '');
   }
 
@@ -2392,7 +2374,7 @@
     getPropertyValue('border-vertical-spacing');
 
   /** Sets the value of "border-vertical-spacing" */
-  void set borderVerticalSpacing(String value) {
+  set borderVerticalSpacing(String value) {
     setProperty('border-vertical-spacing', value, '');
   }
 
@@ -2401,7 +2383,7 @@
     getPropertyValue('border-width');
 
   /** Sets the value of "border-width" */
-  void set borderWidth(String value) {
+  set borderWidth(String value) {
     setProperty('border-width', value, '');
   }
 
@@ -2410,7 +2392,7 @@
     getPropertyValue('bottom');
 
   /** Sets the value of "bottom" */
-  void set bottom(String value) {
+  set bottom(String value) {
     setProperty('bottom', value, '');
   }
 
@@ -2419,7 +2401,7 @@
     getPropertyValue('box-align');
 
   /** Sets the value of "box-align" */
-  void set boxAlign(String value) {
+  set boxAlign(String value) {
     setProperty('box-align', value, '');
   }
 
@@ -2428,7 +2410,7 @@
     getPropertyValue('box-decoration-break');
 
   /** Sets the value of "box-decoration-break" */
-  void set boxDecorationBreak(String value) {
+  set boxDecorationBreak(String value) {
     setProperty('box-decoration-break', value, '');
   }
 
@@ -2437,7 +2419,7 @@
     getPropertyValue('box-direction');
 
   /** Sets the value of "box-direction" */
-  void set boxDirection(String value) {
+  set boxDirection(String value) {
     setProperty('box-direction', value, '');
   }
 
@@ -2446,7 +2428,7 @@
     getPropertyValue('box-flex');
 
   /** Sets the value of "box-flex" */
-  void set boxFlex(String value) {
+  set boxFlex(String value) {
     setProperty('box-flex', value, '');
   }
 
@@ -2455,7 +2437,7 @@
     getPropertyValue('box-flex-group');
 
   /** Sets the value of "box-flex-group" */
-  void set boxFlexGroup(String value) {
+  set boxFlexGroup(String value) {
     setProperty('box-flex-group', value, '');
   }
 
@@ -2464,7 +2446,7 @@
     getPropertyValue('box-lines');
 
   /** Sets the value of "box-lines" */
-  void set boxLines(String value) {
+  set boxLines(String value) {
     setProperty('box-lines', value, '');
   }
 
@@ -2473,7 +2455,7 @@
     getPropertyValue('box-ordinal-group');
 
   /** Sets the value of "box-ordinal-group" */
-  void set boxOrdinalGroup(String value) {
+  set boxOrdinalGroup(String value) {
     setProperty('box-ordinal-group', value, '');
   }
 
@@ -2482,7 +2464,7 @@
     getPropertyValue('box-orient');
 
   /** Sets the value of "box-orient" */
-  void set boxOrient(String value) {
+  set boxOrient(String value) {
     setProperty('box-orient', value, '');
   }
 
@@ -2491,7 +2473,7 @@
     getPropertyValue('box-pack');
 
   /** Sets the value of "box-pack" */
-  void set boxPack(String value) {
+  set boxPack(String value) {
     setProperty('box-pack', value, '');
   }
 
@@ -2500,7 +2482,7 @@
     getPropertyValue('box-reflect');
 
   /** Sets the value of "box-reflect" */
-  void set boxReflect(String value) {
+  set boxReflect(String value) {
     setProperty('box-reflect', value, '');
   }
 
@@ -2509,7 +2491,7 @@
     getPropertyValue('box-shadow');
 
   /** Sets the value of "box-shadow" */
-  void set boxShadow(String value) {
+  set boxShadow(String value) {
     setProperty('box-shadow', value, '');
   }
 
@@ -2518,7 +2500,7 @@
     getPropertyValue('box-sizing');
 
   /** Sets the value of "box-sizing" */
-  void set boxSizing(String value) {
+  set boxSizing(String value) {
     setProperty('box-sizing', value, '');
   }
 
@@ -2527,7 +2509,7 @@
     getPropertyValue('caption-side');
 
   /** Sets the value of "caption-side" */
-  void set captionSide(String value) {
+  set captionSide(String value) {
     setProperty('caption-side', value, '');
   }
 
@@ -2536,7 +2518,7 @@
     getPropertyValue('clear');
 
   /** Sets the value of "clear" */
-  void set clear(String value) {
+  set clear(String value) {
     setProperty('clear', value, '');
   }
 
@@ -2545,7 +2527,7 @@
     getPropertyValue('clip');
 
   /** Sets the value of "clip" */
-  void set clip(String value) {
+  set clip(String value) {
     setProperty('clip', value, '');
   }
 
@@ -2554,7 +2536,7 @@
     getPropertyValue('clip-path');
 
   /** Sets the value of "clip-path" */
-  void set clipPath(String value) {
+  set clipPath(String value) {
     setProperty('clip-path', value, '');
   }
 
@@ -2563,7 +2545,7 @@
     getPropertyValue('color');
 
   /** Sets the value of "color" */
-  void set color(String value) {
+  set color(String value) {
     setProperty('color', value, '');
   }
 
@@ -2572,7 +2554,7 @@
     getPropertyValue('column-break-after');
 
   /** Sets the value of "column-break-after" */
-  void set columnBreakAfter(String value) {
+  set columnBreakAfter(String value) {
     setProperty('column-break-after', value, '');
   }
 
@@ -2581,7 +2563,7 @@
     getPropertyValue('column-break-before');
 
   /** Sets the value of "column-break-before" */
-  void set columnBreakBefore(String value) {
+  set columnBreakBefore(String value) {
     setProperty('column-break-before', value, '');
   }
 
@@ -2590,7 +2572,7 @@
     getPropertyValue('column-break-inside');
 
   /** Sets the value of "column-break-inside" */
-  void set columnBreakInside(String value) {
+  set columnBreakInside(String value) {
     setProperty('column-break-inside', value, '');
   }
 
@@ -2599,7 +2581,7 @@
     getPropertyValue('column-count');
 
   /** Sets the value of "column-count" */
-  void set columnCount(String value) {
+  set columnCount(String value) {
     setProperty('column-count', value, '');
   }
 
@@ -2608,7 +2590,7 @@
     getPropertyValue('column-fill');
 
   /** Sets the value of "column-fill" */
-  void set columnFill(String value) {
+  set columnFill(String value) {
     setProperty('column-fill', value, '');
   }
 
@@ -2617,7 +2599,7 @@
     getPropertyValue('column-gap');
 
   /** Sets the value of "column-gap" */
-  void set columnGap(String value) {
+  set columnGap(String value) {
     setProperty('column-gap', value, '');
   }
 
@@ -2626,7 +2608,7 @@
     getPropertyValue('column-rule');
 
   /** Sets the value of "column-rule" */
-  void set columnRule(String value) {
+  set columnRule(String value) {
     setProperty('column-rule', value, '');
   }
 
@@ -2635,7 +2617,7 @@
     getPropertyValue('column-rule-color');
 
   /** Sets the value of "column-rule-color" */
-  void set columnRuleColor(String value) {
+  set columnRuleColor(String value) {
     setProperty('column-rule-color', value, '');
   }
 
@@ -2644,7 +2626,7 @@
     getPropertyValue('column-rule-style');
 
   /** Sets the value of "column-rule-style" */
-  void set columnRuleStyle(String value) {
+  set columnRuleStyle(String value) {
     setProperty('column-rule-style', value, '');
   }
 
@@ -2653,7 +2635,7 @@
     getPropertyValue('column-rule-width');
 
   /** Sets the value of "column-rule-width" */
-  void set columnRuleWidth(String value) {
+  set columnRuleWidth(String value) {
     setProperty('column-rule-width', value, '');
   }
 
@@ -2662,7 +2644,7 @@
     getPropertyValue('column-span');
 
   /** Sets the value of "column-span" */
-  void set columnSpan(String value) {
+  set columnSpan(String value) {
     setProperty('column-span', value, '');
   }
 
@@ -2671,7 +2653,7 @@
     getPropertyValue('column-width');
 
   /** Sets the value of "column-width" */
-  void set columnWidth(String value) {
+  set columnWidth(String value) {
     setProperty('column-width', value, '');
   }
 
@@ -2680,7 +2662,7 @@
     getPropertyValue('columns');
 
   /** Sets the value of "columns" */
-  void set columns(String value) {
+  set columns(String value) {
     setProperty('columns', value, '');
   }
 
@@ -2689,7 +2671,7 @@
     getPropertyValue('content');
 
   /** Sets the value of "content" */
-  void set content(String value) {
+  set content(String value) {
     setProperty('content', value, '');
   }
 
@@ -2698,7 +2680,7 @@
     getPropertyValue('counter-increment');
 
   /** Sets the value of "counter-increment" */
-  void set counterIncrement(String value) {
+  set counterIncrement(String value) {
     setProperty('counter-increment', value, '');
   }
 
@@ -2707,7 +2689,7 @@
     getPropertyValue('counter-reset');
 
   /** Sets the value of "counter-reset" */
-  void set counterReset(String value) {
+  set counterReset(String value) {
     setProperty('counter-reset', value, '');
   }
 
@@ -2716,7 +2698,7 @@
     getPropertyValue('cursor');
 
   /** Sets the value of "cursor" */
-  void set cursor(String value) {
+  set cursor(String value) {
     setProperty('cursor', value, '');
   }
 
@@ -2725,7 +2707,7 @@
     getPropertyValue('direction');
 
   /** Sets the value of "direction" */
-  void set direction(String value) {
+  set direction(String value) {
     setProperty('direction', value, '');
   }
 
@@ -2734,7 +2716,7 @@
     getPropertyValue('display');
 
   /** Sets the value of "display" */
-  void set display(String value) {
+  set display(String value) {
     setProperty('display', value, '');
   }
 
@@ -2743,7 +2725,7 @@
     getPropertyValue('empty-cells');
 
   /** Sets the value of "empty-cells" */
-  void set emptyCells(String value) {
+  set emptyCells(String value) {
     setProperty('empty-cells', value, '');
   }
 
@@ -2752,7 +2734,7 @@
     getPropertyValue('filter');
 
   /** Sets the value of "filter" */
-  void set filter(String value) {
+  set filter(String value) {
     setProperty('filter', value, '');
   }
 
@@ -2761,7 +2743,7 @@
     getPropertyValue('flex');
 
   /** Sets the value of "flex" */
-  void set flex(String value) {
+  set flex(String value) {
     setProperty('flex', value, '');
   }
 
@@ -2770,7 +2752,7 @@
     getPropertyValue('flex-basis');
 
   /** Sets the value of "flex-basis" */
-  void set flexBasis(String value) {
+  set flexBasis(String value) {
     setProperty('flex-basis', value, '');
   }
 
@@ -2779,7 +2761,7 @@
     getPropertyValue('flex-direction');
 
   /** Sets the value of "flex-direction" */
-  void set flexDirection(String value) {
+  set flexDirection(String value) {
     setProperty('flex-direction', value, '');
   }
 
@@ -2788,7 +2770,7 @@
     getPropertyValue('flex-flow');
 
   /** Sets the value of "flex-flow" */
-  void set flexFlow(String value) {
+  set flexFlow(String value) {
     setProperty('flex-flow', value, '');
   }
 
@@ -2797,7 +2779,7 @@
     getPropertyValue('flex-grow');
 
   /** Sets the value of "flex-grow" */
-  void set flexGrow(String value) {
+  set flexGrow(String value) {
     setProperty('flex-grow', value, '');
   }
 
@@ -2806,7 +2788,7 @@
     getPropertyValue('flex-shrink');
 
   /** Sets the value of "flex-shrink" */
-  void set flexShrink(String value) {
+  set flexShrink(String value) {
     setProperty('flex-shrink', value, '');
   }
 
@@ -2815,7 +2797,7 @@
     getPropertyValue('flex-wrap');
 
   /** Sets the value of "flex-wrap" */
-  void set flexWrap(String value) {
+  set flexWrap(String value) {
     setProperty('flex-wrap', value, '');
   }
 
@@ -2824,7 +2806,7 @@
     getPropertyValue('float');
 
   /** Sets the value of "float" */
-  void set float(String value) {
+  set float(String value) {
     setProperty('float', value, '');
   }
 
@@ -2833,7 +2815,7 @@
     getPropertyValue('font');
 
   /** Sets the value of "font" */
-  void set font(String value) {
+  set font(String value) {
     setProperty('font', value, '');
   }
 
@@ -2842,7 +2824,7 @@
     getPropertyValue('font-family');
 
   /** Sets the value of "font-family" */
-  void set fontFamily(String value) {
+  set fontFamily(String value) {
     setProperty('font-family', value, '');
   }
 
@@ -2851,7 +2833,7 @@
     getPropertyValue('font-feature-settings');
 
   /** Sets the value of "font-feature-settings" */
-  void set fontFeatureSettings(String value) {
+  set fontFeatureSettings(String value) {
     setProperty('font-feature-settings', value, '');
   }
 
@@ -2860,7 +2842,7 @@
     getPropertyValue('font-kerning');
 
   /** Sets the value of "font-kerning" */
-  void set fontKerning(String value) {
+  set fontKerning(String value) {
     setProperty('font-kerning', value, '');
   }
 
@@ -2869,7 +2851,7 @@
     getPropertyValue('font-size');
 
   /** Sets the value of "font-size" */
-  void set fontSize(String value) {
+  set fontSize(String value) {
     setProperty('font-size', value, '');
   }
 
@@ -2878,7 +2860,7 @@
     getPropertyValue('font-size-delta');
 
   /** Sets the value of "font-size-delta" */
-  void set fontSizeDelta(String value) {
+  set fontSizeDelta(String value) {
     setProperty('font-size-delta', value, '');
   }
 
@@ -2887,7 +2869,7 @@
     getPropertyValue('font-smoothing');
 
   /** Sets the value of "font-smoothing" */
-  void set fontSmoothing(String value) {
+  set fontSmoothing(String value) {
     setProperty('font-smoothing', value, '');
   }
 
@@ -2896,7 +2878,7 @@
     getPropertyValue('font-stretch');
 
   /** Sets the value of "font-stretch" */
-  void set fontStretch(String value) {
+  set fontStretch(String value) {
     setProperty('font-stretch', value, '');
   }
 
@@ -2905,7 +2887,7 @@
     getPropertyValue('font-style');
 
   /** Sets the value of "font-style" */
-  void set fontStyle(String value) {
+  set fontStyle(String value) {
     setProperty('font-style', value, '');
   }
 
@@ -2914,7 +2896,7 @@
     getPropertyValue('font-variant');
 
   /** Sets the value of "font-variant" */
-  void set fontVariant(String value) {
+  set fontVariant(String value) {
     setProperty('font-variant', value, '');
   }
 
@@ -2923,7 +2905,7 @@
     getPropertyValue('font-variant-ligatures');
 
   /** Sets the value of "font-variant-ligatures" */
-  void set fontVariantLigatures(String value) {
+  set fontVariantLigatures(String value) {
     setProperty('font-variant-ligatures', value, '');
   }
 
@@ -2932,7 +2914,7 @@
     getPropertyValue('font-weight');
 
   /** Sets the value of "font-weight" */
-  void set fontWeight(String value) {
+  set fontWeight(String value) {
     setProperty('font-weight', value, '');
   }
 
@@ -2941,7 +2923,7 @@
     getPropertyValue('grid');
 
   /** Sets the value of "grid" */
-  void set grid(String value) {
+  set grid(String value) {
     setProperty('grid', value, '');
   }
 
@@ -2950,7 +2932,7 @@
     getPropertyValue('grid-area');
 
   /** Sets the value of "grid-area" */
-  void set gridArea(String value) {
+  set gridArea(String value) {
     setProperty('grid-area', value, '');
   }
 
@@ -2959,7 +2941,7 @@
     getPropertyValue('grid-auto-columns');
 
   /** Sets the value of "grid-auto-columns" */
-  void set gridAutoColumns(String value) {
+  set gridAutoColumns(String value) {
     setProperty('grid-auto-columns', value, '');
   }
 
@@ -2968,7 +2950,7 @@
     getPropertyValue('grid-auto-flow');
 
   /** Sets the value of "grid-auto-flow" */
-  void set gridAutoFlow(String value) {
+  set gridAutoFlow(String value) {
     setProperty('grid-auto-flow', value, '');
   }
 
@@ -2977,7 +2959,7 @@
     getPropertyValue('grid-auto-rows');
 
   /** Sets the value of "grid-auto-rows" */
-  void set gridAutoRows(String value) {
+  set gridAutoRows(String value) {
     setProperty('grid-auto-rows', value, '');
   }
 
@@ -2986,7 +2968,7 @@
     getPropertyValue('grid-column');
 
   /** Sets the value of "grid-column" */
-  void set gridColumn(String value) {
+  set gridColumn(String value) {
     setProperty('grid-column', value, '');
   }
 
@@ -2995,7 +2977,7 @@
     getPropertyValue('grid-column-end');
 
   /** Sets the value of "grid-column-end" */
-  void set gridColumnEnd(String value) {
+  set gridColumnEnd(String value) {
     setProperty('grid-column-end', value, '');
   }
 
@@ -3004,7 +2986,7 @@
     getPropertyValue('grid-column-start');
 
   /** Sets the value of "grid-column-start" */
-  void set gridColumnStart(String value) {
+  set gridColumnStart(String value) {
     setProperty('grid-column-start', value, '');
   }
 
@@ -3013,7 +2995,7 @@
     getPropertyValue('grid-row');
 
   /** Sets the value of "grid-row" */
-  void set gridRow(String value) {
+  set gridRow(String value) {
     setProperty('grid-row', value, '');
   }
 
@@ -3022,7 +3004,7 @@
     getPropertyValue('grid-row-end');
 
   /** Sets the value of "grid-row-end" */
-  void set gridRowEnd(String value) {
+  set gridRowEnd(String value) {
     setProperty('grid-row-end', value, '');
   }
 
@@ -3031,7 +3013,7 @@
     getPropertyValue('grid-row-start');
 
   /** Sets the value of "grid-row-start" */
-  void set gridRowStart(String value) {
+  set gridRowStart(String value) {
     setProperty('grid-row-start', value, '');
   }
 
@@ -3040,7 +3022,7 @@
     getPropertyValue('grid-template');
 
   /** Sets the value of "grid-template" */
-  void set gridTemplate(String value) {
+  set gridTemplate(String value) {
     setProperty('grid-template', value, '');
   }
 
@@ -3049,7 +3031,7 @@
     getPropertyValue('grid-template-areas');
 
   /** Sets the value of "grid-template-areas" */
-  void set gridTemplateAreas(String value) {
+  set gridTemplateAreas(String value) {
     setProperty('grid-template-areas', value, '');
   }
 
@@ -3058,7 +3040,7 @@
     getPropertyValue('grid-template-columns');
 
   /** Sets the value of "grid-template-columns" */
-  void set gridTemplateColumns(String value) {
+  set gridTemplateColumns(String value) {
     setProperty('grid-template-columns', value, '');
   }
 
@@ -3067,7 +3049,7 @@
     getPropertyValue('grid-template-rows');
 
   /** Sets the value of "grid-template-rows" */
-  void set gridTemplateRows(String value) {
+  set gridTemplateRows(String value) {
     setProperty('grid-template-rows', value, '');
   }
 
@@ -3076,7 +3058,7 @@
     getPropertyValue('height');
 
   /** Sets the value of "height" */
-  void set height(String value) {
+  set height(String value) {
     setProperty('height', value, '');
   }
 
@@ -3085,7 +3067,7 @@
     getPropertyValue('highlight');
 
   /** Sets the value of "highlight" */
-  void set highlight(String value) {
+  set highlight(String value) {
     setProperty('highlight', value, '');
   }
 
@@ -3094,7 +3076,7 @@
     getPropertyValue('hyphenate-character');
 
   /** Sets the value of "hyphenate-character" */
-  void set hyphenateCharacter(String value) {
+  set hyphenateCharacter(String value) {
     setProperty('hyphenate-character', value, '');
   }
 
@@ -3103,7 +3085,7 @@
     getPropertyValue('image-rendering');
 
   /** Sets the value of "image-rendering" */
-  void set imageRendering(String value) {
+  set imageRendering(String value) {
     setProperty('image-rendering', value, '');
   }
 
@@ -3112,7 +3094,7 @@
     getPropertyValue('isolation');
 
   /** Sets the value of "isolation" */
-  void set isolation(String value) {
+  set isolation(String value) {
     setProperty('isolation', value, '');
   }
 
@@ -3121,7 +3103,7 @@
     getPropertyValue('justify-content');
 
   /** Sets the value of "justify-content" */
-  void set justifyContent(String value) {
+  set justifyContent(String value) {
     setProperty('justify-content', value, '');
   }
 
@@ -3130,7 +3112,7 @@
     getPropertyValue('justify-self');
 
   /** Sets the value of "justify-self" */
-  void set justifySelf(String value) {
+  set justifySelf(String value) {
     setProperty('justify-self', value, '');
   }
 
@@ -3139,7 +3121,7 @@
     getPropertyValue('left');
 
   /** Sets the value of "left" */
-  void set left(String value) {
+  set left(String value) {
     setProperty('left', value, '');
   }
 
@@ -3148,7 +3130,7 @@
     getPropertyValue('letter-spacing');
 
   /** Sets the value of "letter-spacing" */
-  void set letterSpacing(String value) {
+  set letterSpacing(String value) {
     setProperty('letter-spacing', value, '');
   }
 
@@ -3157,7 +3139,7 @@
     getPropertyValue('line-box-contain');
 
   /** Sets the value of "line-box-contain" */
-  void set lineBoxContain(String value) {
+  set lineBoxContain(String value) {
     setProperty('line-box-contain', value, '');
   }
 
@@ -3166,7 +3148,7 @@
     getPropertyValue('line-break');
 
   /** Sets the value of "line-break" */
-  void set lineBreak(String value) {
+  set lineBreak(String value) {
     setProperty('line-break', value, '');
   }
 
@@ -3175,7 +3157,7 @@
     getPropertyValue('line-clamp');
 
   /** Sets the value of "line-clamp" */
-  void set lineClamp(String value) {
+  set lineClamp(String value) {
     setProperty('line-clamp', value, '');
   }
 
@@ -3184,7 +3166,7 @@
     getPropertyValue('line-height');
 
   /** Sets the value of "line-height" */
-  void set lineHeight(String value) {
+  set lineHeight(String value) {
     setProperty('line-height', value, '');
   }
 
@@ -3193,7 +3175,7 @@
     getPropertyValue('list-style');
 
   /** Sets the value of "list-style" */
-  void set listStyle(String value) {
+  set listStyle(String value) {
     setProperty('list-style', value, '');
   }
 
@@ -3202,7 +3184,7 @@
     getPropertyValue('list-style-image');
 
   /** Sets the value of "list-style-image" */
-  void set listStyleImage(String value) {
+  set listStyleImage(String value) {
     setProperty('list-style-image', value, '');
   }
 
@@ -3211,7 +3193,7 @@
     getPropertyValue('list-style-position');
 
   /** Sets the value of "list-style-position" */
-  void set listStylePosition(String value) {
+  set listStylePosition(String value) {
     setProperty('list-style-position', value, '');
   }
 
@@ -3220,7 +3202,7 @@
     getPropertyValue('list-style-type');
 
   /** Sets the value of "list-style-type" */
-  void set listStyleType(String value) {
+  set listStyleType(String value) {
     setProperty('list-style-type', value, '');
   }
 
@@ -3229,7 +3211,7 @@
     getPropertyValue('locale');
 
   /** Sets the value of "locale" */
-  void set locale(String value) {
+  set locale(String value) {
     setProperty('locale', value, '');
   }
 
@@ -3238,7 +3220,7 @@
     getPropertyValue('logical-height');
 
   /** Sets the value of "logical-height" */
-  void set logicalHeight(String value) {
+  set logicalHeight(String value) {
     setProperty('logical-height', value, '');
   }
 
@@ -3247,7 +3229,7 @@
     getPropertyValue('logical-width');
 
   /** Sets the value of "logical-width" */
-  void set logicalWidth(String value) {
+  set logicalWidth(String value) {
     setProperty('logical-width', value, '');
   }
 
@@ -3256,7 +3238,7 @@
     getPropertyValue('margin');
 
   /** Sets the value of "margin" */
-  void set margin(String value) {
+  set margin(String value) {
     setProperty('margin', value, '');
   }
 
@@ -3265,7 +3247,7 @@
     getPropertyValue('margin-after');
 
   /** Sets the value of "margin-after" */
-  void set marginAfter(String value) {
+  set marginAfter(String value) {
     setProperty('margin-after', value, '');
   }
 
@@ -3274,7 +3256,7 @@
     getPropertyValue('margin-after-collapse');
 
   /** Sets the value of "margin-after-collapse" */
-  void set marginAfterCollapse(String value) {
+  set marginAfterCollapse(String value) {
     setProperty('margin-after-collapse', value, '');
   }
 
@@ -3283,7 +3265,7 @@
     getPropertyValue('margin-before');
 
   /** Sets the value of "margin-before" */
-  void set marginBefore(String value) {
+  set marginBefore(String value) {
     setProperty('margin-before', value, '');
   }
 
@@ -3292,7 +3274,7 @@
     getPropertyValue('margin-before-collapse');
 
   /** Sets the value of "margin-before-collapse" */
-  void set marginBeforeCollapse(String value) {
+  set marginBeforeCollapse(String value) {
     setProperty('margin-before-collapse', value, '');
   }
 
@@ -3301,7 +3283,7 @@
     getPropertyValue('margin-bottom');
 
   /** Sets the value of "margin-bottom" */
-  void set marginBottom(String value) {
+  set marginBottom(String value) {
     setProperty('margin-bottom', value, '');
   }
 
@@ -3310,7 +3292,7 @@
     getPropertyValue('margin-bottom-collapse');
 
   /** Sets the value of "margin-bottom-collapse" */
-  void set marginBottomCollapse(String value) {
+  set marginBottomCollapse(String value) {
     setProperty('margin-bottom-collapse', value, '');
   }
 
@@ -3319,7 +3301,7 @@
     getPropertyValue('margin-collapse');
 
   /** Sets the value of "margin-collapse" */
-  void set marginCollapse(String value) {
+  set marginCollapse(String value) {
     setProperty('margin-collapse', value, '');
   }
 
@@ -3328,7 +3310,7 @@
     getPropertyValue('margin-end');
 
   /** Sets the value of "margin-end" */
-  void set marginEnd(String value) {
+  set marginEnd(String value) {
     setProperty('margin-end', value, '');
   }
 
@@ -3337,7 +3319,7 @@
     getPropertyValue('margin-left');
 
   /** Sets the value of "margin-left" */
-  void set marginLeft(String value) {
+  set marginLeft(String value) {
     setProperty('margin-left', value, '');
   }
 
@@ -3346,7 +3328,7 @@
     getPropertyValue('margin-right');
 
   /** Sets the value of "margin-right" */
-  void set marginRight(String value) {
+  set marginRight(String value) {
     setProperty('margin-right', value, '');
   }
 
@@ -3355,7 +3337,7 @@
     getPropertyValue('margin-start');
 
   /** Sets the value of "margin-start" */
-  void set marginStart(String value) {
+  set marginStart(String value) {
     setProperty('margin-start', value, '');
   }
 
@@ -3364,7 +3346,7 @@
     getPropertyValue('margin-top');
 
   /** Sets the value of "margin-top" */
-  void set marginTop(String value) {
+  set marginTop(String value) {
     setProperty('margin-top', value, '');
   }
 
@@ -3373,7 +3355,7 @@
     getPropertyValue('margin-top-collapse');
 
   /** Sets the value of "margin-top-collapse" */
-  void set marginTopCollapse(String value) {
+  set marginTopCollapse(String value) {
     setProperty('margin-top-collapse', value, '');
   }
 
@@ -3382,7 +3364,7 @@
     getPropertyValue('mask');
 
   /** Sets the value of "mask" */
-  void set mask(String value) {
+  set mask(String value) {
     setProperty('mask', value, '');
   }
 
@@ -3391,7 +3373,7 @@
     getPropertyValue('mask-box-image');
 
   /** Sets the value of "mask-box-image" */
-  void set maskBoxImage(String value) {
+  set maskBoxImage(String value) {
     setProperty('mask-box-image', value, '');
   }
 
@@ -3400,7 +3382,7 @@
     getPropertyValue('mask-box-image-outset');
 
   /** Sets the value of "mask-box-image-outset" */
-  void set maskBoxImageOutset(String value) {
+  set maskBoxImageOutset(String value) {
     setProperty('mask-box-image-outset', value, '');
   }
 
@@ -3409,7 +3391,7 @@
     getPropertyValue('mask-box-image-repeat');
 
   /** Sets the value of "mask-box-image-repeat" */
-  void set maskBoxImageRepeat(String value) {
+  set maskBoxImageRepeat(String value) {
     setProperty('mask-box-image-repeat', value, '');
   }
 
@@ -3418,7 +3400,7 @@
     getPropertyValue('mask-box-image-slice');
 
   /** Sets the value of "mask-box-image-slice" */
-  void set maskBoxImageSlice(String value) {
+  set maskBoxImageSlice(String value) {
     setProperty('mask-box-image-slice', value, '');
   }
 
@@ -3427,7 +3409,7 @@
     getPropertyValue('mask-box-image-source');
 
   /** Sets the value of "mask-box-image-source" */
-  void set maskBoxImageSource(String value) {
+  set maskBoxImageSource(String value) {
     setProperty('mask-box-image-source', value, '');
   }
 
@@ -3436,7 +3418,7 @@
     getPropertyValue('mask-box-image-width');
 
   /** Sets the value of "mask-box-image-width" */
-  void set maskBoxImageWidth(String value) {
+  set maskBoxImageWidth(String value) {
     setProperty('mask-box-image-width', value, '');
   }
 
@@ -3445,7 +3427,7 @@
     getPropertyValue('mask-clip');
 
   /** Sets the value of "mask-clip" */
-  void set maskClip(String value) {
+  set maskClip(String value) {
     setProperty('mask-clip', value, '');
   }
 
@@ -3454,7 +3436,7 @@
     getPropertyValue('mask-composite');
 
   /** Sets the value of "mask-composite" */
-  void set maskComposite(String value) {
+  set maskComposite(String value) {
     setProperty('mask-composite', value, '');
   }
 
@@ -3463,7 +3445,7 @@
     getPropertyValue('mask-image');
 
   /** Sets the value of "mask-image" */
-  void set maskImage(String value) {
+  set maskImage(String value) {
     setProperty('mask-image', value, '');
   }
 
@@ -3472,7 +3454,7 @@
     getPropertyValue('mask-origin');
 
   /** Sets the value of "mask-origin" */
-  void set maskOrigin(String value) {
+  set maskOrigin(String value) {
     setProperty('mask-origin', value, '');
   }
 
@@ -3481,7 +3463,7 @@
     getPropertyValue('mask-position');
 
   /** Sets the value of "mask-position" */
-  void set maskPosition(String value) {
+  set maskPosition(String value) {
     setProperty('mask-position', value, '');
   }
 
@@ -3490,7 +3472,7 @@
     getPropertyValue('mask-position-x');
 
   /** Sets the value of "mask-position-x" */
-  void set maskPositionX(String value) {
+  set maskPositionX(String value) {
     setProperty('mask-position-x', value, '');
   }
 
@@ -3499,7 +3481,7 @@
     getPropertyValue('mask-position-y');
 
   /** Sets the value of "mask-position-y" */
-  void set maskPositionY(String value) {
+  set maskPositionY(String value) {
     setProperty('mask-position-y', value, '');
   }
 
@@ -3508,7 +3490,7 @@
     getPropertyValue('mask-repeat');
 
   /** Sets the value of "mask-repeat" */
-  void set maskRepeat(String value) {
+  set maskRepeat(String value) {
     setProperty('mask-repeat', value, '');
   }
 
@@ -3517,7 +3499,7 @@
     getPropertyValue('mask-repeat-x');
 
   /** Sets the value of "mask-repeat-x" */
-  void set maskRepeatX(String value) {
+  set maskRepeatX(String value) {
     setProperty('mask-repeat-x', value, '');
   }
 
@@ -3526,7 +3508,7 @@
     getPropertyValue('mask-repeat-y');
 
   /** Sets the value of "mask-repeat-y" */
-  void set maskRepeatY(String value) {
+  set maskRepeatY(String value) {
     setProperty('mask-repeat-y', value, '');
   }
 
@@ -3535,7 +3517,7 @@
     getPropertyValue('mask-size');
 
   /** Sets the value of "mask-size" */
-  void set maskSize(String value) {
+  set maskSize(String value) {
     setProperty('mask-size', value, '');
   }
 
@@ -3544,7 +3526,7 @@
     getPropertyValue('mask-source-type');
 
   /** Sets the value of "mask-source-type" */
-  void set maskSourceType(String value) {
+  set maskSourceType(String value) {
     setProperty('mask-source-type', value, '');
   }
 
@@ -3553,7 +3535,7 @@
     getPropertyValue('max-height');
 
   /** Sets the value of "max-height" */
-  void set maxHeight(String value) {
+  set maxHeight(String value) {
     setProperty('max-height', value, '');
   }
 
@@ -3562,7 +3544,7 @@
     getPropertyValue('max-logical-height');
 
   /** Sets the value of "max-logical-height" */
-  void set maxLogicalHeight(String value) {
+  set maxLogicalHeight(String value) {
     setProperty('max-logical-height', value, '');
   }
 
@@ -3571,7 +3553,7 @@
     getPropertyValue('max-logical-width');
 
   /** Sets the value of "max-logical-width" */
-  void set maxLogicalWidth(String value) {
+  set maxLogicalWidth(String value) {
     setProperty('max-logical-width', value, '');
   }
 
@@ -3580,7 +3562,7 @@
     getPropertyValue('max-width');
 
   /** Sets the value of "max-width" */
-  void set maxWidth(String value) {
+  set maxWidth(String value) {
     setProperty('max-width', value, '');
   }
 
@@ -3589,7 +3571,7 @@
     getPropertyValue('max-zoom');
 
   /** Sets the value of "max-zoom" */
-  void set maxZoom(String value) {
+  set maxZoom(String value) {
     setProperty('max-zoom', value, '');
   }
 
@@ -3598,7 +3580,7 @@
     getPropertyValue('min-height');
 
   /** Sets the value of "min-height" */
-  void set minHeight(String value) {
+  set minHeight(String value) {
     setProperty('min-height', value, '');
   }
 
@@ -3607,7 +3589,7 @@
     getPropertyValue('min-logical-height');
 
   /** Sets the value of "min-logical-height" */
-  void set minLogicalHeight(String value) {
+  set minLogicalHeight(String value) {
     setProperty('min-logical-height', value, '');
   }
 
@@ -3616,7 +3598,7 @@
     getPropertyValue('min-logical-width');
 
   /** Sets the value of "min-logical-width" */
-  void set minLogicalWidth(String value) {
+  set minLogicalWidth(String value) {
     setProperty('min-logical-width', value, '');
   }
 
@@ -3625,7 +3607,7 @@
     getPropertyValue('min-width');
 
   /** Sets the value of "min-width" */
-  void set minWidth(String value) {
+  set minWidth(String value) {
     setProperty('min-width', value, '');
   }
 
@@ -3634,7 +3616,7 @@
     getPropertyValue('min-zoom');
 
   /** Sets the value of "min-zoom" */
-  void set minZoom(String value) {
+  set minZoom(String value) {
     setProperty('min-zoom', value, '');
   }
 
@@ -3643,7 +3625,7 @@
     getPropertyValue('mix-blend-mode');
 
   /** Sets the value of "mix-blend-mode" */
-  void set mixBlendMode(String value) {
+  set mixBlendMode(String value) {
     setProperty('mix-blend-mode', value, '');
   }
 
@@ -3652,7 +3634,7 @@
     getPropertyValue('object-fit');
 
   /** Sets the value of "object-fit" */
-  void set objectFit(String value) {
+  set objectFit(String value) {
     setProperty('object-fit', value, '');
   }
 
@@ -3661,7 +3643,7 @@
     getPropertyValue('object-position');
 
   /** Sets the value of "object-position" */
-  void set objectPosition(String value) {
+  set objectPosition(String value) {
     setProperty('object-position', value, '');
   }
 
@@ -3670,7 +3652,7 @@
     getPropertyValue('opacity');
 
   /** Sets the value of "opacity" */
-  void set opacity(String value) {
+  set opacity(String value) {
     setProperty('opacity', value, '');
   }
 
@@ -3679,7 +3661,7 @@
     getPropertyValue('order');
 
   /** Sets the value of "order" */
-  void set order(String value) {
+  set order(String value) {
     setProperty('order', value, '');
   }
 
@@ -3688,7 +3670,7 @@
     getPropertyValue('orientation');
 
   /** Sets the value of "orientation" */
-  void set orientation(String value) {
+  set orientation(String value) {
     setProperty('orientation', value, '');
   }
 
@@ -3697,7 +3679,7 @@
     getPropertyValue('orphans');
 
   /** Sets the value of "orphans" */
-  void set orphans(String value) {
+  set orphans(String value) {
     setProperty('orphans', value, '');
   }
 
@@ -3706,7 +3688,7 @@
     getPropertyValue('outline');
 
   /** Sets the value of "outline" */
-  void set outline(String value) {
+  set outline(String value) {
     setProperty('outline', value, '');
   }
 
@@ -3715,7 +3697,7 @@
     getPropertyValue('outline-color');
 
   /** Sets the value of "outline-color" */
-  void set outlineColor(String value) {
+  set outlineColor(String value) {
     setProperty('outline-color', value, '');
   }
 
@@ -3724,7 +3706,7 @@
     getPropertyValue('outline-offset');
 
   /** Sets the value of "outline-offset" */
-  void set outlineOffset(String value) {
+  set outlineOffset(String value) {
     setProperty('outline-offset', value, '');
   }
 
@@ -3733,7 +3715,7 @@
     getPropertyValue('outline-style');
 
   /** Sets the value of "outline-style" */
-  void set outlineStyle(String value) {
+  set outlineStyle(String value) {
     setProperty('outline-style', value, '');
   }
 
@@ -3742,7 +3724,7 @@
     getPropertyValue('outline-width');
 
   /** Sets the value of "outline-width" */
-  void set outlineWidth(String value) {
+  set outlineWidth(String value) {
     setProperty('outline-width', value, '');
   }
 
@@ -3751,7 +3733,7 @@
     getPropertyValue('overflow');
 
   /** Sets the value of "overflow" */
-  void set overflow(String value) {
+  set overflow(String value) {
     setProperty('overflow', value, '');
   }
 
@@ -3760,7 +3742,7 @@
     getPropertyValue('overflow-wrap');
 
   /** Sets the value of "overflow-wrap" */
-  void set overflowWrap(String value) {
+  set overflowWrap(String value) {
     setProperty('overflow-wrap', value, '');
   }
 
@@ -3769,7 +3751,7 @@
     getPropertyValue('overflow-x');
 
   /** Sets the value of "overflow-x" */
-  void set overflowX(String value) {
+  set overflowX(String value) {
     setProperty('overflow-x', value, '');
   }
 
@@ -3778,7 +3760,7 @@
     getPropertyValue('overflow-y');
 
   /** Sets the value of "overflow-y" */
-  void set overflowY(String value) {
+  set overflowY(String value) {
     setProperty('overflow-y', value, '');
   }
 
@@ -3787,7 +3769,7 @@
     getPropertyValue('padding');
 
   /** Sets the value of "padding" */
-  void set padding(String value) {
+  set padding(String value) {
     setProperty('padding', value, '');
   }
 
@@ -3796,7 +3778,7 @@
     getPropertyValue('padding-after');
 
   /** Sets the value of "padding-after" */
-  void set paddingAfter(String value) {
+  set paddingAfter(String value) {
     setProperty('padding-after', value, '');
   }
 
@@ -3805,7 +3787,7 @@
     getPropertyValue('padding-before');
 
   /** Sets the value of "padding-before" */
-  void set paddingBefore(String value) {
+  set paddingBefore(String value) {
     setProperty('padding-before', value, '');
   }
 
@@ -3814,7 +3796,7 @@
     getPropertyValue('padding-bottom');
 
   /** Sets the value of "padding-bottom" */
-  void set paddingBottom(String value) {
+  set paddingBottom(String value) {
     setProperty('padding-bottom', value, '');
   }
 
@@ -3823,7 +3805,7 @@
     getPropertyValue('padding-end');
 
   /** Sets the value of "padding-end" */
-  void set paddingEnd(String value) {
+  set paddingEnd(String value) {
     setProperty('padding-end', value, '');
   }
 
@@ -3832,7 +3814,7 @@
     getPropertyValue('padding-left');
 
   /** Sets the value of "padding-left" */
-  void set paddingLeft(String value) {
+  set paddingLeft(String value) {
     setProperty('padding-left', value, '');
   }
 
@@ -3841,7 +3823,7 @@
     getPropertyValue('padding-right');
 
   /** Sets the value of "padding-right" */
-  void set paddingRight(String value) {
+  set paddingRight(String value) {
     setProperty('padding-right', value, '');
   }
 
@@ -3850,7 +3832,7 @@
     getPropertyValue('padding-start');
 
   /** Sets the value of "padding-start" */
-  void set paddingStart(String value) {
+  set paddingStart(String value) {
     setProperty('padding-start', value, '');
   }
 
@@ -3859,7 +3841,7 @@
     getPropertyValue('padding-top');
 
   /** Sets the value of "padding-top" */
-  void set paddingTop(String value) {
+  set paddingTop(String value) {
     setProperty('padding-top', value, '');
   }
 
@@ -3868,7 +3850,7 @@
     getPropertyValue('page');
 
   /** Sets the value of "page" */
-  void set page(String value) {
+  set page(String value) {
     setProperty('page', value, '');
   }
 
@@ -3877,7 +3859,7 @@
     getPropertyValue('page-break-after');
 
   /** Sets the value of "page-break-after" */
-  void set pageBreakAfter(String value) {
+  set pageBreakAfter(String value) {
     setProperty('page-break-after', value, '');
   }
 
@@ -3886,7 +3868,7 @@
     getPropertyValue('page-break-before');
 
   /** Sets the value of "page-break-before" */
-  void set pageBreakBefore(String value) {
+  set pageBreakBefore(String value) {
     setProperty('page-break-before', value, '');
   }
 
@@ -3895,7 +3877,7 @@
     getPropertyValue('page-break-inside');
 
   /** Sets the value of "page-break-inside" */
-  void set pageBreakInside(String value) {
+  set pageBreakInside(String value) {
     setProperty('page-break-inside', value, '');
   }
 
@@ -3904,7 +3886,7 @@
     getPropertyValue('perspective');
 
   /** Sets the value of "perspective" */
-  void set perspective(String value) {
+  set perspective(String value) {
     setProperty('perspective', value, '');
   }
 
@@ -3913,7 +3895,7 @@
     getPropertyValue('perspective-origin');
 
   /** Sets the value of "perspective-origin" */
-  void set perspectiveOrigin(String value) {
+  set perspectiveOrigin(String value) {
     setProperty('perspective-origin', value, '');
   }
 
@@ -3922,7 +3904,7 @@
     getPropertyValue('perspective-origin-x');
 
   /** Sets the value of "perspective-origin-x" */
-  void set perspectiveOriginX(String value) {
+  set perspectiveOriginX(String value) {
     setProperty('perspective-origin-x', value, '');
   }
 
@@ -3931,7 +3913,7 @@
     getPropertyValue('perspective-origin-y');
 
   /** Sets the value of "perspective-origin-y" */
-  void set perspectiveOriginY(String value) {
+  set perspectiveOriginY(String value) {
     setProperty('perspective-origin-y', value, '');
   }
 
@@ -3940,7 +3922,7 @@
     getPropertyValue('pointer-events');
 
   /** Sets the value of "pointer-events" */
-  void set pointerEvents(String value) {
+  set pointerEvents(String value) {
     setProperty('pointer-events', value, '');
   }
 
@@ -3949,7 +3931,7 @@
     getPropertyValue('position');
 
   /** Sets the value of "position" */
-  void set position(String value) {
+  set position(String value) {
     setProperty('position', value, '');
   }
 
@@ -3958,7 +3940,7 @@
     getPropertyValue('print-color-adjust');
 
   /** Sets the value of "print-color-adjust" */
-  void set printColorAdjust(String value) {
+  set printColorAdjust(String value) {
     setProperty('print-color-adjust', value, '');
   }
 
@@ -3967,7 +3949,7 @@
     getPropertyValue('quotes');
 
   /** Sets the value of "quotes" */
-  void set quotes(String value) {
+  set quotes(String value) {
     setProperty('quotes', value, '');
   }
 
@@ -3976,7 +3958,7 @@
     getPropertyValue('resize');
 
   /** Sets the value of "resize" */
-  void set resize(String value) {
+  set resize(String value) {
     setProperty('resize', value, '');
   }
 
@@ -3985,7 +3967,7 @@
     getPropertyValue('right');
 
   /** Sets the value of "right" */
-  void set right(String value) {
+  set right(String value) {
     setProperty('right', value, '');
   }
 
@@ -3994,7 +3976,7 @@
     getPropertyValue('rtl-ordering');
 
   /** Sets the value of "rtl-ordering" */
-  void set rtlOrdering(String value) {
+  set rtlOrdering(String value) {
     setProperty('rtl-ordering', value, '');
   }
 
@@ -4003,7 +3985,7 @@
     getPropertyValue('ruby-position');
 
   /** Sets the value of "ruby-position" */
-  void set rubyPosition(String value) {
+  set rubyPosition(String value) {
     setProperty('ruby-position', value, '');
   }
 
@@ -4012,7 +3994,7 @@
     getPropertyValue('scroll-behavior');
 
   /** Sets the value of "scroll-behavior" */
-  void set scrollBehavior(String value) {
+  set scrollBehavior(String value) {
     setProperty('scroll-behavior', value, '');
   }
 
@@ -4021,7 +4003,7 @@
     getPropertyValue('shape-image-threshold');
 
   /** Sets the value of "shape-image-threshold" */
-  void set shapeImageThreshold(String value) {
+  set shapeImageThreshold(String value) {
     setProperty('shape-image-threshold', value, '');
   }
 
@@ -4030,7 +4012,7 @@
     getPropertyValue('shape-margin');
 
   /** Sets the value of "shape-margin" */
-  void set shapeMargin(String value) {
+  set shapeMargin(String value) {
     setProperty('shape-margin', value, '');
   }
 
@@ -4039,7 +4021,7 @@
     getPropertyValue('shape-outside');
 
   /** Sets the value of "shape-outside" */
-  void set shapeOutside(String value) {
+  set shapeOutside(String value) {
     setProperty('shape-outside', value, '');
   }
 
@@ -4048,7 +4030,7 @@
     getPropertyValue('size');
 
   /** Sets the value of "size" */
-  void set size(String value) {
+  set size(String value) {
     setProperty('size', value, '');
   }
 
@@ -4057,7 +4039,7 @@
     getPropertyValue('speak');
 
   /** Sets the value of "speak" */
-  void set speak(String value) {
+  set speak(String value) {
     setProperty('speak', value, '');
   }
 
@@ -4066,7 +4048,7 @@
     getPropertyValue('src');
 
   /** Sets the value of "src" */
-  void set src(String value) {
+  set src(String value) {
     setProperty('src', value, '');
   }
 
@@ -4075,7 +4057,7 @@
     getPropertyValue('tab-size');
 
   /** Sets the value of "tab-size" */
-  void set tabSize(String value) {
+  set tabSize(String value) {
     setProperty('tab-size', value, '');
   }
 
@@ -4084,7 +4066,7 @@
     getPropertyValue('table-layout');
 
   /** Sets the value of "table-layout" */
-  void set tableLayout(String value) {
+  set tableLayout(String value) {
     setProperty('table-layout', value, '');
   }
 
@@ -4093,7 +4075,7 @@
     getPropertyValue('tap-highlight-color');
 
   /** Sets the value of "tap-highlight-color" */
-  void set tapHighlightColor(String value) {
+  set tapHighlightColor(String value) {
     setProperty('tap-highlight-color', value, '');
   }
 
@@ -4102,7 +4084,7 @@
     getPropertyValue('text-align');
 
   /** Sets the value of "text-align" */
-  void set textAlign(String value) {
+  set textAlign(String value) {
     setProperty('text-align', value, '');
   }
 
@@ -4111,7 +4093,7 @@
     getPropertyValue('text-align-last');
 
   /** Sets the value of "text-align-last" */
-  void set textAlignLast(String value) {
+  set textAlignLast(String value) {
     setProperty('text-align-last', value, '');
   }
 
@@ -4120,7 +4102,7 @@
     getPropertyValue('text-combine');
 
   /** Sets the value of "text-combine" */
-  void set textCombine(String value) {
+  set textCombine(String value) {
     setProperty('text-combine', value, '');
   }
 
@@ -4129,7 +4111,7 @@
     getPropertyValue('text-decoration');
 
   /** Sets the value of "text-decoration" */
-  void set textDecoration(String value) {
+  set textDecoration(String value) {
     setProperty('text-decoration', value, '');
   }
 
@@ -4138,7 +4120,7 @@
     getPropertyValue('text-decoration-color');
 
   /** Sets the value of "text-decoration-color" */
-  void set textDecorationColor(String value) {
+  set textDecorationColor(String value) {
     setProperty('text-decoration-color', value, '');
   }
 
@@ -4147,7 +4129,7 @@
     getPropertyValue('text-decoration-line');
 
   /** Sets the value of "text-decoration-line" */
-  void set textDecorationLine(String value) {
+  set textDecorationLine(String value) {
     setProperty('text-decoration-line', value, '');
   }
 
@@ -4156,7 +4138,7 @@
     getPropertyValue('text-decoration-style');
 
   /** Sets the value of "text-decoration-style" */
-  void set textDecorationStyle(String value) {
+  set textDecorationStyle(String value) {
     setProperty('text-decoration-style', value, '');
   }
 
@@ -4165,7 +4147,7 @@
     getPropertyValue('text-decorations-in-effect');
 
   /** Sets the value of "text-decorations-in-effect" */
-  void set textDecorationsInEffect(String value) {
+  set textDecorationsInEffect(String value) {
     setProperty('text-decorations-in-effect', value, '');
   }
 
@@ -4174,7 +4156,7 @@
     getPropertyValue('text-emphasis');
 
   /** Sets the value of "text-emphasis" */
-  void set textEmphasis(String value) {
+  set textEmphasis(String value) {
     setProperty('text-emphasis', value, '');
   }
 
@@ -4183,7 +4165,7 @@
     getPropertyValue('text-emphasis-color');
 
   /** Sets the value of "text-emphasis-color" */
-  void set textEmphasisColor(String value) {
+  set textEmphasisColor(String value) {
     setProperty('text-emphasis-color', value, '');
   }
 
@@ -4192,7 +4174,7 @@
     getPropertyValue('text-emphasis-position');
 
   /** Sets the value of "text-emphasis-position" */
-  void set textEmphasisPosition(String value) {
+  set textEmphasisPosition(String value) {
     setProperty('text-emphasis-position', value, '');
   }
 
@@ -4201,7 +4183,7 @@
     getPropertyValue('text-emphasis-style');
 
   /** Sets the value of "text-emphasis-style" */
-  void set textEmphasisStyle(String value) {
+  set textEmphasisStyle(String value) {
     setProperty('text-emphasis-style', value, '');
   }
 
@@ -4210,7 +4192,7 @@
     getPropertyValue('text-fill-color');
 
   /** Sets the value of "text-fill-color" */
-  void set textFillColor(String value) {
+  set textFillColor(String value) {
     setProperty('text-fill-color', value, '');
   }
 
@@ -4219,7 +4201,7 @@
     getPropertyValue('text-indent');
 
   /** Sets the value of "text-indent" */
-  void set textIndent(String value) {
+  set textIndent(String value) {
     setProperty('text-indent', value, '');
   }
 
@@ -4228,7 +4210,7 @@
     getPropertyValue('text-justify');
 
   /** Sets the value of "text-justify" */
-  void set textJustify(String value) {
+  set textJustify(String value) {
     setProperty('text-justify', value, '');
   }
 
@@ -4237,7 +4219,7 @@
     getPropertyValue('text-line-through-color');
 
   /** Sets the value of "text-line-through-color" */
-  void set textLineThroughColor(String value) {
+  set textLineThroughColor(String value) {
     setProperty('text-line-through-color', value, '');
   }
 
@@ -4246,7 +4228,7 @@
     getPropertyValue('text-line-through-mode');
 
   /** Sets the value of "text-line-through-mode" */
-  void set textLineThroughMode(String value) {
+  set textLineThroughMode(String value) {
     setProperty('text-line-through-mode', value, '');
   }
 
@@ -4255,7 +4237,7 @@
     getPropertyValue('text-line-through-style');
 
   /** Sets the value of "text-line-through-style" */
-  void set textLineThroughStyle(String value) {
+  set textLineThroughStyle(String value) {
     setProperty('text-line-through-style', value, '');
   }
 
@@ -4264,7 +4246,7 @@
     getPropertyValue('text-line-through-width');
 
   /** Sets the value of "text-line-through-width" */
-  void set textLineThroughWidth(String value) {
+  set textLineThroughWidth(String value) {
     setProperty('text-line-through-width', value, '');
   }
 
@@ -4273,7 +4255,7 @@
     getPropertyValue('text-orientation');
 
   /** Sets the value of "text-orientation" */
-  void set textOrientation(String value) {
+  set textOrientation(String value) {
     setProperty('text-orientation', value, '');
   }
 
@@ -4282,7 +4264,7 @@
     getPropertyValue('text-overflow');
 
   /** Sets the value of "text-overflow" */
-  void set textOverflow(String value) {
+  set textOverflow(String value) {
     setProperty('text-overflow', value, '');
   }
 
@@ -4291,7 +4273,7 @@
     getPropertyValue('text-overline-color');
 
   /** Sets the value of "text-overline-color" */
-  void set textOverlineColor(String value) {
+  set textOverlineColor(String value) {
     setProperty('text-overline-color', value, '');
   }
 
@@ -4300,7 +4282,7 @@
     getPropertyValue('text-overline-mode');
 
   /** Sets the value of "text-overline-mode" */
-  void set textOverlineMode(String value) {
+  set textOverlineMode(String value) {
     setProperty('text-overline-mode', value, '');
   }
 
@@ -4309,7 +4291,7 @@
     getPropertyValue('text-overline-style');
 
   /** Sets the value of "text-overline-style" */
-  void set textOverlineStyle(String value) {
+  set textOverlineStyle(String value) {
     setProperty('text-overline-style', value, '');
   }
 
@@ -4318,7 +4300,7 @@
     getPropertyValue('text-overline-width');
 
   /** Sets the value of "text-overline-width" */
-  void set textOverlineWidth(String value) {
+  set textOverlineWidth(String value) {
     setProperty('text-overline-width', value, '');
   }
 
@@ -4327,7 +4309,7 @@
     getPropertyValue('text-rendering');
 
   /** Sets the value of "text-rendering" */
-  void set textRendering(String value) {
+  set textRendering(String value) {
     setProperty('text-rendering', value, '');
   }
 
@@ -4336,7 +4318,7 @@
     getPropertyValue('text-security');
 
   /** Sets the value of "text-security" */
-  void set textSecurity(String value) {
+  set textSecurity(String value) {
     setProperty('text-security', value, '');
   }
 
@@ -4345,7 +4327,7 @@
     getPropertyValue('text-shadow');
 
   /** Sets the value of "text-shadow" */
-  void set textShadow(String value) {
+  set textShadow(String value) {
     setProperty('text-shadow', value, '');
   }
 
@@ -4354,7 +4336,7 @@
     getPropertyValue('text-stroke');
 
   /** Sets the value of "text-stroke" */
-  void set textStroke(String value) {
+  set textStroke(String value) {
     setProperty('text-stroke', value, '');
   }
 
@@ -4363,7 +4345,7 @@
     getPropertyValue('text-stroke-color');
 
   /** Sets the value of "text-stroke-color" */
-  void set textStrokeColor(String value) {
+  set textStrokeColor(String value) {
     setProperty('text-stroke-color', value, '');
   }
 
@@ -4372,7 +4354,7 @@
     getPropertyValue('text-stroke-width');
 
   /** Sets the value of "text-stroke-width" */
-  void set textStrokeWidth(String value) {
+  set textStrokeWidth(String value) {
     setProperty('text-stroke-width', value, '');
   }
 
@@ -4381,7 +4363,7 @@
     getPropertyValue('text-transform');
 
   /** Sets the value of "text-transform" */
-  void set textTransform(String value) {
+  set textTransform(String value) {
     setProperty('text-transform', value, '');
   }
 
@@ -4390,7 +4372,7 @@
     getPropertyValue('text-underline-color');
 
   /** Sets the value of "text-underline-color" */
-  void set textUnderlineColor(String value) {
+  set textUnderlineColor(String value) {
     setProperty('text-underline-color', value, '');
   }
 
@@ -4399,7 +4381,7 @@
     getPropertyValue('text-underline-mode');
 
   /** Sets the value of "text-underline-mode" */
-  void set textUnderlineMode(String value) {
+  set textUnderlineMode(String value) {
     setProperty('text-underline-mode', value, '');
   }
 
@@ -4408,7 +4390,7 @@
     getPropertyValue('text-underline-position');
 
   /** Sets the value of "text-underline-position" */
-  void set textUnderlinePosition(String value) {
+  set textUnderlinePosition(String value) {
     setProperty('text-underline-position', value, '');
   }
 
@@ -4417,7 +4399,7 @@
     getPropertyValue('text-underline-style');
 
   /** Sets the value of "text-underline-style" */
-  void set textUnderlineStyle(String value) {
+  set textUnderlineStyle(String value) {
     setProperty('text-underline-style', value, '');
   }
 
@@ -4426,7 +4408,7 @@
     getPropertyValue('text-underline-width');
 
   /** Sets the value of "text-underline-width" */
-  void set textUnderlineWidth(String value) {
+  set textUnderlineWidth(String value) {
     setProperty('text-underline-width', value, '');
   }
 
@@ -4435,7 +4417,7 @@
     getPropertyValue('top');
 
   /** Sets the value of "top" */
-  void set top(String value) {
+  set top(String value) {
     setProperty('top', value, '');
   }
 
@@ -4444,7 +4426,7 @@
     getPropertyValue('touch-action');
 
   /** Sets the value of "touch-action" */
-  void set touchAction(String value) {
+  set touchAction(String value) {
     setProperty('touch-action', value, '');
   }
 
@@ -4453,7 +4435,7 @@
     getPropertyValue('touch-action-delay');
 
   /** Sets the value of "touch-action-delay" */
-  void set touchActionDelay(String value) {
+  set touchActionDelay(String value) {
     setProperty('touch-action-delay', value, '');
   }
 
@@ -4462,7 +4444,7 @@
     getPropertyValue('transform');
 
   /** Sets the value of "transform" */
-  void set transform(String value) {
+  set transform(String value) {
     setProperty('transform', value, '');
   }
 
@@ -4471,7 +4453,7 @@
     getPropertyValue('transform-origin');
 
   /** Sets the value of "transform-origin" */
-  void set transformOrigin(String value) {
+  set transformOrigin(String value) {
     setProperty('transform-origin', value, '');
   }
 
@@ -4480,7 +4462,7 @@
     getPropertyValue('transform-origin-x');
 
   /** Sets the value of "transform-origin-x" */
-  void set transformOriginX(String value) {
+  set transformOriginX(String value) {
     setProperty('transform-origin-x', value, '');
   }
 
@@ -4489,7 +4471,7 @@
     getPropertyValue('transform-origin-y');
 
   /** Sets the value of "transform-origin-y" */
-  void set transformOriginY(String value) {
+  set transformOriginY(String value) {
     setProperty('transform-origin-y', value, '');
   }
 
@@ -4498,7 +4480,7 @@
     getPropertyValue('transform-origin-z');
 
   /** Sets the value of "transform-origin-z" */
-  void set transformOriginZ(String value) {
+  set transformOriginZ(String value) {
     setProperty('transform-origin-z', value, '');
   }
 
@@ -4507,7 +4489,7 @@
     getPropertyValue('transform-style');
 
   /** Sets the value of "transform-style" */
-  void set transformStyle(String value) {
+  set transformStyle(String value) {
     setProperty('transform-style', value, '');
   }
 
@@ -4522,7 +4504,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  void set transition(String value) {
+  set transition(String value) {
     setProperty('transition', value, '');
   }
 
@@ -4531,7 +4513,7 @@
     getPropertyValue('transition-delay');
 
   /** Sets the value of "transition-delay" */
-  void set transitionDelay(String value) {
+  set transitionDelay(String value) {
     setProperty('transition-delay', value, '');
   }
 
@@ -4540,7 +4522,7 @@
     getPropertyValue('transition-duration');
 
   /** Sets the value of "transition-duration" */
-  void set transitionDuration(String value) {
+  set transitionDuration(String value) {
     setProperty('transition-duration', value, '');
   }
 
@@ -4549,7 +4531,7 @@
     getPropertyValue('transition-property');
 
   /** Sets the value of "transition-property" */
-  void set transitionProperty(String value) {
+  set transitionProperty(String value) {
     setProperty('transition-property', value, '');
   }
 
@@ -4558,7 +4540,7 @@
     getPropertyValue('transition-timing-function');
 
   /** Sets the value of "transition-timing-function" */
-  void set transitionTimingFunction(String value) {
+  set transitionTimingFunction(String value) {
     setProperty('transition-timing-function', value, '');
   }
 
@@ -4567,7 +4549,7 @@
     getPropertyValue('unicode-bidi');
 
   /** Sets the value of "unicode-bidi" */
-  void set unicodeBidi(String value) {
+  set unicodeBidi(String value) {
     setProperty('unicode-bidi', value, '');
   }
 
@@ -4576,7 +4558,7 @@
     getPropertyValue('unicode-range');
 
   /** Sets the value of "unicode-range" */
-  void set unicodeRange(String value) {
+  set unicodeRange(String value) {
     setProperty('unicode-range', value, '');
   }
 
@@ -4585,7 +4567,7 @@
     getPropertyValue('user-drag');
 
   /** Sets the value of "user-drag" */
-  void set userDrag(String value) {
+  set userDrag(String value) {
     setProperty('user-drag', value, '');
   }
 
@@ -4594,7 +4576,7 @@
     getPropertyValue('user-modify');
 
   /** Sets the value of "user-modify" */
-  void set userModify(String value) {
+  set userModify(String value) {
     setProperty('user-modify', value, '');
   }
 
@@ -4603,7 +4585,7 @@
     getPropertyValue('user-select');
 
   /** Sets the value of "user-select" */
-  void set userSelect(String value) {
+  set userSelect(String value) {
     setProperty('user-select', value, '');
   }
 
@@ -4612,7 +4594,7 @@
     getPropertyValue('user-zoom');
 
   /** Sets the value of "user-zoom" */
-  void set userZoom(String value) {
+  set userZoom(String value) {
     setProperty('user-zoom', value, '');
   }
 
@@ -4621,7 +4603,7 @@
     getPropertyValue('vertical-align');
 
   /** Sets the value of "vertical-align" */
-  void set verticalAlign(String value) {
+  set verticalAlign(String value) {
     setProperty('vertical-align', value, '');
   }
 
@@ -4630,7 +4612,7 @@
     getPropertyValue('visibility');
 
   /** Sets the value of "visibility" */
-  void set visibility(String value) {
+  set visibility(String value) {
     setProperty('visibility', value, '');
   }
 
@@ -4639,7 +4621,7 @@
     getPropertyValue('white-space');
 
   /** Sets the value of "white-space" */
-  void set whiteSpace(String value) {
+  set whiteSpace(String value) {
     setProperty('white-space', value, '');
   }
 
@@ -4648,7 +4630,7 @@
     getPropertyValue('widows');
 
   /** Sets the value of "widows" */
-  void set widows(String value) {
+  set widows(String value) {
     setProperty('widows', value, '');
   }
 
@@ -4657,7 +4639,7 @@
     getPropertyValue('width');
 
   /** Sets the value of "width" */
-  void set width(String value) {
+  set width(String value) {
     setProperty('width', value, '');
   }
 
@@ -4666,7 +4648,7 @@
     getPropertyValue('will-change');
 
   /** Sets the value of "will-change" */
-  void set willChange(String value) {
+  set willChange(String value) {
     setProperty('will-change', value, '');
   }
 
@@ -4675,7 +4657,7 @@
     getPropertyValue('word-break');
 
   /** Sets the value of "word-break" */
-  void set wordBreak(String value) {
+  set wordBreak(String value) {
     setProperty('word-break', value, '');
   }
 
@@ -4684,7 +4666,7 @@
     getPropertyValue('word-spacing');
 
   /** Sets the value of "word-spacing" */
-  void set wordSpacing(String value) {
+  set wordSpacing(String value) {
     setProperty('word-spacing', value, '');
   }
 
@@ -4693,7 +4675,7 @@
     getPropertyValue('word-wrap');
 
   /** Sets the value of "word-wrap" */
-  void set wordWrap(String value) {
+  set wordWrap(String value) {
     setProperty('word-wrap', value, '');
   }
 
@@ -4702,7 +4684,7 @@
     getPropertyValue('wrap-flow');
 
   /** Sets the value of "wrap-flow" */
-  void set wrapFlow(String value) {
+  set wrapFlow(String value) {
     setProperty('wrap-flow', value, '');
   }
 
@@ -4711,7 +4693,7 @@
     getPropertyValue('wrap-through');
 
   /** Sets the value of "wrap-through" */
-  void set wrapThrough(String value) {
+  set wrapThrough(String value) {
     setProperty('wrap-through', value, '');
   }
 
@@ -4720,7 +4702,7 @@
     getPropertyValue('writing-mode');
 
   /** Sets the value of "writing-mode" */
-  void set writingMode(String value) {
+  set writingMode(String value) {
     setProperty('writing-mode', value, '');
   }
 
@@ -4729,7 +4711,7 @@
     getPropertyValue('z-index');
 
   /** Sets the value of "z-index" */
-  void set zIndex(String value) {
+  set zIndex(String value) {
     setProperty('z-index', value, '');
   }
 
@@ -4738,7 +4720,7 @@
     getPropertyValue('zoom');
 
   /** Sets the value of "zoom" */
-  void set zoom(String value) {
+  set zoom(String value) {
     setProperty('zoom', value, '');
   }
 }
diff --git a/tools/dom/templates/html/impl/impl_CanvasRenderingContext2D.darttemplate b/tools/dom/templates/html/impl/impl_CanvasRenderingContext2D.darttemplate
index 41b238e..bd70659e 100644
--- a/tools/dom/templates/html/impl/impl_CanvasRenderingContext2D.darttemplate
+++ b/tools/dom/templates/html/impl/impl_CanvasRenderingContext2D.darttemplate
@@ -280,7 +280,7 @@
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   // TODO(14316): Firefox has this functionality with mozDashOffset, but it
   // needs to be polyfilled.
-  void set lineDashOffset(num value) {
+  set lineDashOffset(num value) {
     JS('void',
        'typeof #.lineDashOffset != "undefined" ? #.lineDashOffset = # : '
        '#.webkitLineDashOffset = #', this, this, value, this, value);
diff --git a/tools/dom/templates/html/impl/impl_DOMException.darttemplate b/tools/dom/templates/html/impl/impl_DOMException.darttemplate
index be8c36c..809b2e5 100644
--- a/tools/dom/templates/html/impl/impl_DOMException.darttemplate
+++ b/tools/dom/templates/html/impl/impl_DOMException.darttemplate
@@ -40,7 +40,51 @@
     return errorName;
   }
 $endif
+$if JSINTEROP
+  String _name;
+  String _message;
+
+  // To suppress missing implicit constructor warnings.
+  factory DomException._() { throw new UnsupportedError("Not supported"); }
+
+  static DomException internalCreateDomException() {
+    return new DomException._internalWrap();
+  }
+
+  js.JsObject blink_jsObject;
+
+  factory DomException._internalWrap() {
+    return new DomException.internal_();
+  }
+
+  DomException.internal_() { }
+
+  DomException.jsInterop(String m) {
+    var name_index = m.indexOf(': ');
+    if (name_index < 0) {
+      _name = "";
+      _message = m;
+    } else {
+      _name = m.substring(0, name_index);
+      _message = m.substring(name_index + 1).trim();
+    }
+  }
+
+  @DomName('DOMException.message')
+  @DocsEditable()
+  String get message => _message;
+
+  @DomName('DOMException.name')
+  @DocsEditable()
+  String get name => _name;
+
+  @DomName('DOMException.toString')
+  @DocsEditable()
+  String toString() => "${_name}: $_message";
+
+$else
 $!MEMBERS
+$endif
 $if DART2JS
   @DomName('DOMException.toString')
   @DocsEditable()
diff --git a/tools/dom/templates/html/impl/impl_Document.darttemplate b/tools/dom/templates/html/impl/impl_Document.darttemplate
index a9b19cf..fb6d6b18 100644
--- a/tools/dom/templates/html/impl/impl_Document.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Document.darttemplate
@@ -26,11 +26,7 @@
    * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
    */
   ElementList<Element> querySelectorAll(String selectors) {
-$if JSINTEROP
-    return _querySelectorAll(selectors);
-$else
     return new _FrozenElementList._wrap(_querySelectorAll(selectors));
-$endif
   }
 
   /**
@@ -68,18 +64,72 @@
   @DomName('Document.createElement')
   Element createElement(String tagName, [String typeExtension]) {
 $if DART2JS
-    return _createElement(tagName, typeExtension);
+    if (typeExtension == null) {
+      return _createElement_2(tagName);
+    } else {
+      return _createElement(tagName, typeExtension);
+    }
 $else
-  $if JSINTEROP
-    return _createElement(tagName, typeExtension);
-  $else
-    if (typeExtension != null) {  
-      return _createElement(tagName, typeExtension);  
-    } else {  
-      // Fast-path for Dartium when typeExtension is not needed.  
-      return _Utils.createElement(this, tagName); 
-    } 
-  $endif
+    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;
+
+    if (newElement['dart_class'] != null) {
+      wrapped = newElement['dart_class'];         // Here's our Dart class.
+      wrapped.blink_jsObject = newElement;
+    } else {
+      wrapped = wrap_jso(newElement);
+      if (wrapped == null) {
+        wrapped = wrap_jso_custom_element(newElement);
+      }
+    }
+
+    return wrapped;
+$endif
+  }
+
+$if DART2JS
+  // The two-argument version of this is automatically generated, but we need to
+  // omit the typeExtension if it's null on Firefox or we get an is="null" attribute.
+  @DomName('Document.createElement')
+  _createElement_2(String tagName) => JS('', '#.createElement(#)', this, tagName);
+
+  // The three-argument version of this is automatically generated, but we need to
+  // omit the typeExtension if it's null on Firefox or we get an is="null" attribute.
+  @DomName('Document.createElementNS')
+  _createElementNS_2(String namespaceURI, String qualifiedName) =>
+      JS('', '#.createElementNS(#, #)', this, namespaceURI, qualifiedName);
+
+$endif
+  @DomName('Document.createElementNS')
+  @DocsEditable()
+  Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) {
+$if DART2JS
+    if (typeExtension == null) {
+      return _createElementNS_2(namespaceURI, qualifiedName);
+    } else {
+      return _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;
+
+    if (newElement['dart_class'] != null) {
+      wrapped = newElement['dart_class'];         // Here's our Dart class.
+      wrapped.blink_jsObject = newElement;
+    } else {
+      wrapped = wrap_jso(newElement);
+      if (wrapped == null) {
+        wrapped = wrap_jso_custom_element(newElement);
+      }
+    }
+
+    return wrapped;
 $endif
   }
 
diff --git a/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate b/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate
index 122b6f9..dd4d70b 100644
--- a/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate
+++ b/tools/dom/templates/html/impl/impl_DocumentFragment.darttemplate
@@ -38,7 +38,7 @@
     return _docChildren;
   }
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     // Copy list first since we don't want liveness during iteration.
     List copy = new List.from(value);
     var children = this.children;
@@ -58,12 +58,7 @@
    * [CSS selector specification](http://www.w3.org/TR/css3-selectors/).
    */
   ElementList<Element> querySelectorAll(String selectors) =>
-$if JSINTEROP
-    _querySelectorAll(selectors);
-$else
     new _FrozenElementList._wrap(_querySelectorAll(selectors));
-$endif
-
 
   String get innerHtml {
     final e = new Element.tag("div");
@@ -71,7 +66,7 @@
     return e.innerHtml;
   }
 
-  void set innerHtml(String value) {
+  set innerHtml(String value) {
     this.setInnerHtml(value);
   }
 
diff --git a/tools/dom/templates/html/impl/impl_DocumentType.darttemplate b/tools/dom/templates/html/impl/impl_DocumentType.darttemplate
new file mode 100644
index 0000000..88e7e6e
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_DocumentType.darttemplate
@@ -0,0 +1,16 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!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)));
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_Element.darttemplate b/tools/dom/templates/html/impl/impl_Element.darttemplate
index 6f5ae1b..180a0b9 100644
--- a/tools/dom/templates/html/impl/impl_Element.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Element.darttemplate
@@ -33,7 +33,7 @@
     _element._replaceChild(value, _childElements[index]);
   }
 
-  void set length(int newLength) {
+  set length(int newLength) {
     // TODO(jacobr): remove children when length is reduced.
     throw new UnsupportedError('Cannot resize element lists');
   }
@@ -97,7 +97,12 @@
   bool remove(Object object) {
     if (object is Element) {
       Element element = object;
+$if JSINTEROP
+      // We aren't preserving identity of nodes in JSINTEROP mode
+      if (element.parentNode == _element) {
+$else
       if (identical(element.parentNode, _element)) {
+$endif
         _element._removeChild(element);
         return true;
       }
@@ -281,7 +286,7 @@
     throw new UnsupportedError('Cannot modify list');
   }
 
-  void set length(int newLength) {
+  set length(int newLength) {
     throw new UnsupportedError('Cannot modify list');
   }
 
@@ -304,7 +309,7 @@
   CssStyleDeclarationBase get style =>
       new _CssStyleDeclarationSet(this);
 
-  void set classes(Iterable<String> value) {
+  set classes(Iterable<String> value) {
     // TODO(sra): This might be faster for Sets:
     //
     //     new _MultiElementCssClassSet(this).writeClasses(value)
@@ -328,7 +333,7 @@
 }
 
 @DocsEditable()
-$(ANNOTATIONS)$(NATIVESPEC)abstract class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$(ANNOTATIONS)$(NATIVESPEC)class $CLASSNAME$EXTENDS$IMPLEMENTS {
 
   /**
    * Creates an HTML element from a valid fragment of HTML.
@@ -375,11 +380,7 @@
    *     }
    *     document.registerElement('x-custom', CustomElement);
    */
-  Element.created() : super._created() {
-    // Validate that this is a custom element & perform any additional
-    // initialization.
-    _initializeCustomElement(this);
-  }
+  Element.created() : super._created();
 
   /**
    * Creates the HTML element specified by the tag name.
@@ -560,7 +561,7 @@
    */
   Map<String, String> get attributes => new _ElementAttributeMap(this);
 
-  void set attributes(Map<String, String> value) {
+  set attributes(Map<String, String> value) {
     Map<String, String> attributes = this.attributes;
     attributes.clear();
     for (String key in value.keys) {
@@ -580,17 +581,9 @@
    *       element.style.background = 'red'; // Turns every child of body red.
    *     }
    */
-$if DART2JS
   List<Element> get children => new _ChildrenElementList._wrap(this);
-$else
-  $if JSINTEROP
-  List<Element> get children => new FilteredElementList(this);
-  $else
-  List<Element> get children => new _ChildrenElementList._wrap(this);
-  $endif
-$endif
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     // Copy list first since we don't want liveness during iteration.
     List copy = new List.from(value);
     var children = this.children;
@@ -611,11 +604,7 @@
    */
   @DomName('Element.querySelectorAll')
   ElementList<Element> querySelectorAll(String selectors) =>
-$if JSINTEROP
-    _querySelectorAll(selectors);
-$else
     new _FrozenElementList._wrap(_querySelectorAll(selectors));
-$endif
 
   /**
    * Alias for [querySelector]. Note this function is deprecated because its
@@ -648,7 +637,7 @@
    */
   CssClassSet get classes => new _ElementCssClassSet(this);
 
-  void set classes(Iterable<String> value) {
+  set classes(Iterable<String> value) {
     // TODO(sra): Do this without reading the classes in clear() and addAll(),
     // or writing the classes in clear().
     CssClassSet classSet = classes;
@@ -682,7 +671,7 @@
   Map<String, String> get dataset =>
     new _DataAttributeMap(attributes);
 
-  void set dataset(Map<String, String> value) {
+  set dataset(Map<String, String> value) {
     final data = this.dataset;
     data.clear();
     for (String key in value.keys) {
@@ -801,7 +790,6 @@
   @deprecated
   void leftView() {}
 
-$if DART2JS
   /**
    * Creates a new AnimationEffect object whose target element is the object
    * on which the method is called, and calls the play() method of the
@@ -816,18 +804,15 @@
    *     var animation = elem.animate([
    *       {"transform": "translate(100px, -100%)"},
    *       {"transform" : "translate(400px, 500px)"}
-   *     ], 1500);  
+   *     ], 1500);
    *
    * The [frames] parameter is an Iterable<Map>, where the
    * map entries specify CSS animation effects. The
    * [timing] paramter can be a double, representing the number of milliseconds
    * for the transition, or a Map with fields corresponding to those
    * of the [Timing] object.
-   *
-   * This is not yet supported in Dartium.
   **/
-// TODO(alanknight): Correct above comment once it works in Dartium.
-  @Experimental
+  @Experimental()
   @SupportedBrowser(SupportedBrowser.CHROME, '36')
   AnimationPlayer animate(Iterable<Map<String, dynamic>> frames, [timing]) {
     if (frames is! Iterable || !(frames.every((x) => x is Map))) {
@@ -836,7 +821,12 @@
     }
     var convertedFrames = frames;
     if (convertedFrames is Iterable) {
+$if DART2JS
       convertedFrames = frames.map(convertDartToNative_Dictionary).toList();
+$else
+      convertedFrames = convertDartToNative_List(
+          frames.map(convertDartToNative_Dictionary).toList());
+$endif
     }
     var convertedTiming = timing;
     if (convertedTiming is Map) {
@@ -847,6 +837,7 @@
       : _animate(convertedFrames, convertedTiming);
   }
 
+$if DART2JS
   @DomName('Element.animate')
   @JSName('animate')
   @Experimental() // untriaged
@@ -880,7 +871,7 @@
   // members of the component are used. The actual type is a subtype of Element.
   get xtag => _xtag != null ? _xtag : this;
 
-  void set xtag(Element value) {
+  set xtag(Element value) {
     _xtag = value;
   }
 
@@ -1006,7 +997,7 @@
 
   @JSName('insertAdjacentText')
   void _insertAdjacentText(String where, String text) native;
-  
+
 $else
 $endif
 
@@ -1269,8 +1260,13 @@
     // offsetParent, "tops out" at BODY. But people could conceivably pass in
     // the document.documentElement and I want it to return an absolute offset,
     // so we have the special case checking for HTML.
-    bool foundAsParent = identical(current, parent) || parent.tagName == 'HTML';
-    if (current == null || identical(current, parent)) {
+$if JSINTEROP
+    bool sameAsParent = current == parent;
+$else
+    bool sameAsParent = identical(current, parent);
+$endif
+    bool foundAsParent = sameAsParent || parent.tagName == 'HTML';
+    if (current == null || sameAsParent) {
       if (foundAsParent) return new Point(0, 0);
       throw new ArgumentError("Specified element is not a transitive offset "
           "parent of this element.");
@@ -1328,11 +1324,11 @@
     if (_parseDocument == null) {
       _parseDocument = document.implementation.createHtmlDocument('');
       _parseRange = _parseDocument.createRange();
-	
+
       // Workaround for Safari bug. Was also previously Chrome bug 229142
-      // - URIs are not resolved in new doc.	
-      var base = _parseDocument.createElement('base');	
-      base.href = document.baseUri;	
+      // - URIs are not resolved in new doc.
+      var base = _parseDocument.createElement('base');
+      base.href = document.baseUri;
       _parseDocument.head.append(base);
     }
     var contextElement;
@@ -1390,7 +1386,7 @@
    * This uses the default sanitization behavior to sanitize the HTML fragment,
    * use [setInnerHtml] to override the default behavior.
    */
-  void set innerHtml(String html) {
+  set innerHtml(String html) {
     this.setInnerHtml(html);
   }
 
@@ -1432,7 +1428,7 @@
    * used when an explicit accessor is not available.
    */
   ElementEvents get on => new ElementEvents(this);
-  
+
   /**
    * Verify if any of the attributes that we use in the sanitizer look unexpected,
    * possibly indicating DOM clobbering attacks.
@@ -1461,10 +1457,44 @@
           })(#)''', element);
   }
 $else
-  // Dartium isn't affected by these attacks, because it goes directly to the C++ API.
-  static bool _hasCorruptedAttributes(Element element) => false;
+
+  static var _namedNodeMap = js.context["NamedNodeMap"];
+  static var _htmlCollection = js.context["HTMLCollection"];
+  static var _nodeList = js.context["NodeList"];
+
+  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;
+      }
+    }
+    return false;
+  }
 $endif
 
+  String get _safeTagName {
+    String result = 'element tag unavailable';
+    try {
+      if (tagName is String) {
+        result = tagName;
+      }
+    } catch (e) {}
+    return result;
+  }
+
 $if DART2JS
   @DomName('Element.offsetHeight')
   @DocsEditable()
@@ -1508,7 +1538,7 @@
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  void set scrollLeft(int value) {
+  set scrollLeft(int value) {
     JS("void", "#.scrollLeft = #", this, value.round());
   }
 
@@ -1518,7 +1548,7 @@
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  void set scrollTop(int value) {
+  set scrollTop(int value) {
     JS("void", "#.scrollTop = #", this, value.round());
   }
 
@@ -1528,6 +1558,10 @@
 
 $else
   $if JSINTEROP
+  // 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));
+
   @DomName('Element.offsetHeight')
   @DocsEditable()
   int get offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(unwrap_jso(this)).round();
@@ -1570,7 +1604,7 @@
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  void set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value.round());
+  set scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(unwrap_jso(this), value.round());
 
   @DomName('Element.scrollTop')
   @DocsEditable()
@@ -1578,7 +1612,7 @@
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  void set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value.round());
+  set scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(unwrap_jso(this), value.round());
 
   @DomName('Element.scrollWidth')
   @DocsEditable()
@@ -1626,7 +1660,7 @@
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  void set scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter(this, value.round());
+  set scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter(this, value.round());
 
   @DomName('Element.scrollTop')
   @DocsEditable()
@@ -1634,7 +1668,7 @@
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  void set scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter(this, value.round());
+  set scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter(this, value.round());
 
   @DomName('Element.scrollWidth')
   @DocsEditable()
diff --git a/tools/dom/templates/html/impl/impl_EventTarget.darttemplate b/tools/dom/templates/html/impl/impl_EventTarget.darttemplate
index 8cb282e..61092fd 100644
--- a/tools/dom/templates/html/impl/impl_EventTarget.darttemplate
+++ b/tools/dom/templates/html/impl/impl_EventTarget.darttemplate
@@ -92,6 +92,12 @@
  */
 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
 
+$if DARTIUM
+  // Default constructor to allow other classes e.g. GlobalEventHandlers to be
+  // constructed using _internalWrap when mapping Blink object to Dart class.
+  EventTarget();
+
+$endif
   // Custom element created callback.
   EventTarget._created();
 
diff --git a/tools/dom/templates/html/impl/impl_FileReader.darttemplate b/tools/dom/templates/html/impl/impl_FileReader.darttemplate
index 0864441..ba5278f 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.result_Getter(unwrap_jso(this));
+    var res = _blink.BlinkFileReader.instance.result_Getter_(unwrap_jso(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
new file mode 100644
index 0000000..838a8be
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_HTMLAudioElement.darttemplate
@@ -0,0 +1,20 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+$if JSINTEROP
+  factory AudioElement([String src]) {
+    if (src == null)
+      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_0_());
+    else
+      return wrap_jso(_blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src));
+  }
+$else
+  factory AudioElement([String src]) => new AudioElement._(src);
+$endif
+}
diff --git a/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate b/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate
index 3d9e6af..bf8f0ff 100644
--- a/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate
+++ b/tools/dom/templates/html/impl/impl_HTMLDocument.darttemplate
@@ -17,7 +17,7 @@
   BodyElement get body => _body;
 
   @DomName('Document.body')
-  void set body(BodyElement value) {
+  set body(BodyElement value) {
     _body = value;
   }
 $endif
@@ -90,7 +90,7 @@
 
   @DomName('Document.selectedStylesheetSet')
   String get selectedStylesheetSet => _selectedStylesheetSet;
-  void set selectedStylesheetSet(String value) {
+  set selectedStylesheetSet(String value) {
     _selectedStylesheetSet = value;
   }
 
@@ -101,7 +101,7 @@
   String get title => _title;
 
   @DomName('Document.title')
-  void set title(String value) {
+  set title(String value) {
     _title = value;
   }
 
@@ -187,6 +187,41 @@
 $else
   String get visibilityState => _webkitVisibilityState;
 $endif
+$if DARTIUM
+
+  /**
+   * Internal routine to find the DOM JS class name being extended for custom
+   * elements.
+   */
+  String _getJSClassName(ClassMirror classMirror) {
+    var jsClassName = null;
+    var isElement = false;
+
+    while (classMirror.superclass != null) {
+      var fullName = classMirror.superclass.qualifiedName;
+      isElement = isElement || (fullName == #dart.dom.html.Element);
+
+      var domLibrary = MirrorSystem.getName(fullName).startsWith('dart.dom.');
+      if (jsClassName == null && domLibrary) {
+        // Lookup JS class name (if not found).
+        var metadatas = classMirror.metadata;
+        for (var metadata in metadatas) {
+          var metaDataMirror = metadata.reflectee;
+          var metaType = reflectClass(metaDataMirror.runtimeType);
+          if (MirrorSystem.getName(metaType.simpleName) == 'DomName' &&
+              metaDataMirror.name.startsWith('HTML')) {
+            jsClassName = metadata.reflectee.name;
+          }
+        }
+      }
+
+      classMirror = classMirror.superclass;
+    }
+
+    // If we're an element then everything is okay.
+    return isElement ? jsClassName : null;
+  }
+$endif
 
   @Experimental()
   /**
@@ -236,7 +271,73 @@
     _registerCustomElement(JS('', 'window'), this, tag, customElementClass,
         extendsTag);
 $else
-    _Utils.register(this, tag, customElementClass, extendsTag);
+    // TODO(terry): Need to handle the extendsTag.
+
+    // Figure out which DOM class is being extended from the user's Dart class.
+    var classMirror = reflectClass(customElementClass);
+    var jsClassName = _getJSClassName(classMirror);
+    if (jsClassName == null) {
+      // Only components derived from HTML* can be extended.
+      throw new DomException.jsInterop("HierarchyRequestError: Only HTML elements can be customized.");
+    }
+
+    // Start the hookup the JS way create an <x-foo> element that extends the
+    // <x-base> custom element. Inherit its prototype and signal what tag is
+    // inherited:
+    //
+    //     var myProto = Object.create(HTMLElement.prototype);
+    //     var myElement = document.registerElement('x-foo', {prototype: myProto});
+    var baseElement = js.context[jsClassName];
+    if (baseElement == null) {
+      // Couldn't find the HTML element so use a generic one.
+      baseElement = js.context['HTMLElement'];
+    }
+    var elemProto = js.context['Object'].callMethod("create", [baseElement['prototype']]);
+
+    // TODO(terry): Hack to stop recursion re-creating custom element when the
+    //              created() constructor of the custom element does e.g.,
+    //
+    //                  MyElement.created() : super.created() {
+    //                    this.innerHtml = "<b>I'm an x-foo-with-markup!</b>";
+    //                  }
+    //
+    //              sanitizing causes custom element to created recursively
+    //              until stack overflow.
+    //
+    //              See https://github.com/dart-lang/sdk/issues/23666
+    int creating = 0;
+    elemProto['createdCallback'] = new js.JsFunction.withThis(($this) {
+      if (_getJSClassName(reflectClass(customElementClass).superclass) != null && creating < 2) {
+        creating++;
+
+        var dartClass = _blink.Blink_Utils.constructElement(customElementClass, $this);
+
+        // 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. 
+        $this['dart_class'] = dartClass;
+
+        creating--;
+      }
+    });
+    elemProto['attributeChangedCallback'] = new js.JsFunction.withThis(($this, attrName, oldVal, newVal) {
+      if ($this["dart_class"] != null && $this['dart_class'].attributeChanged != null) {
+        $this['dart_class'].attributeChanged(attrName, oldVal, newVal);
+      }
+    });
+    elemProto['attachedCallback'] = new js.JsFunction.withThis(($this) {
+      if ($this["dart_class"] != null && $this['dart_class'].attached != null) {
+        $this['dart_class'].attached();
+      }
+    });
+    elemProto['detachedCallback'] = new js.JsFunction.withThis(($this) {
+      if ($this["dart_class"] != null && $this['dart_class'].detached != null) {
+        $this['dart_class'].detached();
+      }
+    });
+    // document.registerElement('x-foo', {prototype: elemProto, extends: extendsTag});
+    var jsMap = new js.JsObject.jsify({'prototype': elemProto, 'extends': extendsTag});
+    js.context['document'].callMethod('registerElement', [tag, jsMap]);
 $endif
   }
 
diff --git a/tools/dom/templates/html/impl/impl_HTMLFrameSetElement.darttemplate b/tools/dom/templates/html/impl/impl_HTMLFrameSetElement.darttemplate
new file mode 100644
index 0000000..88b5bcb
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_HTMLFrameSetElement.darttemplate
@@ -0,0 +1,21 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+$if DARTIUM
+  // Override these methods for Dartium _HTMLFrameSetElement can't be abstract.
+  Stream<Event> get onHashChange => hashChangeEvent.forTarget(this);
+  Stream<MessageEvent> get onMessage => messageEvent.forTarget(this);
+  Stream<Event> get onOffline => offlineEvent.forTarget(this);
+  Stream<Event> get onOnline => onlineEvent.forTarget(this);
+  Stream<PopStateEvent> get onPopState => popStateEvent.forTarget(this);
+  Stream<StorageEvent> get onStorage => storageEvent.forTarget(this);
+  Stream<Event> get onUnload => unloadEvent.forTarget(this);
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate b/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate
index d45e98a..079ca0f 100644
--- a/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate
+++ b/tools/dom/templates/html/impl/impl_MutationObserver.darttemplate
@@ -21,14 +21,8 @@
 $if DARTIUM
   @DocsEditable()
   $if JSINTEROP
-  static MutationObserver _create(callback) => wrap_jso(_blink.BlinkMutationObserver.instance.constructorCallback_1_((List<MutationRecord> mutations, MutationObserver observer) {
-      var wrapped_mutations = [];
-      for (var mutation in mutations) {
-        // Wrap the Javascript object for each MutationRecord.
-        wrapped_mutations.add(wrap_jso(mutation));
-      }
-      // Wrap the MutationObserver too.
-      callback(wrapped_mutations, wrap_jso(observer));
+  static MutationObserver _create(callback) => wrap_jso(_blink.BlinkMutationObserver.instance.constructorCallback_1_((mutations, observer) {
+    callback(mutations, wrap_jso(observer));
   }));
   $else
   static MutationObserver _create(callback) => _blink.BlinkMutationObserver.instance.constructorCallback_1_(callback);
diff --git a/tools/dom/templates/html/impl/impl_Node.darttemplate b/tools/dom/templates/html/impl/impl_Node.darttemplate
index 47382cf..38fdab1 100644
--- a/tools/dom/templates/html/impl/impl_Node.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Node.darttemplate
@@ -114,7 +114,12 @@
   bool remove(Object object) {
     if (object is! Node) return false;
     Node node = object;
+$if JSINTEROP
+    // We aren't preserving identity of nodes in JSINTEROP mode
+    if (_this != node.parentNode) return false;
+$else
     if (!identical(_this, node.parentNode)) return false;
+$endif
     _this._removeChild(node);
     return true;
   }
@@ -178,7 +183,7 @@
   // a local copy of childNodes is more efficient.
   int get length => _this.childNodes.length;
 
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError(
         "Cannot set length on immutable List.");
   }
@@ -201,7 +206,7 @@
     return new _ChildNodeListLazy(this);
   }
 
-  void set nodes(Iterable<Node> value) {
+  set nodes(Iterable<Node> value) {
     // Copy list first since we don't want liveness during iteration.
     // TODO(jacobr): there is a better way to do this.
     List copy = new List.from(value);
@@ -277,9 +282,7 @@
     return value == null ? super.toString() : value;
   }
 
-$if JSINTEROP
-  List<Node> _childNodes;
-
+$if DARTIUM
   /**
    * A list of this node's children.
    *
@@ -291,33 +294,8 @@
    */
   @DomName('Node.childNodes')
   @DocsEditable()
-  List<Node> get childNodes {
-    if (_childNodes == null) {
-       List<Node> nodes = new List<Node>();
-       var jsCollection = _blink.BlinkNode.instance.childNodes_Getter_(unwrap_jso(this));
-       var collectionLen = jsCollection['length'];
-       for (var i = 0; i < collectionLen; i++) {
-         nodes.add(wrap_jso(jsCollection.callMethod('item', [i])));
-       }
-      _childNodes = nodes;
-    }
-    return _childNodes;
-  }
+  List<Node> get childNodes => wrap_jso(_blink.BlinkNode.instance.childNodes_Getter_(unwrap_jso(this)));
 $else
-  $if DARTIUM
-  /**
-   * A list of this node's children.
-   *
-   * ## Other resources
-   *
-   * * [Node.childNodes]
-   * (https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes)
-   * from MDN.
-   */
-  @DomName('Node.childNodes')
-  @DocsEditable()
-  List<Node> get childNodes => _blink.BlinkNode.instance.childNodes_Getter_(this);
-  $else
   /**
    * A list of this node's children.
    *
@@ -333,7 +311,6 @@
   @Creates('NodeList')
   final List<Node> childNodes;
 
-  $endif
 $endif
 $!MEMBERS
 }
diff --git a/tools/dom/templates/html/impl/impl_SVGCursorElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGCursorElement.darttemplate
new file mode 100644
index 0000000..1aa46f4
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_SVGCursorElement.darttemplate
@@ -0,0 +1,19 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!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);
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_SVGElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
index 2eaafe6..b41f7ec 100644
--- a/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
+++ b/tools/dom/templates/html/impl/impl_SVGElement.darttemplate
@@ -58,7 +58,7 @@
 
   List<Element> get children => new FilteredElementList(this);
 
-  void set children(List<Element> value) {
+  set children(List<Element> value) {
     final children = this.children;
     children.clear();
     children.addAll(value);
@@ -78,7 +78,7 @@
     return container.innerHtml;
   }
 
-  void set innerHtml(String value) {
+  set innerHtml(String value) {
     this.setInnerHtml(value);
   }
 
@@ -143,5 +143,21 @@
     var e = new $CLASSNAME.tag(tag);
     return e is $CLASSNAME && !(e is UnknownElement);
   }
+
+$if JSINTEROP
+  set _svgClassName(AnimatedString value) =>
+      _blink.BlinkSVGElement.instance.className_Setter_(unwrap_jso(this), unwrap_jso(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
new file mode 100644
index 0000000..96363a8
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_SVGFEDropShadowElement.darttemplate
@@ -0,0 +1,19 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!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)));
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_SVGGlyphRefElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGGlyphRefElement.darttemplate
new file mode 100644
index 0000000..4c88084
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_SVGGlyphRefElement.darttemplate
@@ -0,0 +1,15 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!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)));
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_SVGMPathElement.darttemplate b/tools/dom/templates/html/impl/impl_SVGMPathElement.darttemplate
new file mode 100644
index 0000000..59e012e
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_SVGMPathElement.darttemplate
@@ -0,0 +1,15 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!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)));
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_ServiceWorker.darttemplate b/tools/dom/templates/html/impl/impl_ServiceWorker.darttemplate
new file mode 100644
index 0000000..6cb64ab
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_ServiceWorker.darttemplate
@@ -0,0 +1,15 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+$if DARTIUM
+  // Override these methods for Dartium _ServiceWorker can't be abstract.
+  Stream<ErrorEvent> get onError => errorEvent.forTarget(this);
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate b/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate
index 57a44bb..e08cb4d 100644
--- a/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate
+++ b/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate
@@ -35,7 +35,7 @@
   }
 
   @deprecated
-  void set resetStyleInheritance(bool value) {
+  set resetStyleInheritance(bool value) {
     _shadowRootDeprecationReport();
   }
 
@@ -47,7 +47,7 @@
   }
 
   @deprecated
-  void set applyAuthorStyles(bool value) {
+  set applyAuthorStyles(bool value) {
     _shadowRootDeprecationReport();
   }
 }
diff --git a/tools/dom/templates/html/impl/impl_Touch.darttemplate b/tools/dom/templates/html/impl/impl_Touch.darttemplate
index fbab125..bab04a5 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.clientX_Getter(unwrap_jso(this)).round();
-  int get __clientY => _blink.BlinkTouch.clientY_Getter(unwrap_jso(this)).round();
-  int get __screenX => _blink.BlinkTouch.screenX_Getter(unwrap_jso(this)).round();
-  int get __screenY => _blink.BlinkTouch.screenY_Getter(unwrap_jso(this)).round();
-  int get __pageX => _blink.BlinkTouch.pageX_Getter(unwrap_jso(this)).round();
-  int get __pageY => _blink.BlinkTouch.pageY_Getter(unwrap_jso(this)).round();
-  int get __radiusX => _blink.BlinkTouch.radiusX_Getter(unwrap_jso(this)).round();
-  int get __radiusY => _blink.BlinkTouch.radiusY_Getter(unwrap_jso(this)).round();
+  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();
 $endif
 
   @DomName('Touch.clientX')
diff --git a/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate b/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
index 8a5e383..d4f5d3f 100644
--- a/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
+++ b/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
@@ -39,12 +39,12 @@
     if (view == null) {
       view = window;
     }
-    
+
     return JS('WheelEvent', 'new WheelEvent(#, #)',
         type, convertDartToNative_Dictionary(options));
 
 $else
-    return _blink.BlinkWheelEvent.constructorCallback_2(type, options);
+    return wrap_jso(_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 b119a08..36dfc9a 100644
--- a/tools/dom/templates/html/impl/impl_Window.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Window.darttemplate
@@ -85,13 +85,13 @@
    * Sets the window's location, which causes the browser to navigate to the new
    * location. [value] may be a Location object or a String.
    */
-  void set location(value) {
+  set location(value) {
     _location = value;
   }
 
   // Native getter and setter to access raw Location object.
   dynamic get _location => JS('Location|Null', '#.location', this);
-  void set _location(value) {
+  set _location(value) {
     JS('void', '#.location = #', this, value);
   }
 
@@ -320,7 +320,7 @@
 
   String get returnValue => _returnValue;
 
-  void set returnValue(String value) {
+  set returnValue(String value) {
     _returnValue = value;
     // FF and IE use the value as the return value, Chrome will return this from
     // the event callback function.
diff --git a/tools/dom/templates/html/impl/impl_WorkerLocation.darttemplate b/tools/dom/templates/html/impl/impl_WorkerLocation.darttemplate
new file mode 100644
index 0000000..73623a9
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_WorkerLocation.darttemplate
@@ -0,0 +1,23 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!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));
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_WorkerNavigator.darttemplate b/tools/dom/templates/html/impl/impl_WorkerNavigator.darttemplate
new file mode 100644
index 0000000..137390c
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_WorkerNavigator.darttemplate
@@ -0,0 +1,23 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of $LIBRARYNAME;
+
+@DocsEditable()
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!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));
+$endif
+}
+
diff --git a/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate b/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
index d7fffe9..7ee15d1 100644
--- a/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
+++ b/tools/dom/templates/html/impl/impl_XMLHttpRequest.darttemplate
@@ -384,5 +384,34 @@
     return headers;
   }
 
+  /**
+   * Specify the desired `url`, and `method` to use in making the request.
+   *
+   * By default the request is done asyncronously, with no user or password
+   * authentication information. If `async` is false, the request will be send
+   * synchronously.
+   *
+   * Calling `open` again on a currently active request is equivalent to
+   * calling `abort`.
+   *
+   * Note: Most simple HTTP requests can be accomplished using the [getString],
+   * [request], [requestCrossOrigin], or [postFormData] methods. Use of this
+   * `open` method is intended only for more complext HTTP requests where
+   * finer-grained control is needed.
+   */
+  @DomName('XMLHttpRequest.open')
+  @DocsEditable()
+$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);
+    } else {
+      _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(unwrap_jso(this), method, url, async, user, password);
+    }
+  }
+$else
+  void open(String method, String url, {bool async, String user, String password}) native;
+$endif
+
 $!MEMBERS
 }
diff --git a/tools/dom/templates/immutable_list_mixin.darttemplate b/tools/dom/templates/immutable_list_mixin.darttemplate
index 78a846f..b9820dc 100644
--- a/tools/dom/templates/immutable_list_mixin.darttemplate
+++ b/tools/dom/templates/immutable_list_mixin.darttemplate
@@ -7,7 +7,7 @@
 $endif
 
 $if DEFINE_LENGTH_SETTER
-  void set length(int value) {
+  set length(int value) {
     throw new UnsupportedError("Cannot resize immutable List.");
   }
 $endif
diff --git a/tools/gyp/find_mac_gcc_version.py b/tools/gyp/find_mac_gcc_version.py
index 40670ec..79e9af3e 100755
--- a/tools/gyp/find_mac_gcc_version.py
+++ b/tools/gyp/find_mac_gcc_version.py
@@ -25,7 +25,7 @@
       return '4.2'
     elif major == 4 and minor < 5:
       return 'com.apple.compilers.llvmgcc42'
-    elif (major == 4 and minor >= 5) or major == 5 or major == 6:
+    elif (major == 4 and minor >= 5) or major >= 5:
       # XCode seems to select the specific clang version automatically
       return 'com.apple.compilers.llvm.clang.1_0'
     else:
diff --git a/tools/observatory_tool.py b/tools/observatory_tool.py
index 90c2aa27..062ad1c 100755
--- a/tools/observatory_tool.py
+++ b/tools/observatory_tool.py
@@ -139,7 +139,9 @@
                       options.pub_executable,
                       options.pub_snapshot,
                       options.package_root,
-                      ['build', '--output', args[0]],
+                      ['build',
+                       '-DOBS_VER=' + utils.GetVersion(),
+                       '--output', args[0]],
                       options.silent)
   elif (cmd == 'deploy'):
     Deploy('build', 'deployed')
diff --git a/tools/signing_script.py b/tools/signing_script.py
deleted file mode 100755
index 5eefe1b..0000000
--- a/tools/signing_script.py
+++ /dev/null
@@ -1,286 +0,0 @@
-#!/usr/bin/env python
-#
-# 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 imp
-import optparse
-import os
-import subprocess
-import sys
-
-DART_DIR = os.path.dirname(os.path.dirname(__file__))
-GSUTIL = os.path.join(DART_DIR, 'third_party', 'gsutil', 'gsutil')
-BOT_UTILS = os.path.join(DART_DIR, 'tools', 'bots', 'bot_utils.py')
-BASENAME_PATTERN = 'darteditor-%(system)s-%(bits)s'
-FILENAME_PATTERN = BASENAME_PATTERN + '.zip'
-
-DRY_RUN = False
-
-bot_utils = imp.load_source('bot_utils', BOT_UTILS)
-
-class ChangedWorkingDirectory(object):
-  def __init__(self, working_directory):
-    self._working_directory = working_directory
-
-  def __enter__(self):
-    self._old_cwd = os.getcwd()
-    print "Enter directory = ", self._working_directory
-    if not DRY_RUN:
-      os.chdir(self._working_directory)
-
-  def __exit__(self, *_):
-    print "Enter directory = ", self._old_cwd
-    os.chdir(self._old_cwd)
-
-def GetOptionsParser():
-  parser = optparse.OptionParser("usage: %prog [options]")
-  parser.add_option("--scratch-dir",
-                    help="Scratch directory to use.")
-  parser.add_option("--revision", type="int",
-                    help="Revision we want to sign.")
-  parser.add_option("--channel", type="string",
-                    default=None,
-                    help="Channel we want to sign.")
-  parser.add_option("--dry-run", action="store_true", dest="dry_run",
-                    default=False,
-                    help="Do a dry run and do not execute any commands.")
-  parser.add_option("--prepare", action="store_true", dest="prepare",
-                    default=False,
-                    help="Prepare the .exe/.zip files to sign.")
-  parser.add_option("--deploy", action="store_true", dest="deploy",
-                    default=False,
-                    help="Pack the signed .exe/.zip files and deploy.")
-  return parser
-
-def die(msg, withOptions=True):
-  print msg
-  if withOptions:
-    GetOptionsParser().print_usage()
-  sys.exit(1)
-
-def run(command):
-  """We use run() instead of builtin python methods, because not all
-  functionality can easily be done by python and we can support --dry-run"""
-
-  print "Running: ", command
-  if not DRY_RUN:
-    process = subprocess.Popen(command,
-                               stdout=subprocess.PIPE,
-                               stderr=subprocess.PIPE)
-    (stdout, stderr) = process.communicate()
-    if process.returncode != 0:
-      print "DEBUG: failed to run command '%s'" % command
-      print "DEBUG: stdout = ", stdout
-      print "DEBUG: stderr = ", stderr
-      print "DEBUG: returncode = ", process.returncode
-      raise OSError(process.returncode)
-
-def clean_directory(directory):
-  if os.path.exists(directory):
-    run(['rm', '-r', directory])
-  run(['mkdir', '-p', directory])
-
-def rm_tree(directory):
-  if os.path.exists(directory):
-    run(['rm', '-r', directory])
-
-def copy_tree(from_dir, to_dir):
-  if os.path.exists(to_dir):
-    run(['rm', '-r', to_dir])
-  run(['cp', '-Rp', from_dir, to_dir])
-
-def copy_file(from_file, to_file):
-  if os.path.exists(to_file):
-    run(['rm', to_file])
-  run(['cp', '-p', from_file, to_file])
-
-def copy_and_zip(from_dir, to_dir):
-  rm_tree(to_dir)
-  copy_tree(from_dir, to_dir)
-
-  dirname = os.path.basename(to_dir)
-  with ChangedWorkingDirectory(os.path.dirname(to_dir)):
-    run(['zip', '-r9', dirname + '.zip', dirname])
-
-def unzip_and_copy(extracted_zipfiledir, to_dir):
-  rm_tree(extracted_zipfiledir)
-  run(['unzip', extracted_zipfiledir + '.zip', '-d',
-       os.path.dirname(extracted_zipfiledir)])
-  rm_tree(to_dir)
-  copy_tree(extracted_zipfiledir, to_dir)
-
-def download_from_new_location(channel, config, destination):
-  namer = bot_utils.GCSNamer(channel,
-                             bot_utils.ReleaseType.RAW)
-  bucket = namer.editor_zipfilepath(config['revision'], config['system'],
-                                    config['bits'])
-  run([GSUTIL, 'cp', bucket, destination])
-
-def download_msi_installer_from_new_location(channel, config, destination):
-  namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.RAW)
-  bucket = namer.editor_installer_filepath(
-      config['revision'], config['system'], config['bits'], 'msi')
-  run([GSUTIL, 'cp', bucket, destination])
-
-def upload_to_new_location(channel, config, source_zip):
-  namer = bot_utils.GCSNamer(channel,
-                             bot_utils.ReleaseType.SIGNED)
-  zipfilename = namer.editor_zipfilename(config['system'], config['bits'])
-  bucket = namer.editor_zipfilepath(config['revision'], config['system'],
-                                    config['bits'])
-
-  if not DRY_RUN:
-    bot_utils.CreateMD5ChecksumFile(source_zip, mangled_filename=zipfilename)
-    bot_utils.CreateSha256ChecksumFile(source_zip,
-                                       mangled_filename=zipfilename)
-  md5_zip_file = source_zip + '.md5sum'
-  sha256_zip_file = source_zip + '.sha256sum'
-
-  run([GSUTIL, 'cp', source_zip, bucket])
-  run([GSUTIL, 'cp', md5_zip_file, bucket + '.md5sum'])
-  run([GSUTIL, 'cp', sha256_zip_file, bucket + '.sha256sum'])
-  run([GSUTIL, 'setacl', 'public-read', bucket])
-  run([GSUTIL, 'setacl', 'public-read', bucket + '.md5sum'])
-  run([GSUTIL, 'setacl', 'public-read', bucket + '.sha256sum'])
-
-def upload_msi_installer_to_new_location(channel, config, signed_msi):
-  namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.SIGNED)
-  bucket = namer.editor_installer_filepath(
-      config['revision'], config['system'], config['bits'], 'msi')
-  run([GSUTIL, 'cp', '-a', 'public-read', signed_msi, bucket])
-
-def main():
-  if sys.platform != 'linux2':
-    print "This script was only tested on linux. Please run it on linux!"
-    sys.exit(1)
-
-  parser = GetOptionsParser()
-  (options, args) = parser.parse_args()
-
-  if not options.scratch_dir:
-    die("No scratch directory given.")
-  if not options.revision:
-    die("No revision given.")
-  if not options.prepare and not options.deploy:
-    die("No prepare/deploy parameter given.")
-  if options.prepare and options.deploy:
-    die("Can't have prepare and deploy parameters at the same time.")
-  if len(args) > 0:
-    die("Invalid additional arguments: %s." % args)
-
-  if not options.channel:
-    die("You need to specify a channel with --channel.")
-
-  global DRY_RUN
-  DRY_RUN = options.dry_run
-
-  downloads_dir = os.path.join(options.scratch_dir, 'downloads')
-  presign_dir = os.path.join(options.scratch_dir, 'presign')
-  postsign_dir = os.path.join(options.scratch_dir, 'postsign')
-  uploads_dir = os.path.join(options.scratch_dir, 'uploads')
-
-  if options.prepare:
-    # Clean all directories
-    clean_directory(downloads_dir)
-    clean_directory(presign_dir)
-    clean_directory(postsign_dir)
-    clean_directory(uploads_dir)
-  elif options.deploy:
-    clean_directory(uploads_dir)
-
-  # These are the locations where we can find the *.app folders and *.exe files
-  # and the names we use inside the scratch directory.
-  locations = {
-    'macos' : {
-      'editor' : os.path.join('dart', 'DartEditor.app'),
-      'chrome' : os.path.join('dart', 'chromium', 'Chromium.app'),
-
-      'editor_scratch' : 'DartEditor%(bits)s.app',
-      'chrome_scratch' : 'Chromium%(bits)s.app',
-
-      'zip' : True,
-    },
-    'win32' : {
-      'editor' : os.path.join('dart', 'DartEditor.exe'),
-      'chrome' : os.path.join('dart', 'chromium', 'chrome.exe'),
-
-      'msi_scratch' : 'darteditor-installer-windows-%(bits)s.msi',
-      'editor_scratch' : 'DartEditor%(bits)s.exe',
-      'chrome_scratch' : 'chromium%(bits)s.exe',
-
-      'zip' : False,
-    },
-  }
-
-  # Desitination of zip files we download
-  for system in ('macos', 'win32'):
-    for bits in ('32', '64'):
-      config = {
-        'revision' : options.revision,
-        'system' : system,
-        'bits' : bits,
-      }
-
-      destination = os.path.join(downloads_dir, FILENAME_PATTERN % config)
-      destination_dir = os.path.join(downloads_dir, BASENAME_PATTERN % config)
-
-      deploy = os.path.join(uploads_dir, FILENAME_PATTERN % config)
-      deploy_dir = os.path.join(uploads_dir, BASENAME_PATTERN % config)
-
-      if options.prepare:
-        # Download *.zip files from GCS buckets
-        download_from_new_location(options.channel, config, destination)
-
-        run(['unzip', destination, '-d', destination_dir])
-
-        for name in ['editor', 'chrome']:
-          from_path = os.path.join(destination_dir, locations[system][name])
-          to_path = os.path.join(
-              presign_dir, locations[system]['%s_scratch' % name] % config)
-
-          if locations[system]['zip']:
-            # We copy a .app directory directory and zip it
-            copy_and_zip(from_path, to_path)
-          else:
-            # We copy an .exe file
-            copy_file(from_path, to_path)
-
-        # Download .*msi installer from GCS to presign directory
-        if system == 'win32':
-          presign_msi = os.path.join(
-              presign_dir, locations[system]['msi_scratch'] % config)
-          download_msi_installer_from_new_location(
-              options.channel, config, presign_msi)
-      elif options.deploy:
-        copy_tree(destination_dir, deploy_dir)
-
-        for name in ['editor', 'chrome']:
-          from_path = os.path.join(
-              postsign_dir, locations[system]['%s_scratch' % name] % config)
-          to_path = os.path.join(deploy_dir, locations[system][name])
-
-          if locations[system]['zip']:
-            # We unzip a zip file and copy the resulting signed .app directory
-            unzip_and_copy(from_path, to_path)
-          else:
-            # We copy the signed .exe file
-            copy_file(from_path, to_path)
-
-        deploy_zip_file = os.path.abspath(deploy)
-        with ChangedWorkingDirectory(deploy_dir):
-          run(['zip', '-r9', deploy_zip_file, 'dart'])
-
-        # Upload *.zip/*.zip.md5sum and set 'public-read' ACL
-        upload_to_new_location(options.channel, config, deploy_zip_file)
-
-        # Upload *.msi installer and set 'public-read ACL
-        if system == 'win32':
-          postsign_msi = os.path.join(
-              postsign_dir, locations[system]['msi_scratch'] % config)
-          upload_msi_installer_to_new_location(
-              options.channel, config, postsign_msi)
-
-if __name__ == '__main__':
-  main()
diff --git a/tools/utils.py b/tools/utils.py
index 4b7fae5..7b203aa 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -75,14 +75,18 @@
 
 # Try to guess the number of cpus on this machine.
 def GuessCpus():
+  if os.getenv("DART_NUMBER_OF_CORES") is not None:
+    return int(os.getenv("DART_NUMBER_OF_CORES"))
   if os.path.exists("/proc/cpuinfo"):
     return int(commands.getoutput("grep -E '^processor' /proc/cpuinfo | wc -l"))
   if os.path.exists("/usr/bin/hostinfo"):
-    return int(commands.getoutput('/usr/bin/hostinfo | grep "processors are logically available." | awk "{ print \$1 }"'))
+    return int(commands.getoutput('/usr/bin/hostinfo |'
+        ' grep "processors are logically available." |'
+        ' awk "{ print \$1 }"'))
   win_cpu_count = os.getenv("NUMBER_OF_PROCESSORS")
   if win_cpu_count:
     return int(win_cpu_count)
-  return int(os.getenv("DART_NUMBER_OF_CORES", 2))
+  return 2
 
 def GetWindowsRegistryKeyName(name):
   import win32process
@@ -236,6 +240,7 @@
 ARCH_GUESS = GuessArchitecture()
 BASE_DIR = os.path.abspath(os.path.join(os.curdir, '..'))
 DART_DIR = os.path.abspath(os.path.join(__file__, '..', '..'))
+VERSION_FILE = os.path.join(DART_DIR, 'tools', 'VERSION')
 
 def GetBuildbotGSUtilPath():
   gsutil = '/b/build/scripts/slave/gsutil'
@@ -337,13 +342,12 @@
       return match.group(1)
     return None
 
-  version_file = os.path.join(DART_DIR, 'tools', 'VERSION')
   try:
-    fd = open(version_file)
+    fd = open(VERSION_FILE)
     content = fd.read()
     fd.close()
   except:
-    print "Warning: Couldn't read VERSION file (%s)" % version_file
+    print "Warning: Couldn't read VERSION file (%s)" % VERSION_FILE
     return None
 
   channel = match_against('^CHANNEL ([A-Za-z0-9]+)$', content)
@@ -357,7 +361,7 @@
     return Version(
         channel, major, minor, patch, prerelease, prerelease_patch)
   else:
-    print "Warning: VERSION file (%s) has wrong format" % version_file
+    print "Warning: VERSION file (%s) has wrong format" % VERSION_FILE
     return None
 
 
diff --git a/utils/compiler/compiler.gyp b/utils/compiler/compiler.gyp
index 37d2074..f57ad90 100644
--- a/utils/compiler/compiler.gyp
+++ b/utils/compiler/compiler.gyp
@@ -36,7 +36,6 @@
             'create_snapshot.dart',
             '--output_dir=<(SHARED_INTERMEDIATE_DIR)',
             '--dart2js_main=pkg/compiler/lib/src/dart2js.dart',
-            '--docgen_main=pkg/docgen/bin/docgen.dart',
             '--package_root=<(PRODUCT_DIR)/packages/',
           ],
         },
diff --git a/utils/compiler/create_snapshot.dart b/utils/compiler/create_snapshot.dart
index 0123792..1a27431 100644
--- a/utils/compiler/create_snapshot.dart
+++ b/utils/compiler/create_snapshot.dart
@@ -18,12 +18,10 @@
 
 Future<String> getSnapshotGenerationFile(var args, var rootPath) {
   var dart2js = rootPath.resolve(args["dart2js_main"]);
-  var docgen = rootPath.resolve(args["docgen_main"]);
   return getVersion(rootPath).then((version) {
     var snapshotGenerationText =
 """
 import '${dart2js.toFilePath(windows: false)}' as dart2jsMain;
-import '${docgen.toFilePath(windows: false)}' as docgenMain;
 import 'dart:io';
 
 void main(List<String> arguments) {
@@ -32,8 +30,6 @@
   if (tool == "dart2js") {
     dart2jsMain.BUILD_ID = "$version";
     dart2jsMain.main(arguments.skip(1).toList());
-  } else if (tool == "docgen") {
-    docgenMain.main(arguments.skip(1).toList());
   }
 }
 
@@ -84,12 +80,11 @@
  * Takes the following arguments:
  * --output_dir=val     The full path to the output_dir.
  * --dart2js_main=val   The path to the dart2js main script relative to root.
- * --docgen_main=val    The path to the docgen main script relative to root.
  * --package-root=val   The package-root used to find packages for the snapshot.
  */
 void main(List<String> arguments) {
   var validArguments = ["--output_dir", "--dart2js_main",
-                        "--docgen_main", "--package_root"];
+                        "--package_root"];
   var args = {};
   for (var argument in arguments) {
     var argumentSplit = argument.split("=");
@@ -100,7 +95,6 @@
     args[argumentSplit[0].substring(2)] = argumentSplit[1];
   }
   if (!args.containsKey("dart2js_main")) throw "Please specify dart2js_main";
-  if (!args.containsKey("docgen_main")) throw "Please specify docgen_main";
   if (!args.containsKey("output_dir")) throw "Please specify output_dir";
   if (!args.containsKey("package_root")) throw "Please specify package_root";