Version 0.5.3.0

svn merge -r 22191:22222 https://dart.googlecode.com/svn/branches/bleeding_edge trunk

git-svn-id: http://dart.googlecode.com/svn/trunk@22223 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkg/oauth2/lib/src/client.dart b/pkg/oauth2/lib/src/client.dart
index ec8dda5..62e2288 100644
--- a/pkg/oauth2/lib/src/client.dart
+++ b/pkg/oauth2/lib/src/client.dart
@@ -109,7 +109,8 @@
       if (!params.containsKey('error')) return response;
 
       throw new AuthorizationException(
-          params['error'], params['error_description'], params['error_uri']);
+          params['error'], params['error_description'],
+          params['error_uri'] == null ? null : Uri.parse(params['error_uri']));
     });
   }
 
diff --git a/pkg/oauth2/test/client_test.dart b/pkg/oauth2/test/client_test.dart
index bac0548..7a05e99 100644
--- a/pkg/oauth2/test/client_test.dart
+++ b/pkg/oauth2/test/client_test.dart
@@ -25,12 +25,6 @@
   httpClient = new ExpectClient();
 }
 
-void expectFutureThrows(future, predicate) {
-  future.catchError(expectAsync1((error) {
-    expect(predicate(error), isTrue);
-  }));
-}
-
 void main() {
   group('with expired credentials', () {
     setUp(createHttpClient);
@@ -42,8 +36,8 @@
       var client = new oauth2.Client('identifier', 'secret', credentials,
           httpClient: httpClient);
 
-      expectFutureThrows(client.get(requestUri),
-                         (e) => e is oauth2.ExpirationException);
+      expect(client.get(requestUri),
+          throwsA(new isInstanceOf<oauth2.ExpirationException>()));
     });
 
     test("that can be refreshed refreshes the credentials and sends the "
@@ -123,8 +117,7 @@
       var client = new oauth2.Client('identifier', 'secret', credentials,
           httpClient: httpClient);
 
-      expectFutureThrows(client.refreshCredentials(),
-                         (e) => e is StateError);
+      expect(client.refreshCredentials(), throwsA(isStateError));
     });
   });
 
@@ -148,8 +141,8 @@
                 headers: {'www-authenticate': authenticate}));
       });
 
-      expectFutureThrows(client.read(requestUri),
-                         (e) => e is oauth2.AuthorizationException);
+      expect(client.read(requestUri),
+          throwsA(new isInstanceOf<oauth2.AuthorizationException>()));
     });
 
     test('passes through a 401 response without www-authenticate', () {
diff --git a/pkg/scheduled_test/lib/src/schedule.dart b/pkg/scheduled_test/lib/src/schedule.dart
index d5eb9af..06064c5 100644
--- a/pkg/scheduled_test/lib/src/schedule.dart
+++ b/pkg/scheduled_test/lib/src/schedule.dart
@@ -111,14 +111,6 @@
   /// The timer for keeping track of task timeouts. This may be null.
   Timer _timeoutTimer;
 
-  /// If `true`, then new [Task]s will capture the current stack trace before
-  /// running. This can be set to `false` to speed up running tests since
-  /// capturing stack traces is currently quite slow. Even when set to `false`,
-  /// stack traces from *thrown* exceptions will be caught. This only disables
-  /// the eager collection of stack traces *before* an error occurs. Defaults
-  /// to `true`.
-  bool captureStackTraces = true;
-
   /// Creates a new schedule with empty task queues.
   Schedule() {
     _tasks = new TaskQueue._("tasks", this);
@@ -354,10 +346,6 @@
   /// The name of the queue, for debugging purposes.
   final String name;
 
-  /// If `true`, then new [Task]s in this queue will capture the current stack
-  /// trace before running.
-  bool get captureStackTraces => _schedule.captureStackTraces;
-
   /// The [Schedule] that created this queue.
   final Schedule _schedule;
 
@@ -379,9 +367,9 @@
 
   /// The descriptions of all callbacks that are blocking the completion of
   /// [this].
-  List<String> get pendingCallbacks =>
-      new UnmodifiableListView<String>(_pendingCallbacks);
-  final _pendingCallbacks = new Queue<String>();
+  List<PendingCallback> get pendingCallbacks =>
+      new UnmodifiableListView<PendingCallback>(_pendingCallbacks);
+  final _pendingCallbacks = new Queue<PendingCallback>();
 
   /// A completer that will be completed once [_pendingCallbacks] becomes empty
   /// after the queue finishes running its tasks.
@@ -505,18 +493,19 @@
     bool _timedOut() =>
       _schedule.currentQueue != this || pendingCallbacks.isEmpty;
 
-    if (description == null) {
-      description = "Out-of-band operation #${_totalCallbacks}";
-    }
-
-    if (captureStackTraces) {
-      var stackString = prefixLines(terseTraceString(new Trace.current()));
-      description += "\n\nStack trace:\n$stackString";
-    }
-
     _totalCallbacks++;
+    var trace = new Trace.current();
+    var pendingCallback = new PendingCallback._(() {
+      var fullDescription = description;
+      if (fullDescription == null) {
+        fullDescription = "Out-of-band operation #${_totalCallbacks}";
+      }
 
-    _pendingCallbacks.add(description);
+      var stackString = prefixLines(terseTraceString(trace));
+      fullDescription += "\n\nStack trace:\n$stackString";
+    });
+    _pendingCallbacks.add(pendingCallback);
+
     return (arg) {
       try {
         return fn(arg);
@@ -531,7 +520,7 @@
       } finally {
         if (_timedOut()) return;
 
-        _pendingCallbacks.remove(description);
+        _pendingCallbacks.remove(pendingCallback);
         if (_pendingCallbacks.isEmpty && !isRunningTasks) {
           _noPendingCallbacksCompleter.complete();
         }
@@ -605,3 +594,22 @@
     }).join("\n");
   }
 }
+
+/// A thunk for lazily resolving the description of a [PendingCallback].
+typedef String _DescriptionThunk();
+
+/// An identifier for an out-of-band callback running during a schedule.
+class PendingCallback {
+  final _DescriptionThunk _thunk;
+  String _description;
+
+  /// The string description of the callback.
+  String get description {
+    if (_description == null) _description = _thunk();
+    return _description;
+  }
+
+  String toString() => description;
+
+  PendingCallback._(this._thunk);
+}
diff --git a/pkg/scheduled_test/lib/src/schedule_error.dart b/pkg/scheduled_test/lib/src/schedule_error.dart
index 09bb350..910e4f5 100644
--- a/pkg/scheduled_test/lib/src/schedule_error.dart
+++ b/pkg/scheduled_test/lib/src/schedule_error.dart
@@ -33,7 +33,7 @@
 
   /// The descriptions of out-of-band callbacks that were pending when this
   /// error occurred.
-  final Iterable<String> pendingCallbacks;
+  final Iterable<PendingCallback> pendingCallbacks;
 
   /// The state of the schedule at the time the error was detected.
   final ScheduleState _stateWhenDetected;
@@ -54,10 +54,7 @@
       stackTrace = attachedTrace;
     }
 
-    if (schedule.captureStackTraces && stackTrace == null) {
-      stackTrace = new Trace.current();
-    }
-
+    if (stackTrace == null) stackTrace = new Trace.current();
     return new ScheduleError(schedule, error, stackTrace);
   }
 
@@ -69,7 +66,7 @@
         schedule = schedule,
         task = schedule.currentTask,
         queue = schedule.currentQueue,
-        pendingCallbacks = schedule.currentQueue == null ? <String>[]
+        pendingCallbacks = schedule.currentQueue == null ? <PendingCallback>[]
             : schedule.currentQueue.pendingCallbacks.toList(),
         _stateWhenDetected = schedule.state;
 
@@ -112,7 +109,7 @@
       result.write("\n\n");
       result.writeln("Pending out-of-band callbacks:");
       for (var callback in pendingCallbacks) {
-        result.writeln(prefixLines(callback, firstPrefix: "* "));
+        result.writeln(prefixLines(callback.toString(), firstPrefix: "* "));
       }
     }
 
diff --git a/pkg/scheduled_test/lib/src/task.dart b/pkg/scheduled_test/lib/src/task.dart
index 2dfc127..44f6833 100644
--- a/pkg/scheduled_test/lib/src/task.dart
+++ b/pkg/scheduled_test/lib/src/task.dart
@@ -72,7 +72,7 @@
 
   Task._(fn(), this.description, TaskQueue queue, this.parent, this._id)
       : queue = queue,
-        stackTrace = queue.captureStackTraces ? new Trace.current() : null {
+        stackTrace = new Trace.current() {
     this.fn = () {
       if (state != TaskState.WAITING) {
         throw new StateError("Can't run $state task '$this'.");
diff --git a/pkg/scheduled_test/test/scheduled_test/capture_stack_traces_test.dart b/pkg/scheduled_test/test/scheduled_test/capture_stack_traces_test.dart
deleted file mode 100644
index 25bba20..0000000
--- a/pkg/scheduled_test/test/scheduled_test/capture_stack_traces_test.dart
+++ /dev/null
@@ -1,53 +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:async';
-import 'dart:io' hide sleep;
-
-import 'package:scheduled_test/scheduled_test.dart';
-
-import '../metatest.dart';
-import '../utils.dart';
-
-void main() {
-  setUpTimeout();
-
-  expectTestsPass('error includes a stack trace by default', () {
-    var error;
-    test('test 1', () {
-      currentSchedule.onComplete.schedule(() {
-        error = currentSchedule.errors.first;
-      });
-
-      schedule(() => throw 'error');
-    });
-
-    test('test 2', () {
-      // There should be two stack traces: one for the thrown error, and one
-      // for the failed task (which is the captured one).
-      expect(error.toString(),
-          stringContainsInOrder(['Stack trace:', 'Stack trace:']));
-    });
-  }, passing: ['test 2']);
-
-  expectTestsPass('does not capture a stack trace if set to false', () {
-    var errorThrown = new Object();
-    var error;
-    test('test 1', () {
-      currentSchedule.captureStackTraces = false;
-      currentSchedule.onComplete.schedule(() {
-        error = currentSchedule.errors.first;
-      });
-
-      schedule(() => throw errorThrown);
-    });
-
-    test('test 2', () {
-      // There should only be the stack trace for the thrown exception, but no
-      // captured trace for the failed task.
-      var numStackTraces = 'Stack trace:'.allMatches(error.toString()).length;
-      expect(numStackTraces, equals(1));
-    });
-  }, passing: ['test 2']);
-}
diff --git a/pkg/stack_trace/lib/src/lazy_trace.dart b/pkg/stack_trace/lib/src/lazy_trace.dart
new file mode 100644
index 0000000..8c44829
--- /dev/null
+++ b/pkg/stack_trace/lib/src/lazy_trace.dart
@@ -0,0 +1,34 @@
+// 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.
+
+library lazy_trace;
+
+import 'frame.dart';
+import 'trace.dart';
+
+/// A thunk for lazily constructing a [Trace].
+typedef Trace TraceThunk();
+
+/// A wrapper around a [TraceThunk]. This works around issue 9579 by avoiding
+/// the conversion of native [StackTrace]s to strings until it's absolutely
+/// necessary.
+class LazyTrace implements Trace {
+  final TraceThunk _thunk;
+  Trace _inner;
+
+  LazyTrace(this._thunk);
+
+  Trace get _trace {
+    if (_inner == null) _inner = _thunk();
+    return _inner;
+  }
+
+  List<Frame> get frames => _trace.frames;
+  String get stackTrace => _trace.stackTrace;
+  String get fullStackTrace => _trace.fullStackTrace;
+  Trace get terse => new LazyTrace(() => _trace.terse);
+  Trace foldFrames(bool predicate(frame)) =>
+    new LazyTrace(() => _trace.foldFrames(predicate));
+  String toString() => _trace.toString();
+}
diff --git a/pkg/stack_trace/lib/src/trace.dart b/pkg/stack_trace/lib/src/trace.dart
index 54f99db..ffea498 100644
--- a/pkg/stack_trace/lib/src/trace.dart
+++ b/pkg/stack_trace/lib/src/trace.dart
@@ -9,6 +9,7 @@
 import 'dart:math' as math;
 
 import 'frame.dart';
+import 'lazy_trace.dart';
 
 final _patchRegExp = new RegExp(r"-patch$");
 
@@ -42,7 +43,7 @@
       throw '';
     } catch (_, nativeTrace) {
       var trace = new Trace.from(nativeTrace);
-      return new Trace(trace.frames.skip(level + 1));
+      return new LazyTrace(() => new Trace(trace.frames.skip(level + 1)));
     }
   }
 
@@ -52,7 +53,7 @@
   /// a [Trace], it will be returned as-is.
   factory Trace.from(StackTrace trace) {
     if (trace is Trace) return trace;
-    return new Trace.parse(trace.toString());
+    return new LazyTrace(() => new Trace.parse(trace.toString()));
   }
 
   /// Parses a string representation of a stack trace.
diff --git a/runtime/lib/errors_patch.dart b/runtime/lib/errors_patch.dart
index 7d763e3..daf8f01 100644
--- a/runtime/lib/errors_patch.dart
+++ b/runtime/lib/errors_patch.dart
@@ -23,7 +23,12 @@
     numPositionalArguments -= numNamedArguments;
     List positionalArguments;
     if (numPositionalArguments == 0) {
-      positionalArguments = [];
+      // Differ between no arguments specified and 0 arguments.
+      // TODO(srdjan): This can currently occur for unresolvable static methods.
+      // In that case, the arguments are evaluated but not passed to the
+      // throwing stub (see EffectGraphVisitor::BuildThrowNoSuchMethodError and
+      // Parser::ThrowNoSuchMethodError)).
+      positionalArguments = argumentNames == null ? null : [];
     } else {
       positionalArguments = arguments.sublist(0, numPositionalArguments);
     }
@@ -79,8 +84,13 @@
           msg = "The null object does not have a $type_str '$_memberName'"
               "$args_message.";
         } else {
-          msg = "Class '${_receiver.runtimeType}' has no instance $type_str "
-              "'$_memberName'$args_message.";
+          if (_receiver is Function) {
+            msg = "Closure call with mismatched arguments: "
+                "function '$_memberName'";
+          } else {
+            msg = "Class '${_receiver.runtimeType}' has no instance $type_str "
+                "'$_memberName'$args_message.";
+          }
         }
         break;
       }
@@ -94,7 +104,7 @@
         break;
       }
       case _InvocationMirror._TOP_LEVEL: {
-        msg = "No top-level $type_str '$_memberName' declared.";
+        msg = "No top-level $type_str '$_memberName'$args_message declared.";
         break;
       }
     }
@@ -104,7 +114,12 @@
   /* patch */ String toString() {
     StringBuffer actual_buf = new StringBuffer();
     int i = 0;
-    if (_arguments != null) {
+    if (_arguments == null) {
+      // Actual arguments unknown.
+      // TODO(srdjan): Remove once arguments are passed for unresolvable
+      // static methods.
+      actual_buf.write("...");
+    } else {
       for (; i < _arguments.length; i++) {
         if (i > 0) {
           actual_buf.write(", ");
diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc
index 8bc8e4d..bebc1c6 100644
--- a/runtime/lib/object.cc
+++ b/runtime/lib/object.cc
@@ -40,13 +40,17 @@
   if (is_method.value()) {
     // Report if a function with same name (but different arguments) has been
     // found.
-    Class& instance_class = Class::Handle(instance.clazz());
-    Function& function =
-        Function::Handle(instance_class.LookupDynamicFunction(member_name));
-    while (function.IsNull()) {
-      instance_class = instance_class.SuperClass();
-      if (instance_class.IsNull()) break;
+    Function& function = Function::Handle();
+    if (instance.IsClosure()) {
+      function = Closure::function(instance);
+    } else {
+      Class& instance_class = Class::Handle(instance.clazz());
       function = instance_class.LookupDynamicFunction(member_name);
+      while (function.IsNull()) {
+        instance_class = instance_class.SuperClass();
+        if (instance_class.IsNull()) break;
+        function = instance_class.LookupDynamicFunction(member_name);
+      }
     }
     if (!function.IsNull()) {
       const int total_num_parameters = function.NumParameters();
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index 9df2cab..25ffdf1 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -1086,7 +1086,14 @@
   const Array& orig_arguments_desc = Array::CheckedHandle(arguments.ArgAt(2));
   const Array& orig_arguments = Array::CheckedHandle(arguments.ArgAt(3));
 
-  const String& original_function_name = String::Handle(ic_data.target_name());
+  String& original_function_name = String::Handle(ic_data.target_name());
+  if (receiver.IsClosure()) {
+    // For closure the function name is always 'call'. Replace it with the
+    // name of the closurized function so that exception contains more
+    // relevant information.
+    const Function& function = Function::Handle(Closure::function(receiver));
+    original_function_name = function.QualifiedUserVisibleName();
+  }
   const Object& result = Object::Handle(
       DartEntry::InvokeNoSuchMethod(receiver,
                                     original_function_name,
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
index 63f4ca4..dc2e042 100644
--- a/runtime/vm/compiler.cc
+++ b/runtime/vm/compiler.cc
@@ -449,8 +449,10 @@
     var_name = var_descriptors.GetName(i);
     RawLocalVarDescriptors::VarInfo var_info;
     var_descriptors.GetInfo(i, &var_info);
-    if (var_info.kind == RawLocalVarDescriptors::kContextChain) {
-      OS::Print("  saved CTX reg offset %"Pd"\n", var_info.index);
+    if (var_info.kind == RawLocalVarDescriptors::kSavedEntryContext) {
+      OS::Print("  saved caller's CTX reg offset %"Pd"\n", var_info.index);
+    } else if (var_info.kind == RawLocalVarDescriptors::kSavedCurrentContext) {
+      OS::Print("  saved current CTX reg offset %"Pd"\n", var_info.index);
     } else {
       if (var_info.kind == RawLocalVarDescriptors::kContextLevel) {
         OS::Print("  context level %"Pd" scope %d",
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index ae47a18..f79c008 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -5923,7 +5923,7 @@
   EXPECT_VALID(result);
 
   result = Dart_Invoke(test_script, NewString("e1"), 0, NULL);
-  EXPECT_ERROR(result, "method not found: 'unpatched'");
+  EXPECT_ERROR(result, "No top-level method 'unpatched'");
 
   int64_t value = 0;
   result = Dart_Invoke(test_script, NewString("m1"), 0, NULL);
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 0023217..0692ef5 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -339,13 +339,15 @@
 }
 
 
-RawContext* ActivationFrame::GetSavedContext(const Context& ctx) {
+// Get the caller's context, or return ctx if the function does not
+// save the caller's context on entry.
+RawContext* ActivationFrame::GetSavedEntryContext(const Context& ctx) {
   GetVarDescriptors();
   intptr_t var_desc_len = var_descriptors_.Length();
   for (int i = 0; i < var_desc_len; i++) {
     RawLocalVarDescriptors::VarInfo var_info;
     var_descriptors_.GetInfo(i, &var_info);
-    if (var_info.kind == RawLocalVarDescriptors::kContextChain) {
+    if (var_info.kind == RawLocalVarDescriptors::kSavedEntryContext) {
       return reinterpret_cast<RawContext*>(GetLocalVarValue(var_info.index));
     }
   }
@@ -353,6 +355,22 @@
 }
 
 
+// Get the saved context if the callee of this activation frame is a
+// closure function.
+RawContext* ActivationFrame::GetSavedCurrentContext() {
+  GetVarDescriptors();
+  intptr_t var_desc_len = var_descriptors_.Length();
+  for (int i = 0; i < var_desc_len; i++) {
+    RawLocalVarDescriptors::VarInfo var_info;
+    var_descriptors_.GetInfo(i, &var_info);
+    if (var_info.kind == RawLocalVarDescriptors::kSavedCurrentContext) {
+      return reinterpret_cast<RawContext*>(GetLocalVarValue(var_info.index));
+    }
+  }
+  return Context::null();
+}
+
+
 ActivationFrame* DebuggerStackTrace::GetHandlerFrame(
     const Instance& exc_obj) const {
   ExceptionHandlers& handlers = ExceptionHandlers::Handle();
@@ -891,15 +909,40 @@
                                                         frame->fp(),
                                                         frame->sp(),
                                                         code);
+      // If this activation frame called a closure, the function has
+      // saved its context before the call.
+      if (stack_trace->Length() > 0) {
+        ActivationFrame* callee_frame =
+            stack_trace->ActivationFrameAt(stack_trace->Length() - 1);
+        if (callee_frame->function().IsClosureFunction()) {
+          ctx = activation->GetSavedCurrentContext();
+          if (FLAG_verbose_debug && ctx.IsNull()) {
+            const Function& caller = activation->function();
+            const Function& callee = callee_frame->function();
+            const Script& script =
+                Script::Handle(Class::Handle(caller.Owner()).script());
+            intptr_t line, col;
+            script.GetTokenLocation(activation->TokenPos(), &line, &col);
+            printf("CollectStackTrace error: no saved context in function "
+                "'%s' which calls closure '%s' "
+                " in line %"Pd" column %"Pd"\n",
+                caller.ToFullyQualifiedCString(),
+                callee.ToFullyQualifiedCString(),
+                line, col);
+          }
+          ASSERT(!ctx.IsNull());
+        }
+      }
       if (optimized_frame_found || code.is_optimized()) {
         // Set context to null, to avoid returning bad context variable values.
         activation->SetContext(Context::Handle());
         optimized_frame_found = true;
       } else {
         activation->SetContext(ctx);
-        ctx = activation->GetSavedContext(ctx);
       }
       stack_trace->AddActivation(activation);
+      // Get caller's context if this function saved it on entry.
+      ctx = activation->GetSavedEntryContext(ctx);
     } else if (frame->IsEntryFrame()) {
       ctx = reinterpret_cast<EntryFrame*>(frame)->SavedContext();
     }
@@ -1641,7 +1684,6 @@
 // Remove and delete the source breakpoint bpt and its associated
 // code breakpoints.
 void Debugger::RemoveBreakpoint(intptr_t bp_id) {
-  ASSERT(src_breakpoints_ != NULL);
   SourceBreakpoint* prev_bpt = NULL;
   SourceBreakpoint* curr_bpt = src_breakpoints_;
   while (curr_bpt != NULL) {
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h
index 94863b4..cef4502 100644
--- a/runtime/vm/debugger.h
+++ b/runtime/vm/debugger.h
@@ -159,7 +159,8 @@
                   Instance* value);
 
   RawArray* GetLocalVariables();
-  RawContext* GetSavedContext(const Context& ctx);
+  RawContext* GetSavedEntryContext(const Context& ctx);
+  RawContext* GetSavedCurrentContext();
 
  private:
   intptr_t PcDescIndex();
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index 9a7cf79..b4b833a 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -3240,6 +3240,7 @@
       Smi::ZoneHandle(Smi::New(invocation_type))));
   arguments->Add(PushArgument(invocation_type_value));
   // List arguments.
+  // TODO(regis): Pass arguments.
   Value* arguments_value = Bind(new ConstantInstr(Array::ZoneHandle()));
   arguments->Add(PushArgument(arguments_value));
   // List argumentNames.
diff --git a/runtime/vm/flow_graph_compiler_arm.cc b/runtime/vm/flow_graph_compiler_arm.cc
index acd4925..3f0078a 100644
--- a/runtime/vm/flow_graph_compiler_arm.cc
+++ b/runtime/vm/flow_graph_compiler_arm.cc
@@ -756,6 +756,8 @@
   // R5 : ic-data.
   // R4 : arguments descriptor array.
   __ BranchLink(&StubCode::CallNoSuchMethodFunctionLabel());
+  // Emit descriptors in order to provide correct postion in stacktrace.
+  AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
   if (is_optimizing()) {
     stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                       empty_stack_bitmap,
@@ -940,6 +942,8 @@
         // R5 : ic-data.
         // R4 : arguments descriptor array.
         __ BranchLink(&StubCode::CallNoSuchMethodFunctionLabel());
+        // Emit descriptors in order to provide correct postion in stacktrace.
+        AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
         if (is_optimizing()) {
           stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                             empty_stack_bitmap,
diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc
index bc3d443..ac8423e 100644
--- a/runtime/vm/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/flow_graph_compiler_ia32.cc
@@ -850,6 +850,8 @@
   // ECX : ic-data.
   // EDX : arguments descriptor array.
   __ call(&StubCode::CallNoSuchMethodFunctionLabel());
+  // Emit descriptors in order to provide correct postion in stacktrace.
+  AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
   if (is_optimizing()) {
     stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                       empty_stack_bitmap,
@@ -1009,6 +1011,8 @@
         // ECX : ic-data.
         // EDX : arguments descriptor array.
         __ call(&StubCode::CallNoSuchMethodFunctionLabel());
+        // Emit descriptors in order to provide correct postion in stacktrace.
+        AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
         if (is_optimizing()) {
           stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                             empty_stack_bitmap,
diff --git a/runtime/vm/flow_graph_compiler_mips.cc b/runtime/vm/flow_graph_compiler_mips.cc
index 4308491..2c286f1 100644
--- a/runtime/vm/flow_graph_compiler_mips.cc
+++ b/runtime/vm/flow_graph_compiler_mips.cc
@@ -774,6 +774,8 @@
   // S5 : ic-data.
   // S4 : arguments descriptor array.
   __ BranchLink(&StubCode::CallNoSuchMethodFunctionLabel());
+  // Emit descriptors in order to provide correct postion in stacktrace.
+  AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
   if (is_optimizing()) {
     stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                       empty_stack_bitmap,
@@ -984,6 +986,8 @@
         // S5 : ic-data.
         // S4 : arguments descriptor array.
         __ BranchLink(&StubCode::CallNoSuchMethodFunctionLabel());
+        // Emit descriptors in order to provide correct postion in stacktrace.
+        AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
         if (is_optimizing()) {
           stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                             empty_stack_bitmap,
diff --git a/runtime/vm/flow_graph_compiler_x64.cc b/runtime/vm/flow_graph_compiler_x64.cc
index d566fa1..ca8a7e0 100644
--- a/runtime/vm/flow_graph_compiler_x64.cc
+++ b/runtime/vm/flow_graph_compiler_x64.cc
@@ -848,6 +848,8 @@
   // RBX : ic-data.
   // R10 : arguments descriptor array.
   __ call(&StubCode::CallNoSuchMethodFunctionLabel());
+  // Emit descriptors in order to provide correct postion in stacktrace.
+  AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
   if (is_optimizing()) {
     stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                       empty_stack_bitmap,
@@ -1008,6 +1010,8 @@
         // RBX : ic-data.
         // R10 : arguments descriptor array.
         __ call(&StubCode::CallNoSuchMethodFunctionLabel());
+        // Emit descriptors in order to provide correct postion in stacktrace.
+        AddCurrentDescriptor(PcDescriptors::kOther, -1, function.token_pos());
         if (is_optimizing()) {
           stackmap_table_builder_->AddEntry(assembler()->CodeSize(),
                                             empty_stack_bitmap,
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 30a8cd0..a222421 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -12364,7 +12364,14 @@
 
 
 const char* Array::ToCString() const {
-  return "Array";
+  if (IsNull()) {
+    return "Array NULL";
+  }
+  const char* format = "Array len:%"Pd"";
+  intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1;
+  char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
+  OS::SNPrint(chars, len, format, Length());
+  return chars;
 }
 
 
@@ -12429,7 +12436,14 @@
 
 
 const char* ImmutableArray::ToCString() const {
-  return "ImmutableArray";
+  if (IsNull()) {
+    return "ImmutableArray NULL";
+  }
+  const char* format = "ImmutableArray len:%"Pd"";
+  intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1;
+  char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
+  OS::SNPrint(chars, len, format, Length());
+  return chars;
 }
 
 
@@ -12540,7 +12554,14 @@
 
 
 const char* GrowableObjectArray::ToCString() const {
-  return "GrowableObjectArray";
+  if (IsNull()) {
+    return "GrowableObjectArray NULL";
+  }
+  const char* format = "GrowableObjectArray len:%"Pd"";
+  intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1;
+  char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
+  OS::SNPrint(chars, len, format, Length());
+  return chars;
 }
 
 
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 854dd5e..56e8aeb 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -2341,6 +2341,7 @@
 #endif
   EXPECT((retval >> kSmiTagShift) == kSmiTestValue);
 }
+#endif  // ARCH_IS_64_BIT
 
 
 TEST_CASE(ExceptionHandlers) {
@@ -3203,6 +3204,4 @@
   EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint());
 }
 
-#endif  // TARGET_ARCH_IA32 || TARGET_ARCH_X64 || TARGET_ARCH_ARM
-
 }  // namespace dart
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index d409f54..b7814db 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -6756,7 +6756,22 @@
   // List argumentNames.
   arguments->Add(new LiteralNode(call_pos, Array::ZoneHandle()));
   // List existingArgumentNames.
-  arguments->Add(new LiteralNode(call_pos, Array::ZoneHandle()));
+  // Check if there exists a function with the same name.
+  Function& function =
+     Function::Handle(cls.LookupStaticFunction(function_name));
+  if (function.IsNull()) {
+    // TODO(srdjan): Store argument values into the argument list.
+    arguments->Add(new LiteralNode(call_pos, Array::ZoneHandle()));
+  } else {
+    const int total_num_parameters = function.NumParameters();
+    Array& array = Array::ZoneHandle(Array::New(total_num_parameters));
+    array ^= array.Canonicalize();
+    // Skip receiver.
+    for (int i = 0; i < total_num_parameters; i++) {
+      array.SetAt(i, String::Handle(function.ParameterNameAt(i)));
+    }
+    arguments->Add(new LiteralNode(call_pos, array));
+  }
   return MakeStaticCall(Symbols::NoSuchMethodError(),
                         PrivateCoreLibName(Symbols::ThrowNew()),
                         arguments);
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index d7ed903..e4bf736 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -885,7 +885,8 @@
     kStackVar = 1,
     kContextVar,
     kContextLevel,
-    kContextChain
+    kSavedEntryContext,
+    kSavedCurrentContext
   };
 
   struct VarInfo {
diff --git a/runtime/vm/scopes.cc b/runtime/vm/scopes.cc
index 137f6b8..ebd35f6 100644
--- a/runtime/vm/scopes.cc
+++ b/runtime/vm/scopes.cc
@@ -258,13 +258,23 @@
         desc.info.end_pos = var->owner()->end_token_pos();
         desc.info.index = var->index();
         vars->Add(desc);
-      } else if (var->name().Equals(
-            Symbols::Name(Symbols::kSavedEntryContextVarId))) {
+      } else if (var->name().Equals(Symbols::SavedEntryContextVar())) {
         // This is the local variable in which the function saves the
         // caller's chain of closure contexts (caller's CTX register).
         VarDesc desc;
         desc.name = &var->name();
-        desc.info.kind = RawLocalVarDescriptors::kContextChain;
+        desc.info.kind = RawLocalVarDescriptors::kSavedEntryContext;
+        desc.info.scope_id = 0;
+        desc.info.begin_pos = 0;
+        desc.info.end_pos = 0;
+        desc.info.index = var->index();
+        vars->Add(desc);
+      } else if (var->name().Equals(Symbols::SavedCurrentContextVar())) {
+        // This is the local variable in which the function saves its
+        // own context before calling a closure function.
+        VarDesc desc;
+        desc.name = &var->name();
+        desc.info.kind = RawLocalVarDescriptors::kSavedCurrentContext;
         desc.info.scope_id = 0;
         desc.info.begin_pos = 0;
         desc.info.end_pos = 0;
diff --git a/sdk/lib/_internal/pub/lib/src/lock_file.dart b/sdk/lib/_internal/pub/lib/src/lock_file.dart
index 2f39161..1e85a4d 100644
--- a/sdk/lib/_internal/pub/lib/src/lock_file.dart
+++ b/sdk/lib/_internal/pub/lib/src/lock_file.dart
@@ -5,6 +5,7 @@
 library lock_file;
 
 import 'dart:json' as json;
+import 'dart:collection';
 
 import 'package:yaml/yaml.dart';
 
@@ -88,12 +89,16 @@
 
   /// Returns the serialized YAML text of the lock file.
   String serialize() {
-    var packagesObj = <String, Map>{};
-    packages.forEach((name, id) {
+    var packagesObj = new LinkedHashMap<String, Map>();
+
+    // Sort the packages by name.
+    var sortedKeys = packages.keys.toList();
+    sortedKeys.sort();
+    sortedKeys.forEach((name) {
       packagesObj[name] = {
-        'version': id.version.toString(),
-        'source': id.source.name,
-        'description': id.description
+        'version': packages[name].version.toString(),
+        'source': packages[name].source.name,
+        'description': packages[name].description
       };
     });
 
diff --git a/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart b/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart
index c5580a9..efb6fba 100644
--- a/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart
+++ b/sdk/lib/_internal/pub/lib/src/solver/backtracking_solver.dart
@@ -168,7 +168,7 @@
   /// version of it. If there are no more versions, continues to backtrack to
   /// previous selections, and so on. If there is nothing left to backtrack to,
   /// completes to the last failure that occurred.
-  Future<List<PackageId>> _traverseSolution() {
+  Future<List<PackageId>> _traverseSolution() => resetStack(() {
     return new Traverser(this).traverse().catchError((error) {
       if (error is! SolveFailure) throw error;
 
@@ -180,7 +180,7 @@
       // All out of solutions, so fail.
       throw error;
     });
-  }
+  });
 
   /// Backtracks from the current failed solution and determines the next
   /// solution to try. If possible, it will backjump based on the cause of the
@@ -192,29 +192,7 @@
     var dependers = failure.dependencies.map((dep) => dep.depender).toSet();
 
     while (!_selected.isEmpty) {
-      // Look for a relevant selection to jump back to.
-      for (var i = _selected.length - 1; i >= 0; i--) {
-        // Can't jump to a package that has no more alternatives.
-        if (_selected[i].length == 1) continue;
-
-        var selected = _selected[i].first;
-
-        // If we find the package itself that failed, jump to it.
-        if (selected.name == failure.package) {
-          logSolve('jump to selected package ${failure.package}');
-          _selected.removeRange(i + 1, _selected.length);
-          break;
-        }
-
-        // See if this package directly or indirectly depends on [package].
-        var path = _getDependencyPath(selected, failure.package);
-        if (path != null) {
-          logSolve('backjump to ${selected.name} because it depends on '
-                   '${failure.package}  by $path');
-          _selected.removeRange(i + 1, _selected.length);
-          break;
-        }
-      }
+      _backjump(failure);
 
       // Advance past the current version of the leaf-most package.
       var previous = _selected.last.removeFirst();
@@ -232,6 +210,44 @@
     return false;
   }
 
+  /// Walks the selected packages from most to least recent to determine which
+  /// ones can be ignored and jumped over by the backtracker. The only packages
+  /// we need to backtrack to are ones that have other versions to try and that
+  /// led (possibly indirectly) to the failure. Everything else can be skipped.
+  void _backjump(SolveFailure failure) {
+    for (var i = _selected.length - 1; i >= 0; i--) {
+      // Each queue will never be empty since it gets discarded by _backtrack()
+      // when that happens.
+      var selected = _selected[i].first;
+
+      // If the package has no more versions, we can jump over it.
+      if (_selected[i].length == 1) continue;
+
+      // If we get to the package that failed, backtrack to here.
+      if (selected.name == failure.package) {
+        logSolve('backjump to failed package ${selected.name}');
+        _selected.removeRange(i + 1, _selected.length);
+        return;
+      }
+
+      // If we get to a package that depends on the failing package, backtrack
+      // to here.
+      var path = _getDependencyPath(selected, failure.package);
+      if (path != null) {
+        logSolve('backjump to ${selected.name} because it depends on '
+                 '${failure.package} along $path');
+        _selected.removeRange(i + 1, _selected.length);
+        return;
+      }
+    }
+
+    // If we got here, we walked the entire list without finding a package that
+    // could lead to another solution, so discard everything. This will happen
+    // if every package that led to the failure has no other versions that it
+    // can try to select.
+    _selected.removeRange(1, _selected.length);
+  }
+
   /// Determines if [depender] has a direct or indirect dependency on
   /// [dependent] based on the currently selected versions of all packages.
   /// Returns a string describing the dependency chain if it does, or `null` if
@@ -407,9 +423,7 @@
     // Move onto the next package if we've traversed all of these references.
     if (deps.isEmpty) return _traversePackage();
 
-    // Pump the event loop to flatten the stack trace and workaround #9583.
-    // If that bug is fixed, this can be Future.sync() instead.
-    return new Future(() {
+    return resetStack(() {
       var dep = deps.removeFirst();
 
       _validateDependency(dep, depender);
@@ -594,7 +608,7 @@
 
   if (pubspec.environment.sdkVersion.allows(sdk.version)) return;
 
-  throw new CouldNotSolveException(
+  throw new BadSdkVersionException(pubspec.name,
       'Package ${pubspec.name} requires SDK version '
       '${pubspec.environment.sdkVersion} but the current SDK is '
       '${sdk.version}.');
diff --git a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
index efd9e85..885acdc 100644
--- a/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
+++ b/sdk/lib/_internal/pub/lib/src/solver/version_solver.dart
@@ -218,13 +218,12 @@
       "depends on version ${dep.constraint}";
 }
 
-/// Exception thrown when the [VersionSolver] fails to find a solution after a
-/// certain number of iterations.
-class CouldNotSolveException extends SolveFailure {
-  CouldNotSolveException([String message])
-      : super(null, null),
-        _message = (message != null) ? message :
-            "Could not find a solution that met all constraints.";
+/// Exception thrown when the current SDK's version does not match a package's
+/// constraint on it.
+class BadSdkVersionException extends SolveFailure {
+  BadSdkVersionException(String package, String message)
+      : super(package, null),
+        _message = message;
 
   /// A message describing the specific kind of solve failure.
   final String _message;
diff --git a/sdk/lib/_internal/pub/lib/src/utils.dart b/sdk/lib/_internal/pub/lib/src/utils.dart
index c631381..a3f0f97 100644
--- a/sdk/lib/_internal/pub/lib/src/utils.dart
+++ b/sdk/lib/_internal/pub/lib/src/utils.dart
@@ -384,6 +384,31 @@
   }
 }
 
+/// Wraps [fn] to guard against several different kinds of stack overflow
+/// exceptions:
+///
+/// * A sufficiently long [Future] chain can cause a stack overflow if there are
+///   no asynchronous operations in it (issue 9583).
+/// * A recursive function that recurses too deeply without an asynchronous
+///   operation can cause a stack overflow.
+/// * Even if the former is guarded against by adding asynchronous operations,
+///   returning a value through the [Future] chain can still cause a stack
+///   overflow.
+Future resetStack(fn()) {
+  // Using a [Completer] breaks the [Future] chain for the return value and
+  // avoids the third case described above.
+  var completer = new Completer();
+
+  // Using [new Future] adds an asynchronous operation that works around the
+  // first and second cases described above.
+  new Future(fn).then((val) {
+    runAsync(() => completer.complete(val));
+  }).catchError((err) {
+    runAsync(() => completer.completeError(err));
+  });
+  return completer.future;
+}
+
 /// An exception class for exceptions that are intended to be seen by the user.
 /// These exceptions won't have any debugging information printed when they're
 /// thrown.
diff --git a/sdk/lib/_internal/pub/pub.status b/sdk/lib/_internal/pub/pub.status
index 93d4029..4e60ccb 100644
--- a/sdk/lib/_internal/pub/pub.status
+++ b/sdk/lib/_internal/pub/pub.status
@@ -14,5 +14,6 @@
 *: Skip
 
 [ $system == windows ]
+test/install/git/dependency_name_match_pubspec_test: Fail # Issue 10348
 test/io_test: Fail # Issue 7505
 test/install/hosted/fail_gracefully_on_url_resolve_test: Pass, Fail # Issue 9503
diff --git a/sdk/lib/_internal/pub/test/lock_file_test.dart b/sdk/lib/_internal/pub/test/lock_file_test.dart
index 95fcd71..0f7fe53 100644
--- a/sdk/lib/_internal/pub/test/lock_file_test.dart
+++ b/sdk/lib/_internal/pub/test/lock_file_test.dart
@@ -159,12 +159,16 @@
     });
 
     group('serialize()', () {
+      var lockfile;
+      setUp(() {
+        lockfile = new LockFile.empty();
+      });
+
       test('dumps the lockfile to YAML', () {
-        var lockfile = new LockFile.empty();
         lockfile.packages['foo'] = new PackageId(
             'foo', mockSource, new Version.parse('1.2.3'), 'foo desc');
         lockfile.packages['bar'] = new PackageId(
-            'foo', mockSource, new Version.parse('3.2.1'), 'bar desc');
+            'bar', mockSource, new Version.parse('3.2.1'), 'bar desc');
 
         expect(loadYaml(lockfile.serialize()), equals({
           'packages': {
@@ -181,6 +185,29 @@
           }
         }));
       });
+
+      test('lockfile is alphabetized by package name', () {
+        var testNames = ['baz', 'Qwe', 'Q', 'B', 'Bar', 'bar', 'foo'];
+        testNames.forEach((name) {
+          lockfile.packages[name] = new PackageId(name, mockSource,
+            new Version.parse('5.5.5'), '$name desc');
+        });
+
+        expect(lockfile.serialize(),
+          '# Generated by pub\n'
+          '# See http://pub.dartlang.org/doc/glossary.html#lockfile\n'
+          '\n'
+          '{"packages":{'
+          '"B":{"version":"5.5.5","source":"mock","description":"B desc"},'
+          '"Bar":{"version":"5.5.5","source":"mock","description":"Bar desc"},'
+          '"Q":{"version":"5.5.5","source":"mock","description":"Q desc"},'
+          '"Qwe":{"version":"5.5.5","source":"mock","description":"Qwe desc"},'
+          '"bar":{"version":"5.5.5","source":"mock","description":"bar desc"},'
+          '"baz":{"version":"5.5.5","source":"mock","description":"baz desc"},'
+          '"foo":{"version":"5.5.5","source":"mock","description":"foo desc"}}}'
+          '\n'
+        );
+      });
     });
   });
 }
diff --git a/sdk/lib/_internal/pub/test/test_pub.dart b/sdk/lib/_internal/pub/test/test_pub.dart
index b978d54..dbc326c 100644
--- a/sdk/lib/_internal/pub/test/test_pub.dart
+++ b/sdk/lib/_internal/pub/test/test_pub.dart
@@ -250,11 +250,6 @@
       currentSchedule.timeout = new Duration(seconds: 10);
     }
 
-    // By default, don't capture stack traces since they slow the tests way
-    // down. To debug failing tests, comment this out.
-    currentSchedule.captureStackTraces =
-        new Options().arguments.contains('--trace');
-
     // Ensure the SDK version is always available.
     d.dir(sdkPath, [
       d.file('version', '0.1.2.3')
diff --git a/sdk/lib/_internal/pub/test/version_solver_test.dart b/sdk/lib/_internal/pub/test/version_solver_test.dart
index 6c2cb22..35af3ac 100644
--- a/sdk/lib/_internal/pub/test/version_solver_test.dart
+++ b/sdk/lib/_internal/pub/test/version_solver_test.dart
@@ -10,6 +10,7 @@
 import 'package:unittest/unittest.dart';
 
 import '../lib/src/lock_file.dart';
+import '../lib/src/log.dart' as log;
 import '../lib/src/package.dart';
 import '../lib/src/pubspec.dart';
 import '../lib/src/sdk.dart' as sdk;
@@ -27,6 +28,9 @@
 main() {
   initConfig();
 
+  // Uncomment this to debug failing tests.
+  // log.showSolver();
+
   // Since this test isn't run from the SDK, it can't find the "version" file
   // to load. Instead, just manually inject a version.
   sdk.version = new Version(1, 2, 3);
@@ -484,6 +488,111 @@
     'c': '1.0.0'
   }, maxTries: 2);
 
+  // Tests that the backjumper will jump past unrelated selections when a
+  // source conflict occurs. This test selects, in order:
+  // - myapp -> a
+  // - myapp -> b
+  // - myapp -> c (1 of 5)
+  // - b -> a
+  // It selects a and b first because they have fewer versions than c. It
+  // traverses b's dependency on a after selecting a version of c because
+  // dependencies are traversed breadth-first (all of myapps's immediate deps
+  // before any other their deps).
+  //
+  // This means it doesn't discover the source conflict until after selecting
+  // c. When that happens, it should backjump past c instead of trying older
+  // versions of it since they aren't related to the conflict.
+  testResolve('backjump to conflicting source', {
+    'myapp 0.0.0': {
+      'a': 'any',
+      'b': 'any',
+      'c': 'any'
+    },
+    'a 1.0.0': {},
+    'a 1.0.0 from mock2': {},
+    'b 1.0.0': {
+      'a': 'any'
+    },
+    'b 2.0.0': {
+      'a from mock2': 'any'
+    },
+    'c 1.0.0': {},
+    'c 2.0.0': {},
+    'c 3.0.0': {},
+    'c 4.0.0': {},
+    'c 5.0.0': {},
+  }, result: {
+    'myapp from root': '0.0.0',
+    'a': '1.0.0',
+    'b': '1.0.0',
+    'c': '5.0.0'
+  }, maxTries: 2);
+
+  // Like the above test, but for a conflicting description.
+  testResolve('backjump to conflicting description', {
+    'myapp 0.0.0': {
+      'a-x': 'any',
+      'b': 'any',
+      'c': 'any'
+    },
+    'a-x 1.0.0': {},
+    'a-y 1.0.0': {},
+    'b 1.0.0': {
+      'a-x': 'any'
+    },
+    'b 2.0.0': {
+      'a-y': 'any'
+    },
+    'c 1.0.0': {},
+    'c 2.0.0': {},
+    'c 3.0.0': {},
+    'c 4.0.0': {},
+    'c 5.0.0': {},
+  }, result: {
+    'myapp from root': '0.0.0',
+    'a': '1.0.0',
+    'b': '1.0.0',
+    'c': '5.0.0'
+  }, maxTries: 2);
+
+  // Similar to the above two tests but where there is no solution. It should
+  // fail in this case with no backtracking.
+  testResolve('backjump to conflicting source', {
+    'myapp 0.0.0': {
+      'a': 'any',
+      'b': 'any',
+      'c': 'any'
+    },
+    'a 1.0.0': {},
+    'a 1.0.0 from mock2': {},
+    'b 1.0.0': {
+      'a from mock2': 'any'
+    },
+    'c 1.0.0': {},
+    'c 2.0.0': {},
+    'c 3.0.0': {},
+    'c 4.0.0': {},
+    'c 5.0.0': {},
+  }, error: sourceMismatch('myapp', 'b'), maxTries: 1);
+
+  testResolve('backjump to conflicting description', {
+    'myapp 0.0.0': {
+      'a-x': 'any',
+      'b': 'any',
+      'c': 'any'
+    },
+    'a-x 1.0.0': {},
+    'a-y 1.0.0': {},
+    'b 1.0.0': {
+      'a-y': 'any'
+    },
+    'c 1.0.0': {},
+    'c 2.0.0': {},
+    'c 3.0.0': {},
+    'c 4.0.0': {},
+    'c 5.0.0': {},
+  }, error: descriptionMismatch('myapp', 'b'), maxTries: 1);
+
   // Dependencies are ordered so that packages with fewer versions are tried
   // first. Here, there are two valid solutions (either a or b must be
   // downgraded once). The chosen one depends on which dep is traversed first.
@@ -619,13 +728,31 @@
   }, useBleedingEdgeSdkVersion: true);
 }
 
-testResolve(description, packages,
-            {lockfile, result, FailMatcherBuilder error, int maxTries,
+testResolve(description, packages, {
+             lockfile, result, FailMatcherBuilder error, int maxTries,
+             bool useBleedingEdgeSdkVersion}) {
+  _testResolve(test, description, packages, lockfile: lockfile, result: result,
+      error: error, maxTries: maxTries,
+      useBleedingEdgeSdkVersion: useBleedingEdgeSdkVersion);
+}
+
+solo_testResolve(description, packages, {
+             lockfile, result, FailMatcherBuilder error, int maxTries,
+             bool useBleedingEdgeSdkVersion}) {
+  log.showSolver();
+  _testResolve(solo_test, description, packages, lockfile: lockfile,
+      result: result, error: error, maxTries: maxTries,
+      useBleedingEdgeSdkVersion: useBleedingEdgeSdkVersion);
+}
+
+_testResolve(void testFn(String description, Function body),
+             description, packages, {
+             lockfile, result, FailMatcherBuilder error, int maxTries,
              bool useBleedingEdgeSdkVersion}) {
   if (maxTries == null) maxTries = 1;
   if (useBleedingEdgeSdkVersion == null) useBleedingEdgeSdkVersion = false;
 
-  test(description, () {
+  testFn(description, () {
     var cache = new SystemCache('.');
     source1 = new MockSource('mock1');
     source2 = new MockSource('mock2');
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index 39e95a4..d25e580 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -672,20 +672,12 @@
     return _slice_4();
   }
 
-  @DomName('Blob._slice_1')
-  @DocsEditable
   Blob _slice_1(start, end, contentType) native "Blob__slice_1_Callback";
 
-  @DomName('Blob._slice_2')
-  @DocsEditable
   Blob _slice_2(start, end) native "Blob__slice_2_Callback";
 
-  @DomName('Blob._slice_3')
-  @DocsEditable
   Blob _slice_3(start) native "Blob__slice_3_Callback";
 
-  @DomName('Blob._slice_4')
-  @DocsEditable
   Blob _slice_4() native "Blob__slice_4_Callback";
 
 }
@@ -1381,12 +1373,8 @@
     return;
   }
 
-  @DomName('CanvasRenderingContext2D._clip_1')
-  @DocsEditable
   void _clip_1(winding) native "CanvasRenderingContext2D__clip_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._clip_2')
-  @DocsEditable
   void _clip_2() native "CanvasRenderingContext2D__clip_2_Callback";
 
   @DomName('CanvasRenderingContext2D.closePath')
@@ -1415,12 +1403,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('CanvasRenderingContext2D._createPattern_1')
-  @DocsEditable
   CanvasPattern _createPattern_1(canvas_OR_image, repetitionType) native "CanvasRenderingContext2D__createPattern_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._createPattern_2')
-  @DocsEditable
   CanvasPattern _createPattern_2(canvas_OR_image, repetitionType) native "CanvasRenderingContext2D__createPattern_2_Callback";
 
   @DomName('CanvasRenderingContext2D.createRadialGradient')
@@ -1467,40 +1451,22 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('CanvasRenderingContext2D._drawImage_1')
-  @DocsEditable
   void _drawImage_1(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D__drawImage_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_2')
-  @DocsEditable
   void _drawImage_2(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D__drawImage_2_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_3')
-  @DocsEditable
   void _drawImage_3(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D__drawImage_3_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_4')
-  @DocsEditable
   void _drawImage_4(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D__drawImage_4_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_5')
-  @DocsEditable
   void _drawImage_5(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D__drawImage_5_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_6')
-  @DocsEditable
   void _drawImage_6(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D__drawImage_6_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_7')
-  @DocsEditable
   void _drawImage_7(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D__drawImage_7_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_8')
-  @DocsEditable
   void _drawImage_8(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D__drawImage_8_Callback";
 
-  @DomName('CanvasRenderingContext2D._drawImage_9')
-  @DocsEditable
   void _drawImage_9(canvas_OR_image_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D__drawImage_9_Callback";
 
   void fill([String winding]) {
@@ -1512,12 +1478,8 @@
     return;
   }
 
-  @DomName('CanvasRenderingContext2D._fill_1')
-  @DocsEditable
   void _fill_1(winding) native "CanvasRenderingContext2D__fill_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._fill_2')
-  @DocsEditable
   void _fill_2() native "CanvasRenderingContext2D__fill_2_Callback";
 
   @DomName('CanvasRenderingContext2D.fillRect')
@@ -1533,12 +1495,8 @@
     return;
   }
 
-  @DomName('CanvasRenderingContext2D._fillText_1')
-  @DocsEditable
   void _fillText_1(text, x, y, maxWidth) native "CanvasRenderingContext2D__fillText_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._fillText_2')
-  @DocsEditable
   void _fillText_2(text, x, y) native "CanvasRenderingContext2D__fillText_2_Callback";
 
   @DomName('CanvasRenderingContext2D.getImageData')
@@ -1556,12 +1514,8 @@
     return _isPointInPath_2(x, y);
   }
 
-  @DomName('CanvasRenderingContext2D._isPointInPath_1')
-  @DocsEditable
   bool _isPointInPath_1(x, y, winding) native "CanvasRenderingContext2D__isPointInPath_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._isPointInPath_2')
-  @DocsEditable
   bool _isPointInPath_2(x, y) native "CanvasRenderingContext2D__isPointInPath_2_Callback";
 
   @DomName('CanvasRenderingContext2D.isPointInStroke')
@@ -1592,12 +1546,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('CanvasRenderingContext2D._putImageData_1')
-  @DocsEditable
   void _putImageData_1(imagedata, dx, dy) native "CanvasRenderingContext2D__putImageData_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._putImageData_2')
-  @DocsEditable
   void _putImageData_2(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "CanvasRenderingContext2D__putImageData_2_Callback";
 
   @DomName('CanvasRenderingContext2D.quadraticCurveTo')
@@ -1645,12 +1595,8 @@
     return;
   }
 
-  @DomName('CanvasRenderingContext2D._strokeRect_1')
-  @DocsEditable
   void _strokeRect_1(x, y, width, height, lineWidth) native "CanvasRenderingContext2D__strokeRect_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._strokeRect_2')
-  @DocsEditable
   void _strokeRect_2(x, y, width, height) native "CanvasRenderingContext2D__strokeRect_2_Callback";
 
   void strokeText(String text, num x, num y, [num maxWidth]) {
@@ -1662,12 +1608,8 @@
     return;
   }
 
-  @DomName('CanvasRenderingContext2D._strokeText_1')
-  @DocsEditable
   void _strokeText_1(text, x, y, maxWidth) native "CanvasRenderingContext2D__strokeText_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._strokeText_2')
-  @DocsEditable
   void _strokeText_2(text, x, y) native "CanvasRenderingContext2D__strokeText_2_Callback";
 
   @DomName('CanvasRenderingContext2D.transform')
@@ -1697,12 +1639,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('CanvasRenderingContext2D._webkitPutImageDataHD_1')
-  @DocsEditable
   void _webkitPutImageDataHD_1(imagedata, dx, dy) native "CanvasRenderingContext2D__webkitPutImageDataHD_1_Callback";
 
-  @DomName('CanvasRenderingContext2D._webkitPutImageDataHD_2')
-  @DocsEditable
   void _webkitPutImageDataHD_2(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "CanvasRenderingContext2D__webkitPutImageDataHD_2_Callback";
 
 
@@ -5808,12 +5746,8 @@
     return _addRule_2(selector, style);
   }
 
-  @DomName('CSSStyleSheet._addRule_1')
-  @DocsEditable
   int _addRule_1(selector, style, index) native "CSSStyleSheet__addRule_1_Callback";
 
-  @DomName('CSSStyleSheet._addRule_2')
-  @DocsEditable
   int _addRule_2(selector, style) native "CSSStyleSheet__addRule_2_Callback";
 
   @DomName('CSSStyleSheet.deleteRule')
@@ -6072,12 +6006,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('DataTransferItemList._add_1')
-  @DocsEditable
   void _add_1(data_OR_file) native "DataTransferItemList__add_1_Callback";
 
-  @DomName('DataTransferItemList._add_2')
-  @DocsEditable
   void _add_2(data_OR_file, type) native "DataTransferItemList__add_2_Callback";
 
   @DomName('DataTransferItemList.clear')
@@ -6639,12 +6569,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('Document._createElement_1')
-  @DocsEditable
   Element _createElement_1(localName_OR_tagName) native "Document__createElement_1_Callback";
 
-  @DomName('Document._createElement_2')
-  @DocsEditable
   Element _createElement_2(localName_OR_tagName, typeExtension) native "Document__createElement_2_Callback";
 
   Element $dom_createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) {
@@ -6657,12 +6583,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('Document._createElementNS_1')
-  @DocsEditable
   Element _createElementNS_1(namespaceURI, qualifiedName) native "Document__createElementNS_1_Callback";
 
-  @DomName('Document._createElementNS_2')
-  @DocsEditable
   Element _createElementNS_2(namespaceURI, qualifiedName, typeExtension) native "Document__createElementNS_2_Callback";
 
   @DomName('Document.createEvent')
@@ -8336,12 +8258,8 @@
     return _toggle_2(token);
   }
 
-  @DomName('DOMTokenList._toggle_1')
-  @DocsEditable
   bool _toggle_1(token, force) native "DOMTokenList__toggle_1_Callback";
 
-  @DomName('DOMTokenList._toggle_2')
-  @DocsEditable
   bool _toggle_2(token) native "DOMTokenList__toggle_2_Callback";
 
 }
@@ -9287,12 +9205,8 @@
     return;
   }
 
-  @DomName('Element._scrollIntoView_1')
-  @DocsEditable
   void _scrollIntoView_1(alignWithTop) native "Element__scrollIntoView_1_Callback";
 
-  @DomName('Element._scrollIntoView_2')
-  @DocsEditable
   void _scrollIntoView_2() native "Element__scrollIntoView_2_Callback";
 
   void $dom_scrollIntoViewIfNeeded([bool centerIfNeeded]) {
@@ -9304,12 +9218,8 @@
     return;
   }
 
-  @DomName('Element._scrollIntoViewIfNeeded_1')
-  @DocsEditable
   void _scrollIntoViewIfNeeded_1(centerIfNeeded) native "Element__scrollIntoViewIfNeeded_1_Callback";
 
-  @DomName('Element._scrollIntoViewIfNeeded_2')
-  @DocsEditable
   void _scrollIntoViewIfNeeded_2() native "Element__scrollIntoViewIfNeeded_2_Callback";
 
   @DomName('Element.setAttribute')
@@ -9858,12 +9768,8 @@
     return;
   }
 
-  @DomName('Entry._copyTo_1')
-  @DocsEditable
   void _copyTo_1(parent, name, successCallback, errorCallback) native "Entry__copyTo_1_Callback";
 
-  @DomName('Entry._copyTo_2')
-  @DocsEditable
   void _copyTo_2(parent) native "Entry__copyTo_2_Callback";
 
   Future<Entry> copyTo(DirectoryEntry parent, {String name}) {
@@ -9907,12 +9813,8 @@
     return;
   }
 
-  @DomName('Entry._moveTo_1')
-  @DocsEditable
   void _moveTo_1(parent, name, successCallback, errorCallback) native "Entry__moveTo_1_Callback";
 
-  @DomName('Entry._moveTo_2')
-  @DocsEditable
   void _moveTo_2(parent) native "Entry__moveTo_2_Callback";
 
   Future<Entry> moveTo(DirectoryEntry parent, {String name}) {
@@ -10869,12 +10771,8 @@
     return;
   }
 
-  @DomName('FileReader._readAsText_1')
-  @DocsEditable
   void _readAsText_1(blob, encoding) native "FileReader__readAsText_1_Callback";
 
-  @DomName('FileReader._readAsText_2')
-  @DocsEditable
   void _readAsText_2(blob) native "FileReader__readAsText_2_Callback";
 
   @DomName('FileReader.removeEventListener')
@@ -13561,12 +13459,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('HTMLInputElement._setRangeText_1')
-  @DocsEditable
   void _setRangeText_1(replacement) native "HTMLInputElement__setRangeText_1_Callback";
 
-  @DomName('HTMLInputElement._setRangeText_2')
-  @DocsEditable
   void _setRangeText_2(replacement, start, end, selectionMode) native "HTMLInputElement__setRangeText_2_Callback";
 
   @DomName('HTMLInputElement.setSelectionRange')
@@ -13582,12 +13476,8 @@
     return;
   }
 
-  @DomName('HTMLInputElement._stepDown_1')
-  @DocsEditable
   void _stepDown_1(n) native "HTMLInputElement__stepDown_1_Callback";
 
-  @DomName('HTMLInputElement._stepDown_2')
-  @DocsEditable
   void _stepDown_2() native "HTMLInputElement__stepDown_2_Callback";
 
   void stepUp([int n]) {
@@ -13599,12 +13489,8 @@
     return;
   }
 
-  @DomName('HTMLInputElement._stepUp_1')
-  @DocsEditable
   void _stepUp_1(n) native "HTMLInputElement__stepUp_1_Callback";
 
-  @DomName('HTMLInputElement._stepUp_2')
-  @DocsEditable
   void _stepUp_2() native "HTMLInputElement__stepUp_2_Callback";
 
   @DomName('HTMLInputElement.onwebkitSpeechChange')
@@ -15113,16 +14999,10 @@
     return _addTextTrack_3(kind);
   }
 
-  @DomName('HTMLMediaElement._addTextTrack_1')
-  @DocsEditable
   TextTrack _addTextTrack_1(kind, label, language) native "HTMLMediaElement__addTextTrack_1_Callback";
 
-  @DomName('HTMLMediaElement._addTextTrack_2')
-  @DocsEditable
   TextTrack _addTextTrack_2(kind, label) native "HTMLMediaElement__addTextTrack_2_Callback";
 
-  @DomName('HTMLMediaElement._addTextTrack_3')
-  @DocsEditable
   TextTrack _addTextTrack_3(kind) native "HTMLMediaElement__addTextTrack_3_Callback";
 
   @DomName('HTMLMediaElement.canPlayType')
@@ -15150,12 +15030,8 @@
     return;
   }
 
-  @DomName('HTMLMediaElement._webkitAddKey_1')
-  @DocsEditable
   void _webkitAddKey_1(keySystem, key, initData, sessionId) native "HTMLMediaElement__webkitAddKey_1_Callback";
 
-  @DomName('HTMLMediaElement._webkitAddKey_2')
-  @DocsEditable
   void _webkitAddKey_2(keySystem, key) native "HTMLMediaElement__webkitAddKey_2_Callback";
 
   @DomName('HTMLMediaElement.webkitCancelKeyRequest')
@@ -15174,12 +15050,8 @@
     return;
   }
 
-  @DomName('HTMLMediaElement._webkitGenerateKeyRequest_1')
-  @DocsEditable
   void _webkitGenerateKeyRequest_1(keySystem, initData) native "HTMLMediaElement__webkitGenerateKeyRequest_1_Callback";
 
-  @DomName('HTMLMediaElement._webkitGenerateKeyRequest_2')
-  @DocsEditable
   void _webkitGenerateKeyRequest_2(keySystem) native "HTMLMediaElement__webkitGenerateKeyRequest_2_Callback";
 
   @DomName('HTMLMediaElement.oncanplay')
@@ -18957,20 +18829,12 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('RTCDataChannel._send_1')
-  @DocsEditable
   void _send_1(data) native "RTCDataChannel__send_1_Callback";
 
-  @DomName('RTCDataChannel._send_2')
-  @DocsEditable
   void _send_2(data) native "RTCDataChannel__send_2_Callback";
 
-  @DomName('RTCDataChannel._send_3')
-  @DocsEditable
   void _send_3(data) native "RTCDataChannel__send_3_Callback";
 
-  @DomName('RTCDataChannel._send_4')
-  @DocsEditable
   void _send_4(data) native "RTCDataChannel__send_4_Callback";
 
   @DomName('RTCDataChannel.onclose')
@@ -19064,16 +18928,10 @@
     return;
   }
 
-  @DomName('RTCDTMFSender._insertDTMF_1')
-  @DocsEditable
   void _insertDTMF_1(tones, duration, interToneGap) native "RTCDTMFSender__insertDTMF_1_Callback";
 
-  @DomName('RTCDTMFSender._insertDTMF_2')
-  @DocsEditable
   void _insertDTMF_2(tones, duration) native "RTCDTMFSender__insertDTMF_2_Callback";
 
-  @DomName('RTCDTMFSender._insertDTMF_3')
-  @DocsEditable
   void _insertDTMF_3(tones) native "RTCDTMFSender__insertDTMF_3_Callback";
 
   @DomName('RTCDTMFSender.removeEventListener')
@@ -20562,12 +20420,8 @@
     return;
   }
 
-  @DomName('SpeechGrammarList._addFromString_1')
-  @DocsEditable
   void _addFromString_1(string, weight) native "SpeechGrammarList__addFromString_1_Callback";
 
-  @DomName('SpeechGrammarList._addFromString_2')
-  @DocsEditable
   void _addFromString_2(string) native "SpeechGrammarList__addFromString_2_Callback";
 
   void addFromUri(String src, [num weight]) {
@@ -20579,12 +20433,8 @@
     return;
   }
 
-  @DomName('SpeechGrammarList._addFromUri_1')
-  @DocsEditable
   void _addFromUri_1(src, weight) native "SpeechGrammarList__addFromUri_1_Callback";
 
-  @DomName('SpeechGrammarList._addFromUri_2')
-  @DocsEditable
   void _addFromUri_2(src) native "SpeechGrammarList__addFromUri_2_Callback";
 
   @DomName('SpeechGrammarList.item')
@@ -21807,12 +21657,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('HTMLTextAreaElement._setRangeText_1')
-  @DocsEditable
   void _setRangeText_1(replacement) native "HTMLTextAreaElement__setRangeText_1_Callback";
 
-  @DomName('HTMLTextAreaElement._setRangeText_2')
-  @DocsEditable
   void _setRangeText_2(replacement, start, end, selectionMode) native "HTMLTextAreaElement__setRangeText_2_Callback";
 
   void setSelectionRange(int start, int end, [String direction]) {
@@ -21824,12 +21670,8 @@
     return;
   }
 
-  @DomName('HTMLTextAreaElement._setSelectionRange_1')
-  @DocsEditable
   void _setSelectionRange_1(start, end, direction) native "HTMLTextAreaElement__setSelectionRange_1_Callback";
 
-  @DomName('HTMLTextAreaElement._setSelectionRange_2')
-  @DocsEditable
   void _setSelectionRange_2(start, end) native "HTMLTextAreaElement__setSelectionRange_2_Callback";
 
 }
@@ -23317,16 +23159,10 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('DOMURL._createObjectURL_1')
-  @DocsEditable
   static String _createObjectURL_1(blob_OR_source_OR_stream) native "DOMURL__createObjectURL_1_Callback";
 
-  @DomName('DOMURL._createObjectURL_2')
-  @DocsEditable
   static String _createObjectURL_2(blob_OR_source_OR_stream) native "DOMURL__createObjectURL_2_Callback";
 
-  @DomName('DOMURL._createObjectURL_3')
-  @DocsEditable
   static String _createObjectURL_3(blob_OR_source_OR_stream) native "DOMURL__createObjectURL_3_Callback";
 
   @DomName('DOMURL.revokeObjectURL')
@@ -23681,16 +23517,10 @@
     return;
   }
 
-  @DomName('WebSocket._close_1')
-  @DocsEditable
   void _close_1(code, reason) native "WebSocket__close_1_Callback";
 
-  @DomName('WebSocket._close_2')
-  @DocsEditable
   void _close_2(code) native "WebSocket__close_2_Callback";
 
-  @DomName('WebSocket._close_3')
-  @DocsEditable
   void _close_3() native "WebSocket__close_3_Callback";
 
   @DomName('WebSocket.dispatchEvent')
diff --git a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
index 1285ca5..0d92e79 100644
--- a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
+++ b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
@@ -201,16 +201,10 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBDatabase._transaction_1')
-  @DocsEditable
   Transaction _transaction_1(storeName_OR_storeNames, mode) native "IDBDatabase__transaction_1_Callback";
 
-  @DomName('IDBDatabase._transaction_2')
-  @DocsEditable
   Transaction _transaction_2(storeName_OR_storeNames, mode) native "IDBDatabase__transaction_2_Callback";
 
-  @DomName('IDBDatabase._transaction_3')
-  @DocsEditable
   Transaction _transaction_3(storeName_OR_storeNames, mode) native "IDBDatabase__transaction_3_Callback";
 
   @DomName('IDBDatabase.onabort')
@@ -323,12 +317,8 @@
     return _open_2(name);
   }
 
-  @DomName('IDBFactory._open_1')
-  @DocsEditable
   OpenDBRequest _open_1(name, version) native "IDBFactory__open_1_Callback";
 
-  @DomName('IDBFactory._open_2')
-  @DocsEditable
   OpenDBRequest _open_2(name) native "IDBFactory__open_2_Callback";
 
   @DomName('IDBFactory.webkitGetDatabaseNames')
@@ -487,12 +477,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBIndex._count_1')
-  @DocsEditable
   Request _count_1(key_OR_range) native "IDBIndex__count_1_Callback";
 
-  @DomName('IDBIndex._count_2')
-  @DocsEditable
   Request _count_2(key_OR_range) native "IDBIndex__count_2_Callback";
 
   Request $dom_get(key) {
@@ -505,12 +491,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBIndex._get_1')
-  @DocsEditable
   Request _get_1(key) native "IDBIndex__get_1_Callback";
 
-  @DomName('IDBIndex._get_2')
-  @DocsEditable
   Request _get_2(key) native "IDBIndex__get_2_Callback";
 
   Request $dom_getKey(key) {
@@ -523,12 +505,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBIndex._getKey_1')
-  @DocsEditable
   Request _getKey_1(key) native "IDBIndex__getKey_1_Callback";
 
-  @DomName('IDBIndex._getKey_2')
-  @DocsEditable
   Request _getKey_2(key) native "IDBIndex__getKey_2_Callback";
 
   Request $dom_openCursor([key_OR_range, String direction]) {
@@ -541,12 +519,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBIndex._openCursor_1')
-  @DocsEditable
   Request _openCursor_1(key_OR_range, direction) native "IDBIndex__openCursor_1_Callback";
 
-  @DomName('IDBIndex._openCursor_2')
-  @DocsEditable
   Request _openCursor_2(key_OR_range, direction) native "IDBIndex__openCursor_2_Callback";
 
   Request $dom_openKeyCursor([key_OR_range, String direction]) {
@@ -559,12 +533,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBIndex._openKeyCursor_1')
-  @DocsEditable
   Request _openKeyCursor_1(key_OR_range, direction) native "IDBIndex__openKeyCursor_1_Callback";
 
-  @DomName('IDBIndex._openKeyCursor_2')
-  @DocsEditable
   Request _openKeyCursor_2(key_OR_range, direction) native "IDBIndex__openKeyCursor_2_Callback";
 
 }
@@ -807,12 +777,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBObjectStore._count_1')
-  @DocsEditable
   Request _count_1(key_OR_range) native "IDBObjectStore__count_1_Callback";
 
-  @DomName('IDBObjectStore._count_2')
-  @DocsEditable
   Request _count_2(key_OR_range) native "IDBObjectStore__count_2_Callback";
 
   Index $dom_createIndex(String name, keyPath, [Map options]) {
@@ -825,12 +791,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBObjectStore._createIndex_1')
-  @DocsEditable
   Index _createIndex_1(name, keyPath, options) native "IDBObjectStore__createIndex_1_Callback";
 
-  @DomName('IDBObjectStore._createIndex_2')
-  @DocsEditable
   Index _createIndex_2(name, keyPath, options) native "IDBObjectStore__createIndex_2_Callback";
 
   Request $dom_delete(key_OR_keyRange) {
@@ -843,12 +805,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBObjectStore._delete_1')
-  @DocsEditable
   Request _delete_1(key_OR_keyRange) native "IDBObjectStore__delete_1_Callback";
 
-  @DomName('IDBObjectStore._delete_2')
-  @DocsEditable
   Request _delete_2(key_OR_keyRange) native "IDBObjectStore__delete_2_Callback";
 
   @DomName('IDBObjectStore.deleteIndex')
@@ -865,12 +823,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBObjectStore._get_1')
-  @DocsEditable
   Request _get_1(key) native "IDBObjectStore__get_1_Callback";
 
-  @DomName('IDBObjectStore._get_2')
-  @DocsEditable
   Request _get_2(key) native "IDBObjectStore__get_2_Callback";
 
   @DomName('IDBObjectStore.index')
@@ -887,12 +841,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('IDBObjectStore._openCursor_1')
-  @DocsEditable
   Request _openCursor_1(key_OR_range, direction) native "IDBObjectStore__openCursor_1_Callback";
 
-  @DomName('IDBObjectStore._openCursor_2')
-  @DocsEditable
   Request _openCursor_2(key_OR_range, direction) native "IDBObjectStore__openCursor_2_Callback";
 
   @DomName('IDBObjectStore.put')
diff --git a/sdk/lib/web_audio/dartium/web_audio_dartium.dart b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
index 0a06b2e..3c0dc87 100644
--- a/sdk/lib/web_audio/dartium/web_audio_dartium.dart
+++ b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
@@ -203,16 +203,10 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('AudioBufferSourceNode._start_1')
-  @DocsEditable
   void _start_1(when) native "AudioBufferSourceNode__start_1_Callback";
 
-  @DomName('AudioBufferSourceNode._start_2')
-  @DocsEditable
   void _start_2(when, grainOffset) native "AudioBufferSourceNode__start_2_Callback";
 
-  @DomName('AudioBufferSourceNode._start_3')
-  @DocsEditable
   void _start_3(when, grainOffset, grainDuration) native "AudioBufferSourceNode__start_3_Callback";
 
   @DomName('AudioBufferSourceNode.stop')
@@ -278,12 +272,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('AudioContext._createBuffer_1')
-  @DocsEditable
   AudioBuffer _createBuffer_1(buffer_OR_numberOfChannels, mixToMono_OR_numberOfFrames, sampleRate) native "AudioContext__createBuffer_1_Callback";
 
-  @DomName('AudioContext._createBuffer_2')
-  @DocsEditable
   AudioBuffer _createBuffer_2(buffer_OR_numberOfChannels, mixToMono_OR_numberOfFrames) native "AudioContext__createBuffer_2_Callback";
 
   @DomName('AudioContext.createBufferSource')
@@ -297,12 +287,8 @@
     return _createChannelMerger_2();
   }
 
-  @DomName('AudioContext._createChannelMerger_1')
-  @DocsEditable
   ChannelMergerNode _createChannelMerger_1(numberOfInputs) native "AudioContext__createChannelMerger_1_Callback";
 
-  @DomName('AudioContext._createChannelMerger_2')
-  @DocsEditable
   ChannelMergerNode _createChannelMerger_2() native "AudioContext__createChannelMerger_2_Callback";
 
   ChannelSplitterNode createChannelSplitter([int numberOfOutputs]) {
@@ -312,12 +298,8 @@
     return _createChannelSplitter_2();
   }
 
-  @DomName('AudioContext._createChannelSplitter_1')
-  @DocsEditable
   ChannelSplitterNode _createChannelSplitter_1(numberOfOutputs) native "AudioContext__createChannelSplitter_1_Callback";
 
-  @DomName('AudioContext._createChannelSplitter_2')
-  @DocsEditable
   ChannelSplitterNode _createChannelSplitter_2() native "AudioContext__createChannelSplitter_2_Callback";
 
   @DomName('AudioContext.createConvolver')
@@ -331,12 +313,8 @@
     return _createDelay_2();
   }
 
-  @DomName('AudioContext._createDelay_1')
-  @DocsEditable
   DelayNode _createDelay_1(maxDelayTime) native "AudioContext__createDelay_1_Callback";
 
-  @DomName('AudioContext._createDelay_2')
-  @DocsEditable
   DelayNode _createDelay_2() native "AudioContext__createDelay_2_Callback";
 
   @DomName('AudioContext.createDynamicsCompressor')
@@ -377,16 +355,10 @@
     return _createScriptProcessor_3(bufferSize);
   }
 
-  @DomName('AudioContext._createScriptProcessor_1')
-  @DocsEditable
   ScriptProcessorNode _createScriptProcessor_1(bufferSize, numberOfInputChannels, numberOfOutputChannels) native "AudioContext__createScriptProcessor_1_Callback";
 
-  @DomName('AudioContext._createScriptProcessor_2')
-  @DocsEditable
   ScriptProcessorNode _createScriptProcessor_2(bufferSize, numberOfInputChannels) native "AudioContext__createScriptProcessor_2_Callback";
 
-  @DomName('AudioContext._createScriptProcessor_3')
-  @DocsEditable
   ScriptProcessorNode _createScriptProcessor_3(bufferSize) native "AudioContext__createScriptProcessor_3_Callback";
 
   @DomName('AudioContext.createWaveShaper')
@@ -528,12 +500,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('AudioNode._connect_1')
-  @DocsEditable
   void _connect_1(destination, output, input) native "AudioNode__connect_1_Callback";
 
-  @DomName('AudioNode._connect_2')
-  @DocsEditable
   void _connect_2(destination, output) native "AudioNode__connect_2_Callback";
 
   @DomName('AudioNode.disconnect')
diff --git a/sdk/lib/web_gl/dartium/web_gl_dartium.dart b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
index e0a973c..72bf110 100644
--- a/sdk/lib/web_gl/dartium/web_gl_dartium.dart
+++ b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
@@ -1466,16 +1466,10 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('WebGLRenderingContext._bufferData_1')
-  @DocsEditable
   void _bufferData_1(target, data_OR_size, usage) native "WebGLRenderingContext__bufferData_1_Callback";
 
-  @DomName('WebGLRenderingContext._bufferData_2')
-  @DocsEditable
   void _bufferData_2(target, data_OR_size, usage) native "WebGLRenderingContext__bufferData_2_Callback";
 
-  @DomName('WebGLRenderingContext._bufferData_3')
-  @DocsEditable
   void _bufferData_3(target, data_OR_size, usage) native "WebGLRenderingContext__bufferData_3_Callback";
 
   void bufferSubData(int target, int offset, data) {
@@ -1490,12 +1484,8 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('WebGLRenderingContext._bufferSubData_1')
-  @DocsEditable
   void _bufferSubData_1(target, offset, data) native "WebGLRenderingContext__bufferSubData_1_Callback";
 
-  @DomName('WebGLRenderingContext._bufferSubData_2')
-  @DocsEditable
   void _bufferSubData_2(target, offset, data) native "WebGLRenderingContext__bufferSubData_2_Callback";
 
   @DomName('WebGLRenderingContext.checkFramebufferStatus')
@@ -1874,24 +1864,14 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('WebGLRenderingContext._texImage2D_1')
-  @DocsEditable
   void _texImage2D_1(target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) native "WebGLRenderingContext__texImage2D_1_Callback";
 
-  @DomName('WebGLRenderingContext._texImage2D_2')
-  @DocsEditable
   void _texImage2D_2(target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texImage2D_2_Callback";
 
-  @DomName('WebGLRenderingContext._texImage2D_3')
-  @DocsEditable
   void _texImage2D_3(target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texImage2D_3_Callback";
 
-  @DomName('WebGLRenderingContext._texImage2D_4')
-  @DocsEditable
   void _texImage2D_4(target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texImage2D_4_Callback";
 
-  @DomName('WebGLRenderingContext._texImage2D_5')
-  @DocsEditable
   void _texImage2D_5(target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texImage2D_5_Callback";
 
   @DomName('WebGLRenderingContext.texParameterf')
@@ -1926,24 +1906,14 @@
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
-  @DomName('WebGLRenderingContext._texSubImage2D_1')
-  @DocsEditable
   void _texSubImage2D_1(target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) native "WebGLRenderingContext__texSubImage2D_1_Callback";
 
-  @DomName('WebGLRenderingContext._texSubImage2D_2')
-  @DocsEditable
   void _texSubImage2D_2(target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texSubImage2D_2_Callback";
 
-  @DomName('WebGLRenderingContext._texSubImage2D_3')
-  @DocsEditable
   void _texSubImage2D_3(target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texSubImage2D_3_Callback";
 
-  @DomName('WebGLRenderingContext._texSubImage2D_4')
-  @DocsEditable
   void _texSubImage2D_4(target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texSubImage2D_4_Callback";
 
-  @DomName('WebGLRenderingContext._texSubImage2D_5')
-  @DocsEditable
   void _texSubImage2D_5(target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext__texSubImage2D_5_Callback";
 
   @DomName('WebGLRenderingContext.uniform1f')
diff --git a/tools/VERSION b/tools/VERSION
index 870b65e..699b05f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -1,4 +1,4 @@
 MAJOR 0
 MINOR 5
-BUILD 2
+BUILD 3
 PATCH 0
diff --git a/tools/ddbg.dart b/tools/ddbg.dart
index c81dd28..3b9dbbe 100644
--- a/tools/ddbg.dart
+++ b/tools/ddbg.dart
@@ -393,10 +393,10 @@
 
 void printStackFrame(frame_num, Map frame) {
   var fname = frame["functionName"];
-  var libId = frame["libraryId"];
+  var libId = frame["location"]["libraryId"];
   var url = frame["location"]["url"];
-  var line = frame["location"]["lineNumber"];
-  print("$frame_num  $fname ($url:$line) (lib $libId)");
+  var toff = frame["location"]["tokenOffset"];
+  print("$frame_num  $fname (url: $url token: $toff lib: $libId)");
   List locals = frame["locals"];
   for (int i = 0; i < locals.length; i++) {
     printNamedObject(locals[i]);
diff --git a/tools/dom/dom.json b/tools/dom/dom.json
new file mode 100644
index 0000000..c8d10bd
--- /dev/null
+++ b/tools/dom/dom.json
@@ -0,0 +1,11576 @@
+{
+  "AbstractWorker": {
+    "comment": "http://www.w3.org/TR/workers/#the-abstractworker-abstract-interface",
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "onerror": {},
+      "removeEventListener": {}
+    },
+    "support_level": "stable"
+  },
+  "AnalyserNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AnalyserNode",
+    "members": {
+      "fftSize": {},
+      "frequencyBinCount": {},
+      "getByteFrequencyData": {},
+      "getByteTimeDomainData": {},
+      "getFloatFrequencyData": {},
+      "maxDecibels": {},
+      "minDecibels": {},
+      "smoothingTimeConstant": {}
+    },
+    "support_level": "experimental"
+  },
+  "AnimationEvent": {
+    "comment": "http://www.w3.org/TR/css3-animations/#AnimationEvent-interface",
+    "members": {
+      "animationName": {},
+      "elapsedTime": {}
+    },
+    "support_level": "stable"
+  },
+  "ArrayBuffer": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "byteLength": {},
+      "slice": {}
+    },
+    "support_level": "stable"
+  },
+  "ArrayBufferView": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "buffer": {},
+      "byteLength": {},
+      "byteOffset": {}
+    },
+    "support_level": "stable"
+  },
+  "Attr": {
+    "comment": "http://www.w3.org/TR/dom/#interface-attr",
+    "members": {
+      "isId": {},
+      "name": {},
+      "ownerElement": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "specified": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "AudioBuffer": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBuffer-section",
+    "dart_action": "default",
+    "members": {
+      "duration": {},
+      "gain": {},
+      "getChannelData": {},
+      "length": {},
+      "numberOfChannels": {},
+      "sampleRate": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioBufferCallback": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBuffer-section",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioBufferSourceNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBufferSourceNode-section",
+    "members": {
+      "FINISHED_STATE": {},
+      "PLAYING_STATE": {},
+      "SCHEDULED_STATE": {},
+      "UNSCHEDULED_STATE": {},
+      "buffer": {},
+      "gain": {},
+      "loop": {},
+      "loopEnd": {},
+      "loopStart": {},
+      "playbackRate": {},
+      "playbackState": {},
+      "start": {},
+      "stop": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioContext": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioContext-section",
+    "members": {
+      "activeSourceCount": {},
+      "createAnalyser": {},
+      "createBiquadFilter": {},
+      "createBuffer": {},
+      "createBufferSource": {},
+      "createChannelMerger": {},
+      "createChannelSplitter": {},
+      "createConvolver": {},
+      "createDelay": {},
+      "createDynamicsCompressor": {},
+      "createGain": {},
+      "createMediaElementSource": {},
+      "createMediaStreamDestination": {},
+      "createMediaStreamSource": {},
+      "createOscillator": {},
+      "createPanner": {},
+      "createScriptProcessor": {},
+      "createWaveShaper": {},
+      "createWaveTable": {},
+      "currentTime": {},
+      "decodeAudioData": {},
+      "destination": {},
+      "listener": {},
+      "oncomplete": {},
+      "sampleRate": {},
+      "startRendering": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioDestinationNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioDestinationNode-section",
+    "members": {
+      "maxChannelCount": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioListener": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioListener-section",
+    "members": {
+      "dopplerFactor": {},
+      "setOrientation": {},
+      "setPosition": {},
+      "setVelocity": {},
+      "speedOfSound": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioNode-section",
+    "members": {
+      "channelCount": {},
+      "channelCountMode": {},
+      "channelInterpretation": {},
+      "connect": {},
+      "context": {},
+      "disconnect": {},
+      "numberOfInputs": {},
+      "numberOfOutputs": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioParam": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioParam",
+    "members": {
+      "cancelScheduledValues": {},
+      "defaultValue": {},
+      "exponentialRampToValueAtTime": {},
+      "linearRampToValueAtTime": {},
+      "maxValue": {},
+      "minValue": {},
+      "name": {},
+      "setTargetAtTime": {},
+      "setValueAtTime": {},
+      "setValueCurveAtTime": {},
+      "units": {},
+      "value": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioProcessingEvent": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioProcessingEvent-section",
+    "members": {
+      "inputBuffer": {},
+      "outputBuffer": {}
+    },
+    "support_level": "experimental"
+  },
+  "AudioSourceNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "AutocompleteErrorEvent": {
+    "comment": "http://wiki.whatwg.org/wiki/RequestAutocomplete",
+    "members": {
+      "reason": {}
+    },
+    "support_level": "experimental"
+  },
+  "BarInfo": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#barprop (Rename to BarProp?)",
+    "members": {
+      "visible": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "BatteryManager": {
+    "comment": "https://dvcs.w3.org/hg/dap/raw-file/default/battery/Overview.html#batterymanager-interface",
+    "dart_action": "experimental",
+    "members": {
+      "addEventListener": {},
+      "charging": {},
+      "chargingTime": {},
+      "dischargingTime": {},
+      "dispatchEvent": {},
+      "level": {},
+      "onchargingchange": {},
+      "onchargingtimechange": {},
+      "ondischargingtimechange": {},
+      "onlevelchange": {},
+      "removeEventListener": {}
+    },
+    "support_level": "stable"
+  },
+  "BeforeLoadEvent": {
+    "members": {
+      "url": {}
+    },
+    "support_level": "experimental"
+  },
+  "BiquadFilterNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#BiquadFilterNode-section",
+    "members": {
+      "ALLPASS": {},
+      "BANDPASS": {},
+      "HIGHPASS": {},
+      "HIGHSHELF": {},
+      "LOWPASS": {},
+      "LOWSHELF": {},
+      "NOTCH": {},
+      "PEAKING": {},
+      "Q": {},
+      "detune": {},
+      "frequency": {},
+      "gain": {},
+      "getFrequencyResponse": {},
+      "type": {}
+    },
+    "support_level": "experimental"
+  },
+  "Blob": {
+    "comment": "http://www.w3.org/TR/FileAPI/#dfn-Blob",
+    "members": {
+      "size": {},
+      "slice": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "CDATASection": {
+    "comment": "http://dom.spec.whatwg.org/#cdatasection",
+    "dart_action": "suppress",
+    "members": {},
+    "support_level": "deprecated"
+  },
+  "CSSCharsetRule": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-csscharsetrule-interface",
+    "dart_action": "default",
+    "members": {
+      "encoding": {}
+    },
+    "support_level": "experimental"
+  },
+  "CSSFontFaceLoadEvent": {
+    "comment": "http://www.w3.org/TR/css3-fonts/",
+    "members": {
+      "error": {},
+      "fontface": {}
+    },
+    "support_level": "experimental"
+  },
+  "CSSFontFaceRule": {
+    "comment": "http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSFontFaceRule",
+    "members": {
+      "style": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSHostRule": {
+    "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#css-host-rule-interface",
+    "members": {
+      "cssRules": {},
+      "deleteRule": {},
+      "insertRule": {}
+    },
+    "support_level": "experimental"
+  },
+  "CSSImportRule": {
+    "comment": "http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule",
+    "members": {
+      "href": {},
+      "media": {},
+      "styleSheet": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSMediaRule": {
+    "comment": "http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule",
+    "members": {
+      "cssRules": {},
+      "deleteRule": {},
+      "insertRule": {},
+      "media": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSPageRule": {
+    "comment": "http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSPageRule",
+    "members": {
+      "selectorText": {},
+      "style": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSPrimitiveValue": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface",
+    "dart_action": "suppress",
+    "members": {
+      "CSS_ATTR": {},
+      "CSS_CM": {},
+      "CSS_COUNTER": {},
+      "CSS_DEG": {},
+      "CSS_DIMENSION": {},
+      "CSS_EMS": {},
+      "CSS_EXS": {},
+      "CSS_GRAD": {},
+      "CSS_HZ": {},
+      "CSS_IDENT": {},
+      "CSS_IN": {},
+      "CSS_KHZ": {},
+      "CSS_MM": {},
+      "CSS_MS": {},
+      "CSS_NUMBER": {},
+      "CSS_PC": {},
+      "CSS_PERCENTAGE": {},
+      "CSS_PT": {},
+      "CSS_PX": {},
+      "CSS_RAD": {},
+      "CSS_RECT": {},
+      "CSS_RGBCOLOR": {},
+      "CSS_S": {},
+      "CSS_STRING": {},
+      "CSS_UNKNOWN": {},
+      "CSS_URI": {},
+      "CSS_VH": {},
+      "CSS_VMAX": {},
+      "CSS_VMIN": {},
+      "CSS_VW": {},
+      "getCounterValue": {},
+      "getFloatValue": {},
+      "getRGBColorValue": {},
+      "getRectValue": {},
+      "getStringValue": {},
+      "primitiveType": {},
+      "setFloatValue": {},
+      "setStringValue": {}
+    },
+    "support_level": "deprecated"
+  },
+  "CSSRule": {
+    "comment": "http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule",
+    "members": {
+      "CHARSET_RULE": {},
+      "FONT_FACE_RULE": {},
+      "HOST_RULE": {
+        "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-css-rule-host-rule",
+        "support_level": "experimental"
+      },
+      "IMPORT_RULE": {},
+      "MEDIA_RULE": {},
+      "PAGE_RULE": {},
+      "STYLE_RULE": {},
+      "UNKNOWN_RULE": {
+        "comment": "http://dev.w3.org/csswg/cssom/#changes-from-dom2",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "WEBKIT_FILTER_RULE": {
+        "comment": "http://www.w3.org/TR/filter-effects/",
+        "support_level": "experimental"
+      },
+      "WEBKIT_KEYFRAMES_RULE": {
+        "comment": "http://www.w3.org/TR/css3-animations/#cssrule",
+        "support_level": "experimental"
+      },
+      "WEBKIT_KEYFRAME_RULE": {
+        "comment": "http://www.w3.org/TR/css3-animations/#cssrule",
+        "support_level": "experimental"
+      },
+      "WEBKIT_REGION_RULE": {
+        "comment": "http://dev.w3.org/csswg/css-regions/#region-style-rule-interface",
+        "support_level": "experimental"
+      },
+      "cssText": {},
+      "parentRule": {},
+      "parentStyleSheet": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSRuleList": {
+    "comment": "http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRuleList",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSStyleDeclaration": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface",
+    "members": {
+      "_getPropertyValue": {},
+      "cssText": {},
+      "getPropertyCSSValue": {
+        "comment": "http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "getPropertyPriority": {},
+      "getPropertyShorthand": {
+        "comment": "http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface",
+        "support_level": "nonstandard"
+      },
+      "getPropertyValue": {
+        "support_level": "untriaged"
+      },
+      "isPropertyImplicit": {
+        "comment": "http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface",
+        "support_level": "nonstandard"
+      },
+      "item": {},
+      "length": {},
+      "parentRule": {},
+      "removeProperty": {},
+      "setProperty": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSStyleRule": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-cssstylerule-interface",
+    "members": {
+      "selectorText": {},
+      "style": {}
+    },
+    "support_level": "stable"
+  },
+  "CSSStyleSheet": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-cssstylesheet-interface",
+    "members": {
+      "addRule": {
+        "support_level": "nonstandard"
+      },
+      "cssRules": {},
+      "deleteRule": {},
+      "insertRule": {},
+      "ownerRule": {},
+      "removeRule": {
+        "support_level": "nonstandard"
+      },
+      "rules": {
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "CSSUnknownRule": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-cssstylesheet-interface",
+    "dart_action": "suppress",
+    "members": {},
+    "support_level": "deprecated"
+  },
+  "CSSValue": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "CSS_CUSTOM": {},
+      "CSS_INHERIT": {},
+      "CSS_PRIMITIVE_VALUE": {},
+      "CSS_VALUE_LIST": {},
+      "cssText": {},
+      "cssValueType": {}
+    },
+    "support_level": "deprecated"
+  },
+  "CSSValueList": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "deprecated"
+  },
+  "CanvasGradient": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvasgradient",
+    "members": {
+      "addColorStop": {}
+    },
+    "support_level": "stable"
+  },
+  "CanvasPattern": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvaspattern",
+    "members": {},
+    "support_level": "stable"
+  },
+  "CanvasProxy": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvasproxy",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "CanvasRenderingContext": {
+    "members": {
+      "canvas": {}
+    },
+    "support_level": "stable"
+  },
+  "CanvasRenderingContext2D": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvasrenderingcontext2d",
+    "members": {
+      "arc": {},
+      "arcTo": {},
+      "beginPath": {},
+      "bezierCurveTo": {},
+      "clearRect": {},
+      "clearShadow": {
+        "support_level": "nonstandard"
+      },
+      "clip": {},
+      "closePath": {},
+      "createImageData": {},
+      "createImageDataFromImageData": {},
+      "createLinearGradient": {},
+      "createPattern": {},
+      "createRadialGradient": {},
+      "currentPath": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path-objects",
+        "support_level": "experimental"
+      },
+      "drawImage": {},
+      "drawImageFromRect": {},
+      "fill": {},
+      "fillRect": {},
+      "fillStyle": {},
+      "fillText": {},
+      "font": {},
+      "getImageData": {},
+      "getLineDash": {},
+      "globalAlpha": {},
+      "globalCompositeOperation": {},
+      "isPointInPath": {},
+      "isPointInStroke": {
+        "support_level": "nonstandard"
+      },
+      "lineCap": {},
+      "lineDashOffset": {},
+      "lineJoin": {},
+      "lineTo": {},
+      "lineWidth": {},
+      "measureText": {},
+      "miterLimit": {},
+      "moveTo": {},
+      "putImageData": {},
+      "quadraticCurveTo": {},
+      "rect": {},
+      "restore": {},
+      "rotate": {},
+      "save": {},
+      "scale": {},
+      "setAlpha": {
+        "support_level": "nonstandard"
+      },
+      "setCompositeOperation": {
+        "support_level": "nonstandard"
+      },
+      "setFillColor": {
+        "support_level": "nonstandard"
+      },
+      "setLineCap": {
+        "support_level": "nonstandard"
+      },
+      "setLineDash": {},
+      "setLineJoin": {
+        "support_level": "nonstandard"
+      },
+      "setLineWidth": {
+        "support_level": "nonstandard"
+      },
+      "setMiterLimit": {
+        "support_level": "nonstandard"
+      },
+      "setShadow": {
+        "support_level": "nonstandard"
+      },
+      "setStrokeColor": {
+        "support_level": "nonstandard"
+      },
+      "setTransform": {},
+      "shadowBlur": {},
+      "shadowColor": {},
+      "shadowOffsetX": {},
+      "shadowOffsetY": {},
+      "stroke": {},
+      "strokeRect": {},
+      "strokeStyle": {},
+      "strokeText": {},
+      "textAlign": {},
+      "textBaseline": {},
+      "transform": {},
+      "translate": {},
+      "webkitBackingStorePixelRatio": {
+        "support_level": "experimental"
+      },
+      "webkitGetImageDataHD": {
+        "support_level": "experimental"
+      },
+      "webkitImageSmoothingEnabled": {
+        "support_level": "experimental"
+      },
+      "webkitLineDash": {
+        "support_level": "experimental"
+      },
+      "webkitLineDashOffset": {
+        "support_level": "experimental"
+      },
+      "webkitPutImageDataHD": {
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "ChannelMergerNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#ChannelMergerNode-section",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "ChannelSplitterNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#ChannelSplitterNode-section",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "CharacterData": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-FF21A306",
+    "members": {
+      "appendData": {},
+      "data": {},
+      "deleteData": {},
+      "insertData": {},
+      "length": {},
+      "remove": {
+        "support_level": "nonstandard"
+      },
+      "replaceData": {},
+      "substringData": {}
+    },
+    "support_level": "stable"
+  },
+  "ClientRect": {
+    "comment": "http://www.w3.org/TR/cssom-view/#the-clientrect-interface",
+    "members": {
+      "bottom": {},
+      "height": {},
+      "left": {},
+      "right": {},
+      "top": {},
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "ClientRectList": {
+    "comment": "http://www.w3.org/TR/cssom-view/#the-clientrectlist-interface",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "stable"
+  },
+  "Clipboard": {
+    "comment": "http://www.w3.org/html/wg/drafts/html/master/editing.html#the-datatransfer-interface (Should be DataTransfer)",
+    "members": {
+      "clearData": {},
+      "dropEffect": {},
+      "effectAllowed": {},
+      "files": {},
+      "getData": {},
+      "items": {},
+      "setData": {},
+      "setDragImage": {},
+      "types": {}
+    },
+    "support_level": "stable"
+  },
+  "CloseEvent": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/network.html#closeevent",
+    "members": {
+      "code": {},
+      "reason": {},
+      "wasClean": {}
+    },
+    "support_level": "stable"
+  },
+  "Comment": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1728279322",
+    "members": {},
+    "support_level": "stable"
+  },
+  "CompositionEvent": {
+    "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-CompositionEvent",
+    "members": {
+      "data": {},
+      "initCompositionEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "Console": {
+    "members": {
+      "assertCondition": {
+        "support_level": "experimental"
+      },
+      "clear": {
+        "support_level": "experimental"
+      },
+      "count": {
+        "support_level": "experimental"
+      },
+      "debug": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "dir": {},
+      "dirxml": {
+        "support_level": "experimental"
+      },
+      "error": {},
+      "group": {},
+      "groupCollapsed": {},
+      "groupEnd": {},
+      "info": {},
+      "log": {},
+      "markTimeline": {
+        "support_level": "experimental"
+      },
+      "memory": {
+        "support_level": "experimental"
+      },
+      "profile": {
+        "support_level": "experimental"
+      },
+      "profileEnd": {
+        "support_level": "experimental"
+      },
+      "profiles": {
+        "support_level": "experimental"
+      },
+      "table": {
+        "support_level": "experimental"
+      },
+      "time": {},
+      "timeEnd": {},
+      "timeStamp": {
+        "support_level": "experimental"
+      },
+      "trace": {},
+      "warn": {}
+    },
+    "support_level": "stable"
+  },
+  "ConvolverNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#ConvolverNode",
+    "members": {
+      "buffer": {},
+      "normalize": {}
+    },
+    "support_level": "experimental"
+  },
+  "Coordinates": {
+    "comment": "http://www.w3.org/TR/geolocation-API/#coordinates_interface",
+    "members": {
+      "accuracy": {},
+      "altitude": {},
+      "altitudeAccuracy": {},
+      "heading": {},
+      "latitude": {},
+      "longitude": {},
+      "speed": {}
+    },
+    "support_level": "stable"
+  },
+  "Counter": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "identifier": {},
+      "listStyle": {},
+      "separator": {}
+    },
+    "support_level": "deprecated"
+  },
+  "Crypto": {
+    "comment": "http://www.w3.org/TR/WebCryptoAPI/",
+    "members": {
+      "getRandomValues": {}
+    },
+    "support_level": "experimental"
+  },
+  "CustomElementConstructor": {
+    "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-custom-element-constructor-generation",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "CustomEvent": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Events/#interface-CustomEvent",
+    "members": {
+      "detail": {},
+      "initCustomEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMApplicationCache": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#application-cache-api",
+    "dart_action": "unstable",
+    "members": {
+      "CHECKING": {},
+      "DOWNLOADING": {},
+      "IDLE": {},
+      "OBSOLETE": {},
+      "UNCACHED": {},
+      "UPDATEREADY": {},
+      "abort": {},
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "oncached": {},
+      "onchecking": {},
+      "ondownloading": {},
+      "onerror": {},
+      "onnoupdate": {},
+      "onobsolete": {},
+      "onprogress": {},
+      "onupdateready": {},
+      "removeEventListener": {},
+      "status": {},
+      "swapCache": {},
+      "update": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMCoreException": {
+    "comment": "http://www.w3.org/TR/dom/#domexception (Should be DOMException)",
+    "dart_action": "unstable",
+    "members": {
+      "ABORT_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "DATA_CLONE_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "DOMSTRING_SIZE_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "HIERARCHY_REQUEST_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INDEX_SIZE_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INUSE_ATTRIBUTE_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INVALID_ACCESS_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INVALID_CHARACTER_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INVALID_MODIFICATION_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INVALID_NODE_TYPE_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INVALID_STATE_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "NAMESPACE_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "NETWORK_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "NOT_FOUND_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "NOT_SUPPORTED_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "NO_DATA_ALLOWED_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "NO_MODIFICATION_ALLOWED_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "QUOTA_EXCEEDED_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SECURITY_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SYNTAX_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "TIMEOUT_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "TYPE_MISMATCH_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "URL_MISMATCH_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "VALIDATION_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "WRONG_DOCUMENT_ERR": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "code": {
+        "comment": "http://www.w3.org/TR/dom/#dom-domexception-code",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "message": {},
+      "name": {},
+      "toString": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMError": {
+    "comment": "http://www.w3.org/TR/dom/#interface-domerror",
+    "members": {
+      "name": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMException": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "DOMFileSystem": {
+    "comment": "http://www.w3.org/TR/file-system-api/",
+    "members": {
+      "name": {},
+      "root": {}
+    },
+    "support_level": "experimental"
+  },
+  "DOMFileSystemSync": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-filesystemsync-interface",
+    "members": {
+      "name": {},
+      "root": {}
+    },
+    "support_level": "experimental"
+  },
+  "DOMFormData": {
+    "comment": "http://www.w3.org/TR/XMLHttpRequest2/#interface-formdata",
+    "members": {
+      "DOMFormData": {},
+      "append": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMImplementation": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490",
+    "members": {
+      "createCSSStyleSheet": {
+        "support_level": "nonstandard"
+      },
+      "createDocument": {},
+      "createDocumentType": {},
+      "createHTMLDocument": {},
+      "hasFeature": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMMimeType": {
+    "members": {
+      "description": {},
+      "enabledPlugin": {},
+      "suffixes": {},
+      "type": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "DOMMimeTypeArray": {
+    "members": {
+      "item": {},
+      "length": {},
+      "namedItem": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "DOMNamedFlowCollection": {
+    "comment": "http://dev.w3.org/csswg/css-regions/#dom-named-flow-collection",
+    "members": {
+      "item": {},
+      "length": {},
+      "namedItem": {}
+    },
+    "support_level": "experimental"
+  },
+  "DOMParser": {
+    "members": {
+      "DOMParser": {},
+      "parseFromString": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMPath": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path-objects",
+    "members": {
+      "DOMPath": {},
+      "arc": {},
+      "arcTo": {},
+      "bezierCurveTo": {},
+      "closePath": {},
+      "lineTo": {},
+      "moveTo": {},
+      "quadraticCurveTo": {},
+      "rect": {}
+    },
+    "support_level": "experimental"
+  },
+  "DOMPlugin": {
+    "members": {
+      "description": {},
+      "filename": {},
+      "item": {},
+      "length": {},
+      "name": {},
+      "namedItem": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "DOMPluginArray": {
+    "members": {
+      "item": {},
+      "length": {},
+      "namedItem": {},
+      "refresh": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "DOMPoint": {
+    "comment": "http://developer.apple.com/library/safari/#documentation/DataManagement/Reference/DOMWindowAdditionsReference/DOMWindowAdditions/DOMWindowAdditions.html",
+    "members": {
+      "DOMPoint": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "DOMSecurityPolicy": {
+    "comment": "https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#securitypolicy",
+    "members": {
+      "allowsConnectionTo": {},
+      "allowsEval": {},
+      "allowsFontFrom": {},
+      "allowsFormAction": {},
+      "allowsFrameFrom": {},
+      "allowsImageFrom": {},
+      "allowsInlineScript": {},
+      "allowsInlineStyle": {},
+      "allowsMediaFrom": {},
+      "allowsObjectFrom": {},
+      "allowsPluginType": {},
+      "allowsScriptFrom": {},
+      "allowsStyleFrom": {},
+      "isActive": {},
+      "reportURIs": {}
+    },
+    "support_level": "experimental"
+  },
+  "DOMSelection": {
+    "comment": "https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#concept-selection",
+    "members": {
+      "addRange": {},
+      "anchorNode": {},
+      "anchorOffset": {},
+      "baseNode": {
+        "support_level": "nonstandard"
+      },
+      "baseOffset": {
+        "support_level": "nonstandard"
+      },
+      "collapse": {},
+      "collapseToEnd": {},
+      "collapseToStart": {},
+      "containsNode": {
+        "support_level": "nonstandard"
+      },
+      "deleteFromDocument": {},
+      "empty": {
+        "support_level": "nonstandard"
+      },
+      "extend": {},
+      "extentNode": {
+        "support_level": "nonstandard"
+      },
+      "extentOffset": {
+        "support_level": "nonstandard"
+      },
+      "focusNode": {},
+      "focusOffset": {},
+      "getRangeAt": {},
+      "isCollapsed": {},
+      "modify": {
+        "support_level": "nonstandard"
+      },
+      "rangeCount": {},
+      "removeAllRanges": {},
+      "selectAllChildren": {},
+      "setBaseAndExtent": {
+        "support_level": "nonstandard"
+      },
+      "setPosition": {
+        "support_level": "nonstandard"
+      },
+      "toString": {},
+      "type": {
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "DOMSettableTokenList": {
+    "comment": "http://dev.w3.org/html5/spec-LC/common-dom-interfaces.html#domsettabletokenlist-0",
+    "members": {
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMStringList": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Core/core.html#DOMStringList",
+    "members": {
+      "contains": {},
+      "item": {},
+      "length": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMStringMap": {
+    "comment": "http://dev.w3.org/html5/spec-LC/common-dom-interfaces.html#domstringmap-0",
+    "members": {},
+    "support_level": "stable"
+  },
+  "DOMTokenList": {
+    "comment": "http://dev.w3.org/html5/spec-LC/common-dom-interfaces.html#domtokenlist-0",
+    "members": {
+      "contains": {},
+      "item": {},
+      "length": {},
+      "toString": {},
+      "toggle": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMURL": {
+    "comment": "http://www.w3.org/TR/FileAPI/#URL-object",
+    "members": {
+      "createObjectURL": {},
+      "revokeObjectURL": {}
+    },
+    "support_level": "stable"
+  },
+  "DOMWindow": {
+    "members": {
+      "PERSISTENT": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      },
+      "TEMPORARY": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      },
+      "addEventListener": {},
+      "alert": {},
+      "applicationCache": {},
+      "atob": {},
+      "blur": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "btoa": {},
+      "cancelAnimationFrame": {},
+      "captureEvents": {
+        "comment": "http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-capture",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "clearInterval": {},
+      "clearTimeout": {},
+      "clientInformation": {
+        "support_level": "nonstandard"
+      },
+      "close": {},
+      "closed": {},
+      "confirm": {},
+      "console": {},
+      "crypto": {
+        "comment": "http://www.w3.org/TR/WebCryptoAPI/",
+        "support_level": "experimental"
+      },
+      "defaultStatus": {},
+      "defaultstatus": {
+        "support_level": "nonstandard"
+      },
+      "devicePixelRatio": {
+        "comment": "http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html",
+        "support_level": "nonstandard"
+      },
+      "dispatchEvent": {},
+      "document": {},
+      "event": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "find": {
+        "support_level": "nonstandard"
+      },
+      "focus": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "frameElement": {},
+      "frames": {},
+      "getComputedStyle": {},
+      "getMatchedCSSRules": {
+        "support_level": "nonstandard"
+      },
+      "getSelection": {},
+      "history": {},
+      "indexedDB": {},
+      "innerHeight": {},
+      "innerWidth": {},
+      "length": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "localStorage": {},
+      "location": {},
+      "locationbar": {},
+      "matchMedia": {},
+      "menubar": {},
+      "moveBy": {},
+      "moveTo": {},
+      "name": {},
+      "navigator": {},
+      "offscreenBuffering": {
+        "support_level": "nonstandard"
+      },
+      "onDOMContentLoaded": {
+        "support_level": "untriaged"
+      },
+      "onabort": {},
+      "onbeforeunload": {},
+      "onblur": {},
+      "oncanplay": {},
+      "oncanplaythrough": {},
+      "onchange": {},
+      "onclick": {},
+      "oncontextmenu": {},
+      "ondblclick": {},
+      "ondevicemotion": {
+        "comment": "http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion",
+        "support_level": "experimental"
+      },
+      "ondeviceorientation": {
+        "comment": "http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion",
+        "support_level": "experimental"
+      },
+      "ondrag": {},
+      "ondragend": {},
+      "ondragenter": {},
+      "ondragleave": {},
+      "ondragover": {},
+      "ondragstart": {},
+      "ondrop": {},
+      "ondurationchange": {},
+      "onemptied": {},
+      "onended": {},
+      "onerror": {},
+      "onfocus": {},
+      "onhashchange": {},
+      "oninput": {},
+      "oninvalid": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/section-index.html#attributes-1"
+      },
+      "onkeydown": {},
+      "onkeypress": {},
+      "onkeyup": {},
+      "onload": {},
+      "onloadeddata": {},
+      "onloadedmetadata": {},
+      "onloadstart": {},
+      "onmessage": {},
+      "onmousedown": {},
+      "onmousemove": {},
+      "onmouseout": {},
+      "onmouseover": {},
+      "onmouseup": {},
+      "onmousewheel": {},
+      "onoffline": {},
+      "ononline": {},
+      "onpagehide": {},
+      "onpageshow": {},
+      "onpause": {},
+      "onplay": {},
+      "onplaying": {},
+      "onpopstate": {},
+      "onprogress": {},
+      "onratechange": {},
+      "onreset": {},
+      "onresize": {},
+      "onscroll": {},
+      "onsearch": {
+        "comment": "http://www.w3.org/TR/html-markup/input.search.html",
+        "support_level": "experimental"
+      },
+      "onseeked": {},
+      "onseeking": {},
+      "onselect": {},
+      "onstalled": {},
+      "onstorage": {},
+      "onsubmit": {},
+      "onsuspend": {},
+      "ontimeupdate": {},
+      "ontouchcancel": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchend": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchmove": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchstart": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontransitionend": {},
+      "onunload": {},
+      "onvolumechange": {},
+      "onwaiting": {},
+      "onwebkitAnimationEnd": {
+        "support_level": "untriaged"
+      },
+      "onwebkitAnimationIteration": {
+        "support_level": "untriaged"
+      },
+      "onwebkitAnimationStart": {
+        "support_level": "untriaged"
+      },
+      "onwebkitTransitionEnd": {
+        "support_level": "untriaged"
+      },
+      "onwebkitanimationend": {
+        "support_level": "experimental"
+      },
+      "onwebkitanimationiteration": {
+        "support_level": "experimental"
+      },
+      "onwebkitanimationstart": {
+        "support_level": "experimental"
+      },
+      "onwebkittransitionend": {
+        "support_level": "experimental"
+      },
+      "open": {},
+      "openDatabase": {
+        "comment": "http://www.w3.org/TR/webdatabase/",
+        "dart_action": "experimental",
+        "support_level": "deprecated"
+      },
+      "opener": {},
+      "outerHeight": {},
+      "outerWidth": {},
+      "pagePopupController": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "pageXOffset": {},
+      "pageYOffset": {},
+      "parent": {},
+      "performance": {
+        "comment": "http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute"
+      },
+      "personalbar": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.personalbar",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "postMessage": {},
+      "print": {},
+      "prompt": {},
+      "releaseEvents": {
+        "comment": "http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-capture",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "removeEventListener": {},
+      "requestAnimationFrame": {},
+      "resizeBy": {},
+      "resizeTo": {},
+      "screen": {},
+      "screenLeft": {},
+      "screenTop": {},
+      "screenX": {},
+      "screenY": {},
+      "scroll": {},
+      "scrollBy": {},
+      "scrollTo": {},
+      "scrollX": {},
+      "scrollY": {},
+      "scrollbars": {},
+      "self": {},
+      "sessionStorage": {},
+      "setInterval": {},
+      "setTimeout": {},
+      "showModalDialog": {},
+      "status": {},
+      "statusbar": {},
+      "stop": {},
+      "styleMedia": {
+        "comment": "http://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/StyleMedia/StyleMedia/StyleMedia.html",
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "toString": {},
+      "toolbar": {},
+      "top": {},
+      "webkitCancelAnimationFrame": {
+        "support_level": "experimental"
+      },
+      "webkitCancelRequestAnimationFrame": {
+        "support_level": "experimental"
+      },
+      "webkitConvertPointFromNodeToPage": {
+        "comment": "http://developer.apple.com/library/safari/#documentation/DataManagement/Reference/DOMWindowAdditionsReference/DOMWindowAdditions/DOMWindowAdditions.html",
+        "support_level": "experimental"
+      },
+      "webkitConvertPointFromPageToNode": {
+        "comment": "http://developer.apple.com/library/safari/#documentation/DataManagement/Reference/DOMWindowAdditionsReference/DOMWindowAdditions/DOMWindowAdditions.html",
+        "support_level": "experimental"
+      },
+      "webkitIndexedDB": {
+        "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBEnvironment",
+        "support_level": "experimental"
+      },
+      "webkitNotifications": {
+        "comment": "https://plus.sandbox.google.com/u/0/+GoogleChromeDevelopers/posts/8vWo8hq4pDm?e=Showroom",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitRequestAnimationFrame": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitRequestFileSystem": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      },
+      "webkitResolveLocalFileSystemURL": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      },
+      "webkitStorageInfo": {
+        "comment": "http://www.w3.org/TR/file-system-api/",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "window": {}
+    },
+    "support_level": "stable"
+  },
+  "DataTransferItem": {
+    "comment": "http://www.w3.org/TR/2011/WD-html5-20110113/dnd.html#the-datatransferitem-interface",
+    "members": {
+      "getAsFile": {},
+      "getAsString": {},
+      "kind": {},
+      "type": {},
+      "webkitGetAsEntry": {
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "DataTransferItemList": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-datatransferitemlist-interface",
+    "members": {
+      "add": {},
+      "clear": {},
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "DataView": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "getFloat32": {},
+      "getFloat64": {},
+      "getInt16": {},
+      "getInt32": {},
+      "getInt8": {},
+      "getUint16": {},
+      "getUint32": {},
+      "getUint8": {},
+      "setFloat32": {},
+      "setFloat64": {},
+      "setInt16": {},
+      "setInt32": {},
+      "setInt8": {},
+      "setUint16": {},
+      "setUint32": {},
+      "setUint8": {}
+    },
+    "support_level": "stable"
+  },
+  "Database": {
+    "comment": "http://www.w3.org/TR/webdatabase/#asynchronous-database-api",
+    "dart_action": "experimental",
+    "members": {
+      "changeVersion": {},
+      "readTransaction": {},
+      "transaction": {},
+      "version": {}
+    },
+    "support_level": "deprecated"
+  },
+  "DatabaseCallback": {
+    "comment": "http://www.w3.org/TR/webdatabase/#databasecallback",
+    "dart_action": "experimental",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "deprecated"
+  },
+  "DatabaseSync": {
+    "comment": "http://www.w3.org/TR/webdatabase/#databasesync",
+    "dart_action": "suppress",
+    "members": {
+      "changeVersion": {},
+      "lastErrorMessage": {},
+      "readTransaction": {},
+      "transaction": {},
+      "version": {}
+    },
+    "support_level": "deprecated"
+  },
+  "DedicatedWorkerContext": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html",
+    "members": {
+      "onmessage": {},
+      "postMessage": {}
+    },
+    "support_level": "experimental"
+  },
+  "DelayNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#DelayNode",
+    "members": {
+      "delayTime": {}
+    },
+    "support_level": "experimental"
+  },
+  "DeviceAcceleration": {
+    "comment": "http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion",
+    "members": {
+      "x": {},
+      "y": {},
+      "z": {}
+    },
+    "support_level": "experimental"
+  },
+  "DeviceMotionEvent": {
+    "comment": "http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion",
+    "members": {
+      "acceleration": {},
+      "accelerationIncludingGravity": {},
+      "interval": {},
+      "rotationRate": {}
+    },
+    "support_level": "experimental"
+  },
+  "DeviceOrientationEvent": {
+    "comment": "http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion",
+    "members": {
+      "absolute": {},
+      "alpha": {},
+      "beta": {},
+      "gamma": {},
+      "initDeviceOrientationEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "DeviceRotationRate": {
+    "comment": "http://dev.w3.org/geo/api/spec-source-orientation.html#devicemotion",
+    "members": {
+      "alpha": {},
+      "beta": {},
+      "gamma": {}
+    },
+    "support_level": "experimental"
+  },
+  "DirectoryEntry": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-directoryentry-interface",
+    "members": {
+      "createReader": {},
+      "getDirectory": {},
+      "getFile": {},
+      "removeRecursively": {}
+    },
+    "support_level": "experimental"
+  },
+  "DirectoryEntrySync": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-directoryentrysync-interface",
+    "members": {
+      "createReader": {},
+      "getDirectory": {},
+      "getFile": {},
+      "removeRecursively": {}
+    },
+    "support_level": "experimental"
+  },
+  "DirectoryReader": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-directoryreader-interface",
+    "members": {
+      "readEntries": {}
+    },
+    "support_level": "experimental"
+  },
+  "DirectoryReaderSync": {
+    "comment": "http://www.w3.org/TR/file-system-api/#idl-def-DirectoryReaderSync",
+    "members": {
+      "readEntries": {}
+    },
+    "support_level": "experimental"
+  },
+  "Document": {
+    "comment": "http://dom.spec.whatwg.org/#interface-document",
+    "members": {
+      "URL": {},
+      "adoptNode": {},
+      "anchors": {
+        "dart_action": "suppress"
+      },
+      "applets": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "body": {},
+      "caretRangeFromPoint": {
+        "comment": "http://www.w3.org/TR/2009/WD-cssom-view-20090804/#dom-documentview-caretrangefrompoint",
+        "support_level": "experimental"
+      },
+      "characterSet": {},
+      "charset": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "compatMode": {
+        "dart_action": "suppress"
+      },
+      "cookie": {},
+      "createAttribute": {
+        "comment": "http://dom.spec.whatwg.org/#dom-document-createattribute",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "createAttributeNS": {
+        "comment": "http://dom.spec.whatwg.org/#dom-document-createattributens",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "createCDATASection": {
+        "comment": "http://dom.spec.whatwg.org/#dom-document-createcdatasection",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "createComment": {},
+      "createDocumentFragment": {},
+      "createElement": {},
+      "createElementNS": {},
+      "createEntityReference": {
+        "comment": "http://dom.spec.whatwg.org/#dom-document-createentityreference",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "createEvent": {},
+      "createExpression": {
+        "dart_action": "suppress"
+      },
+      "createNSResolver": {
+        "comment": "http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator-createNSResolver",
+        "dart_action": "suppress"
+      },
+      "createNodeIterator": {
+        "dart_action": "unstable"
+      },
+      "createProcessingInstruction": {
+        "comment": "https://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-document-createprocessinginstruction",
+        "dart_action": "unstable"
+      },
+      "createRange": {},
+      "createTextNode": {},
+      "createTouch": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "createTouchList": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "createTreeWalker": {},
+      "defaultCharset": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "defaultView": {},
+      "doctype": {
+        "dart_action": "suppress"
+      },
+      "documentElement": {},
+      "documentURI": {},
+      "domain": {},
+      "elementFromPoint": {},
+      "evaluate": {
+        "dart_action": "suppress"
+      },
+      "execCommand": {},
+      "fontloader": {
+        "comment": "http://www.w3.org/TR/css3-fonts/#document-fontloader",
+        "support_level": "experimental"
+      },
+      "forms": {},
+      "getCSSCanvasContext": {
+        "comment": "https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html",
+        "support_level": "nonstandard"
+      },
+      "getElementById": {},
+      "getElementsByClassName": {},
+      "getElementsByName": {},
+      "getElementsByTagName": {},
+      "getElementsByTagNameNS": {},
+      "getOverrideStyle": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "getSelection": {
+        "dart_action": "unstable"
+      },
+      "head": {},
+      "images": {
+        "dart_action": "suppress"
+      },
+      "implementation": {},
+      "importNode": {},
+      "inputEncoding": {
+        "comment": "http://www.w3.org/TR/domcore/",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "lastModified": {},
+      "links": {
+        "dart_action": "suppress"
+      },
+      "location": {
+        "dart_action": "suppress"
+      },
+      "onabort": {},
+      "onbeforecopy": {},
+      "onbeforecut": {},
+      "onbeforepaste": {},
+      "onblur": {},
+      "onchange": {},
+      "onclick": {},
+      "oncontextmenu": {},
+      "oncopy": {},
+      "oncut": {},
+      "ondblclick": {},
+      "ondrag": {},
+      "ondragend": {},
+      "ondragenter": {},
+      "ondragleave": {},
+      "ondragover": {},
+      "ondragstart": {},
+      "ondrop": {},
+      "onerror": {},
+      "onfocus": {},
+      "oninput": {},
+      "oninvalid": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/section-index.html#attributes-1"
+      },
+      "onkeydown": {},
+      "onkeypress": {},
+      "onkeyup": {},
+      "onload": {},
+      "onmousedown": {},
+      "onmousemove": {},
+      "onmouseout": {},
+      "onmouseover": {},
+      "onmouseup": {},
+      "onmousewheel": {},
+      "onpaste": {},
+      "onreadystatechange": {},
+      "onreset": {},
+      "onscroll": {},
+      "onsearch": {
+        "comment": "http://www.w3.org/TR/html-markup/input.search.html",
+        "support_level": "experimental"
+      },
+      "onsecuritypolicyviolation": {
+        "comment": "https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#widl-Document-onsecuritypolicyviolation",
+        "support_level": "experimental"
+      },
+      "onselect": {},
+      "onselectionchange": {},
+      "onselectstart": {},
+      "onsubmit": {},
+      "ontouchcancel": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchend": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchmove": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchstart": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "onwebkitfullscreenchange": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "support_level": "experimental"
+      },
+      "onwebkitfullscreenerror": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "support_level": "experimental"
+      },
+      "onwebkitpointerlockchange": {
+        "comment": "https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-onpointerlockchange",
+        "support_level": "experimental"
+      },
+      "onwebkitpointerlockerror": {
+        "comment": "https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-onpointerlockerror",
+        "support_level": "experimental"
+      },
+      "preferredStylesheetSet": {
+        "comment": "http://dev.w3.org/csswg/cssom/#widl-Document-preferredStyleSheetSet",
+        "dart_action": "private"
+      },
+      "queryCommandEnabled": {},
+      "queryCommandIndeterm": {},
+      "queryCommandState": {},
+      "queryCommandSupported": {},
+      "queryCommandValue": {},
+      "querySelector": {},
+      "querySelectorAll": {},
+      "readyState": {},
+      "referrer": {},
+      "securityPolicy": {
+        "comment": "https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#idl-def-SecurityPolicy",
+        "support_level": "experimental"
+      },
+      "selectedStylesheetSet": {
+        "comment": "http://dev.w3.org/csswg/cssom/#widl-Document-selectedStyleSheetSet",
+        "dart_action": "private"
+      },
+      "styleSheets": {},
+      "title": {},
+      "webkitCancelFullScreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitCurrentFullScreenElement": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitExitFullscreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen",
+        "support_level": "experimental"
+      },
+      "webkitExitPointerLock": {
+        "comment": "https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-exitPointerLock-void",
+        "support_level": "experimental"
+      },
+      "webkitFullScreenKeyboardInputAllowed": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitFullscreenElement": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenelement",
+        "support_level": "experimental"
+      },
+      "webkitFullscreenEnabled": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenenabled",
+        "support_level": "experimental"
+      },
+      "webkitGetNamedFlows": {
+        "comment": "http://www.w3.org/TR/css3-regions/#dom-named-flow-collection",
+        "support_level": "experimental"
+      },
+      "webkitHidden": {
+        "comment": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#document",
+        "support_level": "experimental"
+      },
+      "webkitIsFullScreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitPointerLockElement": {
+        "comment": "https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Document-pointerLockElement",
+        "support_level": "experimental"
+      },
+      "webkitRegister": {
+        "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-document-register",
+        "support_level": "experimental"
+      },
+      "webkitVisibilityState": {
+        "comment": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#dom-document-visibilitystate",
+        "support_level": "experimental"
+      },
+      "window": {
+        "support_level": "untriaged"
+      },
+      "xmlEncoding": {
+        "comment": "http://dom.spec.whatwg.org/#dom-document-xmlencoding",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "xmlStandalone": {
+        "comment": "http://dom.spec.whatwg.org/#dom-document-xmlstandalone",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "xmlVersion": {
+        "comment": "http://dom.spec.whatwg.org/#dom-document-xmlversion",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "DocumentFragment": {
+    "members": {
+      "querySelector": {},
+      "querySelectorAll": {}
+    },
+    "support_level": "stable"
+  },
+  "DocumentType": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-412266927",
+    "dart_action": "suppress",
+    "members": {
+      "entities": {
+        "comment": "http://dom.spec.whatwg.org/#dom-documenttype-entities",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "internalSubset": {
+        "comment": "http://dom.spec.whatwg.org/#dom-documenttype-internalsubset",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "name": {},
+      "notations": {
+        "comment": "http://dom.spec.whatwg.org/#dom-documenttype-notations",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "publicId": {},
+      "remove": {
+        "support_level": "nonstandard"
+      },
+      "systemId": {}
+    },
+    "support_level": "stable"
+  },
+  "DynamicsCompressorNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#DynamicsCompressorNode",
+    "members": {
+      "attack": {},
+      "knee": {},
+      "ratio": {},
+      "reduction": {},
+      "release": {},
+      "threshold": {}
+    },
+    "support_level": "experimental"
+  },
+  "EXTDrawBuffers": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/",
+    "dart_action": "experimental",
+    "members": {
+      "COLOR_ATTACHMENT0_EXT": {},
+      "COLOR_ATTACHMENT10_EXT": {},
+      "COLOR_ATTACHMENT11_EXT": {},
+      "COLOR_ATTACHMENT12_EXT": {},
+      "COLOR_ATTACHMENT13_EXT": {},
+      "COLOR_ATTACHMENT14_EXT": {},
+      "COLOR_ATTACHMENT15_EXT": {},
+      "COLOR_ATTACHMENT1_EXT": {},
+      "COLOR_ATTACHMENT2_EXT": {},
+      "COLOR_ATTACHMENT3_EXT": {},
+      "COLOR_ATTACHMENT4_EXT": {},
+      "COLOR_ATTACHMENT5_EXT": {},
+      "COLOR_ATTACHMENT6_EXT": {},
+      "COLOR_ATTACHMENT7_EXT": {},
+      "COLOR_ATTACHMENT8_EXT": {},
+      "COLOR_ATTACHMENT9_EXT": {},
+      "DRAW_BUFFER0_EXT": {},
+      "DRAW_BUFFER10_EXT": {},
+      "DRAW_BUFFER11_EXT": {},
+      "DRAW_BUFFER12_EXT": {},
+      "DRAW_BUFFER13_EXT": {},
+      "DRAW_BUFFER14_EXT": {},
+      "DRAW_BUFFER15_EXT": {},
+      "DRAW_BUFFER1_EXT": {},
+      "DRAW_BUFFER2_EXT": {},
+      "DRAW_BUFFER3_EXT": {},
+      "DRAW_BUFFER4_EXT": {},
+      "DRAW_BUFFER5_EXT": {},
+      "DRAW_BUFFER6_EXT": {},
+      "DRAW_BUFFER7_EXT": {},
+      "DRAW_BUFFER8_EXT": {},
+      "DRAW_BUFFER9_EXT": {},
+      "MAX_COLOR_ATTACHMENTS_EXT": {},
+      "MAX_DRAW_BUFFERS_EXT": {}
+    },
+    "support_level": "stable"
+  },
+  "EXTTextureFilterAnisotropic": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/EXT_texture_filter_anisotropic/",
+    "members": {
+      "MAX_TEXTURE_MAX_ANISOTROPY_EXT": {},
+      "TEXTURE_MAX_ANISOTROPY_EXT": {}
+    },
+    "support_level": "experimental"
+  },
+  "Element": {
+    "members": {
+      "ALLOW_KEYBOARD_INPUT": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-element-requestfullscreen",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "attributes": {},
+      "blur": {},
+      "childElementCount": {},
+      "children": {
+        "support_level": "untriaged"
+      },
+      "classList": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#dom-classlist"
+      },
+      "className": {},
+      "click": {
+        "support_level": "untriaged"
+      },
+      "clientHeight": {},
+      "clientLeft": {},
+      "clientTop": {},
+      "clientWidth": {},
+      "contentEditable": {
+        "support_level": "untriaged"
+      },
+      "dataset": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#dom-dataset"
+      },
+      "dir": {
+        "support_level": "untriaged"
+      },
+      "draggable": {
+        "support_level": "untriaged"
+      },
+      "firstElementChild": {},
+      "focus": {},
+      "getAttribute": {},
+      "getAttributeNS": {},
+      "getAttributeNode": {
+        "comment": "http://dom.spec.whatwg.org/#dom-element-getattributenode",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "getAttributeNodeNS": {
+        "comment": "http://dom.spec.whatwg.org/#dom-element-getattributenodens",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "getBoundingClientRect": {},
+      "getClientRects": {},
+      "getElementsByClassName": {},
+      "getElementsByTagName": {},
+      "getElementsByTagNameNS": {
+        "dart_action": "suppress"
+      },
+      "hasAttribute": {},
+      "hasAttributeNS": {},
+      "hasAttributes": {},
+      "hidden": {
+        "support_level": "untriaged"
+      },
+      "id": {
+        "support_level": "untriaged"
+      },
+      "innerHTML": {
+        "support_level": "untriaged"
+      },
+      "isContentEditable": {
+        "support_level": "untriaged"
+      },
+      "lang": {
+        "support_level": "untriaged"
+      },
+      "lastElementChild": {},
+      "nextElementSibling": {},
+      "offsetHeight": {},
+      "offsetLeft": {},
+      "offsetParent": {},
+      "offsetTop": {},
+      "offsetWidth": {},
+      "onabort": {},
+      "onbeforecopy": {},
+      "onbeforecut": {},
+      "onbeforepaste": {},
+      "onblur": {},
+      "onchange": {},
+      "onclick": {},
+      "oncontextmenu": {},
+      "oncopy": {},
+      "oncut": {},
+      "ondblclick": {},
+      "ondrag": {},
+      "ondragend": {},
+      "ondragenter": {},
+      "ondragleave": {},
+      "ondragover": {},
+      "ondragstart": {},
+      "ondrop": {},
+      "onerror": {},
+      "onfocus": {},
+      "oninput": {},
+      "oninvalid": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/section-index.html#attributes-1"
+      },
+      "onkeydown": {},
+      "onkeypress": {},
+      "onkeyup": {},
+      "onload": {},
+      "onmousedown": {},
+      "onmousemove": {},
+      "onmouseout": {},
+      "onmouseover": {},
+      "onmouseup": {},
+      "onmousewheel": {
+        "comment": "http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents",
+        "support_level": "nonstandard"
+      },
+      "onpaste": {},
+      "onreset": {},
+      "onscroll": {},
+      "onsearch": {
+        "comment": "http://www.w3.org/TR/html-markup/input.search.html",
+        "support_level": "experimental"
+      },
+      "onselect": {},
+      "onselectstart": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "onsubmit": {},
+      "ontouchcancel": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchend": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchenter": {
+        "support_level": "untriaged"
+      },
+      "ontouchleave": {
+        "support_level": "untriaged"
+      },
+      "ontouchmove": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "ontouchstart": {
+        "comment": "http://www.w3.org/TR/touch-events/",
+        "support_level": "experimental"
+      },
+      "onwebkitTransitionEnd": {
+        "support_level": "untriaged"
+      },
+      "onwebkitfullscreenchange": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "support_level": "experimental"
+      },
+      "onwebkitfullscreenerror": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "support_level": "experimental"
+      },
+      "outerHTML": {
+        "support_level": "untriaged"
+      },
+      "previousElementSibling": {},
+      "querySelector": {},
+      "querySelectorAll": {},
+      "remove": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "removeAttribute": {},
+      "removeAttributeNS": {},
+      "removeAttributeNode": {
+        "comment": "http://dom.spec.whatwg.org/#dom-element-removeattributenode",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "scrollByLines": {},
+      "scrollByPages": {},
+      "scrollHeight": {},
+      "scrollIntoView": {
+        "comment": "http://dev.w3.org/csswg/cssom-view/#widl-Element-scrollIntoView-void-boolean-top"
+      },
+      "scrollIntoViewIfNeeded": {
+        "comment": "http://docs.webplatform.org/wiki/dom/methods/scrollIntoViewIfNeeded",
+        "support_level": "nonstandard"
+      },
+      "scrollLeft": {},
+      "scrollTop": {},
+      "scrollWidth": {},
+      "setAttribute": {},
+      "setAttributeNS": {},
+      "setAttributeNode": {
+        "comment": "http://dom.spec.whatwg.org/#dom-element-setattributenode",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "setAttributeNodeNS": {},
+      "spellcheck": {
+        "support_level": "untriaged"
+      },
+      "style": {},
+      "tabIndex": {
+        "support_level": "untriaged"
+      },
+      "tagName": {},
+      "title": {
+        "support_level": "untriaged"
+      },
+      "translate": {
+        "support_level": "untriaged"
+      },
+      "webkitCreateShadowRoot": {
+        "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-aware-create-shadow-root",
+        "support_level": "experimental"
+      },
+      "webkitGetRegionFlowRanges": {
+        "comment": "http://dev.w3.org/csswg/css-regions/#dom-region-getregionflowranges",
+        "support_level": "experimental"
+      },
+      "webkitInsertionParent": {
+        "comment": "https://www.w3.org/Bugs/Public/show_bug.cgi?id=21067",
+        "support_level": "experimental"
+      },
+      "webkitMatchesSelector": {
+        "comment": "http://dev.w3.org/2006/webapi/selectors-api2/#matches",
+        "support_level": "experimental"
+      },
+      "webkitPseudo": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "webkitRegionOverset": {
+        "comment": "http://dev.w3.org/csswg/css-regions/#dom-region-regionoverset",
+        "support_level": "experimental"
+      },
+      "webkitRequestFullScreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-element-requestfullscreen",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitRequestFullscreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-element-requestfullscreen",
+        "support_level": "experimental"
+      },
+      "webkitRequestPointerLock": {
+        "comment": "https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#widl-Element-requestPointerLock-void",
+        "support_level": "experimental"
+      },
+      "webkitShadowRoot": {
+        "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-aware-create-shadow-root",
+        "support_level": "experimental"
+      },
+      "webkitdropzone": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "ElementTimeControl": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceElementTimeControl",
+    "dart_action": "unstable",
+    "members": {
+      "beginElement": {},
+      "beginElementAt": {},
+      "endElement": {},
+      "endElementAt": {}
+    },
+    "support_level": "stable"
+  },
+  "ElementTraversal": {
+    "dart_action": "unstable",
+    "members": {
+      "childElementCount": {},
+      "firstElementChild": {},
+      "lastElementChild": {},
+      "nextElementSibling": {},
+      "previousElementSibling": {}
+    },
+    "support_level": "stable"
+  },
+  "EntityReference": {
+    "dart_action": "suppress",
+    "members": {},
+    "support_level": "deprecated"
+  },
+  "EntriesCallback": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-entriescallback-interface",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "Entry": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-entry-interface",
+    "members": {
+      "copyTo": {},
+      "filesystem": {},
+      "fullPath": {},
+      "getMetadata": {},
+      "getParent": {},
+      "isDirectory": {},
+      "isFile": {},
+      "moveTo": {},
+      "name": {},
+      "remove": {},
+      "toURL": {}
+    },
+    "support_level": "experimental"
+  },
+  "EntryArray": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-entry-interface",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "EntryArraySync": {
+    "comment": "http://www.w3.org/TR/file-system-api/#idl-def-EntrySync",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "EntryCallback": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-entrycallback-interface",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "EntrySync": {
+    "comment": "http://www.w3.org/TR/file-system-api/#idl-def-EntrySync",
+    "members": {
+      "copyTo": {},
+      "filesystem": {},
+      "fullPath": {},
+      "getMetadata": {},
+      "getParent": {},
+      "isDirectory": {},
+      "isFile": {},
+      "moveTo": {},
+      "name": {},
+      "remove": {},
+      "toURL": {}
+    },
+    "support_level": "experimental"
+  },
+  "ErrorCallback": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-errorcallback-interface",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "ErrorEvent": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#errorevent",
+    "dart_action": "unstable",
+    "members": {
+      "filename": {},
+      "lineno": {},
+      "message": {}
+    },
+    "support_level": "stable"
+  },
+  "Event": {
+    "members": {
+      "AT_TARGET": {},
+      "BLUR": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "BUBBLING_PHASE": {},
+      "CAPTURING_PHASE": {},
+      "CHANGE": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "CLICK": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "DBLCLICK": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "DRAGDROP": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "FOCUS": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "KEYDOWN": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "KEYPRESS": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "KEYUP": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "MOUSEDOWN": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "MOUSEDRAG": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "MOUSEMOVE": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "MOUSEOUT": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "MOUSEOVER": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "MOUSEUP": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "NONE": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SELECT": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.captureEvents",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "bubbles": {},
+      "cancelBubble": {
+        "comment": "http://www.w3.org/TR/DOM-Level-3-Events/#events-event-type-stopPropagation",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "cancelable": {},
+      "clipboardData": {
+        "comment": "Part of copy/paste",
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "currentTarget": {},
+      "defaultPrevented": {},
+      "eventPhase": {},
+      "initEvent": {},
+      "preventDefault": {},
+      "returnValue": {
+        "comment": "http://dev.w3.org/html5/spec-LC/history.html#dom-beforeunloadevent-returnvalue",
+        "support_level": "nonstandard"
+      },
+      "srcElement": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "stopImmediatePropagation": {},
+      "stopPropagation": {},
+      "target": {},
+      "timeStamp": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "EventException": {
+    "comment": "http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/events.html#Events-EventException",
+    "dart_action": "unstable",
+    "members": {
+      "DISPATCH_REQUEST_ERR": {},
+      "UNSPECIFIED_EVENT_TYPE_ERR": {},
+      "code": {},
+      "message": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "name": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "toString": {}
+    },
+    "support_level": "stable"
+  },
+  "EventSource": {
+    "comment": "http://www.w3.org/TR/eventsource/#the-eventsource-interface",
+    "dart_action": "experimental",
+    "members": {
+      "CLOSED": {},
+      "CONNECTING": {},
+      "EventSource": {},
+      "OPEN": {},
+      "URL": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "addEventListener": {},
+      "close": {},
+      "dispatchEvent": {},
+      "onerror": {},
+      "onmessage": {},
+      "onopen": {},
+      "readyState": {},
+      "removeEventListener": {},
+      "url": {},
+      "withCredentials": {}
+    },
+    "support_level": "stable"
+  },
+  "EventTarget": {
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "removeEventListener": {}
+    },
+    "support_level": "stable"
+  },
+  "File": {
+    "comment": "http://www.w3.org/TR/FileAPI/#dfn-file",
+    "members": {
+      "lastModifiedDate": {},
+      "name": {},
+      "webkitRelativePath": {
+        "comment": "https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3",
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "FileCallback": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-filecallback-interface",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileEntry": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-fileentry-interface",
+    "members": {
+      "createWriter": {},
+      "file": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileEntrySync": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-fileentrysync-interface",
+    "members": {
+      "createWriter": {},
+      "file": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileError": {
+    "comment": "http://dev.w3.org/2009/dap/file-system/pub/FileSystem/",
+    "members": {
+      "ABORT_ERR": {},
+      "ENCODING_ERR": {},
+      "INVALID_MODIFICATION_ERR": {},
+      "INVALID_STATE_ERR": {},
+      "NOT_FOUND_ERR": {},
+      "NOT_READABLE_ERR": {},
+      "NO_MODIFICATION_ALLOWED_ERR": {},
+      "PATH_EXISTS_ERR": {},
+      "QUOTA_EXCEEDED_ERR": {},
+      "SECURITY_ERR": {},
+      "SYNTAX_ERR": {},
+      "TYPE_MISMATCH_ERR": {},
+      "code": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileException": {
+    "comment": "http://dev.w3.org/2009/dap/file-system/pub/FileSystem/",
+    "members": {
+      "ABORT_ERR": {},
+      "ENCODING_ERR": {},
+      "INVALID_MODIFICATION_ERR": {},
+      "INVALID_STATE_ERR": {},
+      "NOT_FOUND_ERR": {},
+      "NOT_READABLE_ERR": {},
+      "NO_MODIFICATION_ALLOWED_ERR": {},
+      "PATH_EXISTS_ERR": {},
+      "QUOTA_EXCEEDED_ERR": {},
+      "SECURITY_ERR": {},
+      "SYNTAX_ERR": {},
+      "TYPE_MISMATCH_ERR": {},
+      "code": {},
+      "message": {},
+      "name": {},
+      "toString": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileList": {
+    "comment": "http://www.w3.org/TR/FileAPI/#dfn-filelist",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "stable"
+  },
+  "FileReader": {
+    "comment": "http://www.w3.org/TR/FileAPI/#FileReader-interface",
+    "members": {
+      "DONE": {},
+      "EMPTY": {},
+      "FileReader": {},
+      "LOADING": {},
+      "abort": {},
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "error": {},
+      "onabort": {},
+      "onerror": {},
+      "onload": {},
+      "onloadend": {},
+      "onloadstart": {},
+      "onprogress": {},
+      "readAsArrayBuffer": {},
+      "readAsBinaryString": {
+        "comment": "http://blog.whatwg.org/weekly-stream-autocomplete",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "readAsDataURL": {},
+      "readAsText": {},
+      "readyState": {},
+      "removeEventListener": {},
+      "result": {}
+    },
+    "support_level": "stable"
+  },
+  "FileReaderSync": {
+    "comment": "http://www.w3.org/TR/FileAPI/#FileReaderSync",
+    "members": {
+      "FileReaderSync": {},
+      "readAsArrayBuffer": {},
+      "readAsBinaryString": {},
+      "readAsDataURL": {},
+      "readAsText": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileSystemCallback": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-filesystemcallback-interface",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileWriter": {
+    "comment": "http://www.w3.org/TR/file-writer-api/#the-filewriter-interface",
+    "members": {
+      "DONE": {},
+      "INIT": {},
+      "WRITING": {},
+      "abort": {},
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "error": {},
+      "length": {},
+      "onabort": {},
+      "onerror": {},
+      "onprogress": {},
+      "onwrite": {},
+      "onwriteend": {},
+      "onwritestart": {},
+      "position": {},
+      "readyState": {},
+      "removeEventListener": {},
+      "seek": {},
+      "truncate": {},
+      "write": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileWriterCallback": {
+    "comment": "http://www.w3.org/TR/file-writer-api/#idl-def-FileWriter",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "FileWriterSync": {
+    "comment": "http://www.w3.org/TR/file-writer-api/#idl-def-FileWriterSync",
+    "members": {
+      "length": {},
+      "position": {},
+      "seek": {},
+      "truncate": {},
+      "write": {}
+    },
+    "support_level": "experimental"
+  },
+  "Float32Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "Float64Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "FocusEvent": {
+    "members": {
+      "relatedTarget": {}
+    },
+    "support_level": "stable"
+  },
+  "FontLoader": {
+    "comment": "http://www.w3.org/TR/css3-fonts/#document-fontloader",
+    "members": {
+      "addEventListener": {},
+      "checkFont": {},
+      "dispatchEvent": {},
+      "loadFont": {},
+      "loading": {},
+      "notifyWhenFontsReady": {},
+      "onerror": {},
+      "onload": {},
+      "onloading": {},
+      "onloadingdone": {},
+      "onloadstart": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "FormData": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "GainNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#GainNode",
+    "members": {
+      "gain": {}
+    },
+    "support_level": "experimental"
+  },
+  "Gamepad": {
+    "comment": "https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepad-interface",
+    "members": {
+      "axes": {},
+      "buttons": {},
+      "id": {},
+      "index": {},
+      "timestamp": {}
+    },
+    "support_level": "experimental"
+  },
+  "GamepadList": {
+    "comment": "https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "Geolocation": {
+    "comment": "http://dev.w3.org/geo/api/spec-source.html#geolocation_interface",
+    "dart_action": "unstable",
+    "members": {
+      "clearWatch": {},
+      "getCurrentPosition": {},
+      "watchPosition": {}
+    },
+    "support_level": "stable"
+  },
+  "Geoposition": {
+    "comment": "http://dev.w3.org/geo/api/spec-source.html#position",
+    "dart_action": "unstable",
+    "members": {
+      "coords": {},
+      "timestamp": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLAllCollection": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-all",
+    "dart_action": "suppress",
+    "members": {
+      "item": {},
+      "length": {},
+      "namedItem": {},
+      "tags": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLAnchorElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-a-element",
+    "dart_action": "unstable",
+    "members": {
+      "HTMLAnchorElement": {},
+      "charset": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAnchorElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "coords": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAnchorElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "download": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#attr-hyperlink-download",
+        "support_level": "experimental"
+      },
+      "hash": {},
+      "host": {},
+      "hostname": {},
+      "href": {},
+      "hreflang": {},
+      "name": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAnchorElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "origin": {
+        "comment": "WebKit only",
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "pathname": {},
+      "ping": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-a-element",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "port": {},
+      "protocol": {},
+      "rel": {},
+      "rev": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAnchorElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "search": {},
+      "shape": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAnchorElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "target": {},
+      "text": {},
+      "toString": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLAppletElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#the-applet-element",
+    "dart_action": "suppress",
+    "members": {
+      "align": {},
+      "alt": {},
+      "archive": {},
+      "code": {},
+      "codeBase": {},
+      "height": {},
+      "hspace": {},
+      "name": {},
+      "object": {},
+      "vspace": {},
+      "width": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLAreaElement": {
+    "comment": "http://developers.whatwg.org/the-map-element.html#the-area-element",
+    "members": {
+      "HTMLAreaElement": {},
+      "alt": {},
+      "coords": {},
+      "hash": {},
+      "host": {},
+      "hostname": {},
+      "href": {},
+      "noHref": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAreaElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "pathname": {},
+      "ping": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLAreaElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "port": {},
+      "protocol": {},
+      "search": {},
+      "shape": {},
+      "target": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLAudioElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-audio-element",
+    "members": {
+      "HTMLAudioElement": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLBRElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-br-element",
+    "members": {
+      "HTMLBRElement": {},
+      "clear": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLBRElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLBaseElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-base-element",
+    "members": {
+      "HTMLBaseElement": {},
+      "href": {},
+      "target": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLBaseFontElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#basefont",
+    "dart_action": "suppress",
+    "members": {
+      "color": {},
+      "face": {},
+      "size": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLBodyElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/sections.html#the-body-element",
+    "members": {
+      "HTMLBodyElement": {},
+      "aLink": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLBodyElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "background": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLBodyElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "bgColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLBodyElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "link": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLBodyElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "onbeforeunload": {},
+      "onblur": {},
+      "onerror": {},
+      "onfocus": {},
+      "onhashchange": {},
+      "onload": {},
+      "onmessage": {},
+      "onoffline": {},
+      "ononline": {},
+      "onpopstate": {},
+      "onresize": {},
+      "onstorage": {},
+      "onunload": {},
+      "text": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLBodyElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "vLink": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLBodyElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLButtonElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-button-element",
+    "members": {
+      "HTMLButtonElement": {},
+      "autofocus": {},
+      "checkValidity": {},
+      "disabled": {},
+      "form": {},
+      "formAction": {},
+      "formEnctype": {},
+      "formMethod": {},
+      "formNoValidate": {},
+      "formTarget": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels",
+        "dart_action": "unstable"
+      },
+      "name": {},
+      "setCustomValidity": {},
+      "type": {},
+      "validationMessage": {},
+      "validity": {},
+      "value": {},
+      "willValidate": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLCanvasElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-canvas-element",
+    "members": {
+      "HTMLCanvasElement": {},
+      "getContext": {},
+      "height": {},
+      "toDataURL": {},
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLCollection": {
+    "comment": "http://www.w3.org/TR/domcore/#interface-htmlcollection",
+    "members": {
+      "item": {},
+      "length": {},
+      "namedItem": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLContentElement": {
+    "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#content-element",
+    "members": {
+      "HTMLContentElement": {},
+      "getDistributedNodes": {},
+      "resetStyleInheritance": {},
+      "select": {}
+    },
+    "support_level": "experimental"
+  },
+  "HTMLDListElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-dl-element",
+    "members": {
+      "HTMLDListElement": {},
+      "compact": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLDListElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLDataListElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-datalist-element",
+    "members": {
+      "HTMLDataListElement": {},
+      "options": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLDetailsElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#the-details-element",
+    "members": {
+      "HTMLDetailsElement": {},
+      "open": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLDialogElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#the-dialog-element",
+    "dart_action": "unstable",
+    "members": {
+      "close": {},
+      "open": {},
+      "show": {},
+      "showModal": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLDirectoryElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dir",
+    "dart_action": "suppress",
+    "members": {
+      "compact": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLDivElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-div-element",
+    "members": {
+      "HTMLDivElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLDivElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLDocument": {
+    "comment": "http://www.whatwg.org/specs/web-apps/2007-10-26/multipage/section-documents.html#htmldocument",
+    "members": {
+      "activeElement": {},
+      "alinkColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-alinkcolor",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "all": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-all",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "bgColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-bgcolor",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "captureEvents": {
+        "comment": "http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-capture",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "clear": {
+        "support_level": "suppressed"
+      },
+      "close": {},
+      "compatMode": {},
+      "designMode": {},
+      "dir": {},
+      "embeds": {},
+      "fgColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-fgcolor",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "hasFocus": {},
+      "height": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "linkColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-linkcolor",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "open": {
+        "comment": "http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-72161170"
+      },
+      "plugins": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "releaseEvents": {
+        "comment": "http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-capture",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "scripts": {
+        "dart_action": "suppress"
+      },
+      "vlinkColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#dom-document-vlinkcolor",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "width": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/document.width",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "write": {},
+      "writeln": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/2007-10-26/multipage/section-elements.html#htmlelement",
+    "members": {
+      "accessKey": {},
+      "children": {},
+      "click": {},
+      "contentEditable": {},
+      "dir": {},
+      "draggable": {},
+      "hidden": {},
+      "id": {},
+      "innerHTML": {},
+      "innerText": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "insertAdjacentElement": {
+        "support_level": "nonstandard"
+      },
+      "insertAdjacentHTML": {
+        "comment": "http://domparsing.spec.whatwg.org/#insertadjacenthtml%28%29"
+      },
+      "insertAdjacentText": {
+        "support_level": "nonstandard"
+      },
+      "isContentEditable": {},
+      "lang": {},
+      "outerHTML": {},
+      "outerText": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "spellcheck": {},
+      "tabIndex": {},
+      "title": {},
+      "translate": {},
+      "webkitdropzone": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute",
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLEmbedElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#the-embed-element",
+    "dart_action": "unstable",
+    "members": {
+      "HTMLEmbedElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLEmbedElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "getSVGDocument": {
+        "comment": "http://www.w3.org/TR/SVG11/struct.html#InterfaceGetSVGDocument",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "height": {},
+      "name": {},
+      "src": {},
+      "type": {},
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLFieldSetElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#the-fieldset-element",
+    "dart_action": "unstable",
+    "members": {
+      "HTMLFieldSetElement": {},
+      "checkValidity": {},
+      "disabled": {},
+      "elements": {},
+      "form": {},
+      "name": {},
+      "setCustomValidity": {},
+      "type": {},
+      "validationMessage": {},
+      "validity": {},
+      "willValidate": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLFontElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#htmlfontelement",
+    "dart_action": "suppress",
+    "members": {
+      "color": {},
+      "face": {},
+      "size": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLFormControlsCollection": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#htmlformcontrolscollection-0",
+    "members": {
+      "namedItem": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLFormElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#the-form-element",
+    "members": {
+      "HTMLFormElement": {},
+      "acceptCharset": {},
+      "action": {},
+      "autocomplete": {},
+      "checkValidity": {},
+      "elements": {},
+      "encoding": {},
+      "enctype": {},
+      "length": {},
+      "method": {},
+      "name": {},
+      "noValidate": {},
+      "onautocomplete": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute",
+        "support_level": "experimental"
+      },
+      "onautocompleteerror": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute",
+        "support_level": "experimental"
+      },
+      "requestAutocomplete": {
+        "comment": "http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html",
+        "support_level": "experimental"
+      },
+      "reset": {},
+      "submit": {},
+      "target": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLFrameElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#htmlframeelement",
+    "dart_action": "suppress",
+    "members": {
+      "contentDocument": {},
+      "contentWindow": {},
+      "frameBorder": {},
+      "getSVGDocument": {},
+      "height": {},
+      "location": {},
+      "longDesc": {},
+      "marginHeight": {},
+      "marginWidth": {},
+      "name": {},
+      "noResize": {},
+      "scrolling": {},
+      "src": {},
+      "width": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLFrameSetElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#frameset",
+    "dart_action": "suppress",
+    "members": {
+      "cols": {},
+      "onbeforeunload": {},
+      "onblur": {},
+      "onerror": {},
+      "onfocus": {},
+      "onhashchange": {},
+      "onload": {},
+      "onmessage": {},
+      "onoffline": {},
+      "ononline": {},
+      "onpopstate": {},
+      "onresize": {},
+      "onstorage": {},
+      "onunload": {},
+      "rows": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLHRElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-hr-element",
+    "members": {
+      "HTMLHRElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLHRElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "noShade": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLHRElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "size": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLHRElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "width": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLHRElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLHeadElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-head-element",
+    "members": {
+      "HTMLHeadElement": {},
+      "profile": {
+        "comment": "http://www.w3.org/TR/1999/REC-html401-19991224/struct/global.html#profiles",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLHeadingElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements",
+    "members": {
+      "HTMLHeadingElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLHeadingElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLHtmlElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-html-element",
+    "members": {
+      "HTMLHtmlElement": {},
+      "manifest": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#manifests",
+        "support_level": "experimental"
+      },
+      "version": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLHtmlElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLIFrameElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#the-iframe-element",
+    "members": {
+      "HTMLIFrameElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLIFrameElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "contentDocument": {},
+      "contentWindow": {},
+      "frameBorder": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLIFrameElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "getSVGDocument": {
+        "comment": "http://www.w3.org/TR/SVG11/struct.html#InterfaceGetSVGDocument",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "height": {},
+      "longDesc": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLIFrameElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "marginHeight": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLIFrameElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "marginWidth": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLIFrameElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "name": {},
+      "sandbox": {},
+      "scrolling": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLIFrameElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "seamless": {},
+      "src": {},
+      "srcdoc": {},
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLImageElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#the-img-element",
+    "members": {
+      "HTMLImageElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLImageElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "alt": {},
+      "border": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "complete": {},
+      "crossOrigin": {},
+      "height": {},
+      "hspace": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLImageElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "isMap": {},
+      "longDesc": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLImageElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "lowsrc": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "name": {},
+      "naturalHeight": {},
+      "naturalWidth": {},
+      "src": {},
+      "useMap": {},
+      "vspace": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLImageElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "width": {},
+      "x": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "y": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLInputElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#the-input-element",
+    "members": {
+      "accept": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLInputElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "alt": {},
+      "autocomplete": {},
+      "autofocus": {},
+      "checkValidity": {},
+      "checked": {},
+      "defaultChecked": {},
+      "defaultValue": {},
+      "dirName": {},
+      "disabled": {},
+      "files": {},
+      "form": {},
+      "formAction": {},
+      "formEnctype": {},
+      "formMethod": {},
+      "formNoValidate": {},
+      "formTarget": {},
+      "height": {},
+      "incremental": {
+        "comment": "http://www.w3.org/TR/html-markup/input.search.html",
+        "support_level": "experimental"
+      },
+      "indeterminate": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels"
+      },
+      "list": {},
+      "max": {},
+      "maxLength": {},
+      "min": {},
+      "multiple": {},
+      "name": {},
+      "onwebkitSpeechChange": {
+        "support_level": "untriaged"
+      },
+      "onwebkitspeechchange": {
+        "comment": "http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#extending_html_elements",
+        "support_level": "experimental"
+      },
+      "pattern": {},
+      "placeholder": {},
+      "readOnly": {},
+      "required": {},
+      "select": {},
+      "selectionDirection": {},
+      "selectionEnd": {},
+      "selectionStart": {},
+      "setCustomValidity": {},
+      "setRangeText": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext",
+        "dart_action": "experimental",
+        "support_level": "experimental"
+      },
+      "setSelectionRange": {},
+      "size": {},
+      "src": {},
+      "step": {},
+      "stepDown": {},
+      "stepUp": {},
+      "type": {},
+      "useMap": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLInputElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "validationMessage": {},
+      "validity": {},
+      "value": {},
+      "valueAsDate": {},
+      "valueAsNumber": {},
+      "webkitEntries": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#concept-input-type-file-selected",
+        "support_level": "experimental"
+      },
+      "webkitGrammar": {
+        "comment": "http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-grammar",
+        "support_level": "experimental"
+      },
+      "webkitSpeech": {
+        "comment": "http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-speech",
+        "support_level": "experimental"
+      },
+      "webkitdirectory": {
+        "comment": "https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3",
+        "support_level": "experimental"
+      },
+      "width": {},
+      "willValidate": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLKeygenElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-keygen-element",
+    "members": {
+      "HTMLKeygenElement": {},
+      "autofocus": {},
+      "challenge": {},
+      "checkValidity": {},
+      "disabled": {},
+      "form": {},
+      "keytype": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels",
+        "dart_action": "unstable"
+      },
+      "name": {},
+      "setCustomValidity": {},
+      "type": {},
+      "validationMessage": {},
+      "validity": {},
+      "willValidate": {}
+    },
+    "support_level": "experimental"
+  },
+  "HTMLLIElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-li-element",
+    "members": {
+      "HTMLLIElement": {},
+      "type": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLLIElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLLabelElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#the-label-element",
+    "members": {
+      "HTMLLabelElement": {},
+      "control": {},
+      "form": {},
+      "htmlFor": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLLegendElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#the-legend-element",
+    "members": {
+      "HTMLLegendElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLLegendElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "form": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLLinkElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-link-element",
+    "members": {
+      "HTMLLinkElement": {},
+      "charset": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLLinkElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "disabled": {},
+      "href": {},
+      "hreflang": {},
+      "media": {},
+      "rel": {},
+      "rev": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLLinkElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "sheet": {},
+      "sizes": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#rel-icon",
+        "support_level": "experimental"
+      },
+      "target": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLLinkElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLMapElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-map-element.html#the-map-element",
+    "members": {
+      "HTMLMapElement": {},
+      "areas": {},
+      "name": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLMarqueeElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#the-marquee-element",
+    "dart_action": "suppress",
+    "members": {
+      "behavior": {},
+      "bgColor": {},
+      "direction": {},
+      "height": {},
+      "hspace": {},
+      "loop": {},
+      "scrollAmount": {},
+      "scrollDelay": {},
+      "start": {},
+      "stop": {},
+      "trueSpeed": {},
+      "vspace": {},
+      "width": {}
+    },
+    "support_level": "deprecated"
+  },
+  "HTMLMediaElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#htmlmediaelement",
+    "dart_action": "unstable",
+    "members": {
+      "HAVE_CURRENT_DATA": {},
+      "HAVE_ENOUGH_DATA": {},
+      "HAVE_FUTURE_DATA": {},
+      "HAVE_METADATA": {},
+      "HAVE_NOTHING": {},
+      "NETWORK_EMPTY": {},
+      "NETWORK_IDLE": {},
+      "NETWORK_LOADING": {},
+      "NETWORK_NO_SOURCE": {},
+      "addTextTrack": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-media-addtexttrack",
+        "support_level": "experimental"
+      },
+      "autoplay": {},
+      "buffered": {},
+      "canPlayType": {},
+      "controller": {},
+      "controls": {},
+      "currentSrc": {},
+      "currentTime": {},
+      "defaultMuted": {},
+      "defaultPlaybackRate": {},
+      "duration": {},
+      "ended": {},
+      "error": {},
+      "initialTime": {
+        "comment": "http://www.w3.org/TR/2011/WD-html5-20110113/video.html#dom-media-initialtime",
+        "support_level": "experimental"
+      },
+      "load": {},
+      "loop": {},
+      "mediaGroup": {},
+      "muted": {},
+      "networkState": {},
+      "oncanplay": {},
+      "oncanplaythrough": {},
+      "ondurationchange": {},
+      "onemptied": {},
+      "onended": {},
+      "onloadeddata": {},
+      "onloadedmetadata": {},
+      "onloadstart": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onpause": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onplay": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onplaying": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onprogress": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onratechange": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onseeked": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onseeking": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onshow": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart",
+        "support_level": "experimental"
+      },
+      "onstalled": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onsuspend": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "ontimeupdate": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onvolumechange": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onwaiting": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#event-media-loadstart"
+      },
+      "onwebkitkeyadded": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded",
+        "support_level": "experimental"
+      },
+      "onwebkitkeyerror": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded",
+        "support_level": "experimental"
+      },
+      "onwebkitkeymessage": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded",
+        "support_level": "experimental"
+      },
+      "onwebkitneedkey": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#dom-keyadded",
+        "support_level": "experimental"
+      },
+      "pause": {},
+      "paused": {},
+      "play": {},
+      "playbackRate": {},
+      "played": {},
+      "preload": {},
+      "readyState": {},
+      "seekable": {},
+      "seeking": {},
+      "src": {},
+      "startTime": {
+        "support_level": "nonstandard"
+      },
+      "textTracks": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-media-texttracks",
+        "support_level": "experimental"
+      },
+      "volume": {},
+      "webkitAddKey": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions",
+        "support_level": "experimental"
+      },
+      "webkitAudioDecodedByteCount": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "webkitCancelKeyRequest": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions",
+        "support_level": "experimental"
+      },
+      "webkitClosedCaptionsVisible": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "webkitGenerateKeyRequest": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions",
+        "support_level": "experimental"
+      },
+      "webkitHasClosedCaptions": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "webkitPreservesPitch": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "webkitVideoDecodedByteCount": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLMenuElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#the-menu-element",
+    "members": {
+      "HTMLMenuElement": {},
+      "compact": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLMenuElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLMetaElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-meta-element",
+    "members": {
+      "content": {},
+      "httpEquiv": {},
+      "name": {},
+      "scheme": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLMetaElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLMeterElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-meter-element",
+    "dart_action": "unstable",
+    "members": {
+      "HTMLMeterElement": {},
+      "high": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels",
+        "dart_action": "unstable"
+      },
+      "low": {},
+      "max": {},
+      "min": {},
+      "optimum": {},
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLModElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/edits.html#htmlmodelement",
+    "dart_action": "unstable",
+    "members": {
+      "cite": {},
+      "dateTime": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLOListElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-ol-element",
+    "members": {
+      "HTMLOListElement": {},
+      "compact": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLOListElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "reversed": {},
+      "start": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLObjectElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#the-object-element",
+    "dart_action": "unstable",
+    "members": {
+      "HTMLObjectElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "archive": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "border": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "checkValidity": {},
+      "code": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "codeBase": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "codeType": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "contentDocument": {},
+      "data": {},
+      "declare": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "form": {},
+      "getSVGDocument": {
+        "comment": "http://www.w3.org/TR/SVG11/struct.html#InterfaceGetSVGDocument",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "height": {},
+      "hspace": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "name": {},
+      "setCustomValidity": {},
+      "standby": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "type": {},
+      "useMap": {},
+      "validationMessage": {},
+      "validity": {},
+      "vspace": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLObjectElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "width": {},
+      "willValidate": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLOptGroupElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-optgroup-element",
+    "members": {
+      "HTMLOptGroupElement": {},
+      "disabled": {},
+      "label": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLOptionElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-option-element",
+    "members": {
+      "HTMLOptionElement": {},
+      "defaultSelected": {},
+      "disabled": {},
+      "form": {},
+      "index": {},
+      "label": {},
+      "selected": {},
+      "text": {},
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLOptionsCollection": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#htmloptionscollection-0",
+    "members": {
+      "length": {},
+      "namedItem": {},
+      "numericIndexGetter": {
+        "support_level": "untriaged"
+      },
+      "numericIndexSetter": {
+        "support_level": "untriaged"
+      },
+      "remove": {},
+      "selectedIndex": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLOutputElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-output-element",
+    "members": {
+      "HTMLOutputElement": {},
+      "checkValidity": {},
+      "defaultValue": {},
+      "form": {},
+      "htmlFor": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels",
+        "dart_action": "unstable"
+      },
+      "name": {},
+      "setCustomValidity": {},
+      "type": {},
+      "validationMessage": {},
+      "validity": {},
+      "value": {},
+      "willValidate": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLParagraphElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-p-element",
+    "members": {
+      "HTMLParagraphElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLParagraphElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLParamElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#the-param-element",
+    "dart_action": "unstable",
+    "members": {
+      "HTMLParamElement": {},
+      "name": {},
+      "type": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLParamElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "value": {},
+      "valueType": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLParamElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLPreElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-pre-element",
+    "members": {
+      "HTMLPreElement": {},
+      "width": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLPreElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "wrap": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLProgressElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-progress-element",
+    "members": {
+      "HTMLProgressElement": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels",
+        "dart_action": "unstable"
+      },
+      "max": {},
+      "position": {},
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLQuoteElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-blockquote-element",
+    "members": {
+      "cite": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLScriptElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#the-script-element",
+    "members": {
+      "HTMLScriptElement": {},
+      "async": {},
+      "charset": {},
+      "crossOrigin": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-crossorigin",
+        "support_level": "experimental"
+      },
+      "defer": {},
+      "event": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLScriptElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "htmlFor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLScriptElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "nonce": {
+        "comment": "https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#interaction-with-the-script-src-directive",
+        "support_level": "experimental"
+      },
+      "src": {},
+      "text": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLSelectElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-select-element",
+    "members": {
+      "HTMLSelectElement": {},
+      "autofocus": {},
+      "checkValidity": {},
+      "disabled": {},
+      "form": {},
+      "item": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels",
+        "dart_action": "unstable"
+      },
+      "length": {},
+      "multiple": {},
+      "name": {},
+      "namedItem": {},
+      "options": {},
+      "required": {},
+      "selectedIndex": {},
+      "selectedOptions": {},
+      "setCustomValidity": {},
+      "size": {},
+      "type": {},
+      "validationMessage": {},
+      "validity": {},
+      "value": {},
+      "willValidate": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLShadowElement": {
+    "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#shadow-element",
+    "members": {
+      "olderShadowRoot": {},
+      "resetStyleInheritance": {}
+    },
+    "support_level": "experimental"
+  },
+  "HTMLSourceElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-source-element",
+    "members": {
+      "HTMLSourceElement": {},
+      "media": {},
+      "src": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLSpanElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-span-element",
+    "members": {
+      "HTMLSpanElement": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLStyleElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-style-element",
+    "members": {
+      "HTMLStyleElement": {},
+      "disabled": {},
+      "media": {},
+      "scoped": {},
+      "sheet": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLTableCaptionElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/tabular-data.html#the-caption-element",
+    "members": {
+      "HTMLTableCaptionElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCaptionElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLTableCellElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/tabular-data.html#htmltablecellelement",
+    "members": {
+      "HTMLTableCellElement": {},
+      "abbr": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#attr-td-abbr",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "axis": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "bgColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "cellIndex": {},
+      "ch": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "chOff": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "colSpan": {},
+      "headers": {},
+      "height": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "noWrap": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "rowSpan": {},
+      "scope": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#attr-td-scope",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "vAlign": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "width": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableCellElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLTableColElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/tabular-data.html#htmltablecolelement",
+    "members": {
+      "HTMLTableColElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableColElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "ch": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableColElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "chOff": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableColElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "span": {},
+      "vAlign": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableColElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "width": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableColElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLTableElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/tabular-data.html#the-table-element",
+    "members": {
+      "HTMLTableElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "bgColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "border": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "caption": {},
+      "cellPadding": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "cellSpacing": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "createCaption": {},
+      "createTBody": {},
+      "createTFoot": {},
+      "createTHead": {},
+      "deleteCaption": {},
+      "deleteRow": {},
+      "deleteTFoot": {},
+      "deleteTHead": {},
+      "frame": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "insertRow": {},
+      "rows": {},
+      "rules": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "summary": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "tBodies": {},
+      "tFoot": {},
+      "tHead": {},
+      "width": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLTableRowElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/tabular-data.html#the-tr-element",
+    "members": {
+      "HTMLTableRowElement": {},
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableRowElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "bgColor": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableRowElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "cells": {},
+      "ch": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableRowElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "chOff": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableRowElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "deleteCell": {},
+      "insertCell": {},
+      "rowIndex": {},
+      "sectionRowIndex": {},
+      "vAlign": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableRowElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLTableSectionElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/tabular-data.html#the-tbody-element",
+    "members": {
+      "align": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableSectionElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "ch": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableSectionElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "chOff": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableSectionElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "deleteRow": {},
+      "insertRow": {},
+      "rows": {},
+      "vAlign": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLTableSectionElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLTemplateElement": {
+    "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#template-element",
+    "members": {
+      "content": {}
+    },
+    "support_level": "experimental"
+  },
+  "HTMLTextAreaElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-textarea-element",
+    "members": {
+      "HTMLTextAreaElement": {},
+      "autofocus": {},
+      "checkValidity": {},
+      "cols": {},
+      "defaultValue": {},
+      "dirName": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-textarea-dirname",
+        "support_level": "experimental"
+      },
+      "disabled": {},
+      "form": {},
+      "labels": {
+        "comment": "http://www.w3.org/TR/html5/forms.html#dom-lfe-labels",
+        "dart_action": "unstable"
+      },
+      "maxLength": {},
+      "name": {},
+      "placeholder": {},
+      "readOnly": {},
+      "required": {},
+      "rows": {},
+      "select": {},
+      "selectionDirection": {},
+      "selectionEnd": {},
+      "selectionStart": {},
+      "setCustomValidity": {},
+      "setRangeText": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-textarea/input-setrangetext",
+        "support_level": "experimental"
+      },
+      "setSelectionRange": {},
+      "textLength": {},
+      "type": {},
+      "validationMessage": {},
+      "validity": {},
+      "value": {},
+      "willValidate": {},
+      "wrap": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLTitleElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-title-element",
+    "members": {
+      "HTMLTitleElement": {},
+      "text": {}
+    },
+    "support_level": "stable"
+  },
+  "HTMLTrackElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-track-element",
+    "members": {
+      "ERROR": {},
+      "HTMLTrackElement": {},
+      "LOADED": {},
+      "LOADING": {},
+      "NONE": {},
+      "default": {},
+      "kind": {},
+      "label": {},
+      "readyState": {},
+      "src": {},
+      "srclang": {},
+      "track": {}
+    },
+    "support_level": "experimental"
+  },
+  "HTMLUListElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-ul-element",
+    "members": {
+      "HTMLUListElement": {},
+      "compact": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLUListElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "type": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#HTMLUListElement-partial",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "HTMLUnknownElement": {
+    "members": {},
+    "support_level": "stable"
+  },
+  "HTMLVideoElement": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#the-video-element",
+    "members": {
+      "HTMLVideoElement": {},
+      "height": {},
+      "poster": {},
+      "videoHeight": {},
+      "videoWidth": {},
+      "webkitDecodedFrameCount": {
+        "support_level": "experimental"
+      },
+      "webkitDisplayingFullscreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitDroppedFrameCount": {
+        "support_level": "experimental"
+      },
+      "webkitEnterFullScreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitEnterFullscreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "support_level": "experimental"
+      },
+      "webkitExitFullScreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitExitFullscreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen",
+        "support_level": "experimental"
+      },
+      "webkitSupportsFullscreen": {
+        "comment": "https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "HashChangeEvent": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#hashchangeevent",
+    "dart_action": "unstable",
+    "members": {
+      "initHashChangeEvent": {},
+      "newURL": {},
+      "oldURL": {}
+    },
+    "support_level": "stable"
+  },
+  "History": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-history-interface",
+    "members": {
+      "back": {},
+      "forward": {},
+      "go": {},
+      "length": {},
+      "pushState": {},
+      "replaceState": {},
+      "state": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBAny": {
+    "dart_action": "suppress",
+    "members": {},
+    "support_level": "nonstandard"
+  },
+  "IDBCursor": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBCursor",
+    "dart_action": "unstable",
+    "members": {
+      "advance": {},
+      "continue": {
+        "support_level": "untriaged"
+      },
+      "delete": {},
+      "direction": {},
+      "key": {},
+      "next": {
+        "support_level": "nonstandard"
+      },
+      "primaryKey": {},
+      "source": {},
+      "update": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBCursorWithValue": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBCursorWithValue",
+    "dart_action": "unstable",
+    "members": {
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBDatabase": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBDatabase",
+    "dart_action": "unstable",
+    "members": {
+      "addEventListener": {},
+      "close": {},
+      "createObjectStore": {},
+      "deleteObjectStore": {},
+      "dispatchEvent": {},
+      "name": {},
+      "objectStoreNames": {},
+      "onabort": {},
+      "onerror": {},
+      "onversionchange": {},
+      "removeEventListener": {},
+      "transaction": {},
+      "version": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBFactory": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBFactory",
+    "dart_action": "unstable",
+    "members": {
+      "cmp": {},
+      "deleteDatabase": {},
+      "open": {},
+      "webkitGetDatabaseNames": {
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "IDBIndex": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBIndex",
+    "dart_action": "unstable",
+    "members": {
+      "count": {},
+      "get": {},
+      "getKey": {},
+      "keyPath": {},
+      "multiEntry": {},
+      "name": {},
+      "objectStore": {},
+      "openCursor": {},
+      "openKeyCursor": {},
+      "unique": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBKeyRange": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBKeyRange",
+    "dart_action": "unstable",
+    "members": {
+      "bound": {
+        "support_level": "untriaged"
+      },
+      "bound_": {
+        "support_level": "nonstandard"
+      },
+      "lower": {},
+      "lowerBound": {
+        "support_level": "untriaged"
+      },
+      "lowerBound_": {
+        "support_level": "nonstandard"
+      },
+      "lowerOpen": {},
+      "only": {
+        "support_level": "untriaged"
+      },
+      "only_": {
+        "support_level": "nonstandard"
+      },
+      "upper": {},
+      "upperBound": {
+        "support_level": "untriaged"
+      },
+      "upperBound_": {
+        "support_level": "nonstandard"
+      },
+      "upperOpen": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBObjectStore": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBObjectStore",
+    "dart_action": "unstable",
+    "members": {
+      "add": {},
+      "autoIncrement": {},
+      "clear": {},
+      "count": {},
+      "createIndex": {},
+      "delete": {},
+      "deleteIndex": {},
+      "get": {},
+      "index": {},
+      "indexNames": {},
+      "keyPath": {},
+      "name": {},
+      "openCursor": {},
+      "put": {},
+      "transaction": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBOpenDBRequest": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBOpenDBRequest",
+    "dart_action": "unstable",
+    "members": {
+      "onblocked": {},
+      "onupgradeneeded": {}
+    },
+    "support_level": "stable"
+  },
+  "IDBRequest": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBRequest",
+    "dart_action": "unstable",
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "error": {},
+      "onerror": {},
+      "onsuccess": {},
+      "readyState": {},
+      "removeEventListener": {},
+      "result": {},
+      "source": {},
+      "transaction": {},
+      "webkitErrorMessage": {
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "IDBTransaction": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBTransaction",
+    "dart_action": "unstable",
+    "members": {
+      "abort": {},
+      "addEventListener": {},
+      "db": {},
+      "dispatchEvent": {},
+      "error": {},
+      "mode": {},
+      "objectStore": {},
+      "onabort": {},
+      "oncomplete": {},
+      "onerror": {},
+      "removeEventListener": {},
+      "webkitErrorMessage": {
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "IDBVersionChangeEvent": {
+    "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBVersionChangeEvent",
+    "dart_action": "unstable",
+    "members": {
+      "newVersion": {},
+      "oldVersion": {}
+    },
+    "support_level": "stable"
+  },
+  "ImageData": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#imagedata",
+    "members": {
+      "data": {},
+      "height": {},
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "Int16Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "Int32Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "Int8Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "JavaScriptCallFrame": {
+    "dart_action": "suppress",
+    "members": {
+      "CATCH_SCOPE": {},
+      "CLOSURE_SCOPE": {},
+      "GLOBAL_SCOPE": {},
+      "LOCAL_SCOPE": {},
+      "WITH_SCOPE": {},
+      "caller": {},
+      "column": {},
+      "evaluate": {},
+      "functionName": {},
+      "line": {},
+      "restart": {},
+      "scopeChain": {},
+      "scopeType": {},
+      "setVariableValue": {},
+      "sourceID": {},
+      "thisObject": {},
+      "type": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "KeyboardEvent": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent",
+    "members": {
+      "altGraphKey": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "altKey": {},
+      "ctrlKey": {},
+      "initKeyboardEvent": {},
+      "keyIdentifier": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "keyLocation": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "metaKey": {},
+      "shiftKey": {}
+    },
+    "support_level": "stable"
+  },
+  "LocalMediaStream": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaSuccessCallback",
+    "dart_action": "experimental",
+    "members": {
+      "stop": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "Location": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-location-interface",
+    "members": {
+      "ancestorOrigins": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "assign": {},
+      "hash": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "host": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "hostname": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "href": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "origin": {
+        "comment": "http://url.spec.whatwg.org/#urlutils Webkit Only",
+        "support_level": "nonstandard"
+      },
+      "pathname": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "port": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "protocol": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "reload": {},
+      "replace": {},
+      "search": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "toString": {},
+      "valueOf": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "MediaController": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#mediacontroller",
+    "members": {
+      "MediaController": {},
+      "addEventListener": {},
+      "buffered": {},
+      "currentTime": {},
+      "defaultPlaybackRate": {},
+      "dispatchEvent": {},
+      "duration": {},
+      "muted": {},
+      "pause": {},
+      "paused": {},
+      "play": {},
+      "playbackRate": {},
+      "playbackState": {},
+      "played": {},
+      "removeEventListener": {},
+      "seekable": {},
+      "unpause": {},
+      "volume": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaElementAudioSourceNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#MediaElementAudioSourceNode",
+    "members": {
+      "mediaElement": {
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "MediaError": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#mediaerror",
+    "dart_action": "unstable",
+    "members": {
+      "MEDIA_ERR_ABORTED": {},
+      "MEDIA_ERR_DECODE": {},
+      "MEDIA_ERR_ENCRYPTED": {
+        "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#error-codes",
+        "support_level": "experimental"
+      },
+      "MEDIA_ERR_NETWORK": {},
+      "MEDIA_ERR_SRC_NOT_SUPPORTED": {},
+      "code": {}
+    },
+    "support_level": "stable"
+  },
+  "MediaKeyError": {
+    "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#error-codes",
+    "members": {
+      "MEDIA_KEYERR_CLIENT": {},
+      "MEDIA_KEYERR_DOMAIN": {},
+      "MEDIA_KEYERR_HARDWARECHANGE": {},
+      "MEDIA_KEYERR_OUTPUT": {},
+      "MEDIA_KEYERR_SERVICE": {},
+      "MEDIA_KEYERR_UNKNOWN": {},
+      "code": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaKeyEvent": {
+    "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#event-definitions",
+    "members": {
+      "defaultURL": {},
+      "errorCode": {},
+      "initData": {},
+      "keySystem": {},
+      "message": {},
+      "sessionId": {},
+      "systemCode": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaList": {
+    "comment": "http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule",
+    "dart_action": "unstable",
+    "members": {
+      "appendMedium": {},
+      "deleteMedium": {},
+      "item": {},
+      "length": {},
+      "mediaText": {}
+    },
+    "support_level": "stable"
+  },
+  "MediaQueryList": {
+    "comment": "http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface",
+    "dart_action": "unstable",
+    "members": {
+      "addListener": {},
+      "matches": {},
+      "media": {},
+      "removeListener": {}
+    },
+    "support_level": "stable"
+  },
+  "MediaQueryListListener": {
+    "comment": "http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface",
+    "dart_action": "unstable",
+    "members": {
+      "queryChanged": {}
+    },
+    "support_level": "stable"
+  },
+  "MediaSource": {
+    "comment": "https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#mediasource",
+    "members": {
+      "MediaSource": {},
+      "activeSourceBuffers": {},
+      "addEventListener": {},
+      "addSourceBuffer": {},
+      "dispatchEvent": {},
+      "duration": {},
+      "endOfStream": {},
+      "isTypeSupported": {},
+      "readyState": {},
+      "removeEventListener": {},
+      "removeSourceBuffer": {},
+      "sourceBuffers": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaStream": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediastream",
+    "members": {
+      "MediaStream": {},
+      "addEventListener": {},
+      "addTrack": {},
+      "dispatchEvent": {},
+      "ended": {},
+      "getAudioTracks": {},
+      "getTrackById": {},
+      "getVideoTracks": {},
+      "id": {},
+      "label": {
+        "support_level": "nonstandard"
+      },
+      "onaddtrack": {},
+      "onended": {},
+      "onremovetrack": {},
+      "removeEventListener": {},
+      "removeTrack": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaStreamAudioDestinationNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#MediaStreamAudioDestinationNode",
+    "members": {
+      "stream": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaStreamAudioSourceNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#MediaStreamAudioSourceNode",
+    "members": {
+      "mediaStream": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaStreamEvent": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html",
+    "members": {
+      "stream": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaStreamTrack": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediastreamtrack",
+    "members": {
+      "addEventListener": {
+        "dart_action": "default"
+      },
+      "dispatchEvent": {
+        "dart_action": "default"
+      },
+      "enabled": {},
+      "id": {},
+      "kind": {},
+      "label": {},
+      "onended": {},
+      "onmute": {},
+      "onunmute": {},
+      "readyState": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "MediaStreamTrackEvent": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html",
+    "members": {
+      "track": {}
+    },
+    "support_level": "experimental"
+  },
+  "MemoryInfo": {
+    "dart_action": "experimental",
+    "members": {
+      "jsHeapSizeLimit": {},
+      "totalJSHeapSize": {},
+      "usedJSHeapSize": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "MessageChannel": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#message-channels",
+    "dart_action": "unstable",
+    "members": {
+      "MessageChannel": {},
+      "port1": {},
+      "port2": {}
+    },
+    "support_level": "stable"
+  },
+  "MessageEvent": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#messageevent",
+    "members": {
+      "data": {},
+      "initMessageEvent": {},
+      "lastEventId": {
+        "dart_action": "unstable"
+      },
+      "origin": {},
+      "ports": {
+        "dart_action": "unstable"
+      },
+      "source": {},
+      "webkitInitMessageEvent": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "MessagePort": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#messageport",
+    "dart_action": "unstable",
+    "members": {
+      "addEventListener": {},
+      "close": {},
+      "dispatchEvent": {},
+      "onmessage": {},
+      "postMessage": {},
+      "removeEventListener": {},
+      "start": {}
+    },
+    "support_level": "stable"
+  },
+  "Metadata": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-metadata-interface",
+    "members": {
+      "modificationTime": {},
+      "size": {}
+    },
+    "support_level": "experimental"
+  },
+  "MetadataCallback": {
+    "comment": "http://www.w3.org/TR/file-system-api/#idl-def-MetadataCallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "MimeType": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "MimeTypeArray": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "MouseEvent": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Events/#events-mouseevents",
+    "members": {
+      "altKey": {},
+      "button": {},
+      "clientX": {},
+      "clientY": {},
+      "ctrlKey": {},
+      "dataTransfer": {
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "fromElement": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "initMouseEvent": {},
+      "metaKey": {},
+      "offsetX": {
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "offsetY": {
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "relatedTarget": {},
+      "screenX": {},
+      "screenY": {},
+      "shiftKey": {},
+      "toElement": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "webkitMovementX": {
+        "support_level": "experimental"
+      },
+      "webkitMovementY": {
+        "support_level": "experimental"
+      },
+      "x": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "y": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "MutationCallback": {
+    "comment": "http://www.w3.org/TR/domcore/#mutationcallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "MutationEvent": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents",
+    "dart_action": "experimental",
+    "members": {
+      "ADDITION": {},
+      "MODIFICATION": {},
+      "REMOVAL": {},
+      "attrChange": {},
+      "attrName": {},
+      "initMutationEvent": {},
+      "newValue": {},
+      "prevValue": {},
+      "relatedNode": {}
+    },
+    "support_level": "deprecated"
+  },
+  "MutationObserver": {
+    "comment": "http://www.w3.org/TR/domcore/#interface-mutationobserver",
+    "dart_action": "default",
+    "members": {
+      "_observe": {},
+      "disconnect": {},
+      "observe": {
+        "support_level": "untriaged"
+      },
+      "takeRecords": {}
+    },
+    "support_level": "stable"
+  },
+  "MutationRecord": {
+    "comment": "http://www.w3.org/TR/domcore/#mutationrecord",
+    "members": {
+      "addedNodes": {},
+      "attributeName": {},
+      "attributeNamespace": {},
+      "nextSibling": {},
+      "oldValue": {},
+      "previousSibling": {},
+      "removedNodes": {},
+      "target": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "NamedFlow": {
+    "comment": "http://www.w3.org/TR/css3-regions/#dom-named-flow-collection",
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "firstEmptyRegionIndex": {},
+      "getContent": {},
+      "getRegions": {},
+      "getRegionsByContent": {},
+      "name": {},
+      "overset": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "NamedNodeMap": {
+    "comment": "http://dom.spec.whatwg.org/#namednodemap",
+    "dart_action": "suppress",
+    "members": {
+      "getNamedItem": {},
+      "getNamedItemNS": {},
+      "item": {},
+      "length": {},
+      "removeNamedItem": {},
+      "removeNamedItemNS": {},
+      "setNamedItem": {},
+      "setNamedItemNS": {}
+    },
+    "support_level": "deprecated"
+  },
+  "Navigator": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigator",
+    "members": {
+      "appCodeName": {
+        "dart_action": "default",
+        "support_level": "nonstandard"
+      },
+      "appName": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "appVersion": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "cookieEnabled": {
+        "comment": "https://developer.mozilla.org/en-US/docs/DOM/window.navigator.cookieEnabled",
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "doNotTrack": {
+        "comment": "http://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#js-dom",
+        "dart_action": "experimental",
+        "support_level": "experimental"
+      },
+      "geolocation": {
+        "comment": "http://dev.w3.org/geo/api/spec-source.html#navi-geo",
+        "dart_action": "unstable",
+        "support_level": "stable"
+      },
+      "getStorageUpdates": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorstorageutils",
+        "support_level": "experimental"
+      },
+      "javaEnabled": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "language": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorlanguage"
+      },
+      "mimeTypes": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "onLine": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#navigatoronline",
+        "dart_action": "unstable"
+      },
+      "platform": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "plugins": {
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "product": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid",
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "productSub": {
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "registerProtocolHandler": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorcontentutils",
+        "dart_action": "unstable"
+      },
+      "userAgent": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "vendor": {
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "vendorSub": {
+        "dart_action": "unstable",
+        "support_level": "nonstandard"
+      },
+      "webkitBattery": {
+        "comment": "https://dvcs.w3.org/hg/dap/raw-file/tip/battery/Overview.html",
+        "support_level": "experimental"
+      },
+      "webkitGetGamepads": {
+        "comment": "https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#widl-Navigator-getGamepads-Gamepad",
+        "support_level": "experimental"
+      },
+      "webkitGetUserMedia": {
+        "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html#navigatorusermedia",
+        "support_level": "experimental"
+      },
+      "webkitPersistentStorage": {
+        "comment": "http://www.w3.org/TR/quota-api/#accessing-storagequota",
+        "support_level": "experimental"
+      },
+      "webkitTemporaryStorage": {
+        "comment": "http://www.w3.org/TR/quota-api/#accessing-storagequota",
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "NavigatorUserMediaError": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaError",
+    "members": {
+      "PERMISSION_DENIED": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "code": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "NavigatorUserMediaErrorCallback": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaErrorCallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "NavigatorUserMediaSuccessCallback": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaSuccessCallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "Node": {
+    "comment": "http://dom.spec.whatwg.org/#interface-node",
+    "members": {
+      "ATTRIBUTE_NODE": {},
+      "CDATA_SECTION_NODE": {
+        "dart_action": "default"
+      },
+      "COMMENT_NODE": {},
+      "DOCUMENT_FRAGMENT_NODE": {},
+      "DOCUMENT_NODE": {},
+      "DOCUMENT_POSITION_CONTAINED_BY": {},
+      "DOCUMENT_POSITION_CONTAINS": {},
+      "DOCUMENT_POSITION_DISCONNECTED": {},
+      "DOCUMENT_POSITION_FOLLOWING": {},
+      "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": {},
+      "DOCUMENT_POSITION_PRECEDING": {},
+      "DOCUMENT_TYPE_NODE": {},
+      "ELEMENT_NODE": {},
+      "ENTITY_NODE": {},
+      "ENTITY_REFERENCE_NODE": {},
+      "NOTATION_NODE": {},
+      "PROCESSING_INSTRUCTION_NODE": {},
+      "TEXT_NODE": {},
+      "addEventListener": {},
+      "appendChild": {},
+      "baseURI": {
+        "dart_action": "default"
+      },
+      "childNodes": {},
+      "cloneNode": {},
+      "compareDocumentPosition": {},
+      "contains": {},
+      "dispatchEvent": {},
+      "firstChild": {},
+      "hasChildNodes": {},
+      "insertBefore": {},
+      "isDefaultNamespace": {},
+      "isEqualNode": {},
+      "isSameNode": {
+        "comment": "http://dom.spec.whatwg.org/#dom-node-issamenode",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "isSupported": {
+        "comment": "http://dom.spec.whatwg.org/#dom-node-issupported",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "lastChild": {},
+      "localName": {
+        "comment": "http://dom.spec.whatwg.org/#dom-node-localname",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "lookupNamespaceURI": {},
+      "lookupPrefix": {},
+      "namespaceURI": {
+        "comment": "http://dom.spec.whatwg.org/#dom-node-namespaceuri",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "nextSibling": {},
+      "nodeName": {},
+      "nodeType": {},
+      "nodeValue": {},
+      "normalize": {},
+      "ownerDocument": {},
+      "parentElement": {},
+      "parentNode": {},
+      "prefix": {
+        "comment": "http://dom.spec.whatwg.org/#dom-node-prefix",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "previousSibling": {},
+      "removeChild": {},
+      "removeEventListener": {},
+      "replaceChild": {},
+      "textContent": {}
+    },
+    "support_level": "stable"
+  },
+  "NodeFilter": {
+    "comment": "http://dom.spec.whatwg.org/#nodefilter",
+    "dart_action": "unstable",
+    "members": {
+      "FILTER_ACCEPT": {},
+      "FILTER_REJECT": {},
+      "FILTER_SKIP": {},
+      "SHOW_ALL": {},
+      "SHOW_ATTRIBUTE": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SHOW_CDATA_SECTION": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SHOW_COMMENT": {},
+      "SHOW_DOCUMENT": {},
+      "SHOW_DOCUMENT_FRAGMENT": {},
+      "SHOW_DOCUMENT_TYPE": {},
+      "SHOW_ELEMENT": {},
+      "SHOW_ENTITY": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SHOW_ENTITY_REFERENCE": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SHOW_NOTATION": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SHOW_PROCESSING_INSTRUCTION": {},
+      "SHOW_TEXT": {},
+      "acceptNode": {}
+    },
+    "support_level": "stable"
+  },
+  "NodeIterator": {
+    "comment": "http://dom.spec.whatwg.org/#nodeiterator",
+    "dart_action": "unstable",
+    "members": {
+      "detach": {},
+      "expandEntityReferences": {
+        "comment": "http://dom.spec.whatwg.org/#dom-traversal",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "filter": {},
+      "nextNode": {},
+      "pointerBeforeReferenceNode": {},
+      "previousNode": {},
+      "referenceNode": {},
+      "root": {},
+      "whatToShow": {}
+    },
+    "support_level": "stable"
+  },
+  "NodeList": {
+    "comment": "http://dom.spec.whatwg.org/#nodelist",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "stable"
+  },
+  "Notation": {
+    "comment": "http://dom.spec.whatwg.org/#notation",
+    "dart_action": "suppress",
+    "members": {
+      "publicId": {},
+      "systemId": {}
+    },
+    "support_level": "deprecated"
+  },
+  "Notification": {
+    "comment": "http://www.w3.org/TR/notifications/#notification",
+    "dart_action": "experimental",
+    "members": {
+      "Notification": {},
+      "addEventListener": {},
+      "cancel": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "close": {},
+      "dir": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "dispatchEvent": {},
+      "onclick": {},
+      "onclose": {},
+      "ondisplay": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "onerror": {},
+      "onshow": {},
+      "permission": {},
+      "removeEventListener": {},
+      "replaceId": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "requestPermission": {},
+      "show": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "tag": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "NotificationCenter": {
+    "comment": "http://www.w3.org/TR/notifications/#showing-a-notification",
+    "dart_action": "suppress",
+    "members": {
+      "checkPermission": {},
+      "createHTMLNotification": {},
+      "createNotification": {},
+      "requestPermission": {}
+    },
+    "support_level": "deprecated"
+  },
+  "NotificationPermissionCallback": {
+    "comment": "http://www.w3.org/TR/notifications/#notificationpermissioncallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "OESElementIndexUint": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/OES_element_index_uint/",
+    "dart_action": "experimental",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "OESStandardDerivatives": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/OES_standard_derivatives/",
+    "dart_action": "experimental",
+    "members": {
+      "FRAGMENT_SHADER_DERIVATIVE_HINT_OES": {}
+    },
+    "support_level": "experimental"
+  },
+  "OESTextureFloat": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/OES_texture_float/",
+    "dart_action": "experimental",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "OESTextureHalfFloat": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/OES_texture_half_float/",
+    "dart_action": "experimental",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "OESVertexArrayObject": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/",
+    "dart_action": "experimental",
+    "members": {
+      "VERTEX_ARRAY_BINDING_OES": {},
+      "bindVertexArrayOES": {},
+      "createVertexArrayOES": {},
+      "deleteVertexArrayOES": {},
+      "isVertexArrayOES": {}
+    },
+    "support_level": "experimental"
+  },
+  "OfflineAudioCompletionEvent": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#OfflineAudioCompletionEvent-section",
+    "members": {
+      "renderedBuffer": {}
+    },
+    "support_level": "experimental"
+  },
+  "OfflineAudioContext": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#OfflineAudioContext-section",
+    "members": {
+      "OfflineAudioContext": {}
+    },
+    "support_level": "experimental"
+  },
+  "OscillatorNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-OscillatorNode",
+    "members": {
+      "CUSTOM": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "FINISHED_STATE": {},
+      "PLAYING_STATE": {},
+      "SAWTOOTH": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SCHEDULED_STATE": {},
+      "SINE": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SQUARE": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "TRIANGLE": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "UNSCHEDULED_STATE": {},
+      "detune": {},
+      "frequency": {},
+      "playbackState": {},
+      "setWaveTable": {},
+      "start": {},
+      "stop": {},
+      "type": {}
+    },
+    "support_level": "experimental"
+  },
+  "OverflowEvent": {
+    "dart_action": "experimental",
+    "members": {
+      "BOTH": {},
+      "HORIZONTAL": {},
+      "VERTICAL": {},
+      "horizontalOverflow": {},
+      "orient": {},
+      "verticalOverflow": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "PagePopupController": {
+    "dart_action": "suppress",
+    "members": {
+      "closePopup": {},
+      "formatMonth": {},
+      "formatShortMonth": {},
+      "histogramEnumeration": {},
+      "localizeNumberString": {},
+      "setValue": {},
+      "setValueAndClosePopup": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "PageTransitionEvent": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#pagetransitionevent",
+    "members": {
+      "persisted": {}
+    },
+    "support_level": "experimental"
+  },
+  "PannerNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#PannerNode",
+    "members": {
+      "EQUALPOWER": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "EXPONENTIAL_DISTANCE": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "HRTF": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "INVERSE_DISTANCE": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "LINEAR_DISTANCE": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "SOUNDFIELD": {
+        "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AlternateNames",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "coneInnerAngle": {},
+      "coneOuterAngle": {},
+      "coneOuterGain": {},
+      "distanceModel": {},
+      "maxDistance": {},
+      "panningModel": {},
+      "refDistance": {},
+      "rolloffFactor": {},
+      "setOrientation": {},
+      "setPosition": {},
+      "setVelocity": {}
+    },
+    "support_level": "experimental"
+  },
+  "Path": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "Performance": {
+    "comment": "http://www.w3.org/TR/navigation-timing/#performance",
+    "members": {
+      "memory": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "navigation": {},
+      "now": {
+        "comment": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/HighResolutionTime/Overview.html#sec-extenstions-performance-interface"
+      },
+      "onwebkitresourcetimingbufferfull": {
+        "comment": "http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods",
+        "support_level": "experimental"
+      },
+      "timing": {},
+      "webkitClearMarks": {
+        "comment": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface",
+        "support_level": "experimental"
+      },
+      "webkitClearMeasures": {
+        "comment": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface",
+        "support_level": "experimental"
+      },
+      "webkitClearResourceTimings": {
+        "comment": "http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods",
+        "support_level": "experimental"
+      },
+      "webkitGetEntries": {
+        "comment": "http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute",
+        "support_level": "experimental"
+      },
+      "webkitGetEntriesByName": {
+        "comment": "http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute",
+        "support_level": "experimental"
+      },
+      "webkitGetEntriesByType": {
+        "comment": "http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute",
+        "support_level": "experimental"
+      },
+      "webkitMark": {
+        "comment": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface",
+        "support_level": "experimental"
+      },
+      "webkitMeasure": {
+        "comment": "https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface",
+        "support_level": "experimental"
+      },
+      "webkitSetResourceTimingBufferSize": {
+        "comment": "http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods",
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "PerformanceEntry": {
+    "comment": "http://www.w3.org/TR/performance-timeline/#sec-PerformanceEntry-interface",
+    "members": {
+      "duration": {},
+      "entryType": {},
+      "name": {},
+      "startTime": {}
+    },
+    "support_level": "experimental"
+  },
+  "PerformanceEntryList": {
+    "comment": "http://www.w3.org/TR/performance-timeline/#performanceentrylist",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "PerformanceMark": {
+    "comment": "http://www.w3.org/TR/user-timing/#performancemark",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "PerformanceMeasure": {
+    "comment": "http://www.w3.org/TR/user-timing/#performancemeasure",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "PerformanceNavigation": {
+    "comment": "http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface",
+    "dart_action": "unstable",
+    "members": {
+      "TYPE_BACK_FORWARD": {},
+      "TYPE_NAVIGATE": {},
+      "TYPE_RELOAD": {},
+      "TYPE_RESERVED": {},
+      "redirectCount": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "PerformanceResourceTiming": {
+    "comment": "http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming",
+    "members": {
+      "connectEnd": {},
+      "connectStart": {},
+      "domainLookupEnd": {},
+      "domainLookupStart": {},
+      "fetchStart": {},
+      "initiatorType": {},
+      "redirectEnd": {},
+      "redirectStart": {},
+      "requestStart": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "responseEnd": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "responseStart": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "secureConnectionStart": {}
+    },
+    "support_level": "experimental"
+  },
+  "PerformanceTiming": {
+    "comment": "http://w3c-test.org/webperf/specs/NavigationTiming/#sec-navigation-timing-interface",
+    "dart_action": "unstable",
+    "members": {
+      "connectEnd": {},
+      "connectStart": {},
+      "domComplete": {},
+      "domContentLoadedEventEnd": {},
+      "domContentLoadedEventStart": {},
+      "domInteractive": {},
+      "domLoading": {},
+      "domainLookupEnd": {},
+      "domainLookupStart": {},
+      "fetchStart": {},
+      "loadEventEnd": {},
+      "loadEventStart": {},
+      "navigationStart": {},
+      "redirectEnd": {},
+      "redirectStart": {},
+      "requestStart": {},
+      "responseEnd": {},
+      "responseStart": {},
+      "secureConnectionStart": {},
+      "unloadEventEnd": {},
+      "unloadEventStart": {}
+    },
+    "support_level": "stable"
+  },
+  "Plugin": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "PluginArray": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "PopStateEvent": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#popstateevent",
+    "members": {
+      "state": {}
+    },
+    "support_level": "stable"
+  },
+  "PositionCallback": {
+    "comment": "http://www.w3.org/TR/geolocation-API/#position-callback",
+    "dart_action": "unstable",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "PositionError": {
+    "comment": "http://www.w3.org/TR/geolocation-API/#position_error_interface",
+    "dart_action": "unstable",
+    "members": {
+      "PERMISSION_DENIED": {},
+      "POSITION_UNAVAILABLE": {},
+      "TIMEOUT": {},
+      "code": {},
+      "message": {}
+    },
+    "support_level": "stable"
+  },
+  "PositionErrorCallback": {
+    "comment": "http://www.w3.org/TR/geolocation-API/#error-callback",
+    "dart_action": "unstable",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "ProcessingInstruction": {
+    "comment": "http://dom.spec.whatwg.org/#interface-processinginstruction",
+    "dart_action": "unstable",
+    "members": {
+      "data": {
+        "support_level": "nonstandard"
+      },
+      "sheet": {
+        "support_level": "nonstandard"
+      },
+      "target": {}
+    },
+    "support_level": "stable"
+  },
+  "ProgressEvent": {
+    "comment": "http://xhr.spec.whatwg.org/#interface-progressevent",
+    "members": {
+      "lengthComputable": {},
+      "loaded": {},
+      "total": {}
+    },
+    "support_level": "stable"
+  },
+  "RGBColor": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "blue": {},
+      "green": {},
+      "red": {}
+    },
+    "support_level": "deprecated"
+  },
+  "RTCDTMFSender": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDTMFSender",
+    "members": {
+      "addEventListener": {},
+      "canInsertDTMF": {},
+      "dispatchEvent": {},
+      "duration": {},
+      "insertDTMF": {},
+      "interToneGap": {},
+      "ontonechange": {},
+      "removeEventListener": {},
+      "toneBuffer": {},
+      "track": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCDTMFToneChangeEvent": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDTMFToneChangeEvent",
+    "members": {
+      "tone": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCDataChannel": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCDataChannel",
+    "members": {
+      "addEventListener": {},
+      "binaryType": {},
+      "bufferedAmount": {},
+      "close": {},
+      "dispatchEvent": {},
+      "label": {},
+      "onclose": {},
+      "onerror": {},
+      "onmessage": {},
+      "onopen": {},
+      "readyState": {},
+      "reliable": {},
+      "removeEventListener": {},
+      "send": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCDataChannelEvent": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcdatachannelevent",
+    "members": {
+      "channel": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCErrorCallback": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcerror",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCIceCandidate": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCIceCandidate",
+    "members": {
+      "RTCIceCandidate": {},
+      "candidate": {},
+      "sdpMLineIndex": {},
+      "sdpMid": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCIceCandidateEvent": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcicecandidate-type",
+    "members": {
+      "candidate": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCPeerConnection": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCPeerConnection",
+    "members": {
+      "RTCPeerConnection": {},
+      "addEventListener": {},
+      "addIceCandidate": {},
+      "addStream": {},
+      "close": {},
+      "createAnswer": {},
+      "createDTMFSender": {},
+      "createDataChannel": {},
+      "createOffer": {},
+      "dispatchEvent": {},
+      "getLocalStreams": {},
+      "getRemoteStreams": {},
+      "getStats": {},
+      "getStreamById": {},
+      "iceConnectionState": {},
+      "iceGatheringState": {},
+      "localDescription": {},
+      "onaddstream": {},
+      "ondatachannel": {},
+      "onicecandidate": {},
+      "oniceconnectionstatechange": {},
+      "onnegotiationneeded": {},
+      "onremovestream": {},
+      "onsignalingstatechange": {},
+      "remoteDescription": {},
+      "removeEventListener": {},
+      "removeStream": {},
+      "setLocalDescription": {},
+      "setRemoteDescription": {},
+      "signalingState": {},
+      "updateIce": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCSessionDescription": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCSessionDescription",
+    "members": {
+      "RTCSessionDescription": {},
+      "sdp": {},
+      "type": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCSessionDescriptionCallback": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCSessionDescription",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCStatsCallback": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCStatsCallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCStatsReport": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCStatsReport",
+    "members": {
+      "id": {},
+      "local": {},
+      "names": {},
+      "remote": {},
+      "stat": {},
+      "timestamp": {},
+      "type": {}
+    },
+    "support_level": "experimental"
+  },
+  "RTCStatsResponse": {
+    "comment": "http://dev.w3.org/2011/webrtc/editor/webrtc.html#widl-RTCStatsReport-RTCStats-getter-DOMString-id",
+    "members": {
+      "namedItem": {},
+      "result": {}
+    },
+    "support_level": "experimental"
+  },
+  "RadioNodeList": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/#radionodelist",
+    "members": {
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "Range": {
+    "comment": "http://dom.spec.whatwg.org/#range",
+    "dart_action": "unstable",
+    "members": {
+      "END_TO_END": {},
+      "END_TO_START": {},
+      "NODE_AFTER": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "NODE_BEFORE": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "NODE_BEFORE_AND_AFTER": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "NODE_INSIDE": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "START_TO_END": {},
+      "START_TO_START": {},
+      "cloneContents": {},
+      "cloneRange": {},
+      "collapse": {},
+      "collapsed": {},
+      "commonAncestorContainer": {},
+      "compareNode": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "comparePoint": {},
+      "createContextualFragment": {
+        "comment": "http://domparsing.spec.whatwg.org/#extensions-to-the-range-interface"
+      },
+      "deleteContents": {},
+      "detach": {},
+      "endContainer": {},
+      "endOffset": {},
+      "expand": {
+        "support_level": "nonstandard"
+      },
+      "extractContents": {},
+      "getBoundingClientRect": {
+        "comment": "http://dev.w3.org/csswg/cssom-view/#extensions-to-the-range-interface"
+      },
+      "getClientRects": {
+        "comment": "http://dev.w3.org/csswg/cssom-view/#extensions-to-the-range-interface"
+      },
+      "insertNode": {},
+      "intersectsNode": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "isPointInRange": {},
+      "selectNode": {},
+      "selectNodeContents": {},
+      "setEnd": {},
+      "setEndAfter": {},
+      "setEndBefore": {},
+      "setStart": {},
+      "setStartAfter": {},
+      "setStartBefore": {},
+      "startContainer": {},
+      "startOffset": {},
+      "surroundContents": {},
+      "toString": {}
+    },
+    "support_level": "stable"
+  },
+  "RangeException": {
+    "comment": "http://dom.spec.whatwg.org/#rangeexception",
+    "dart_action": "suppress",
+    "members": {
+      "BAD_BOUNDARYPOINTS_ERR": {},
+      "INVALID_NODE_TYPE_ERR": {},
+      "code": {},
+      "message": {},
+      "name": {},
+      "toString": {}
+    },
+    "support_level": "deprecated"
+  },
+  "Rect": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "bottom": {},
+      "left": {},
+      "right": {},
+      "top": {}
+    },
+    "support_level": "deprecated"
+  },
+  "RequestAnimationFrameCallback": {
+    "comment": "http://www.w3.org/TR/animation-timing/#FrameRequestCallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "SQLError": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqlerror",
+    "dart_action": "experimental",
+    "members": {
+      "CONSTRAINT_ERR": {},
+      "DATABASE_ERR": {},
+      "QUOTA_ERR": {},
+      "SYNTAX_ERR": {},
+      "TIMEOUT_ERR": {},
+      "TOO_LARGE_ERR": {},
+      "UNKNOWN_ERR": {},
+      "VERSION_ERR": {},
+      "code": {},
+      "message": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLException": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqlexception",
+    "dart_action": "experimental",
+    "members": {
+      "CONSTRAINT_ERR": {},
+      "DATABASE_ERR": {},
+      "QUOTA_ERR": {},
+      "SYNTAX_ERR": {},
+      "TIMEOUT_ERR": {},
+      "TOO_LARGE_ERR": {},
+      "UNKNOWN_ERR": {},
+      "VERSION_ERR": {},
+      "code": {},
+      "message": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLResultSet": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqlresultset",
+    "dart_action": "experimental",
+    "members": {
+      "insertId": {},
+      "rows": {},
+      "rowsAffected": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLResultSetRowList": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqlresultsetrowlist",
+    "dart_action": "experimental",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLStatementCallback": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqlstatementcallback",
+    "dart_action": "experimental",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLStatementErrorCallback": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqlstatementerrorcallback",
+    "dart_action": "experimental",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLTransaction": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqltransaction",
+    "dart_action": "suppress",
+    "members": {
+      "executeSql": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLTransactionCallback": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqltransactioncallback",
+    "dart_action": "experimental",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLTransactionErrorCallback": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqltransactionerrorcallback",
+    "dart_action": "experimental",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLTransactionSync": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqltransactionsync",
+    "dart_action": "experimental",
+    "members": {
+      "executeSql": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SQLTransactionSyncCallback": {
+    "comment": "http://www.w3.org/TR/webdatabase/#sqltransactionsynccallback",
+    "dart_action": "experimental",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "deprecated"
+  },
+  "SVGAElement": {
+    "comment": "http://www.w3.org/TR/SVG/linking.html#InterfaceSVGAElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGAElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "href": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "target": {},
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGAltGlyphDefElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGAltGlyphDefElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGAltGlyphElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGAltGlyphElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGAltGlyphElement": {},
+      "format": {},
+      "glyphRef": {},
+      "href": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGAltGlyphItemElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGAltGlyphItemElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGAngle": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAngle",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_ANGLETYPE_DEG": {},
+      "SVG_ANGLETYPE_GRAD": {},
+      "SVG_ANGLETYPE_RAD": {},
+      "SVG_ANGLETYPE_UNKNOWN": {},
+      "SVG_ANGLETYPE_UNSPECIFIED": {},
+      "convertToSpecifiedUnits": {},
+      "newValueSpecifiedUnits": {},
+      "unitType": {},
+      "value": {},
+      "valueAsString": {},
+      "valueInSpecifiedUnits": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimateColorElement": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceSVGAnimateColorElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGAnimateElement": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceSVGAnimateElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGAnimateElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimateMotionElement": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceSVGAnimateMotionElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGAnimateMotionElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimateTransformElement": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceSVGAnimateTransformElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGAnimateTransformElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedAngle": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedAngle",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedBoolean": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedBoolean",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedEnumeration": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedEnumeration",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedInteger": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedInteger",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedLength": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedLength",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedLengthList": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedLengthList",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedNumber": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedNumber",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedNumberList": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedNumberList",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedPreserveAspectRatio": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGAnimatedPreserveAspectRatio",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedRect": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedRect",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedString": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGAnimatedString",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimatedTransformList": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGAnimatedTransformList",
+    "dart_action": "unstable",
+    "members": {
+      "animVal": {},
+      "baseVal": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGAnimationElement": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceSVGAnimationElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGAnimationElement": {},
+      "beginElement": {
+        "support_level": "untriaged"
+      },
+      "beginElementAt": {
+        "support_level": "untriaged"
+      },
+      "endElement": {
+        "support_level": "untriaged"
+      },
+      "endElementAt": {
+        "support_level": "untriaged"
+      },
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "getCurrentTime": {},
+      "getSimpleDuration": {},
+      "getStartTime": {},
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "targetElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGCircleElement": {
+    "comment": "http://www.w3.org/TR/SVG/shapes.html#InterfaceSVGCircleElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGCircleElement": {},
+      "cx": {},
+      "cy": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "r": {},
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGClipPathElement": {
+    "comment": "http://www.w3.org/TR/SVG/masking.html#InterfaceSVGClipPathElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGClipPathElement": {},
+      "clipPathUnits": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGColor": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGColor",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_COLORTYPE_CURRENTCOLOR": {},
+      "SVG_COLORTYPE_RGBCOLOR": {},
+      "SVG_COLORTYPE_RGBCOLOR_ICCCOLOR": {},
+      "SVG_COLORTYPE_UNKNOWN": {},
+      "colorType": {},
+      "rgbColor": {},
+      "setColor": {},
+      "setRGBColor": {},
+      "setRGBColorICCColor": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGComponentTransferFunctionElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGComponentTransferFunctionElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE": {},
+      "SVG_FECOMPONENTTRANSFER_TYPE_GAMMA": {},
+      "SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY": {},
+      "SVG_FECOMPONENTTRANSFER_TYPE_LINEAR": {},
+      "SVG_FECOMPONENTTRANSFER_TYPE_TABLE": {},
+      "SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN": {},
+      "amplitude": {},
+      "exponent": {},
+      "intercept": {},
+      "offset": {},
+      "slope": {},
+      "tableValues": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGCursorElement": {
+    "comment": "http://www.w3.org/TR/SVG/interact.html#InterfaceSVGCursorElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGCursorElement": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGDefsElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGDefsElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGDefsElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGDescElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGDescElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGDescElement": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGDocument": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGDocument",
+    "dart_action": "unstable",
+    "members": {
+      "createEvent": {},
+      "rootElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGElement": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGElement",
+    "dart_action": "unstable",
+    "members": {
+      "id": {},
+      "ownerSVGElement": {},
+      "viewportElement": {},
+      "xmlbase": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGElementInstance": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGElementInstance",
+    "dart_action": "unstable",
+    "members": {
+      "childNodes": {},
+      "correspondingElement": {},
+      "correspondingUseElement": {},
+      "firstChild": {},
+      "lastChild": {},
+      "nextSibling": {},
+      "onabort": {},
+      "onbeforecopy": {},
+      "onbeforecut": {},
+      "onbeforepaste": {},
+      "onblur": {},
+      "onchange": {},
+      "onclick": {},
+      "oncontextmenu": {},
+      "oncopy": {},
+      "oncut": {},
+      "ondblclick": {},
+      "ondrag": {},
+      "ondragend": {},
+      "ondragenter": {},
+      "ondragleave": {},
+      "ondragover": {},
+      "ondragstart": {},
+      "ondrop": {},
+      "onerror": {},
+      "onfocus": {},
+      "oninput": {},
+      "onkeydown": {},
+      "onkeypress": {},
+      "onkeyup": {},
+      "onload": {},
+      "onmousedown": {},
+      "onmousemove": {},
+      "onmouseout": {},
+      "onmouseover": {},
+      "onmouseup": {},
+      "onmousewheel": {},
+      "onpaste": {},
+      "onreset": {},
+      "onresize": {},
+      "onscroll": {},
+      "onsearch": {
+        "comment": "http://www.w3.org/TR/html-markup/input.search.html",
+        "support_level": "experimental"
+      },
+      "onselect": {},
+      "onselectstart": {},
+      "onsubmit": {},
+      "onunload": {},
+      "parentNode": {},
+      "previousSibling": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGElementInstanceList": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGElementInstanceList",
+    "dart_action": "unstable",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGEllipseElement": {
+    "comment": "http://www.w3.org/TR/SVG/shapes.html#InterfaceSVGEllipseElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGEllipseElement": {},
+      "cx": {},
+      "cy": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "rx": {},
+      "ry": {},
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGException": {
+    "comment": "http://www.w3.org/TR/SVG/svgdom.html#ExceptionSVGException",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_INVALID_VALUE_ERR": {},
+      "SVG_MATRIX_NOT_INVERTABLE": {},
+      "SVG_WRONG_TYPE_ERR": {},
+      "code": {},
+      "message": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "name": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "toString": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGExternalResourcesRequired": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGExternalResourcesRequired",
+    "dart_action": "unstable",
+    "members": {
+      "externalResourcesRequired": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEBlendElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEBlendElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEBlendElement": {},
+      "SVG_FEBLEND_MODE_DARKEN": {},
+      "SVG_FEBLEND_MODE_LIGHTEN": {},
+      "SVG_FEBLEND_MODE_MULTIPLY": {},
+      "SVG_FEBLEND_MODE_NORMAL": {},
+      "SVG_FEBLEND_MODE_SCREEN": {},
+      "SVG_FEBLEND_MODE_UNKNOWN": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "in2": {},
+      "mode": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEColorMatrixElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEColorMatrixElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEColorMatrixElement": {},
+      "SVG_FECOLORMATRIX_TYPE_HUEROTATE": {},
+      "SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA": {},
+      "SVG_FECOLORMATRIX_TYPE_MATRIX": {},
+      "SVG_FECOLORMATRIX_TYPE_SATURATE": {},
+      "SVG_FECOLORMATRIX_TYPE_UNKNOWN": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "type": {},
+      "values": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEComponentTransferElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEComponentTransferElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEComponentTransferElement": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFECompositeElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFECompositeElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_FECOMPOSITE_OPERATOR_ARITHMETIC": {},
+      "SVG_FECOMPOSITE_OPERATOR_ATOP": {},
+      "SVG_FECOMPOSITE_OPERATOR_IN": {},
+      "SVG_FECOMPOSITE_OPERATOR_OUT": {},
+      "SVG_FECOMPOSITE_OPERATOR_OVER": {},
+      "SVG_FECOMPOSITE_OPERATOR_UNKNOWN": {},
+      "SVG_FECOMPOSITE_OPERATOR_XOR": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "in2": {},
+      "k1": {},
+      "k2": {},
+      "k3": {},
+      "k4": {},
+      "operator": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEConvolveMatrixElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEConvolveMatrixElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEConvolveMatrixElement": {},
+      "SVG_EDGEMODE_DUPLICATE": {},
+      "SVG_EDGEMODE_NONE": {},
+      "SVG_EDGEMODE_UNKNOWN": {},
+      "SVG_EDGEMODE_WRAP": {},
+      "bias": {},
+      "divisor": {},
+      "edgeMode": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "kernelMatrix": {},
+      "kernelUnitLengthX": {},
+      "kernelUnitLengthY": {},
+      "orderX": {},
+      "orderY": {},
+      "preserveAlpha": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "targetX": {},
+      "targetY": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEDiffuseLightingElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEDiffuseLightingElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEDiffuseLightingElement": {},
+      "diffuseConstant": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "kernelUnitLengthX": {},
+      "kernelUnitLengthY": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "surfaceScale": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEDisplacementMapElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEDisplacementMapElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEDisplacementMapElement": {},
+      "SVG_CHANNEL_A": {},
+      "SVG_CHANNEL_B": {},
+      "SVG_CHANNEL_G": {},
+      "SVG_CHANNEL_R": {},
+      "SVG_CHANNEL_UNKNOWN": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "in2": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "scale": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "xChannelSelector": {},
+      "y": {
+        "support_level": "untriaged"
+      },
+      "yChannelSelector": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEDistantLightElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEDistantLightElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEDistantLightElement": {},
+      "azimuth": {},
+      "elevation": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEDropShadowElement": {
+    "dart_action": "experimental",
+    "members": {
+      "dx": {},
+      "dy": {},
+      "in1": {},
+      "setStdDeviation": {},
+      "stdDeviationX": {},
+      "stdDeviationY": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "SVGFEFloodElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEFloodElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEFloodElement": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEFuncAElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEFuncAElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEFuncAElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEFuncBElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEFuncBElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEFuncBElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEFuncGElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEFuncGElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEFuncGElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEFuncRElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEFuncRElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEFuncRElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEGaussianBlurElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEGaussianBlurElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEGaussianBlurElement": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "setStdDeviation": {},
+      "stdDeviationX": {},
+      "stdDeviationY": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEImageElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEImageElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEImageElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "height": {
+        "support_level": "untriaged"
+      },
+      "href": {
+        "support_level": "untriaged"
+      },
+      "preserveAspectRatio": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEMergeElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEMergeElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEMergeElement": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEMergeNodeElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEMergeNodeElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEMergeNodeElement": {},
+      "in1": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFEMorphologyElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEMorphologyElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_MORPHOLOGY_OPERATOR_DILATE": {},
+      "SVG_MORPHOLOGY_OPERATOR_ERODE": {},
+      "SVG_MORPHOLOGY_OPERATOR_UNKNOWN": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "operator": {},
+      "radiusX": {},
+      "radiusY": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "setRadius": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEOffsetElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEOffsetElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEOffsetElement": {},
+      "dx": {},
+      "dy": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFEPointLightElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFEPointLightElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFEPointLightElement": {},
+      "x": {},
+      "y": {},
+      "z": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFESpecularLightingElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFESpecularLightingElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFESpecularLightingElement": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "specularConstant": {},
+      "specularExponent": {},
+      "surfaceScale": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFESpotLightElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFESpotLightElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFESpotLightElement": {},
+      "limitingConeAngle": {},
+      "pointsAtX": {},
+      "pointsAtY": {},
+      "pointsAtZ": {},
+      "specularExponent": {},
+      "x": {},
+      "y": {},
+      "z": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFETileElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFETileElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFETileElement": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "in1": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFETurbulenceElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFETurbulenceElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFETurbulenceElement": {},
+      "SVG_STITCHTYPE_NOSTITCH": {},
+      "SVG_STITCHTYPE_STITCH": {},
+      "SVG_STITCHTYPE_UNKNOWN": {},
+      "SVG_TURBULENCE_TYPE_FRACTALNOISE": {},
+      "SVG_TURBULENCE_TYPE_TURBULENCE": {},
+      "SVG_TURBULENCE_TYPE_UNKNOWN": {},
+      "baseFrequencyX": {},
+      "baseFrequencyY": {},
+      "height": {
+        "support_level": "untriaged"
+      },
+      "numOctaves": {},
+      "result": {
+        "support_level": "untriaged"
+      },
+      "seed": {},
+      "stitchTiles": {},
+      "type": {},
+      "width": {
+        "support_level": "untriaged"
+      },
+      "x": {
+        "support_level": "untriaged"
+      },
+      "y": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGFilterElement": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFilterElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGFilterElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "filterResX": {},
+      "filterResY": {},
+      "filterUnits": {},
+      "height": {},
+      "href": {
+        "support_level": "untriaged"
+      },
+      "primitiveUnits": {},
+      "setFilterRes": {},
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFilterPrimitiveStandardAttributes": {
+    "comment": "http://www.w3.org/TR/SVG/filters.html#InterfaceSVGFilterPrimitiveStandardAttributes",
+    "dart_action": "unstable",
+    "members": {
+      "height": {},
+      "result": {},
+      "width": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFitToViewBox": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGFitToViewBox",
+    "dart_action": "unstable",
+    "members": {
+      "preserveAspectRatio": {},
+      "viewBox": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGFontElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGFontElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGFontFaceElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGFontFaceElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGFontFaceFormatElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGFontFaceFormatElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGFontFaceNameElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGFontFaceNameElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGFontFaceSrcElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGFontFaceSrcElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGFontFaceUriElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGFontFaceUriElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGForeignObjectElement": {
+    "comment": "http://www.w3.org/TR/SVG/extend.html#InterfaceSVGForeignObjectElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGForeignObjectElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "height": {},
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGGElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGGElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGGElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGGlyphElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGGlyphElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGGlyphElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGGlyphRefElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGGlyphRefElement",
+    "dart_action": "unstable",
+    "members": {
+      "dx": {},
+      "dy": {},
+      "format": {},
+      "glyphRef": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGGradientElement": {
+    "comment": "http://www.w3.org/TR/SVG/pservers.html#InterfaceSVGGradientElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_SPREADMETHOD_PAD": {},
+      "SVG_SPREADMETHOD_REFLECT": {},
+      "SVG_SPREADMETHOD_REPEAT": {},
+      "SVG_SPREADMETHOD_UNKNOWN": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "gradientTransform": {},
+      "gradientUnits": {},
+      "href": {
+        "support_level": "untriaged"
+      },
+      "spreadMethod": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGHKernElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGHKernElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGHKernElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGImageElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGImageElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGImageElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "height": {},
+      "href": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "preserveAspectRatio": {},
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGLangSpace": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGLangSpace",
+    "dart_action": "unstable",
+    "members": {
+      "xmllang": {},
+      "xmlspace": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGLength": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGLength",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_LENGTHTYPE_CM": {},
+      "SVG_LENGTHTYPE_EMS": {},
+      "SVG_LENGTHTYPE_EXS": {},
+      "SVG_LENGTHTYPE_IN": {},
+      "SVG_LENGTHTYPE_MM": {},
+      "SVG_LENGTHTYPE_NUMBER": {},
+      "SVG_LENGTHTYPE_PC": {},
+      "SVG_LENGTHTYPE_PERCENTAGE": {},
+      "SVG_LENGTHTYPE_PT": {},
+      "SVG_LENGTHTYPE_PX": {},
+      "SVG_LENGTHTYPE_UNKNOWN": {},
+      "convertToSpecifiedUnits": {},
+      "newValueSpecifiedUnits": {},
+      "unitType": {},
+      "value": {},
+      "valueAsString": {},
+      "valueInSpecifiedUnits": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGLengthList": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGLengthList",
+    "dart_action": "unstable",
+    "members": {
+      "appendItem": {},
+      "clear": {},
+      "getItem": {},
+      "initialize": {},
+      "insertItemBefore": {},
+      "numberOfItems": {},
+      "removeItem": {},
+      "replaceItem": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGLineElement": {
+    "comment": "http://www.w3.org/TR/SVG/shapes.html#InterfaceSVGLineElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGLineElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "x1": {},
+      "x2": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y1": {},
+      "y2": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGLinearGradientElement": {
+    "comment": "http://www.w3.org/TR/SVG/pservers.html#InterfaceSVGLinearGradientElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGLinearGradientElement": {},
+      "x1": {},
+      "x2": {},
+      "y1": {},
+      "y2": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGLocatable": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGLocatable",
+    "dart_action": "unstable",
+    "members": {
+      "farthestViewportElement": {},
+      "getBBox": {},
+      "getCTM": {},
+      "getScreenCTM": {},
+      "getTransformToElement": {},
+      "nearestViewportElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGMPathElement": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceSVGMPathElement",
+    "members": {
+      "SVGMPathElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGMarkerElement": {
+    "comment": "http://www.w3.org/TR/SVG/painting.html#InterfaceSVGMarkerElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGMarkerElement": {},
+      "SVG_MARKERUNITS_STROKEWIDTH": {},
+      "SVG_MARKERUNITS_UNKNOWN": {},
+      "SVG_MARKERUNITS_USERSPACEONUSE": {},
+      "SVG_MARKER_ORIENT_ANGLE": {},
+      "SVG_MARKER_ORIENT_AUTO": {},
+      "SVG_MARKER_ORIENT_UNKNOWN": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "markerHeight": {},
+      "markerUnits": {},
+      "markerWidth": {},
+      "orientAngle": {},
+      "orientType": {},
+      "preserveAspectRatio": {
+        "support_level": "untriaged"
+      },
+      "refX": {},
+      "refY": {},
+      "setOrientToAngle": {},
+      "setOrientToAuto": {},
+      "viewBox": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGMaskElement": {
+    "comment": "http://www.w3.org/TR/SVG/masking.html#InterfaceSVGMaskElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGMaskElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "height": {},
+      "maskContentUnits": {},
+      "maskUnits": {},
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGMatrix": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGMatrix",
+    "dart_action": "unstable",
+    "members": {
+      "a": {},
+      "b": {},
+      "c": {},
+      "d": {},
+      "e": {},
+      "f": {},
+      "flipX": {},
+      "flipY": {},
+      "inverse": {},
+      "multiply": {},
+      "rotate": {},
+      "rotateFromVector": {},
+      "scale": {},
+      "scaleNonUniform": {},
+      "skewX": {},
+      "skewY": {},
+      "translate": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGMetadataElement": {
+    "comment": "http://www.w3.org/TR/SVG/metadata.html#InterfaceSVGMetadataElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGMissingGlyphElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGMissingGlyphElement",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGNumber": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGNumber",
+    "dart_action": "unstable",
+    "members": {
+      "value": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGNumberList": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGNumberList",
+    "dart_action": "unstable",
+    "members": {
+      "appendItem": {},
+      "clear": {},
+      "getItem": {},
+      "initialize": {},
+      "insertItemBefore": {},
+      "numberOfItems": {},
+      "removeItem": {},
+      "replaceItem": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPaint": {
+    "comment": "http://www.w3.org/TR/SVG/painting.html#InterfaceSVGPaint",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_PAINTTYPE_CURRENTCOLOR": {},
+      "SVG_PAINTTYPE_NONE": {},
+      "SVG_PAINTTYPE_RGBCOLOR": {},
+      "SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR": {},
+      "SVG_PAINTTYPE_UNKNOWN": {},
+      "SVG_PAINTTYPE_URI": {},
+      "SVG_PAINTTYPE_URI_CURRENTCOLOR": {},
+      "SVG_PAINTTYPE_URI_NONE": {},
+      "SVG_PAINTTYPE_URI_RGBCOLOR": {},
+      "SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR": {},
+      "paintType": {},
+      "setPaint": {},
+      "setUri": {},
+      "uri": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathElement": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGPathElement": {},
+      "animatedNormalizedPathSegList": {},
+      "animatedPathSegList": {},
+      "createSVGPathSegArcAbs": {},
+      "createSVGPathSegArcRel": {},
+      "createSVGPathSegClosePath": {},
+      "createSVGPathSegCurvetoCubicAbs": {},
+      "createSVGPathSegCurvetoCubicRel": {},
+      "createSVGPathSegCurvetoCubicSmoothAbs": {},
+      "createSVGPathSegCurvetoCubicSmoothRel": {},
+      "createSVGPathSegCurvetoQuadraticAbs": {},
+      "createSVGPathSegCurvetoQuadraticRel": {},
+      "createSVGPathSegCurvetoQuadraticSmoothAbs": {},
+      "createSVGPathSegCurvetoQuadraticSmoothRel": {},
+      "createSVGPathSegLinetoAbs": {},
+      "createSVGPathSegLinetoHorizontalAbs": {},
+      "createSVGPathSegLinetoHorizontalRel": {},
+      "createSVGPathSegLinetoRel": {},
+      "createSVGPathSegLinetoVerticalAbs": {},
+      "createSVGPathSegLinetoVerticalRel": {},
+      "createSVGPathSegMovetoAbs": {},
+      "createSVGPathSegMovetoRel": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getPathSegAtLength": {},
+      "getPointAtLength": {},
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTotalLength": {},
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "normalizedPathSegList": {},
+      "pathLength": {},
+      "pathSegList": {},
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSeg": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSeg",
+    "dart_action": "unstable",
+    "members": {
+      "PATHSEG_ARC_ABS": {},
+      "PATHSEG_ARC_REL": {},
+      "PATHSEG_CLOSEPATH": {},
+      "PATHSEG_CURVETO_CUBIC_ABS": {},
+      "PATHSEG_CURVETO_CUBIC_REL": {},
+      "PATHSEG_CURVETO_CUBIC_SMOOTH_ABS": {},
+      "PATHSEG_CURVETO_CUBIC_SMOOTH_REL": {},
+      "PATHSEG_CURVETO_QUADRATIC_ABS": {},
+      "PATHSEG_CURVETO_QUADRATIC_REL": {},
+      "PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS": {},
+      "PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL": {},
+      "PATHSEG_LINETO_ABS": {},
+      "PATHSEG_LINETO_HORIZONTAL_ABS": {},
+      "PATHSEG_LINETO_HORIZONTAL_REL": {},
+      "PATHSEG_LINETO_REL": {},
+      "PATHSEG_LINETO_VERTICAL_ABS": {},
+      "PATHSEG_LINETO_VERTICAL_REL": {},
+      "PATHSEG_MOVETO_ABS": {},
+      "PATHSEG_MOVETO_REL": {},
+      "PATHSEG_UNKNOWN": {},
+      "pathSegType": {},
+      "pathSegTypeAsLetter": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegArcAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegArcAbs",
+    "dart_action": "unstable",
+    "members": {
+      "angle": {},
+      "largeArcFlag": {},
+      "r1": {},
+      "r2": {},
+      "sweepFlag": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegArcRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegArcRel",
+    "dart_action": "unstable",
+    "members": {
+      "angle": {},
+      "largeArcFlag": {},
+      "r1": {},
+      "r2": {},
+      "sweepFlag": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegClosePath": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegClosePath",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoCubicAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoCubicAbs",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "x1": {},
+      "x2": {},
+      "y": {},
+      "y1": {},
+      "y2": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoCubicRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoCubicRel",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "x1": {},
+      "x2": {},
+      "y": {},
+      "y1": {},
+      "y2": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoCubicSmoothAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoCubicSmoothAbs",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "x2": {},
+      "y": {},
+      "y2": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoCubicSmoothRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoCubicSmoothRel",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "x2": {},
+      "y": {},
+      "y2": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoQuadraticAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoQuadraticAbs",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "x1": {},
+      "y": {},
+      "y1": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoQuadraticRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoQuadraticRel",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "x1": {},
+      "y": {},
+      "y1": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoQuadraticSmoothAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothAbs",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegCurvetoQuadraticSmoothRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegCurvetoQuadraticSmoothRel",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegLinetoAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegLinetoAbs",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegLinetoHorizontalAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegLinetoHorizontalAbs",
+    "dart_action": "unstable",
+    "members": {
+      "x": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegLinetoHorizontalRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegLinetoHorizontalRel",
+    "dart_action": "unstable",
+    "members": {
+      "x": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegLinetoRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegLinetoRel",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegLinetoVerticalAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegLinetoVerticalAbs",
+    "dart_action": "unstable",
+    "members": {
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegLinetoVerticalRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegLinetoVerticalRel",
+    "dart_action": "unstable",
+    "members": {
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegList": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegList",
+    "dart_action": "unstable",
+    "members": {
+      "appendItem": {},
+      "clear": {},
+      "getItem": {},
+      "initialize": {},
+      "insertItemBefore": {},
+      "numberOfItems": {},
+      "removeItem": {},
+      "replaceItem": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegMovetoAbs": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegMovetoAbs",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPathSegMovetoRel": {
+    "comment": "http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSegMovetoRel",
+    "dart_action": "unstable",
+    "members": {
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPatternElement": {
+    "comment": "http://www.w3.org/TR/SVG/pservers.html#InterfaceSVGPatternElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGPatternElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "height": {},
+      "href": {
+        "support_level": "untriaged"
+      },
+      "patternContentUnits": {},
+      "patternTransform": {},
+      "patternUnits": {},
+      "preserveAspectRatio": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "viewBox": {
+        "support_level": "untriaged"
+      },
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPoint": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGPoint",
+    "dart_action": "unstable",
+    "members": {
+      "matrixTransform": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPointList": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGPointList",
+    "dart_action": "unstable",
+    "members": {
+      "appendItem": {},
+      "clear": {},
+      "getItem": {},
+      "initialize": {},
+      "insertItemBefore": {},
+      "numberOfItems": {},
+      "removeItem": {},
+      "replaceItem": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGPolygonElement": {
+    "comment": "http://www.w3.org/TR/SVG/shapes.html#InterfaceSVGPolygonElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGPolygonElement": {},
+      "animatedPoints": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "points": {},
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGPolylineElement": {
+    "comment": "http://www.w3.org/TR/SVG/shapes.html#InterfaceSVGPolylineElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGPolylineElement": {},
+      "animatedPoints": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "points": {},
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGPreserveAspectRatio": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGPreserveAspectRatio",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_MEETORSLICE_MEET": {},
+      "SVG_MEETORSLICE_SLICE": {},
+      "SVG_MEETORSLICE_UNKNOWN": {},
+      "SVG_PRESERVEASPECTRATIO_NONE": {},
+      "SVG_PRESERVEASPECTRATIO_UNKNOWN": {},
+      "SVG_PRESERVEASPECTRATIO_XMAXYMAX": {},
+      "SVG_PRESERVEASPECTRATIO_XMAXYMID": {},
+      "SVG_PRESERVEASPECTRATIO_XMAXYMIN": {},
+      "SVG_PRESERVEASPECTRATIO_XMIDYMAX": {},
+      "SVG_PRESERVEASPECTRATIO_XMIDYMID": {},
+      "SVG_PRESERVEASPECTRATIO_XMIDYMIN": {},
+      "SVG_PRESERVEASPECTRATIO_XMINYMAX": {},
+      "SVG_PRESERVEASPECTRATIO_XMINYMID": {},
+      "SVG_PRESERVEASPECTRATIO_XMINYMIN": {},
+      "align": {},
+      "meetOrSlice": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGRadialGradientElement": {
+    "comment": "http://www.w3.org/TR/SVG/pservers.html#InterfaceSVGRadialGradientElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGRadialGradientElement": {},
+      "cx": {},
+      "cy": {},
+      "fr": {},
+      "fx": {},
+      "fy": {},
+      "r": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGRect": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGRect",
+    "dart_action": "unstable",
+    "members": {
+      "height": {},
+      "width": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGRectElement": {
+    "comment": "http://www.w3.org/TR/SVG/shapes.html#InterfaceSVGRectElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGRectElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "height": {},
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "rx": {},
+      "ry": {},
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGRenderingIntent": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGRenderingIntent",
+    "dart_action": "unstable",
+    "members": {
+      "RENDERING_INTENT_ABSOLUTE_COLORIMETRIC": {},
+      "RENDERING_INTENT_AUTO": {},
+      "RENDERING_INTENT_PERCEPTUAL": {},
+      "RENDERING_INTENT_RELATIVE_COLORIMETRIC": {},
+      "RENDERING_INTENT_SATURATION": {},
+      "RENDERING_INTENT_UNKNOWN": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGSVGElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGSVGElement",
+    "dart_action": "unstable",
+    "members": {
+      "animationsPaused": {},
+      "checkEnclosure": {},
+      "checkIntersection": {},
+      "contentScriptType": {},
+      "contentStyleType": {},
+      "createSVGAngle": {},
+      "createSVGLength": {},
+      "createSVGMatrix": {},
+      "createSVGNumber": {},
+      "createSVGPoint": {},
+      "createSVGRect": {},
+      "createSVGTransform": {},
+      "createSVGTransformFromMatrix": {},
+      "currentScale": {},
+      "currentTranslate": {},
+      "currentView": {},
+      "deselectAll": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "forceRedraw": {},
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getCurrentTime": {},
+      "getElementById": {},
+      "getEnclosureList": {},
+      "getIntersectionList": {},
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "height": {},
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "pauseAnimations": {},
+      "pixelUnitToMillimeterX": {},
+      "pixelUnitToMillimeterY": {},
+      "preserveAspectRatio": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "screenPixelToMillimeterX": {},
+      "screenPixelToMillimeterY": {},
+      "setCurrentTime": {},
+      "suspendRedraw": {},
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "unpauseAnimations": {},
+      "unsuspendRedraw": {},
+      "unsuspendRedrawAll": {},
+      "useCurrentView": {},
+      "viewBox": {
+        "support_level": "untriaged"
+      },
+      "viewport": {},
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {},
+      "zoomAndPan": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGScriptElement": {
+    "comment": "http://www.w3.org/TR/SVG/script.html#InterfaceSVGScriptElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGScriptElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "href": {
+        "support_level": "untriaged"
+      },
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGSetElement": {
+    "comment": "http://www.w3.org/TR/SVG/animate.html#InterfaceSVGSetElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGSetElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGStopElement": {
+    "comment": "http://www.w3.org/TR/SVG/pservers.html#InterfaceSVGStopElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGStopElement": {},
+      "offset": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGStringList": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGStringList",
+    "dart_action": "unstable",
+    "members": {
+      "appendItem": {},
+      "clear": {},
+      "getItem": {},
+      "initialize": {},
+      "insertItemBefore": {},
+      "numberOfItems": {},
+      "removeItem": {},
+      "replaceItem": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGStyleElement": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGStylable",
+    "dart_action": "experimental",
+    "members": {
+      "SVGStyleElement": {},
+      "disabled": {},
+      "media": {},
+      "title": {},
+      "type": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "nonstandard"
+  },
+  "SVGStyledElement": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGStylable (SVGStylable)",
+    "dart_action": "unstable",
+    "members": {
+      "className": {},
+      "getPresentationAttribute": {},
+      "style": {}
+    },
+    "support_level": "experimental"
+  },
+  "SVGSwitchElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGSwitchElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGSwitchElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGSymbolElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGSymbolElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGSymbolElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "preserveAspectRatio": {
+        "support_level": "untriaged"
+      },
+      "viewBox": {
+        "support_level": "untriaged"
+      },
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGTRefElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGTRefElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGTRefElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGTSpanElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGTSpanElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGTSpanElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGTests": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGTests",
+    "dart_action": "unstable",
+    "members": {
+      "hasExtension": {},
+      "requiredExtensions": {},
+      "requiredFeatures": {},
+      "systemLanguage": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGTextContentElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGTextContentElement",
+    "dart_action": "unstable",
+    "members": {
+      "LENGTHADJUST_SPACING": {},
+      "LENGTHADJUST_SPACINGANDGLYPHS": {},
+      "LENGTHADJUST_UNKNOWN": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "getCharNumAtPosition": {},
+      "getComputedTextLength": {},
+      "getEndPositionOfChar": {},
+      "getExtentOfChar": {},
+      "getNumberOfChars": {},
+      "getRotationOfChar": {},
+      "getStartPositionOfChar": {},
+      "getSubStringLength": {},
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "lengthAdjust": {},
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "selectSubString": {},
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "textLength": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGTextElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGTextElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGTextElement": {},
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGTextPathElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGTextPathElement",
+    "dart_action": "unstable",
+    "members": {
+      "TEXTPATH_METHODTYPE_ALIGN": {},
+      "TEXTPATH_METHODTYPE_STRETCH": {},
+      "TEXTPATH_METHODTYPE_UNKNOWN": {},
+      "TEXTPATH_SPACINGTYPE_AUTO": {},
+      "TEXTPATH_SPACINGTYPE_EXACT": {},
+      "TEXTPATH_SPACINGTYPE_UNKNOWN": {},
+      "href": {
+        "support_level": "untriaged"
+      },
+      "method": {},
+      "spacing": {},
+      "startOffset": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGTextPositioningElement": {
+    "comment": "http://www.w3.org/TR/SVG/text.html#InterfaceSVGTextPositioningElement",
+    "dart_action": "unstable",
+    "members": {
+      "dx": {},
+      "dy": {},
+      "rotate": {},
+      "x": {},
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGTitleElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGTitleElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGTitleElement": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGTransform": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGTransform",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_TRANSFORM_MATRIX": {},
+      "SVG_TRANSFORM_ROTATE": {},
+      "SVG_TRANSFORM_SCALE": {},
+      "SVG_TRANSFORM_SKEWX": {},
+      "SVG_TRANSFORM_SKEWY": {},
+      "SVG_TRANSFORM_TRANSLATE": {},
+      "SVG_TRANSFORM_UNKNOWN": {},
+      "angle": {},
+      "matrix": {},
+      "setMatrix": {},
+      "setRotate": {},
+      "setScale": {},
+      "setSkewX": {},
+      "setSkewY": {},
+      "setTranslate": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGTransformList": {
+    "comment": "http://www.w3.org/TR/SVG/coords.html#InterfaceSVGTransformList",
+    "dart_action": "unstable",
+    "members": {
+      "appendItem": {},
+      "clear": {},
+      "consolidate": {},
+      "createSVGTransformFromMatrix": {},
+      "getItem": {},
+      "initialize": {},
+      "insertItemBefore": {},
+      "numberOfItems": {},
+      "removeItem": {},
+      "replaceItem": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGTransformable": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGTransformable",
+    "dart_action": "unstable",
+    "members": {
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "transform": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGURIReference": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGURIReference",
+    "dart_action": "unstable",
+    "members": {
+      "href": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGUnitTypes": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGUnitTypes",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_UNIT_TYPE_OBJECTBOUNDINGBOX": {},
+      "SVG_UNIT_TYPE_UNKNOWN": {},
+      "SVG_UNIT_TYPE_USERSPACEONUSE": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGUseElement": {
+    "comment": "http://www.w3.org/TR/SVG/struct.html#InterfaceSVGUseElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGUseElement": {},
+      "animatedInstanceRoot": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "farthestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "getBBox": {
+        "support_level": "untriaged"
+      },
+      "getCTM": {
+        "support_level": "untriaged"
+      },
+      "getScreenCTM": {
+        "support_level": "untriaged"
+      },
+      "getTransformToElement": {
+        "support_level": "untriaged"
+      },
+      "hasExtension": {
+        "support_level": "untriaged"
+      },
+      "height": {},
+      "href": {
+        "support_level": "untriaged"
+      },
+      "instanceRoot": {},
+      "nearestViewportElement": {
+        "support_level": "untriaged"
+      },
+      "requiredExtensions": {
+        "support_level": "untriaged"
+      },
+      "requiredFeatures": {
+        "support_level": "untriaged"
+      },
+      "systemLanguage": {
+        "support_level": "untriaged"
+      },
+      "transform": {
+        "support_level": "untriaged"
+      },
+      "width": {},
+      "x": {},
+      "xmllang": {
+        "support_level": "untriaged"
+      },
+      "xmlspace": {
+        "support_level": "untriaged"
+      },
+      "y": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGVKernElement": {
+    "comment": "http://www.w3.org/TR/SVG/fonts.html#InterfaceSVGVKernElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGVKernElement": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGViewElement": {
+    "comment": "http://www.w3.org/TR/SVG/linking.html#InterfaceSVGViewElement",
+    "dart_action": "unstable",
+    "members": {
+      "SVGViewElement": {},
+      "externalResourcesRequired": {
+        "support_level": "untriaged"
+      },
+      "preserveAspectRatio": {
+        "support_level": "untriaged"
+      },
+      "viewBox": {
+        "support_level": "untriaged"
+      },
+      "viewTarget": {},
+      "zoomAndPan": {
+        "support_level": "untriaged"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGViewSpec": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGViewSpec",
+    "dart_action": "unstable",
+    "members": {
+      "preserveAspectRatio": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "preserveAspectRatioString": {},
+      "transform": {},
+      "transformString": {},
+      "viewBox": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "viewBoxString": {},
+      "viewTarget": {},
+      "viewTargetString": {},
+      "zoomAndPan": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "SVGZoomAndPan": {
+    "comment": "http://www.w3.org/TR/SVG/types.html#InterfaceSVGZoomAndPan",
+    "dart_action": "unstable",
+    "members": {
+      "SVG_ZOOMANDPAN_DISABLE": {},
+      "SVG_ZOOMANDPAN_MAGNIFY": {},
+      "SVG_ZOOMANDPAN_UNKNOWN": {},
+      "zoomAndPan": {}
+    },
+    "support_level": "stable"
+  },
+  "SVGZoomEvent": {
+    "comment": "http://www.w3.org/TR/SVG/script.html#InterfaceSVGZoomEvent",
+    "dart_action": "unstable",
+    "members": {
+      "newScale": {},
+      "newTranslate": {},
+      "previousScale": {},
+      "previousTranslate": {},
+      "zoomRectScreen": {}
+    },
+    "support_level": "stable"
+  },
+  "Screen": {
+    "comment": "http://dev.w3.org/csswg/cssom-view/#the-screen-interface",
+    "members": {
+      "availHeight": {},
+      "availLeft": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "availTop": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "availWidth": {},
+      "colorDepth": {},
+      "height": {},
+      "pixelDepth": {},
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "ScriptProcessorNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#ScriptProcessorNode",
+    "members": {
+      "_setEventListener": {
+        "support_level": "nonstandard"
+      },
+      "bufferSize": {}
+    },
+    "support_level": "experimental"
+  },
+  "ScriptProfile": {
+    "dart_action": "suppress",
+    "members": {
+      "head": {},
+      "idleTime": {},
+      "title": {},
+      "uid": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "ScriptProfileNode": {
+    "dart_action": "suppress",
+    "members": {
+      "callUID": {},
+      "children": {},
+      "functionName": {},
+      "lineNumber": {},
+      "numberOfCalls": {},
+      "selfTime": {},
+      "totalTime": {},
+      "url": {},
+      "visible": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "SecurityPolicy": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "SecurityPolicyViolationEvent": {
+    "comment": "https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#securitypolicyviolationevent-events",
+    "members": {
+      "blockedURI": {},
+      "documentURI": {},
+      "effectiveDirective": {},
+      "lineNumber": {},
+      "originalPolicy": {},
+      "referrer": {},
+      "sourceFile": {},
+      "violatedDirective": {}
+    },
+    "support_level": "experimental"
+  },
+  "Selection": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "ShadowRoot": {
+    "comment": "https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-root",
+    "members": {
+      "activeElement": {},
+      "applyAuthorStyles": {},
+      "cloneNode": {},
+      "elementFromPoint": {},
+      "getElementById": {},
+      "getElementsByClassName": {},
+      "getElementsByTagName": {},
+      "getElementsByTagNameNS": {},
+      "getSelection": {},
+      "innerHTML": {},
+      "resetStyleInheritance": {}
+    },
+    "support_level": "experimental"
+  },
+  "SharedWorker": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#shared-workers-and-the-sharedworker-interface",
+    "members": {
+      "SharedWorker": {},
+      "port": {}
+    },
+    "support_level": "experimental"
+  },
+  "SharedWorkerContext": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#shared-workers-and-the-sharedworkerglobalscope-interface",
+    "dart_action": "experimental",
+    "members": {
+      "name": {},
+      "onconnect": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "SourceBuffer": {
+    "comment": "https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#sourcebuffer",
+    "members": {
+      "abort": {},
+      "append": {
+        "support_level": "nonstandard"
+      },
+      "buffered": {},
+      "timestampOffset": {}
+    },
+    "support_level": "experimental"
+  },
+  "SourceBufferList": {
+    "comment": "https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#sourcebufferlist",
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "item": {},
+      "length": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechGrammar": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#dfn-speechgrammar",
+    "members": {
+      "SpeechGrammar": {},
+      "src": {},
+      "weight": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechGrammarList": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#dfn-speechgrammarlist",
+    "members": {
+      "SpeechGrammarList": {},
+      "addFromString": {},
+      "addFromUri": {},
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechInputEvent": {
+    "comment": "http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#speech_input_event_interface",
+    "members": {
+      "results": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechInputResult": {
+    "comment": "http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#speech_input_result_interface",
+    "members": {
+      "confidence": {},
+      "utterance": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechInputResultList": {
+    "comment": "http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#speech_input_result_list_interface",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechRecognition": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-section",
+    "members": {
+      "SpeechRecognition": {},
+      "abort": {},
+      "addEventListener": {},
+      "continuous": {},
+      "dispatchEvent": {},
+      "grammars": {},
+      "interimResults": {},
+      "lang": {},
+      "maxAlternatives": {},
+      "onaudioend": {},
+      "onaudiostart": {},
+      "onend": {},
+      "onerror": {},
+      "onnomatch": {},
+      "onresult": {},
+      "onsoundend": {},
+      "onsoundstart": {},
+      "onspeechend": {},
+      "onspeechstart": {},
+      "onstart": {},
+      "removeEventListener": {},
+      "start": {},
+      "stop": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechRecognitionAlternative": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechrecognitionalternative",
+    "members": {
+      "confidence": {},
+      "transcript": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechRecognitionError": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-error",
+    "members": {
+      "error": {},
+      "message": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechRecognitionEvent": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-event",
+    "members": {
+      "emma": {},
+      "interpretation": {},
+      "resultIndex": {},
+      "results": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechRecognitionResult": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechrecognitionresult",
+    "members": {
+      "isFinal": {},
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "SpeechRecognitionResultList": {
+    "comment": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechrecognitionresultlist",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "Storage": {
+    "comment": "http://www.w3.org/TR/webstorage/#the-storage-interface",
+    "dart_action": "unstable",
+    "members": {
+      "clear": {},
+      "getItem": {},
+      "key": {},
+      "length": {},
+      "removeItem": {},
+      "setItem": {}
+    },
+    "support_level": "stable"
+  },
+  "StorageErrorCallback": {
+    "comment": "http://www.w3.org/TR/quota-api/#storageerrorcallback-callback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "StorageEvent": {
+    "comment": "http://www.w3.org/TR/webstorage/#the-storage-event",
+    "dart_action": "unstable",
+    "members": {
+      "initStorageEvent": {},
+      "key": {},
+      "newValue": {},
+      "oldValue": {},
+      "storageArea": {},
+      "url": {}
+    },
+    "support_level": "stable"
+  },
+  "StorageInfo": {
+    "comment": "http://www.w3.org/TR/file-system-api/",
+    "members": {
+      "PERSISTENT": {},
+      "TEMPORARY": {},
+      "queryUsageAndQuota": {},
+      "requestQuota": {}
+    },
+    "support_level": "experimental"
+  },
+  "StorageQuota": {
+    "comment": "http://www.w3.org/TR/quota-api/#idl-def-StorageQuota",
+    "members": {
+      "queryUsageAndQuota": {},
+      "requestQuota": {}
+    },
+    "support_level": "experimental"
+  },
+  "StorageQuotaCallback": {
+    "comment": "http://www.w3.org/TR/quota-api/#idl-def-StorageQuotaCallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "StorageUsageCallback": {
+    "comment": "http://www.w3.org/TR/quota-api/#idl-def-StorageUsageCallback",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "StringCallback": {
+    "comment": "http://www.w3.org/TR/2011/WD-html5-20110113/dnd.html#the-datatransferitem-interface",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "StyleMedia": {
+    "comment": "http://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/StyleMedia/StyleMedia/StyleMedia.html",
+    "dart_action": "experimental",
+    "members": {
+      "matchMedium": {},
+      "type": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "StyleSheet": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-stylesheet-interface",
+    "members": {
+      "disabled": {},
+      "href": {},
+      "media": {},
+      "ownerNode": {},
+      "parentStyleSheet": {},
+      "title": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "StyleSheetList": {
+    "comment": "http://dev.w3.org/csswg/cssom/#the-stylesheetlist-sequence",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "stable"
+  },
+  "Text": {
+    "comment": "http://dom.spec.whatwg.org/#interface-text",
+    "members": {
+      "replaceWholeText": {
+        "comment": "http://dom.spec.whatwg.org/#dom-text-replacewholetext",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "splitText": {},
+      "webkitInsertionParent": {
+        "comment": "https://www.w3.org/Bugs/Public/show_bug.cgi?id=21067",
+        "support_level": "experimental"
+      },
+      "wholeText": {}
+    },
+    "support_level": "stable"
+  },
+  "TextEvent": {
+    "comment": "http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/events.html#Events-TextEvent",
+    "dart_action": "unstable",
+    "members": {
+      "data": {},
+      "initTextEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "TextMetrics": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#textmetrics",
+    "members": {
+      "width": {}
+    },
+    "support_level": "stable"
+  },
+  "TextTrack": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrack",
+    "members": {
+      "activeCues": {},
+      "addCue": {},
+      "addEventListener": {},
+      "cues": {},
+      "dispatchEvent": {},
+      "kind": {},
+      "label": {},
+      "language": {},
+      "mode": {},
+      "oncuechange": {},
+      "removeCue": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "TextTrackCue": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrackcue",
+    "members": {
+      "TextTrackCue": {},
+      "addEventListener": {},
+      "align": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "dispatchEvent": {},
+      "endTime": {},
+      "getCueAsHTML": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "id": {},
+      "line": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "onenter": {},
+      "onexit": {},
+      "pauseOnExit": {},
+      "position": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "removeEventListener": {},
+      "size": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "snapToLines": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "startTime": {},
+      "text": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "track": {},
+      "vertical": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "TextTrackCueList": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttrackcuelist",
+    "members": {
+      "getCueById": {},
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "TextTrackList": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#texttracklist",
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "item": {},
+      "length": {},
+      "onaddtrack": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "TimeRanges": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#timeranges",
+    "dart_action": "unstable",
+    "members": {
+      "end": {},
+      "length": {},
+      "start": {}
+    },
+    "support_level": "stable"
+  },
+  "TimeoutHandler": {
+    "comment": "http://www.whatwg.org/specs/web-apps/2007-10-26/multipage/section-timers.html#timeouthandler",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "stable"
+  },
+  "Touch": {
+    "comment": "http://www.w3.org/TR/touch-events/",
+    "members": {
+      "clientX": {},
+      "clientY": {},
+      "identifier": {},
+      "pageX": {},
+      "pageY": {},
+      "screenX": {},
+      "screenY": {},
+      "target": {},
+      "webkitForce": {
+        "support_level": "experimental"
+      },
+      "webkitRadiusX": {
+        "support_level": "experimental"
+      },
+      "webkitRadiusY": {
+        "support_level": "experimental"
+      },
+      "webkitRotationAngle": {
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "TouchEvent": {
+    "comment": "http://www.w3.org/TR/touch-events/",
+    "members": {
+      "altKey": {},
+      "changedTouches": {},
+      "ctrlKey": {},
+      "initTouchEvent": {},
+      "metaKey": {},
+      "shiftKey": {},
+      "targetTouches": {},
+      "touches": {}
+    },
+    "support_level": "experimental"
+  },
+  "TouchList": {
+    "comment": "http://www.w3.org/TR/touch-events/",
+    "members": {
+      "item": {},
+      "length": {}
+    },
+    "support_level": "experimental"
+  },
+  "TrackEvent": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#trackevent",
+    "dart_action": "unstable",
+    "members": {
+      "track": {}
+    },
+    "support_level": "experimental"
+  },
+  "TransitionEvent": {
+    "comment": "http://dev.w3.org/csswg/css-transitions/#Events-TransitionEvent",
+    "members": {
+      "elapsedTime": {},
+      "propertyName": {},
+      "pseudoElement": {}
+    },
+    "support_level": "stable"
+  },
+  "TreeWalker": {
+    "comment": "http://dom.spec.whatwg.org/#treewalker",
+    "dart_action": "unstable",
+    "members": {
+      "currentNode": {},
+      "expandEntityReferences": {
+        "comment": "http://dom.spec.whatwg.org/#dom-traversal",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "filter": {},
+      "firstChild": {},
+      "lastChild": {},
+      "nextNode": {},
+      "nextSibling": {},
+      "parentNode": {},
+      "previousNode": {},
+      "previousSibling": {},
+      "root": {},
+      "whatToShow": {}
+    },
+    "support_level": "stable"
+  },
+  "UIEvent": {
+    "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-UIEvent",
+    "members": {
+      "charCode": {
+        "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#legacy-key-attributes",
+        "dart_action": "unstable",
+        "support_level": "deprecated"
+      },
+      "detail": {},
+      "initUIEvent": {},
+      "keyCode": {
+        "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#legacy-key-attributes",
+        "dart_action": "unstable",
+        "support_level": "deprecated"
+      },
+      "layerX": {
+        "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents",
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "layerY": {
+        "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents",
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "pageX": {
+        "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents",
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "pageY": {
+        "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents",
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "view": {},
+      "which": {
+        "comment": "http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#legacy-key-attributes",
+        "dart_action": "unstable",
+        "support_level": "deprecated"
+      }
+    },
+    "support_level": "stable"
+  },
+  "URL": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "Uint16Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "Uint32Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "Uint8Array": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "BYTES_PER_ELEMENT": {},
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "Uint8ClampedArray": {
+    "comment": "http://www.khronos.org/registry/typedarray/specs/latest/",
+    "members": {
+      "length": {},
+      "setElements": {},
+      "subarray": {}
+    },
+    "support_level": "stable"
+  },
+  "ValidityState": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#validitystate",
+    "members": {
+      "badInput": {},
+      "customError": {},
+      "patternMismatch": {},
+      "rangeOverflow": {},
+      "rangeUnderflow": {},
+      "stepMismatch": {},
+      "tooLong": {},
+      "typeMismatch": {},
+      "valid": {},
+      "valueMissing": {}
+    },
+    "support_level": "stable"
+  },
+  "VoidCallback": {
+    "comment": "http://www.w3.org/TR/file-system-api/#the-voidcallback-interface",
+    "members": {
+      "handleEvent": {}
+    },
+    "support_level": "experimental"
+  },
+  "WaveShaperNode": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-WaveShaperNode",
+    "members": {
+      "curve": {}
+    },
+    "support_level": "experimental"
+  },
+  "WaveTable": {
+    "comment": "https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#WaveTable-section",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "WebGLActiveInfo": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.11",
+    "dart_action": "unstable",
+    "members": {
+      "name": {},
+      "size": {},
+      "type": {}
+    },
+    "support_level": "stable"
+  },
+  "WebGLBuffer": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.4",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "WebGLCompressedTextureATC": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_atc/",
+    "members": {
+      "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL": {},
+      "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL": {},
+      "COMPRESSED_RGB_ATC_WEBGL": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebGLCompressedTexturePVRTC": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/",
+    "dart_action": "experimental",
+    "members": {
+      "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG": {},
+      "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG": {},
+      "COMPRESSED_RGB_PVRTC_2BPPV1_IMG": {},
+      "COMPRESSED_RGB_PVRTC_4BPPV1_IMG": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebGLCompressedTextureS3TC": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/",
+    "dart_action": "experimental",
+    "members": {
+      "COMPRESSED_RGBA_S3TC_DXT1_EXT": {},
+      "COMPRESSED_RGBA_S3TC_DXT3_EXT": {},
+      "COMPRESSED_RGBA_S3TC_DXT5_EXT": {},
+      "COMPRESSED_RGB_S3TC_DXT1_EXT": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebGLContextAttributes": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.2",
+    "dart_action": "unstable",
+    "members": {
+      "alpha": {},
+      "antialias": {},
+      "depth": {},
+      "premultipliedAlpha": {},
+      "preserveDrawingBuffer": {},
+      "stencil": {}
+    },
+    "support_level": "stable"
+  },
+  "WebGLContextEvent": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#WEBGLCONTEXTEVENT",
+    "dart_action": "unstable",
+    "members": {
+      "statusMessage": {}
+    },
+    "support_level": "stable"
+  },
+  "WebGLDebugRendererInfo": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/",
+    "dart_action": "experimental",
+    "members": {
+      "UNMASKED_RENDERER_WEBGL": {},
+      "UNMASKED_VENDOR_WEBGL": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebGLDebugShaders": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/WEBGL_debug_shaders/",
+    "dart_action": "experimental",
+    "members": {
+      "getTranslatedShaderSource": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebGLDepthTexture": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/",
+    "dart_action": "experimental",
+    "members": {
+      "UNSIGNED_INT_24_8_WEBGL": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebGLFramebuffer": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.5",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "WebGLLoseContext": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/WEBGL_lose_context/",
+    "members": {
+      "loseContext": {},
+      "restoreContext": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebGLProgram": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.6",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "WebGLRenderbuffer": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.7",
+    "dart_action": "unstable",
+    "members": {},
+    "support_level": "stable"
+  },
+  "WebGLRenderingContext": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.14",
+    "dart_action": "unstable",
+    "members": {
+      "ACTIVE_ATTRIBUTES": {},
+      "ACTIVE_TEXTURE": {},
+      "ACTIVE_UNIFORMS": {},
+      "ALIASED_LINE_WIDTH_RANGE": {},
+      "ALIASED_POINT_SIZE_RANGE": {},
+      "ALPHA": {},
+      "ALPHA_BITS": {},
+      "ALWAYS": {},
+      "ARRAY_BUFFER": {},
+      "ARRAY_BUFFER_BINDING": {},
+      "ATTACHED_SHADERS": {},
+      "BACK": {},
+      "BLEND": {},
+      "BLEND_COLOR": {},
+      "BLEND_DST_ALPHA": {},
+      "BLEND_DST_RGB": {},
+      "BLEND_EQUATION": {},
+      "BLEND_EQUATION_ALPHA": {},
+      "BLEND_EQUATION_RGB": {},
+      "BLEND_SRC_ALPHA": {},
+      "BLEND_SRC_RGB": {},
+      "BLUE_BITS": {},
+      "BOOL": {},
+      "BOOL_VEC2": {},
+      "BOOL_VEC3": {},
+      "BOOL_VEC4": {},
+      "BROWSER_DEFAULT_WEBGL": {},
+      "BUFFER_SIZE": {},
+      "BUFFER_USAGE": {},
+      "BYTE": {},
+      "CCW": {},
+      "CLAMP_TO_EDGE": {},
+      "COLOR_ATTACHMENT0": {},
+      "COLOR_BUFFER_BIT": {},
+      "COLOR_CLEAR_VALUE": {},
+      "COLOR_WRITEMASK": {},
+      "COMPILE_STATUS": {},
+      "COMPRESSED_TEXTURE_FORMATS": {},
+      "CONSTANT_ALPHA": {},
+      "CONSTANT_COLOR": {},
+      "CONTEXT_LOST_WEBGL": {},
+      "CULL_FACE": {},
+      "CULL_FACE_MODE": {},
+      "CURRENT_PROGRAM": {},
+      "CURRENT_VERTEX_ATTRIB": {},
+      "CW": {},
+      "DECR": {},
+      "DECR_WRAP": {},
+      "DELETE_STATUS": {},
+      "DEPTH_ATTACHMENT": {},
+      "DEPTH_BITS": {},
+      "DEPTH_BUFFER_BIT": {},
+      "DEPTH_CLEAR_VALUE": {},
+      "DEPTH_COMPONENT": {},
+      "DEPTH_COMPONENT16": {},
+      "DEPTH_FUNC": {},
+      "DEPTH_RANGE": {},
+      "DEPTH_STENCIL": {},
+      "DEPTH_STENCIL_ATTACHMENT": {},
+      "DEPTH_TEST": {},
+      "DEPTH_WRITEMASK": {},
+      "DITHER": {},
+      "DONT_CARE": {},
+      "DST_ALPHA": {},
+      "DST_COLOR": {},
+      "DYNAMIC_DRAW": {},
+      "ELEMENT_ARRAY_BUFFER": {},
+      "ELEMENT_ARRAY_BUFFER_BINDING": {},
+      "EQUAL": {},
+      "FASTEST": {},
+      "FLOAT": {},
+      "FLOAT_MAT2": {},
+      "FLOAT_MAT3": {},
+      "FLOAT_MAT4": {},
+      "FLOAT_VEC2": {},
+      "FLOAT_VEC3": {},
+      "FLOAT_VEC4": {},
+      "FRAGMENT_SHADER": {},
+      "FRAMEBUFFER": {},
+      "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME": {},
+      "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE": {},
+      "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE": {},
+      "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL": {},
+      "FRAMEBUFFER_BINDING": {},
+      "FRAMEBUFFER_COMPLETE": {},
+      "FRAMEBUFFER_INCOMPLETE_ATTACHMENT": {},
+      "FRAMEBUFFER_INCOMPLETE_DIMENSIONS": {},
+      "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT": {},
+      "FRAMEBUFFER_UNSUPPORTED": {},
+      "FRONT": {},
+      "FRONT_AND_BACK": {},
+      "FRONT_FACE": {},
+      "FUNC_ADD": {},
+      "FUNC_REVERSE_SUBTRACT": {},
+      "FUNC_SUBTRACT": {},
+      "GENERATE_MIPMAP_HINT": {},
+      "GEQUAL": {},
+      "GREATER": {},
+      "GREEN_BITS": {},
+      "HALF_FLOAT_OES": {
+        "dart_action": "experimental",
+        "support_level": "nonstandard"
+      },
+      "HIGH_FLOAT": {},
+      "HIGH_INT": {},
+      "INCR": {},
+      "INCR_WRAP": {},
+      "INT": {},
+      "INT_VEC2": {},
+      "INT_VEC3": {},
+      "INT_VEC4": {},
+      "INVALID_ENUM": {},
+      "INVALID_FRAMEBUFFER_OPERATION": {},
+      "INVALID_OPERATION": {},
+      "INVALID_VALUE": {},
+      "INVERT": {},
+      "KEEP": {},
+      "LEQUAL": {},
+      "LESS": {},
+      "LINEAR": {},
+      "LINEAR_MIPMAP_LINEAR": {},
+      "LINEAR_MIPMAP_NEAREST": {},
+      "LINES": {},
+      "LINE_LOOP": {},
+      "LINE_STRIP": {},
+      "LINE_WIDTH": {},
+      "LINK_STATUS": {},
+      "LOW_FLOAT": {},
+      "LOW_INT": {},
+      "LUMINANCE": {},
+      "LUMINANCE_ALPHA": {},
+      "MAX_COMBINED_TEXTURE_IMAGE_UNITS": {},
+      "MAX_CUBE_MAP_TEXTURE_SIZE": {},
+      "MAX_FRAGMENT_UNIFORM_VECTORS": {},
+      "MAX_RENDERBUFFER_SIZE": {},
+      "MAX_TEXTURE_IMAGE_UNITS": {},
+      "MAX_TEXTURE_SIZE": {},
+      "MAX_VARYING_VECTORS": {},
+      "MAX_VERTEX_ATTRIBS": {},
+      "MAX_VERTEX_TEXTURE_IMAGE_UNITS": {},
+      "MAX_VERTEX_UNIFORM_VECTORS": {},
+      "MAX_VIEWPORT_DIMS": {},
+      "MEDIUM_FLOAT": {},
+      "MEDIUM_INT": {},
+      "MIRRORED_REPEAT": {},
+      "NEAREST": {},
+      "NEAREST_MIPMAP_LINEAR": {},
+      "NEAREST_MIPMAP_NEAREST": {},
+      "NEVER": {},
+      "NICEST": {},
+      "NONE": {},
+      "NOTEQUAL": {},
+      "NO_ERROR": {},
+      "ONE": {},
+      "ONE_MINUS_CONSTANT_ALPHA": {},
+      "ONE_MINUS_CONSTANT_COLOR": {},
+      "ONE_MINUS_DST_ALPHA": {},
+      "ONE_MINUS_DST_COLOR": {},
+      "ONE_MINUS_SRC_ALPHA": {},
+      "ONE_MINUS_SRC_COLOR": {},
+      "OUT_OF_MEMORY": {},
+      "PACK_ALIGNMENT": {},
+      "POINTS": {},
+      "POLYGON_OFFSET_FACTOR": {},
+      "POLYGON_OFFSET_FILL": {},
+      "POLYGON_OFFSET_UNITS": {},
+      "RED_BITS": {},
+      "RENDERBUFFER": {},
+      "RENDERBUFFER_ALPHA_SIZE": {},
+      "RENDERBUFFER_BINDING": {},
+      "RENDERBUFFER_BLUE_SIZE": {},
+      "RENDERBUFFER_DEPTH_SIZE": {},
+      "RENDERBUFFER_GREEN_SIZE": {},
+      "RENDERBUFFER_HEIGHT": {},
+      "RENDERBUFFER_INTERNAL_FORMAT": {},
+      "RENDERBUFFER_RED_SIZE": {},
+      "RENDERBUFFER_STENCIL_SIZE": {},
+      "RENDERBUFFER_WIDTH": {},
+      "RENDERER": {},
+      "REPEAT": {},
+      "REPLACE": {},
+      "RGB": {},
+      "RGB565": {},
+      "RGB5_A1": {},
+      "RGBA": {},
+      "RGBA4": {},
+      "SAMPLER_2D": {},
+      "SAMPLER_CUBE": {},
+      "SAMPLES": {},
+      "SAMPLE_ALPHA_TO_COVERAGE": {},
+      "SAMPLE_BUFFERS": {},
+      "SAMPLE_COVERAGE": {},
+      "SAMPLE_COVERAGE_INVERT": {},
+      "SAMPLE_COVERAGE_VALUE": {},
+      "SCISSOR_BOX": {},
+      "SCISSOR_TEST": {},
+      "SHADER_TYPE": {},
+      "SHADING_LANGUAGE_VERSION": {},
+      "SHORT": {},
+      "SRC_ALPHA": {},
+      "SRC_ALPHA_SATURATE": {},
+      "SRC_COLOR": {},
+      "STATIC_DRAW": {},
+      "STENCIL_ATTACHMENT": {},
+      "STENCIL_BACK_FAIL": {},
+      "STENCIL_BACK_FUNC": {},
+      "STENCIL_BACK_PASS_DEPTH_FAIL": {},
+      "STENCIL_BACK_PASS_DEPTH_PASS": {},
+      "STENCIL_BACK_REF": {},
+      "STENCIL_BACK_VALUE_MASK": {},
+      "STENCIL_BACK_WRITEMASK": {},
+      "STENCIL_BITS": {},
+      "STENCIL_BUFFER_BIT": {},
+      "STENCIL_CLEAR_VALUE": {},
+      "STENCIL_FAIL": {},
+      "STENCIL_FUNC": {},
+      "STENCIL_INDEX": {},
+      "STENCIL_INDEX8": {},
+      "STENCIL_PASS_DEPTH_FAIL": {},
+      "STENCIL_PASS_DEPTH_PASS": {},
+      "STENCIL_REF": {},
+      "STENCIL_TEST": {},
+      "STENCIL_VALUE_MASK": {},
+      "STENCIL_WRITEMASK": {},
+      "STREAM_DRAW": {},
+      "SUBPIXEL_BITS": {},
+      "TEXTURE": {},
+      "TEXTURE0": {},
+      "TEXTURE1": {},
+      "TEXTURE10": {},
+      "TEXTURE11": {},
+      "TEXTURE12": {},
+      "TEXTURE13": {},
+      "TEXTURE14": {},
+      "TEXTURE15": {},
+      "TEXTURE16": {},
+      "TEXTURE17": {},
+      "TEXTURE18": {},
+      "TEXTURE19": {},
+      "TEXTURE2": {},
+      "TEXTURE20": {},
+      "TEXTURE21": {},
+      "TEXTURE22": {},
+      "TEXTURE23": {},
+      "TEXTURE24": {},
+      "TEXTURE25": {},
+      "TEXTURE26": {},
+      "TEXTURE27": {},
+      "TEXTURE28": {},
+      "TEXTURE29": {},
+      "TEXTURE3": {},
+      "TEXTURE30": {},
+      "TEXTURE31": {},
+      "TEXTURE4": {},
+      "TEXTURE5": {},
+      "TEXTURE6": {},
+      "TEXTURE7": {},
+      "TEXTURE8": {},
+      "TEXTURE9": {},
+      "TEXTURE_2D": {},
+      "TEXTURE_BINDING_2D": {},
+      "TEXTURE_BINDING_CUBE_MAP": {},
+      "TEXTURE_CUBE_MAP": {},
+      "TEXTURE_CUBE_MAP_NEGATIVE_X": {},
+      "TEXTURE_CUBE_MAP_NEGATIVE_Y": {},
+      "TEXTURE_CUBE_MAP_NEGATIVE_Z": {},
+      "TEXTURE_CUBE_MAP_POSITIVE_X": {},
+      "TEXTURE_CUBE_MAP_POSITIVE_Y": {},
+      "TEXTURE_CUBE_MAP_POSITIVE_Z": {},
+      "TEXTURE_MAG_FILTER": {},
+      "TEXTURE_MIN_FILTER": {},
+      "TEXTURE_WRAP_S": {},
+      "TEXTURE_WRAP_T": {},
+      "TRIANGLES": {},
+      "TRIANGLE_FAN": {},
+      "TRIANGLE_STRIP": {},
+      "UNPACK_ALIGNMENT": {},
+      "UNPACK_COLORSPACE_CONVERSION_WEBGL": {},
+      "UNPACK_FLIP_Y_WEBGL": {},
+      "UNPACK_PREMULTIPLY_ALPHA_WEBGL": {},
+      "UNSIGNED_BYTE": {},
+      "UNSIGNED_INT": {},
+      "UNSIGNED_SHORT": {},
+      "UNSIGNED_SHORT_4_4_4_4": {},
+      "UNSIGNED_SHORT_5_5_5_1": {},
+      "UNSIGNED_SHORT_5_6_5": {},
+      "VALIDATE_STATUS": {},
+      "VENDOR": {},
+      "VERSION": {},
+      "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING": {},
+      "VERTEX_ATTRIB_ARRAY_ENABLED": {},
+      "VERTEX_ATTRIB_ARRAY_NORMALIZED": {},
+      "VERTEX_ATTRIB_ARRAY_POINTER": {},
+      "VERTEX_ATTRIB_ARRAY_SIZE": {},
+      "VERTEX_ATTRIB_ARRAY_STRIDE": {},
+      "VERTEX_ATTRIB_ARRAY_TYPE": {},
+      "VERTEX_SHADER": {},
+      "VIEWPORT": {},
+      "ZERO": {},
+      "activeTexture": {},
+      "attachShader": {},
+      "bindAttribLocation": {},
+      "bindBuffer": {},
+      "bindFramebuffer": {},
+      "bindRenderbuffer": {},
+      "bindTexture": {},
+      "blendColor": {},
+      "blendEquation": {},
+      "blendEquationSeparate": {},
+      "blendFunc": {},
+      "blendFuncSeparate": {},
+      "bufferData": {},
+      "bufferSubData": {},
+      "checkFramebufferStatus": {},
+      "clear": {},
+      "clearColor": {},
+      "clearDepth": {},
+      "clearStencil": {},
+      "colorMask": {},
+      "compileShader": {},
+      "compressedTexImage2D": {},
+      "compressedTexSubImage2D": {},
+      "copyTexImage2D": {},
+      "copyTexSubImage2D": {},
+      "createBuffer": {},
+      "createFramebuffer": {},
+      "createProgram": {},
+      "createRenderbuffer": {},
+      "createShader": {},
+      "createTexture": {},
+      "cullFace": {},
+      "deleteBuffer": {},
+      "deleteFramebuffer": {},
+      "deleteProgram": {},
+      "deleteRenderbuffer": {},
+      "deleteShader": {},
+      "deleteTexture": {},
+      "depthFunc": {},
+      "depthMask": {},
+      "depthRange": {},
+      "detachShader": {},
+      "disable": {},
+      "disableVertexAttribArray": {},
+      "drawArrays": {},
+      "drawElements": {},
+      "drawingBufferHeight": {},
+      "drawingBufferWidth": {},
+      "enable": {},
+      "enableVertexAttribArray": {},
+      "finish": {},
+      "flush": {},
+      "framebufferRenderbuffer": {},
+      "framebufferTexture2D": {},
+      "frontFace": {},
+      "generateMipmap": {},
+      "getActiveAttrib": {},
+      "getActiveUniform": {},
+      "getAttachedShaders": {},
+      "getAttribLocation": {},
+      "getBufferParameter": {},
+      "getContextAttributes": {},
+      "getError": {},
+      "getExtension": {},
+      "getFramebufferAttachmentParameter": {},
+      "getParameter": {},
+      "getProgramInfoLog": {},
+      "getProgramParameter": {},
+      "getRenderbufferParameter": {},
+      "getShaderInfoLog": {},
+      "getShaderParameter": {},
+      "getShaderPrecisionFormat": {},
+      "getShaderSource": {},
+      "getSupportedExtensions": {},
+      "getTexParameter": {},
+      "getUniform": {},
+      "getUniformLocation": {},
+      "getVertexAttrib": {},
+      "getVertexAttribOffset": {},
+      "hint": {},
+      "isBuffer": {},
+      "isContextLost": {},
+      "isEnabled": {},
+      "isFramebuffer": {},
+      "isProgram": {},
+      "isRenderbuffer": {},
+      "isShader": {},
+      "isTexture": {},
+      "lineWidth": {},
+      "linkProgram": {},
+      "pixelStorei": {},
+      "polygonOffset": {},
+      "readPixels": {},
+      "releaseShaderCompiler": {
+        "dart_action": "suppress",
+        "support_level": "nonstandard"
+      },
+      "renderbufferStorage": {},
+      "sampleCoverage": {},
+      "scissor": {},
+      "shaderSource": {},
+      "stencilFunc": {},
+      "stencilFuncSeparate": {},
+      "stencilMask": {},
+      "stencilMaskSeparate": {},
+      "stencilOp": {},
+      "stencilOpSeparate": {},
+      "texImage2D": {},
+      "texParameterf": {},
+      "texParameteri": {},
+      "texSubImage2D": {},
+      "uniform1f": {},
+      "uniform1fv": {},
+      "uniform1i": {},
+      "uniform1iv": {},
+      "uniform2f": {},
+      "uniform2fv": {},
+      "uniform2i": {},
+      "uniform2iv": {},
+      "uniform3f": {},
+      "uniform3fv": {},
+      "uniform3i": {},
+      "uniform3iv": {},
+      "uniform4f": {},
+      "uniform4fv": {},
+      "uniform4i": {},
+      "uniform4iv": {},
+      "uniformMatrix2fv": {},
+      "uniformMatrix3fv": {},
+      "uniformMatrix4fv": {},
+      "useProgram": {},
+      "validateProgram": {},
+      "vertexAttrib1f": {},
+      "vertexAttrib1fv": {},
+      "vertexAttrib2f": {},
+      "vertexAttrib2fv": {},
+      "vertexAttrib3f": {},
+      "vertexAttrib3fv": {},
+      "vertexAttrib4f": {},
+      "vertexAttrib4fv": {},
+      "vertexAttribPointer": {},
+      "viewport": {}
+    },
+    "support_level": "stable"
+  },
+  "WebGLShader": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.8",
+    "members": {},
+    "support_level": "stable"
+  },
+  "WebGLShaderPrecisionFormat": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.12",
+    "members": {
+      "precision": {},
+      "rangeMax": {},
+      "rangeMin": {}
+    },
+    "support_level": "stable"
+  },
+  "WebGLTexture": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.9",
+    "members": {},
+    "support_level": "stable"
+  },
+  "WebGLUniformLocation": {
+    "comment": "http://www.khronos.org/registry/webgl/specs/latest/#5.10",
+    "members": {},
+    "support_level": "stable"
+  },
+  "WebGLVertexArrayObjectOES": {
+    "comment": "http://www.khronos.org/registry/webgl/extensions/OES_vertex_array_object/",
+    "dart_action": "experimental",
+    "members": {},
+    "support_level": "experimental"
+  },
+  "WebKitAnimationEvent": {
+    "comment": "http://www.w3.org/TR/css3-animations/#AnimationEvent-interface",
+    "dart_action": "suppress",
+    "members": {
+      "animationName": {},
+      "elapsedTime": {}
+    },
+    "support_level": "deprecated"
+  },
+  "WebKitCSSFilterRule": {
+    "comment": "http://www.w3.org/TR/filter-effects/",
+    "members": {
+      "style": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebKitCSSFilterValue": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "CSS_FILTER_BLUR": {},
+      "CSS_FILTER_BRIGHTNESS": {},
+      "CSS_FILTER_CONTRAST": {},
+      "CSS_FILTER_CUSTOM": {},
+      "CSS_FILTER_DROP_SHADOW": {},
+      "CSS_FILTER_GRAYSCALE": {},
+      "CSS_FILTER_HUE_ROTATE": {},
+      "CSS_FILTER_INVERT": {},
+      "CSS_FILTER_OPACITY": {},
+      "CSS_FILTER_REFERENCE": {},
+      "CSS_FILTER_SATURATE": {},
+      "CSS_FILTER_SEPIA": {},
+      "operationType": {}
+    },
+    "support_level": "deprecated"
+  },
+  "WebKitCSSKeyframeRule": {
+    "comment": "http://www.w3.org/TR/css3-animations/#CSSKeyframeRule-interface",
+    "members": {
+      "keyText": {},
+      "style": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebKitCSSKeyframesRule": {
+    "comment": "http://www.w3.org/TR/css3-animations/#csskeyframesrule",
+    "members": {
+      "cssRules": {},
+      "deleteRule": {},
+      "findRule": {},
+      "insertRule": {},
+      "name": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebKitCSSMatrix": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "WebKitCSSMatrix": {},
+      "a": {},
+      "b": {},
+      "c": {},
+      "d": {},
+      "e": {},
+      "f": {},
+      "inverse": {},
+      "m11": {},
+      "m12": {},
+      "m13": {},
+      "m14": {},
+      "m21": {},
+      "m22": {},
+      "m23": {},
+      "m24": {},
+      "m31": {},
+      "m32": {},
+      "m33": {},
+      "m34": {},
+      "m41": {},
+      "m42": {},
+      "m43": {},
+      "m44": {},
+      "multiply": {},
+      "rotate": {},
+      "rotateAxisAngle": {},
+      "scale": {},
+      "setMatrixValue": {},
+      "skewX": {},
+      "skewY": {},
+      "toString": {},
+      "translate": {}
+    },
+    "support_level": "deprecated"
+  },
+  "WebKitCSSMixFunctionValue": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {},
+    "support_level": "deprecated"
+  },
+  "WebKitCSSRegionRule": {
+    "comment": "http://dev.w3.org/csswg/css-regions/#region-style-rule-interface",
+    "members": {
+      "cssRules": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebKitCSSTransformValue": {
+    "comment": "http://dev.w3.org/csswg/cssom/",
+    "dart_action": "suppress",
+    "members": {
+      "CSS_MATRIX": {},
+      "CSS_MATRIX3D": {},
+      "CSS_PERSPECTIVE": {},
+      "CSS_ROTATE": {},
+      "CSS_ROTATE3D": {},
+      "CSS_ROTATEX": {},
+      "CSS_ROTATEY": {},
+      "CSS_ROTATEZ": {},
+      "CSS_SCALE": {},
+      "CSS_SCALE3D": {},
+      "CSS_SCALEX": {},
+      "CSS_SCALEY": {},
+      "CSS_SCALEZ": {},
+      "CSS_SKEW": {},
+      "CSS_SKEWX": {},
+      "CSS_SKEWY": {},
+      "CSS_TRANSLATE": {},
+      "CSS_TRANSLATE3D": {},
+      "CSS_TRANSLATEX": {},
+      "CSS_TRANSLATEY": {},
+      "CSS_TRANSLATEZ": {},
+      "operationType": {}
+    },
+    "support_level": "deprecated"
+  },
+  "WebKitNamedFlow": {
+    "comment": "http://www.w3.org/TR/css3-regions/#dom-named-flow-collection",
+    "dart_action": "suppress",
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "firstEmptyRegionIndex": {},
+      "getContent": {},
+      "getRegions": {},
+      "getRegionsByContent": {},
+      "name": {},
+      "overset": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "WebKitNamedFlowCollection": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "WebKitPoint": {
+    "comment": "http://developer.apple.com/library/safari/#documentation/DataManagement/Reference/DOMWindowAdditionsReference/DOMWindowAdditions/DOMWindowAdditions.html",
+    "dart_action": "private",
+    "members": {
+      "x": {},
+      "y": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "WebKitTransitionEvent": {
+    "comment": "http://dev.w3.org/csswg/css-transitions/#Events-TransitionEvent",
+    "dart_action": "suppress",
+    "members": {
+      "elapsedTime": {},
+      "propertyName": {},
+      "pseudoElement": {}
+    },
+    "support_level": "deprecated"
+  },
+  "WebSocket": {
+    "comment": "http://www.w3.org/TR/websockets/#the-websocket-interface",
+    "dart_action": "unstable",
+    "members": {
+      "CLOSED": {},
+      "CLOSING": {},
+      "CONNECTING": {},
+      "OPEN": {},
+      "URL": {
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "WebSocket": {},
+      "addEventListener": {},
+      "binaryType": {},
+      "bufferedAmount": {},
+      "close": {},
+      "dispatchEvent": {},
+      "extensions": {},
+      "onclose": {},
+      "onerror": {},
+      "onmessage": {},
+      "onopen": {},
+      "protocol": {},
+      "readyState": {},
+      "removeEventListener": {},
+      "send": {},
+      "url": {}
+    },
+    "support_level": "stable"
+  },
+  "WheelEvent": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents",
+    "members": {
+      "DOM_DELTA_LINE": {},
+      "DOM_DELTA_PAGE": {},
+      "DOM_DELTA_PIXEL": {},
+      "deltaMode": {},
+      "initWebKitWheelEvent": {
+        "dart_action": "default",
+        "support_level": "experimental"
+      },
+      "webkitDirectionInvertedFromDevice": {
+        "support_level": "experimental"
+      },
+      "wheelDelta": {
+        "support_level": "nonstandard"
+      },
+      "wheelDeltaX": {
+        "support_level": "nonstandard"
+      },
+      "wheelDeltaY": {
+        "support_level": "nonstandard"
+      }
+    },
+    "support_level": "stable"
+  },
+  "Window": {
+    "members": {},
+    "support_level": "untriaged"
+  },
+  "Worker": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#worker",
+    "dart_action": "experimental",
+    "members": {
+      "Worker": {},
+      "onmessage": {},
+      "postMessage": {},
+      "terminate": {}
+    },
+    "support_level": "stable"
+  },
+  "WorkerContext": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#WorkerGlobalScope-partial",
+    "dart_action": "experimental",
+    "members": {
+      "PERSISTENT": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      },
+      "TEMPORARY": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      },
+      "addEventListener": {},
+      "clearInterval": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#windowtimers"
+      },
+      "clearTimeout": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#windowtimers"
+      },
+      "close": {},
+      "dispatchEvent": {},
+      "importScripts": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#WorkerGlobalScope-partial"
+      },
+      "indexedDB": {
+        "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBEnvironment"
+      },
+      "location": {},
+      "navigator": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#WorkerGlobalScope-partial"
+      },
+      "onerror": {},
+      "openDatabase": {
+        "comment": "http://www.w3.org/TR/webdatabase/",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "openDatabaseSync": {
+        "comment": "http://www.w3.org/TR/webdatabase/",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "removeEventListener": {},
+      "self": {},
+      "setInterval": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#windowtimers"
+      },
+      "setTimeout": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#windowtimers"
+      },
+      "webkitIndexedDB": {
+        "comment": "http://www.w3.org/TR/IndexedDB/#idl-def-IDBEnvironment",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitNotifications": {
+        "comment": "https://plus.sandbox.google.com/u/0/+GoogleChromeDevelopers/posts/8vWo8hq4pDm?e=Showroom",
+        "dart_action": "suppress",
+        "support_level": "deprecated"
+      },
+      "webkitRequestFileSystem": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      },
+      "webkitRequestFileSystemSync": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystemSync",
+        "support_level": "experimental"
+      },
+      "webkitResolveLocalFileSystemSyncURL": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystemSync",
+        "support_level": "experimental"
+      },
+      "webkitResolveLocalFileSystemURL": {
+        "comment": "http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem",
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "stable"
+  },
+  "WorkerLocation": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerlocation",
+    "dart_action": "default",
+    "members": {
+      "hash": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "host": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "hostname": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "href": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "pathname": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "port": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "protocol": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "search": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      },
+      "toString": {
+        "comment": "http://url.spec.whatwg.org/#urlutils"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "WorkerNavigator": {
+    "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workernavigator",
+    "members": {
+      "appName": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "appVersion": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "onLine": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#navigatoronline"
+      },
+      "platform": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "userAgent": {
+        "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorid"
+      },
+      "webkitPersistentStorage": {
+        "comment": "http://www.w3.org/TR/quota-api/#accessing-storagequota",
+        "support_level": "experimental"
+      },
+      "webkitTemporaryStorage": {
+        "support_level": "experimental"
+      }
+    },
+    "support_level": "experimental"
+  },
+  "XMLHttpRequest": {
+    "comment": "http://xhr.spec.whatwg.org/#interface-xmlhttprequest",
+    "members": {
+      "DONE": {},
+      "HEADERS_RECEIVED": {},
+      "LOADING": {},
+      "OPENED": {},
+      "UNSENT": {},
+      "XMLHttpRequest": {},
+      "abort": {},
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "getAllResponseHeaders": {
+        "dart_action": "unstable"
+      },
+      "getResponseHeader": {
+        "dart_action": "unstable"
+      },
+      "onabort": {},
+      "onerror": {},
+      "onload": {},
+      "onloadend": {},
+      "onloadstart": {},
+      "onprogress": {},
+      "onreadystatechange": {},
+      "open": {},
+      "overrideMimeType": {},
+      "readyState": {},
+      "removeEventListener": {},
+      "response": {},
+      "responseText": {},
+      "responseType": {},
+      "responseXML": {},
+      "send": {},
+      "setRequestHeader": {},
+      "status": {},
+      "statusText": {},
+      "upload": {
+        "dart_action": "unstable"
+      },
+      "withCredentials": {}
+    },
+    "support_level": "stable"
+  },
+  "XMLHttpRequestException": {
+    "comment": "http://www.w3.org/TR/2007/WD-XMLHttpRequest-20070227/#exceptions",
+    "dart_action": "experimental",
+    "members": {
+      "ABORT_ERR": {
+        "support_level": "nonstandard"
+      },
+      "NETWORK_ERR": {},
+      "code": {},
+      "message": {
+        "support_level": "nonstandard"
+      },
+      "name": {
+        "support_level": "nonstandard"
+      },
+      "toString": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "XMLHttpRequestProgressEvent": {
+    "dart_action": "experimental",
+    "members": {
+      "position": {},
+      "totalSize": {}
+    },
+    "support_level": "nonstandard"
+  },
+  "XMLHttpRequestUpload": {
+    "comment": "http://xhr.spec.whatwg.org/#xmlhttprequestupload",
+    "members": {
+      "addEventListener": {},
+      "dispatchEvent": {},
+      "onabort": {},
+      "onerror": {},
+      "onload": {},
+      "onloadend": {},
+      "onloadstart": {},
+      "onprogress": {},
+      "removeEventListener": {}
+    },
+    "support_level": "experimental"
+  },
+  "XMLSerializer": {
+    "comment": "http://domparsing.spec.whatwg.org/#the-xmlserializer-interface",
+    "dart_action": "suppress",
+    "members": {
+      "XMLSerializer": {},
+      "serializeToString": {}
+    },
+    "support_level": "stable"
+  },
+  "XPathEvaluator": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator",
+    "dart_action": "suppress",
+    "members": {
+      "XPathEvaluator": {},
+      "createExpression": {},
+      "createNSResolver": {},
+      "evaluate": {}
+    },
+    "support_level": "experimental"
+  },
+  "XPathException": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathException",
+    "dart_action": "suppress",
+    "members": {
+      "INVALID_EXPRESSION_ERR": {},
+      "TYPE_ERR": {},
+      "code": {},
+      "message": {
+        "support_level": "nonstandard"
+      },
+      "name": {
+        "support_level": "nonstandard"
+      },
+      "toString": {}
+    },
+    "support_level": "experimental"
+  },
+  "XPathExpression": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathExpression",
+    "dart_action": "suppress",
+    "members": {
+      "evaluate": {}
+    },
+    "support_level": "experimental"
+  },
+  "XPathNSResolver": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathNSResolver",
+    "dart_action": "suppress",
+    "members": {
+      "lookupNamespaceURI": {}
+    },
+    "support_level": "experimental"
+  },
+  "XPathResult": {
+    "comment": "http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult",
+    "dart_action": "suppress",
+    "members": {
+      "ANY_TYPE": {},
+      "ANY_UNORDERED_NODE_TYPE": {},
+      "BOOLEAN_TYPE": {},
+      "FIRST_ORDERED_NODE_TYPE": {},
+      "NUMBER_TYPE": {},
+      "ORDERED_NODE_ITERATOR_TYPE": {},
+      "ORDERED_NODE_SNAPSHOT_TYPE": {},
+      "STRING_TYPE": {},
+      "UNORDERED_NODE_ITERATOR_TYPE": {},
+      "UNORDERED_NODE_SNAPSHOT_TYPE": {},
+      "booleanValue": {},
+      "invalidIteratorState": {},
+      "iterateNext": {},
+      "numberValue": {},
+      "resultType": {},
+      "singleNodeValue": {},
+      "snapshotItem": {},
+      "snapshotLength": {},
+      "stringValue": {}
+    },
+    "support_level": "experimental"
+  },
+  "XSLTProcessor": {
+    "dart_action": "suppress",
+    "members": {
+      "XSLTProcessor": {},
+      "clearParameters": {},
+      "getParameter": {},
+      "importStylesheet": {},
+      "removeParameter": {},
+      "reset": {},
+      "setParameter": {},
+      "transformToDocument": {},
+      "transformToFragment": {}
+    },
+    "support_level": "nonstandard"
+  }
+}
\ No newline at end of file
diff --git a/tools/dom/scripts/dartdomgenerator.py b/tools/dom/scripts/dartdomgenerator.py
index 914b7ca..1292920 100755
--- a/tools/dom/scripts/dartdomgenerator.py
+++ b/tools/dom/scripts/dartdomgenerator.py
@@ -16,6 +16,7 @@
 import shutil
 import subprocess
 import sys
+from dartmetadata import DartMetadata
 from generator import TypeRegistry
 from htmleventgenerator import HtmlEventGenerator
 from htmlrenamer import HtmlRenamer
@@ -31,11 +32,13 @@
 _logger = logging.getLogger('dartdomgenerator')
 
 class GeneratorOptions(object):
-  def __init__(self, templates, database, type_registry, renamer):
+  def __init__(self, templates, database, type_registry, renamer,
+      metadata):
     self.templates = templates
     self.database = database
     self.type_registry = type_registry
     self.renamer = renamer
+    self.metadata = metadata;
 
 def LoadDatabase(database_dir, use_database_cache):
   common_database = database.Database(database_dir)
@@ -68,14 +71,18 @@
   emitters = multiemitter.MultiEmitter()
   renamer = HtmlRenamer(webkit_database)
   type_registry = TypeRegistry(webkit_database, renamer)
+  metadata = DartMetadata(
+      os.path.join(current_dir, '..', 'dom.json'),
+      os.path.join(current_dir, '..', 'docs', 'docs.json'))
 
   def RunGenerator(dart_libraries, dart_output_dir,
                    template_loader, backend_factory):
     options = GeneratorOptions(
-        template_loader, webkit_database, type_registry, renamer)
+        template_loader, webkit_database, type_registry, renamer,
+        metadata)
     dart_library_emitter = DartLibraryEmitter(
         emitters, dart_output_dir, dart_libraries)
-    event_generator = HtmlEventGenerator(webkit_database, renamer,
+    event_generator = HtmlEventGenerator(webkit_database, renamer, metadata,
         template_loader)
 
     def generate_interface(interface):
@@ -94,7 +101,8 @@
                                      template_paths,
                                      {'DARTIUM': False, 'DART2JS': True})
     backend_options = GeneratorOptions(
-        template_loader, webkit_database, type_registry, renamer)
+        template_loader, webkit_database, type_registry, renamer,
+        metadata)
     backend_factory = lambda interface:\
         Dart2JSBackend(interface, backend_options)
 
@@ -111,7 +119,8 @@
                                      template_paths,
                                      {'DARTIUM': True, 'DART2JS': False})
     backend_options = GeneratorOptions(
-        template_loader, webkit_database, type_registry, renamer)
+        template_loader, webkit_database, type_registry, renamer,
+        metadata)
     cpp_output_dir = os.path.join(dartium_output_dir, 'cpp')
     cpp_library_emitter = CPPLibraryEmitter(emitters, cpp_output_dir)
     backend_factory = lambda interface:\
@@ -131,6 +140,7 @@
 
   _logger.info('Flush...')
   emitters.Flush()
+  metadata.Flush()
 
   monitored.FinishMonitoring(dart2js_output_dir)
 
diff --git a/tools/dom/scripts/dartmetadata.py b/tools/dom/scripts/dartmetadata.py
new file mode 100644
index 0000000..ddb441c
--- /dev/null
+++ b/tools/dom/scripts/dartmetadata.py
@@ -0,0 +1,568 @@
+#!/usr/bin/python
+# 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.
+
+"""This module provides shared functionality to provide Dart metadata for
+DOM APIs.
+"""
+
+import copy
+import json
+import logging
+import monitored
+import os
+import re
+from generator import ConstantOutputOrder
+from htmlrenamer import renamed_html_members
+
+_logger = logging.getLogger('DartMetadata')
+
+# Annotations to be placed on native members.  The table is indexed by the IDL
+# interface and member name, and by IDL return or field type name.  Both are
+# used to assemble the annotations:
+#
+#   INTERFACE.MEMBER: annotations for member.
+#   +TYPE:            add annotations only if there are member annotations.
+#   -TYPE:            add annotations only if there are no member annotations.
+#   TYPE:             add regardless of member annotations.
+
+_dart2js_annotations = monitored.Dict('dartmetadata._dart2js_annotations', {
+
+    'ArrayBufferView': [
+      "@Creates('TypedData')",
+      "@Returns('TypedData|Null')",
+    ],
+
+    'CanvasRenderingContext2D.createImageData': [
+      "@Creates('ImageData|=Object')",
+    ],
+
+    'CanvasRenderingContext2D.getImageData': [
+      "@Creates('ImageData|=Object')",
+    ],
+
+    'CanvasRenderingContext2D.webkitGetImageDataHD': [
+      "@Creates('ImageData|=Object')",
+    ],
+
+    'CanvasRenderingContext2D.fillStyle': [
+      "@Creates('String|CanvasGradient|CanvasPattern')",
+      "@Returns('String|CanvasGradient|CanvasPattern')",
+    ],
+
+    'CanvasRenderingContext2D.strokeStyle': [
+      "@Creates('String|CanvasGradient|CanvasPattern')",
+      "@Returns('String|CanvasGradient|CanvasPattern')",
+    ],
+
+    # Methods returning Window can return a local window, or a cross-frame
+    # window (=Object) that needs wrapping.
+    'DOMWindow': [
+      "@Creates('Window|=Object')",
+      "@Returns('Window|=Object')",
+    ],
+
+    'DOMWindow.openDatabase': [
+      "@Creates('SqlDatabase')",
+    ],
+
+    # To be in callback with the browser-created Event, we had to have called
+    # addEventListener on the target, so we avoid
+    'Event.currentTarget': [
+      "@Creates('Null')",
+      "@Returns('EventTarget|=Object')",
+    ],
+
+    # Only nodes in the DOM bubble and have target !== currentTarget.
+    'Event.target': [
+      "@Creates('Node')",
+      "@Returns('EventTarget|=Object')",
+    ],
+
+    'MouseEvent.relatedTarget': [
+      "@Creates('Node')",
+      "@Returns('EventTarget|=Object')",
+    ],
+
+    # Touch targets are Elements in a Document, or the Document.
+    'Touch.target': [
+      "@Creates('Element|Document')",
+      "@Returns('Element|Document')",
+    ],
+
+    'FileReader.result': ["@Creates('String|ByteBuffer|Null')"],
+
+    # Rather than have the result of an IDBRequest as a union over all possible
+    # results, we mark the result as instantiating any classes, and mark
+    # each operation with the classes that it could cause to be asynchronously
+    # instantiated.
+    'IDBRequest.result': ["@Creates('Null')"],
+
+    # The source is usually a participant in the operation that generated the
+    # IDBRequest.
+    'IDBRequest.source':  ["@Creates('Null')"],
+
+    'IDBFactory.open': ["@Creates('Database')"],
+    'IDBFactory.webkitGetDatabaseNames': ["@Creates('DomStringList')"],
+
+    'IDBObjectStore.put': ["@_annotation_Creates_IDBKey"],
+    'IDBObjectStore.add': ["@_annotation_Creates_IDBKey"],
+    'IDBObjectStore.get': ["@annotation_Creates_SerializedScriptValue"],
+    'IDBObjectStore.openCursor': ["@Creates('Cursor')"],
+
+    'IDBIndex.get': ["@annotation_Creates_SerializedScriptValue"],
+    'IDBIndex.getKey': [
+      "@annotation_Creates_SerializedScriptValue",
+      # The source is the object store behind the index.
+      "@Creates('ObjectStore')",
+    ],
+    'IDBIndex.openCursor': ["@Creates('Cursor')"],
+    'IDBIndex.openKeyCursor': ["@Creates('Cursor')"],
+
+    'IDBCursorWithValue.value': [
+      '@annotation_Creates_SerializedScriptValue',
+      '@annotation_Returns_SerializedScriptValue',
+    ],
+
+    'IDBCursor.key': [
+      "@_annotation_Creates_IDBKey",
+      "@_annotation_Returns_IDBKey",
+    ],
+
+    '+IDBRequest': [
+      "@Returns('Request')",
+      "@Creates('Request')",
+    ],
+
+    '+IDBOpenDBRequest': [
+      "@Returns('Request')",
+      "@Creates('Request')",
+    ],
+
+    'MessageEvent.ports': ["@Creates('=List')"],
+
+    'MessageEvent.data': [
+      "@annotation_Creates_SerializedScriptValue",
+      "@annotation_Returns_SerializedScriptValue",
+    ],
+    'PopStateEvent.state': [
+      "@annotation_Creates_SerializedScriptValue",
+      "@annotation_Returns_SerializedScriptValue",
+    ],
+    'SerializedScriptValue': [
+      "@annotation_Creates_SerializedScriptValue",
+      "@annotation_Returns_SerializedScriptValue",
+    ],
+
+    'SQLResultSetRowList.item': ["@Creates('=Object')"],
+
+    'WebGLRenderingContext.getParameter': [
+      # Taken from http://www.khronos.org/registry/webgl/specs/latest/
+      # Section 5.14.3 Setting and getting state
+      "@Creates('Null|num|String|bool|=List|Float32List|Int32List|Uint32List"
+                "|Framebuffer|Renderbuffer|Texture')",
+      "@Returns('Null|num|String|bool|=List|Float32List|Int32List|Uint32List"
+                "|Framebuffer|Renderbuffer|Texture')",
+    ],
+
+    'XMLHttpRequest.response': [
+      "@Creates('ByteBuffer|Blob|Document|=Object|=List|String|num')",
+    ],
+}, dart2jsOnly=True)
+
+_indexed_db_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@SupportedBrowser(SupportedBrowser.FIREFOX, '15')",
+  "@SupportedBrowser(SupportedBrowser.IE, '10')",
+  "@Experimental",
+]
+
+_file_system_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@Experimental",
+]
+
+_all_but_ie9_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+  "@SupportedBrowser(SupportedBrowser.IE, '10')",
+  "@SupportedBrowser(SupportedBrowser.SAFARI)",
+]
+
+_history_annotations = _all_but_ie9_annotations
+
+_no_ie_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+  "@SupportedBrowser(SupportedBrowser.SAFARI)",
+]
+
+_performance_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+  "@SupportedBrowser(SupportedBrowser.IE)",
+]
+
+_rtc_annotations = [ # Note: Firefox nightly builds also support this.
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@Experimental",
+]
+
+_shadow_dom_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME, '26')",
+  "@Experimental",
+]
+
+_speech_recognition_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME, '25')",
+  "@Experimental",
+]
+
+_svg_annotations = _all_but_ie9_annotations;
+
+_web_sql_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  "@Experimental",
+]
+
+_webgl_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+  "@Experimental",
+]
+
+_webkit_experimental_annotations = [
+  "@SupportedBrowser(SupportedBrowser.CHROME)",
+  "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  "@Experimental",
+]
+
+# Annotations to be placed on generated members.
+# The table is indexed as:
+#   INTERFACE:     annotations to be added to the interface declaration
+#   INTERFACE.MEMBER: annotation to be added to the member declaration
+_annotations = monitored.Dict('dartmetadata._annotations', {
+  'CSSHostRule': _shadow_dom_annotations,
+  'Crypto': _webkit_experimental_annotations,
+  'Database': _web_sql_annotations,
+  'DatabaseSync': _web_sql_annotations,
+  'DOMApplicationCache': [
+    "@SupportedBrowser(SupportedBrowser.CHROME)",
+    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+    "@SupportedBrowser(SupportedBrowser.IE, '10')",
+    "@SupportedBrowser(SupportedBrowser.OPERA)",
+    "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  ],
+  'DOMFileSystem': _file_system_annotations,
+  'DOMFileSystemSync': _file_system_annotations,
+  'DOMWindow.webkitConvertPointFromNodeToPage': _webkit_experimental_annotations,
+  'DOMWindow.webkitConvertPointFromPageToNode': _webkit_experimental_annotations,
+  'DOMWindow.indexedDB': _indexed_db_annotations,
+  'DOMWindow.openDatabase': _web_sql_annotations,
+  'DOMWindow.performance': _performance_annotations,
+  'DOMWindow.webkitNotifications': _webkit_experimental_annotations,
+  'DOMWindow.webkitRequestFileSystem': _file_system_annotations,
+  'DOMWindow.webkitResolveLocalFileSystemURL': _file_system_annotations,
+  'Element.onwebkitTransitionEnd': _all_but_ie9_annotations,
+  # Placeholder to add experimental flag, implementation for this is
+  # pending in a separate CL.
+  'Element.webkitMatchesSelector': ['@Experimental()'],
+  'Element.webkitCreateShadowRoot': [
+    "@SupportedBrowser(SupportedBrowser.CHROME, '25')",
+    "@Experimental",
+  ],
+  'Event.clipboardData': _webkit_experimental_annotations,
+  'FormData': _all_but_ie9_annotations,
+  'HashChangeEvent': [
+    "@SupportedBrowser(SupportedBrowser.CHROME)",
+    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+    "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  ],
+  'History.pushState': _history_annotations,
+  'History.replaceState': _history_annotations,
+  'HTMLContentElement': _shadow_dom_annotations,
+  'HTMLDataListElement': _all_but_ie9_annotations,
+  'HTMLDetailsElement': _webkit_experimental_annotations,
+  'HTMLEmbedElement': [
+    "@SupportedBrowser(SupportedBrowser.CHROME)",
+    "@SupportedBrowser(SupportedBrowser.IE)",
+    "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  ],
+  'HTMLKeygenElement': _webkit_experimental_annotations,
+  'HTMLMeterElement': _no_ie_annotations,
+  'HTMLObjectElement': [
+    "@SupportedBrowser(SupportedBrowser.CHROME)",
+    "@SupportedBrowser(SupportedBrowser.IE)",
+    "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  ],
+  'HTMLOutputElement': _no_ie_annotations,
+  'HTMLProgressElement': _all_but_ie9_annotations,
+  'HTMLShadowElement': _shadow_dom_annotations,
+  'HTMLTrackElement': [
+    "@SupportedBrowser(SupportedBrowser.CHROME)",
+    "@SupportedBrowser(SupportedBrowser.IE, '10')",
+    "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  ],
+  'IDBFactory': _indexed_db_annotations,
+  'IDBDatabase': _indexed_db_annotations,
+  'LocalMediaStream': _rtc_annotations,
+  'MediaStream': _rtc_annotations,
+  'MediaStreamEvent': _rtc_annotations,
+  'MediaStreamTrack': _rtc_annotations,
+  'MediaStreamTrackEvent': _rtc_annotations,
+  'MutationObserver': [
+    "@SupportedBrowser(SupportedBrowser.CHROME)",
+    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+    "@SupportedBrowser(SupportedBrowser.SAFARI)",
+    "@Experimental",
+  ],
+  'NotificationCenter': _webkit_experimental_annotations,
+  'Performance': _performance_annotations,
+  'PopStateEvent': _history_annotations,
+  'RTCIceCandidate': _rtc_annotations,
+  'RTCPeerConnection': _rtc_annotations,
+  'RTCSessionDescription': _rtc_annotations,
+  'ShadowRoot': _shadow_dom_annotations,
+  'SpeechRecognition': _speech_recognition_annotations,
+  'SpeechRecognitionAlternative': _speech_recognition_annotations,
+  'SpeechRecognitionError': _speech_recognition_annotations,
+  'SpeechRecognitionEvent': _speech_recognition_annotations,
+  'SpeechRecognitionResult': _speech_recognition_annotations,
+  'SVGAltGlyphElement': _no_ie_annotations,
+  'SVGAnimateElement': _no_ie_annotations,
+  'SVGAnimateMotionElement': _no_ie_annotations,
+  'SVGAnimateTransformElement': _no_ie_annotations,
+  'SVGFEBlendElement': _svg_annotations,
+  'SVGFEColorMatrixElement': _svg_annotations,
+  'SVGFEComponentTransferElement': _svg_annotations,
+  'SVGFEConvolveMatrixElement': _svg_annotations,
+  'SVGFEDiffuseLightingElement': _svg_annotations,
+  'SVGFEDisplacementMapElement': _svg_annotations,
+  'SVGFEDistantLightElement': _svg_annotations,
+  'SVGFEFloodElement': _svg_annotations,
+  'SVGFEFuncAElement': _svg_annotations,
+  'SVGFEFuncBElement': _svg_annotations,
+  'SVGFEFuncGElement': _svg_annotations,
+  'SVGFEFuncRElement': _svg_annotations,
+  'SVGFEGaussianBlurElement': _svg_annotations,
+  'SVGFEImageElement': _svg_annotations,
+  'SVGFEMergeElement': _svg_annotations,
+  'SVGFEMergeNodeElement': _svg_annotations,
+  'SVGFEMorphologyElement': _svg_annotations,
+  'SVGFEOffsetElement': _svg_annotations,
+  'SVGFEPointLightElement': _svg_annotations,
+  'SVGFESpecularLightingElement': _svg_annotations,
+  'SVGFESpotLightElement': _svg_annotations,
+  'SVGFETileElement': _svg_annotations,
+  'SVGFETurbulenceElement': _svg_annotations,
+  'SVGFilterElement': _svg_annotations,
+  'SVGForeignObjectElement': _no_ie_annotations,
+  'SVGSetElement': _no_ie_annotations,
+  'SQLTransaction': _web_sql_annotations,
+  'SQLTransactionSync': _web_sql_annotations,
+  'WebGLRenderingContext': _webgl_annotations,
+  'WebKitCSSMatrix': _webkit_experimental_annotations,
+  'WebKitPoint': _webkit_experimental_annotations,
+  'WebSocket': _all_but_ie9_annotations,
+  'Worker': _all_but_ie9_annotations,
+  'XMLHttpRequest.onloadend': _all_but_ie9_annotations,
+  'XMLHttpRequest.onprogress': _all_but_ie9_annotations,
+  'XMLHttpRequest.response': _all_but_ie9_annotations,
+  'XMLHttpRequestProgressEvent': _webkit_experimental_annotations,
+  'XSLTProcessor': [
+    "@SupportedBrowser(SupportedBrowser.CHROME)",
+    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
+    "@SupportedBrowser(SupportedBrowser.SAFARI)",
+  ],
+})
+
+
+class DartMetadata(object):
+  def __init__(self, api_status_path, doc_comments_path):
+    self._api_status_path = api_status_path
+    status_file = open(self._api_status_path, 'r+')
+    self._types = json.load(status_file)
+    status_file.close()
+
+    comments_file = open(doc_comments_path, 'r+')
+    self._doc_comments = json.load(comments_file)
+    comments_file.close()
+
+  def GetFormattedMetadata(self, library_name, interface_name, member_id=None,
+      indentation=''):
+    """ Gets all comments and annotations for an interface or member.
+    """
+    return self.FormatMetadata(
+        self.GetMetadata(library_name, interface_name, member_id),
+        indentation)
+
+  def GetMetadata(self, library_name, interface_name,
+        member_name=None, source_member_name=None):
+    """ Gets all comments and annotations for an interface or member.
+
+    Args:
+      source_member_name: If the member is dependent on a different member
+        then this is used to apply the support annotations from the other
+        member.
+    """
+    annotations = self._GetComments(library_name, interface_name, member_name)
+    annotations = annotations + self._GetCommonAnnotations(
+        interface_name, member_name, source_member_name)
+
+    return annotations
+
+  def GetDart2JSMetadata(self, idl_type, library_name,
+      interface_name, member_name,):
+    """ Gets all annotations for Dart2JS members- including annotations for
+    both dart2js and dartium.
+    """
+    annotations = self.GetMetadata(library_name, interface_name, member_name)
+
+    ann2 = self._GetDart2JSSpecificAnnotations(idl_type, interface_name, member_name)
+    if ann2:
+      if annotations:
+        annotations.extend(ann2)
+      else:
+        annotations = ann2
+    return annotations
+
+  def _GetCommonAnnotations(self, interface_name, member_name=None,
+      source_member_name=None):
+    if member_name:
+      key = '%s.%s' % (interface_name, member_name)
+    else:
+      key = interface_name
+
+    annotations = ["@DomName('" + key + "')"]
+
+    # Only add this for members, so we don't add DocsEditable to templated
+    # classes (they get it from the default class template)
+    if member_name:
+      annotations.append('@DocsEditable');
+
+    if key in _annotations:
+      annotations.extend(_annotations[key])
+
+    if (member_name and member_name.startswith('webkit') and
+        key not in renamed_html_members):
+      annotations.extend(_webkit_experimental_annotations)
+
+    if source_member_name:
+      member_name = source_member_name
+
+    # TODO(blois): Emit support level annotations
+    self._GetSupportLevelAnnotation(interface_name, member_name)
+
+    return annotations
+
+  def _GetComments(self, library_name, interface_name, member_name=None):
+    """ Gets all comments for the interface or member and returns a list. """
+
+    # Add documentation from JSON.
+    comments = []
+    library_name = 'dart.dom.%s' % library_name
+    if library_name in self._doc_comments:
+      library_info = self._doc_comments[library_name]
+      if interface_name in library_info:
+        interface_info = library_info[interface_name]
+        if member_name:
+          if 'members' in interface_info and member_name in interface_info['members']:
+            comments = interface_info['members'][member_name]
+        elif 'comment' in interface_info:
+          comments = interface_info['comment']
+
+    if comments:
+      comments = ['\n'.join(comments)]
+
+    return comments
+
+
+  def AnyConversionAnnotations(self, idl_type, interface_name, member_name):
+    if (_annotations.get('%s.%s' % (interface_name, member_name)) or
+        self._GetDart2JSSpecificAnnotations(idl_type, interface_name, member_name)):
+      return True
+    else:
+      return False
+
+  def FormatMetadata(self, metadata, indentation):
+    if metadata:
+      newline = '\n%s' % indentation
+      result = newline.join(metadata) + newline
+      return result
+    return ''
+
+  def _GetDart2JSSpecificAnnotations(self, idl_type, interface_name, member_name):
+    """ Finds dart2js-specific annotations. This does not include ones shared with
+    dartium.
+    """
+    ann1 = _dart2js_annotations.get("%s.%s" % (interface_name, member_name))
+    if ann1:
+      ann2 = _dart2js_annotations.get('+' + idl_type)
+      if ann2:
+        return ann2 + ann1
+      ann2 = _dart2js_annotations.get(idl_type)
+      if ann2:
+        return ann2 + ann1
+      return ann1
+
+    ann2 = _dart2js_annotations.get('-' + idl_type)
+    if ann2:
+      return ann2
+    ann2 = _dart2js_annotations.get(idl_type)
+    return ann2
+
+  def _GetSupportLevel(self, interface_id, member_id=None):
+    """ Looks up the interface or member in the DOM status list and returns the
+    support level for it.
+    """
+    if interface_id in self._types:
+      type_info = self._types[interface_id]
+    else:
+      type_info = {
+        'members': {},
+        'support_level': 'untriaged',
+      }
+      self._types[interface_id] = type_info
+
+    if not member_id:
+      return type_info.get('support_level')
+
+    members = type_info['members']
+
+    if member_id in members:
+      member_info = members[member_id]
+    else:
+      if member_id == interface_id:
+        member_info = {}
+      else:
+        member_info = {'support_level': 'untriaged'}
+      members[member_id] = member_info
+
+    support_level = member_info.get('support_level')
+    # If unset then it inherits from the type.
+    if not support_level:
+      support_level = type_info.get('support_level')
+    return support_level
+
+  def _GetSupportLevelAnnotation(self, interface_id, member_id=None):
+    support_level = self._GetSupportLevel(interface_id, member_id)
+
+    if support_level == 'untriaged':
+      return '@Experimental'
+    elif support_level == 'experimental':
+      return '@Experimental'
+    elif support_level == 'nonstandard':
+      return '@Experimental'
+    elif support_level == 'stable':
+      return
+    elif support_level == 'deprecated':
+      return '@Deprecated'
+    else:
+      _logger.warn('Unknown support_level - %s:%s' % (interface.id, member_id))
+
+  def Flush(self):
+    json_file = open(self._api_status_path, 'w+')
+    json.dump(self._types, json_file, indent=2, separators=(',', ': '), sort_keys=True)
+    json_file.close()
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 4ace8f6..c36ec9c 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -14,11 +14,6 @@
 from htmlrenamer import html_interface_renames, renamed_html_members, \
      typed_array_renames
 
-# Set up json file for retrieving comments.
-_current_dir = os.path.dirname(__file__)
-_json_path = os.path.join(_current_dir, '..', 'docs', 'docs.json')
-_dom_json = json.load(open(_json_path))
-
 _pure_interfaces = monitored.Set('generator._pure_interfaces', [
     # TODO(sra): DOMStringMap should be a class implementing Map<String,String>.
     'DOMStringMap',
@@ -532,467 +527,6 @@
           table.get('%s %s' % (idl_type, direction)))
   return None
 
-# ------------------------------------------------------------------------------
-
-# Annotations to be placed on native members.  The table is indexed by the IDL
-# interface and member name, and by IDL return or field type name.  Both are
-# used to assemble the annotations:
-#
-#   INTERFACE.MEMBER: annotations for member.
-#   +TYPE:            add annotations only if there are member annotations.
-#   -TYPE:            add annotations only if there are no member annotations.
-#   TYPE:             add regardless of member annotations.
-
-dart2js_annotations = monitored.Dict('generator.dart2js_annotations', {
-
-    'ArrayBufferView': [
-      "@Creates('TypedData')",
-      "@Returns('TypedData|Null')",
-    ],
-
-    'CanvasRenderingContext2D.createImageData': [
-      "@Creates('ImageData|=Object')",
-    ],
-
-    'CanvasRenderingContext2D.getImageData': [
-      "@Creates('ImageData|=Object')",
-    ],
-
-    'CanvasRenderingContext2D.webkitGetImageDataHD': [
-      "@Creates('ImageData|=Object')",
-    ],
-
-    'CanvasRenderingContext2D.fillStyle': [
-      "@Creates('String|CanvasGradient|CanvasPattern')",
-      "@Returns('String|CanvasGradient|CanvasPattern')",
-    ],
-
-    'CanvasRenderingContext2D.strokeStyle': [
-      "@Creates('String|CanvasGradient|CanvasPattern')",
-      "@Returns('String|CanvasGradient|CanvasPattern')",
-    ],
-
-    # Methods returning Window can return a local window, or a cross-frame
-    # window (=Object) that needs wrapping.
-    'DOMWindow': [
-      "@Creates('Window|=Object')",
-      "@Returns('Window|=Object')",
-    ],
-
-    'DOMWindow.openDatabase': [
-      "@Creates('SqlDatabase')",
-    ],
-
-    # To be in callback with the browser-created Event, we had to have called
-    # addEventListener on the target, so we avoid
-    'Event.currentTarget': [
-      "@Creates('Null')",
-      "@Returns('EventTarget|=Object')",
-    ],
-
-    # Only nodes in the DOM bubble and have target !== currentTarget.
-    'Event.target': [
-      "@Creates('Node')",
-      "@Returns('EventTarget|=Object')",
-    ],
-
-    'MouseEvent.relatedTarget': [
-      "@Creates('Node')",
-      "@Returns('EventTarget|=Object')",
-    ],
-
-    # Touch targets are Elements in a Document, or the Document.
-    'Touch.target': [
-      "@Creates('Element|Document')",
-      "@Returns('Element|Document')",
-    ],
-
-    'FileReader.result': ["@Creates('String|ByteBuffer|Null')"],
-
-    # Rather than have the result of an IDBRequest as a union over all possible
-    # results, we mark the result as instantiating any classes, and mark
-    # each operation with the classes that it could cause to be asynchronously
-    # instantiated.
-    'IDBRequest.result': ["@Creates('Null')"],
-
-    # The source is usually a participant in the operation that generated the
-    # IDBRequest.
-    'IDBRequest.source':  ["@Creates('Null')"],
-
-    'IDBFactory.open': ["@Creates('Database')"],
-    'IDBFactory.webkitGetDatabaseNames': ["@Creates('DomStringList')"],
-
-    'IDBObjectStore.put': ["@_annotation_Creates_IDBKey"],
-    'IDBObjectStore.add': ["@_annotation_Creates_IDBKey"],
-    'IDBObjectStore.get': ["@annotation_Creates_SerializedScriptValue"],
-    'IDBObjectStore.openCursor': ["@Creates('Cursor')"],
-
-    'IDBIndex.get': ["@annotation_Creates_SerializedScriptValue"],
-    'IDBIndex.getKey': [
-      "@annotation_Creates_SerializedScriptValue",
-      # The source is the object store behind the index.
-      "@Creates('ObjectStore')",
-    ],
-    'IDBIndex.openCursor': ["@Creates('Cursor')"],
-    'IDBIndex.openKeyCursor': ["@Creates('Cursor')"],
-
-    'IDBCursorWithValue.value': [
-      '@annotation_Creates_SerializedScriptValue',
-      '@annotation_Returns_SerializedScriptValue',
-    ],
-
-    'IDBCursor.key': [
-      "@_annotation_Creates_IDBKey",
-      "@_annotation_Returns_IDBKey",
-    ],
-
-    '+IDBRequest': [
-      "@Returns('Request')",
-      "@Creates('Request')",
-    ],
-
-    '+IDBOpenDBRequest': [
-      "@Returns('Request')",
-      "@Creates('Request')",
-    ],
-
-    'MessageEvent.ports': ["@Creates('=List')"],
-
-    'MessageEvent.data': [
-      "@annotation_Creates_SerializedScriptValue",
-      "@annotation_Returns_SerializedScriptValue",
-    ],
-    'PopStateEvent.state': [
-      "@annotation_Creates_SerializedScriptValue",
-      "@annotation_Returns_SerializedScriptValue",
-    ],
-    'SerializedScriptValue': [
-      "@annotation_Creates_SerializedScriptValue",
-      "@annotation_Returns_SerializedScriptValue",
-    ],
-
-    'SQLResultSetRowList.item': ["@Creates('=Object')"],
-
-    'WebGLRenderingContext.getParameter': [
-      # Taken from http://www.khronos.org/registry/webgl/specs/latest/
-      # Section 5.14.3 Setting and getting state
-      "@Creates('Null|num|String|bool|=List|Float32List|Int32List|Uint32List"
-                "|Framebuffer|Renderbuffer|Texture')",
-      "@Returns('Null|num|String|bool|=List|Float32List|Int32List|Uint32List"
-                "|Framebuffer|Renderbuffer|Texture')",
-    ],
-
-    'XMLHttpRequest.response': [
-      "@Creates('ByteBuffer|Blob|Document|=Object|=List|String|num')",
-    ],
-}, dart2jsOnly=True)
-
-_indexed_db_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@SupportedBrowser(SupportedBrowser.FIREFOX, '15')",
-  "@SupportedBrowser(SupportedBrowser.IE, '10')",
-  "@Experimental",
-]
-
-_file_system_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@Experimental",
-]
-
-_all_but_ie9_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-  "@SupportedBrowser(SupportedBrowser.IE, '10')",
-  "@SupportedBrowser(SupportedBrowser.SAFARI)",
-]
-
-_history_annotations = _all_but_ie9_annotations
-
-_no_ie_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-  "@SupportedBrowser(SupportedBrowser.SAFARI)",
-]
-
-_performance_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-  "@SupportedBrowser(SupportedBrowser.IE)",
-]
-
-_rtc_annotations = [ # Note: Firefox nightly builds also support this.
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@Experimental",
-]
-
-_shadow_dom_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME, '26')",
-  "@Experimental",
-]
-
-_speech_recognition_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME, '25')",
-  "@Experimental",
-]
-
-_svg_annotations = _all_but_ie9_annotations;
-
-_web_sql_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  "@Experimental",
-]
-
-_webgl_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-  "@Experimental",
-]
-
-_webkit_experimental_annotations = [
-  "@SupportedBrowser(SupportedBrowser.CHROME)",
-  "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  "@Experimental",
-]
-
-# Annotations to be placed on generated members.
-# The table is indexed as:
-#   INTERFACE:     annotations to be added to the interface declaration
-#   INTERFACE.MEMBER: annotation to be added to the member declaration
-dart_annotations = monitored.Dict('generator.dart_annotations', {
-  'CSSHostRule': _shadow_dom_annotations,
-  'Crypto': _webkit_experimental_annotations,
-  'Database': _web_sql_annotations,
-  'DatabaseSync': _web_sql_annotations,
-  'DOMApplicationCache': [
-    "@SupportedBrowser(SupportedBrowser.CHROME)",
-    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-    "@SupportedBrowser(SupportedBrowser.IE, '10')",
-    "@SupportedBrowser(SupportedBrowser.OPERA)",
-    "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  ],
-  'DOMFileSystem': _file_system_annotations,
-  'DOMFileSystemSync': _file_system_annotations,
-  'DOMWindow.webkitConvertPointFromNodeToPage': _webkit_experimental_annotations,
-  'DOMWindow.webkitConvertPointFromPageToNode': _webkit_experimental_annotations,
-  'DOMWindow.indexedDB': _indexed_db_annotations,
-  'DOMWindow.openDatabase': _web_sql_annotations,
-  'DOMWindow.performance': _performance_annotations,
-  'DOMWindow.webkitNotifications': _webkit_experimental_annotations,
-  'DOMWindow.webkitRequestFileSystem': _file_system_annotations,
-  'DOMWindow.webkitResolveLocalFileSystemURL': _file_system_annotations,
-  'Element.onwebkitTransitionEnd': _all_but_ie9_annotations,
-  # Placeholder to add experimental flag, implementation for this is
-  # pending in a separate CL.
-  'Element.webkitMatchesSelector': ['@Experimental()'],
-  'Element.webkitCreateShadowRoot': [
-    "@SupportedBrowser(SupportedBrowser.CHROME, '25')",
-    "@Experimental",
-  ],
-  'Event.clipboardData': _webkit_experimental_annotations,
-  'FormData': _all_but_ie9_annotations,
-  'HashChangeEvent': [
-    "@SupportedBrowser(SupportedBrowser.CHROME)",
-    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-    "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  ],
-  'History.pushState': _history_annotations,
-  'History.replaceState': _history_annotations,
-  'HTMLContentElement': _shadow_dom_annotations,
-  'HTMLDataListElement': _all_but_ie9_annotations,
-  'HTMLDetailsElement': _webkit_experimental_annotations,
-  'HTMLEmbedElement': [
-    "@SupportedBrowser(SupportedBrowser.CHROME)",
-    "@SupportedBrowser(SupportedBrowser.IE)",
-    "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  ],
-  'HTMLKeygenElement': _webkit_experimental_annotations,
-  'HTMLMeterElement': _no_ie_annotations,
-  'HTMLObjectElement': [
-    "@SupportedBrowser(SupportedBrowser.CHROME)",
-    "@SupportedBrowser(SupportedBrowser.IE)",
-    "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  ],
-  'HTMLOutputElement': _no_ie_annotations,
-  'HTMLProgressElement': _all_but_ie9_annotations,
-  'HTMLShadowElement': _shadow_dom_annotations,
-  'HTMLTrackElement': [
-    "@SupportedBrowser(SupportedBrowser.CHROME)",
-    "@SupportedBrowser(SupportedBrowser.IE, '10')",
-    "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  ],
-  'IDBFactory': _indexed_db_annotations,
-  'IDBDatabase': _indexed_db_annotations,
-  'LocalMediaStream': _rtc_annotations,
-  'MediaStream': _rtc_annotations,
-  'MediaStreamEvent': _rtc_annotations,
-  'MediaStreamTrack': _rtc_annotations,
-  'MediaStreamTrackEvent': _rtc_annotations,
-  'MutationObserver': [
-    "@SupportedBrowser(SupportedBrowser.CHROME)",
-    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-    "@SupportedBrowser(SupportedBrowser.SAFARI)",
-    "@Experimental",
-  ],
-  'NotificationCenter': _webkit_experimental_annotations,
-  'Performance': _performance_annotations,
-  'PopStateEvent': _history_annotations,
-  'RTCIceCandidate': _rtc_annotations,
-  'RTCPeerConnection': _rtc_annotations,
-  'RTCSessionDescription': _rtc_annotations,
-  'ShadowRoot': _shadow_dom_annotations,
-  'SpeechRecognition': _speech_recognition_annotations,
-  'SpeechRecognitionAlternative': _speech_recognition_annotations,
-  'SpeechRecognitionError': _speech_recognition_annotations,
-  'SpeechRecognitionEvent': _speech_recognition_annotations,
-  'SpeechRecognitionResult': _speech_recognition_annotations,
-  'SVGAltGlyphElement': _no_ie_annotations,
-  'SVGAnimateElement': _no_ie_annotations,
-  'SVGAnimateMotionElement': _no_ie_annotations,
-  'SVGAnimateTransformElement': _no_ie_annotations,
-  'SVGFEBlendElement': _svg_annotations,
-  'SVGFEColorMatrixElement': _svg_annotations,
-  'SVGFEComponentTransferElement': _svg_annotations,
-  'SVGFEConvolveMatrixElement': _svg_annotations,
-  'SVGFEDiffuseLightingElement': _svg_annotations,
-  'SVGFEDisplacementMapElement': _svg_annotations,
-  'SVGFEDistantLightElement': _svg_annotations,
-  'SVGFEFloodElement': _svg_annotations,
-  'SVGFEFuncAElement': _svg_annotations,
-  'SVGFEFuncBElement': _svg_annotations,
-  'SVGFEFuncGElement': _svg_annotations,
-  'SVGFEFuncRElement': _svg_annotations,
-  'SVGFEGaussianBlurElement': _svg_annotations,
-  'SVGFEImageElement': _svg_annotations,
-  'SVGFEMergeElement': _svg_annotations,
-  'SVGFEMergeNodeElement': _svg_annotations,
-  'SVGFEMorphologyElement': _svg_annotations,
-  'SVGFEOffsetElement': _svg_annotations,
-  'SVGFEPointLightElement': _svg_annotations,
-  'SVGFESpecularLightingElement': _svg_annotations,
-  'SVGFESpotLightElement': _svg_annotations,
-  'SVGFETileElement': _svg_annotations,
-  'SVGFETurbulenceElement': _svg_annotations,
-  'SVGFilterElement': _svg_annotations,
-  'SVGForeignObjectElement': _no_ie_annotations,
-  'SVGSetElement': _no_ie_annotations,
-  'SQLTransaction': _web_sql_annotations,
-  'SQLTransactionSync': _web_sql_annotations,
-  'WebGLRenderingContext': _webgl_annotations,
-  'WebKitCSSMatrix': _webkit_experimental_annotations,
-  'WebKitPoint': _webkit_experimental_annotations,
-  'WebSocket': _all_but_ie9_annotations,
-  'Worker': _all_but_ie9_annotations,
-  'XMLHttpRequest.onloadend': _all_but_ie9_annotations,
-  'XMLHttpRequest.onprogress': _all_but_ie9_annotations,
-  'XMLHttpRequest.response': _all_but_ie9_annotations,
-  'XMLHttpRequestProgressEvent': _webkit_experimental_annotations,
-  'XSLTProcessor': [
-    "@SupportedBrowser(SupportedBrowser.CHROME)",
-    "@SupportedBrowser(SupportedBrowser.FIREFOX)",
-    "@SupportedBrowser(SupportedBrowser.SAFARI)",
-  ],
-})
-
-def GetComments(library_name, interface_name, member_name=None):
-  """ Finds all comments for the interface or member and returns a list. """
-
-  # Add documentation from JSON.
-  comments = []
-  library_name = 'dart.dom.%s' % library_name
-  if library_name in _dom_json and interface_name in _dom_json[library_name]:
-    if (member_name and 'members' in _dom_json[library_name][interface_name] and
-        (member_name in _dom_json[library_name][interface_name]['members'])):
-      comments = _dom_json[library_name][interface_name]['members'][member_name]
-    elif (not member_name and 'comment' in
-          _dom_json[library_name][interface_name]):
-      comments = _dom_json[library_name][interface_name]['comment']
-
-  if (len(comments)):
-    comments = ['\n'.join(comments)]
-
-  return comments
-
-def GetAnnotationsAndComments(library_name, interface_name, member_name=None):
-  annotations = GetComments(library_name, interface_name, member_name)
-  annotations = annotations + (FindCommonAnnotations(library_name, interface_name,
-                                                     member_name))
-
-  return annotations
-
-def FindCommonAnnotations(library_name, interface_name, member_name=None):
-  """ Finds annotations common between dart2js and dartium.
-  """
-  if member_name:
-    key = '%s.%s' % (interface_name, member_name)
-  else:
-    key = interface_name
-
-  annotations = ["@DomName('" + key + "')"]
-
-  # Only add this for members, so we don't add DocsEditable to templated classes
-  # (they get it from the default class template)
-  if member_name:
-    annotations.append('@DocsEditable');
-
-  if (dart_annotations.get(key) != None):
-    annotations.extend(dart_annotations.get(key))
-
-  if (member_name and member_name.startswith('webkit') and
-      key not in renamed_html_members):
-    annotations.extend(_webkit_experimental_annotations)
-
-  return annotations
-
-def FindDart2JSAnnotationsAndComments(idl_type, library_name, interface_name,
-                                      member_name,):
-  """ Finds all annotations for Dart2JS members- including annotations for
-  both dart2js and dartium.
-  """
-  annotations = GetAnnotationsAndComments(library_name, interface_name, member_name)
-
-  ann2 = _FindDart2JSSpecificAnnotations(idl_type, interface_name, member_name)
-  if ann2:
-    if annotations:
-      annotations.extend(ann2)
-    else:
-      annotations = ann2
-  return annotations
-
-def AnyConversionAnnotations(idl_type, interface_name, member_name):
-  if (dart_annotations.get('%s.%s' % (interface_name, member_name)) or
-      _FindDart2JSSpecificAnnotations(idl_type, interface_name, member_name)):
-    return True
-  else:
-    return False
-
-def FormatAnnotationsAndComments(annotations, indentation):
-  if annotations:
-
-    newline = '\n%s' % indentation
-    result = newline.join(annotations) + newline
-    return result
-  return ''
-
-def _FindDart2JSSpecificAnnotations(idl_type, interface_name, member_name):
-  """ Finds dart2js-specific annotations. This does not include ones shared with
-  dartium.
-  """
-  ann1 = dart2js_annotations.get("%s.%s" % (interface_name, member_name))
-  if ann1:
-    ann2 = dart2js_annotations.get('+' + idl_type)
-    if ann2:
-      return ann2 + ann1
-    ann2 = dart2js_annotations.get(idl_type)
-    if ann2:
-      return ann2 + ann1
-    return ann1
-
-  ann2 = dart2js_annotations.get('-' + idl_type)
-  if ann2:
-    return ann2
-  ann2 = dart2js_annotations.get(idl_type)
-  return ann2
 
 # ------------------------------------------------------------------------------
 
diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py
index 55dfa25..6ecb34e 100644
--- a/tools/dom/scripts/htmldartgenerator.py
+++ b/tools/dom/scripts/htmldartgenerator.py
@@ -9,8 +9,7 @@
 import emitter
 from generator import AnalyzeOperation, ConstantOutputOrder, \
     DartDomNameOfAttribute, FindMatchingAttribute, IsDartCollectionType, \
-    IsPureInterface, TypeOrNothing, GetAnnotationsAndComments, \
-    FormatAnnotationsAndComments, ConvertToFuture, GetCallbackInfo
+    IsPureInterface, TypeOrNothing, ConvertToFuture, GetCallbackInfo
 from htmlrenamer import convert_to_future_members
 
 # Types that are accessible cross-frame in a limited fashion.
@@ -35,6 +34,7 @@
     self._type_registry = options.type_registry
     self._interface_type_info = self._type_registry.TypeInfo(self._interface.id)
     self._renamer = options.renamer
+    self._metadata = options.metadata
     self._library_name = self._renamer.GetLibraryName(self._interface)
 
   def EmitSupportCheck(self):
@@ -345,9 +345,8 @@
     if self.GenerateCustomFactory(constructor_info):
       return
 
-    annotations = FormatAnnotationsAndComments(
-        GetAnnotationsAndComments(self._library_name, self._interface.id,
-                                  self._interface.id), '  ')
+    metadata = self._metadata.GetFormattedMetadata(
+        self._library_name, self._interface.id, self._interface.id, '  ')
 
     if not factory_constructor_name:
       factory_constructor_name = '_create'
@@ -364,19 +363,19 @@
 
       if not has_optional:
         self._members_emitter.Emit(
-            '\n  $(ANNOTATIONS)'
+            '\n  $(METADATA)'
             'factory $CTOR($PARAMS) => '
             '$FACTORY.$CTOR_FACTORY_NAME($FACTORY_PARAMS);\n',
             CTOR=constructor_info._ConstructorFullName(self._DartType),
             PARAMS=constructor_info.ParametersDeclaration(self._DartType),
             FACTORY=factory_name,
-            ANNOTATIONS=annotations,
+            METADATA=metadata,
             CTOR_FACTORY_NAME=factory_constructor_name,
             FACTORY_PARAMS=factory_parameters)
       else:
         if has_factory_provider:
           dispatcher_emitter = self._members_emitter.Emit(
-              '\n  $(ANNOTATIONS)'
+              '\n  $(METADATA)'
               'factory $CTOR($PARAMS) {\n'
               '$!DISPATCHER'
               '    return $FACTORY._create($FACTORY_PARAMS);\n'
@@ -384,7 +383,7 @@
               CTOR=constructor_info._ConstructorFullName(self._DartType),
               PARAMS=constructor_info.ParametersDeclaration(self._DartType),
               FACTORY=factory_name,
-              ANNOTATIONS=annotations,
+              METADATA=metadata,
               FACTORY_PARAMS=constructor_info.ParametersAsArgumentList())
 
           for index, param_info in enumerate(constructor_info.param_infos):
@@ -398,14 +397,14 @@
                 FACTORY_PARAMS=constructor_info.ParametersAsArgumentList(index))
         else:
           inits = self._members_emitter.Emit(
-              '\n  $(ANNOTATIONS)'
+              '\n  $(METADATA)'
               'factory $CONSTRUCTOR($PARAMS) {\n'
               '    var e = $FACTORY.$CTOR_FACTORY_NAME($FACTORY_PARAMS);\n'
               '$!INITS'
               '    return e;\n'
               '  }\n',
               CONSTRUCTOR=constructor_info._ConstructorFullName(self._DartType),
-              ANNOTATIONS=annotations,
+              METADATA=metadata,
               FACTORY=factory_name,
               CTOR_FACTORY_NAME=factory_constructor_name,
               PARAMS=constructor_info.ParametersDeclaration(self._DartType),
@@ -438,12 +437,12 @@
           constructor_info.idl_args,
           False,
           [info.name for info in constructor_info.param_infos],
-          emitter.Format('$(ANNOTATIONS)$FACTORY_KEYWORD $CTOR($PARAMS)',
+          emitter.Format('$(METADATA)$FACTORY_KEYWORD $CTOR($PARAMS)',
             FACTORY_KEYWORD=('factory' if not custom_factory_ctr else
                 'static %s' % constructor_full_name),
             CTOR=(('' if not custom_factory_ctr else '_factory')
                 + constructor_full_name),
-            ANNOTATIONS=annotations,
+            METADATA=metadata,
             PARAMS=constructor_info.ParametersDeclaration(self._DartType)),
           GenerateCall,
           IsOptional)
@@ -457,13 +456,13 @@
         self._database.GetInterface(info.callback_args[0].type_id))
 
     param_list = info.ParametersAsArgumentList()
-    annotations = ''
+    metadata = ''
     if '_RenamingAnnotation' in dir(self):
-      annotations = (self._RenamingAnnotation(info.declared_name, html_name) +
-          self._Annotations(info.type_name, info.declared_name))
+      metadata = (self._RenamingAnnotation(info.declared_name, html_name) +
+          self._Metadata(info.type_name, info.declared_name))
     self._members_emitter.Emit(
         '\n'
-        '  $ANNOTATIONS$MODIFIERS$TYPE$FUTURE_GENERIC $NAME($PARAMS) {\n'
+        '  $METADATA$MODIFIERS$TYPE$FUTURE_GENERIC $NAME($PARAMS) {\n'
         '    var completer = new Completer$(FUTURE_GENERIC)();\n'
         '    $ORIGINAL_FUNCTION($PARAMS_LIST\n'
         '        $NAMED_PARAM($VARIABLE_NAME) { '
@@ -471,7 +470,7 @@
         '$ERROR_CALLBACK);\n'
         '    return completer.future;\n'
         '  }\n',
-        ANNOTATIONS=annotations,
+        METADATA=metadata,
         MODIFIERS='static ' if info.IsStatic() else '',
         TYPE=self.SecureOutputType(info.type_name),
         NAME=html_name[1:],
diff --git a/tools/dom/scripts/htmleventgenerator.py b/tools/dom/scripts/htmleventgenerator.py
index 59a8955..4c0fac0 100644
--- a/tools/dom/scripts/htmleventgenerator.py
+++ b/tools/dom/scripts/htmleventgenerator.py
@@ -7,7 +7,6 @@
 
 import logging
 import monitored
-from generator import GetAnnotationsAndComments, FormatAnnotationsAndComments
 
 _logger = logging.getLogger('dartgenerator')
 
@@ -215,10 +214,11 @@
 
 class HtmlEventGenerator(object):
 
-  def __init__(self, database, renamer, template_loader):
+  def __init__(self, database, renamer, metadata, template_loader):
     self._event_classes = set()
     self._database = database
     self._renamer = renamer
+    self._metadata = metadata
     self._template_loader = template_loader
 
   def EmitStreamProviders(self, interface, custom_events,
@@ -235,9 +235,9 @@
       if self._GetEventRedirection(interface, html_name, event_type):
         continue
 
-      annotations = FormatAnnotationsAndComments(
-          GetAnnotationsAndComments(library_name, interface.id,
-                                    annotation_name), '  ')
+      annotations = self._metadata.FormatMetadata(
+          self._metadata.GetMetadata(library_name, interface.id,
+              annotation_name, 'on' + dom_name), '  ')
 
       members_emitter.Emit(
           "\n"
@@ -266,9 +266,8 @@
       else:
         provider = html_name + 'Event'
 
-      annotations = FormatAnnotationsAndComments(
-          GetAnnotationsAndComments(library_name, interface.id,
-                                    annotation_name), '  ')
+      annotations = self._metadata.GetFormattedMetadata(
+          library_name, interface.id, annotation_name, '  ')
 
       members_emitter.Emit(
           "\n"
diff --git a/tools/dom/scripts/systemhtml.py b/tools/dom/scripts/systemhtml.py
index d6fa18a..75a4ffe 100644
--- a/tools/dom/scripts/systemhtml.py
+++ b/tools/dom/scripts/systemhtml.py
@@ -426,6 +426,7 @@
     self._backend = backend
     self._interface_type_info = self._type_registry.TypeInfo(self._interface.id)
     self._library_name = self._renamer.GetLibraryName(self._interface)
+    self._metadata = options.metadata
 
   def Generate(self):
     if IsCustomType(self._interface.id):
@@ -518,9 +519,8 @@
     if implements:
       implements_str = ' implements ' + ', '.join(set(implements))
 
-    annotations = FormatAnnotationsAndComments(
-        GetAnnotationsAndComments(self._library_name,
-                                  self._interface.doc_js_name), '')
+    annotations = self._metadata.GetFormattedMetadata(
+        self._library_name, self._interface.doc_js_name, '')
 
     class_modifiers = ''
     if self._renamer.ShouldSuppressInterface(self._interface):
@@ -589,6 +589,7 @@
     self._template_loader = options.templates
     self._type_registry = options.type_registry
     self._renamer = options.renamer
+    self._metadata = options.metadata
     self._interface_type_info = self._type_registry.TypeInfo(self._interface.id)
     self._current_secondary_parent = None
     self._library_name = self._renamer.GetLibraryName(self._interface)
@@ -773,14 +774,14 @@
 
     output_type = self.SecureOutputType(attribute.type.id)
     input_type = self._NarrowInputType(attribute.type.id)
-    annotations = self._Annotations(attribute.type.id, attribute.id)
+    metadata = self._Metadata(attribute.type.id, attribute.id)
     rename = self._RenamingAnnotation(attribute.id, html_name)
     if not read_only:
       self._members_emitter.Emit(
-          '\n  $RENAME$ANNOTATIONS$TYPE $NAME;'
+          '\n  $RENAME$METADATA$TYPE $NAME;'
           '\n',
           RENAME=rename,
-          ANNOTATIONS=annotations,
+          METADATA=metadata,
           NAME=html_name,
           TYPE=output_type)
     else:
@@ -793,7 +794,7 @@
       self._members_emitter.Emit(
           template,
           RENAME=rename,
-          ANNOTATIONS=annotations,
+          ANNOTATIONS=metadata,
           NAME=html_name,
           TYPE=output_type)
 
@@ -844,9 +845,9 @@
     self._members_emitter.Emit(
         '\n  $RETURN_TYPE get $HTML_NAME => $CONVERT(this._get_$(HTML_NAME));'
         "\n  @JSName('$NAME')"
-        '\n  $(ANNOTATIONS)final $NATIVE_TYPE _get_$HTML_NAME;'
+        '\n  $(METADATA)final $NATIVE_TYPE _get_$HTML_NAME;'
         '\n',
-        ANNOTATIONS=self._Annotations(attr.type.id, html_name),
+        METADATA=self._Metadata(attr.type.id, html_name),
         CONVERT=conversion.function_name,
         HTML_NAME=html_name,
         NAME=attr.id,
@@ -893,9 +894,9 @@
   def _AddDirectNativeOperation(self, info, html_name):
     self._members_emitter.Emit(
         '\n'
-        '  $RENAME$ANNOTATIONS$MODIFIERS$TYPE $NAME($PARAMS) native;\n',
+        '  $RENAME$METADATA$MODIFIERS$TYPE $NAME($PARAMS) native;\n',
         RENAME=self._RenamingAnnotation(info.declared_name, html_name),
-        ANNOTATIONS=self._Annotations(info.type_name, info.declared_name),
+        METADATA=self._Metadata(info.type_name, info.declared_name),
         MODIFIERS='static ' if info.IsStatic() else '',
         TYPE=self.SecureOutputType(info.type_name),
         NAME=html_name,
@@ -975,16 +976,16 @@
       call_emitter.Emit(call)
 
       self._members_emitter.Emit(
-          '  $RENAME$ANNOTATIONS$MODIFIERS$TYPE$TARGET($PARAMS) native;\n',
+          '  $RENAME$METADATA$MODIFIERS$TYPE$TARGET($PARAMS) native;\n',
           RENAME=self._RenamingAnnotation(info.declared_name, target),
-          ANNOTATIONS=self._Annotations(info.type_name, info.declared_name),
+          METADATA=self._Metadata(info.type_name, info.declared_name),
           MODIFIERS='static ' if info.IsStatic() else '',
           TYPE=TypeOrNothing(native_return_type),
           TARGET=target,
           PARAMS=', '.join(target_parameters))
 
     declaration = '%s%s%s %s(%s)' % (
-        self._Annotations(info.type_name, info.declared_name),
+        self._Metadata(info.type_name, info.declared_name),
         'static ' if info.IsStatic() else '',
         return_type,
         html_name,
@@ -1032,13 +1033,12 @@
       return  "@JSName('%s')\n  " % idl_name
     return ''
 
-  def _Annotations(self, idl_type, idl_member_name, indent='  '):
-    anns = FindDart2JSAnnotationsAndComments(idl_type, self._library_name,
-                                             self._interface.id,
-                                             idl_member_name)
+  def _Metadata(self, idl_type, idl_member_name, indent='  '):
+    anns = self._metadata.GetDart2JSMetadata(
+        idl_type, self._library_name, self._interface.id, idl_member_name)
 
-    if not AnyConversionAnnotations(idl_type, self._interface.id,
-                                  idl_member_name):
+    if not self._metadata.AnyConversionAnnotations(
+        idl_type, self._interface.id, idl_member_name):
       return_type = self.SecureOutputType(idl_type)
       native_type = self._NarrowToImplementationType(idl_type)
       if native_type != return_type:
@@ -1046,7 +1046,7 @@
           "@Returns('%s')" % native_type,
           "@Creates('%s')" % native_type,
         ]
-    return FormatAnnotationsAndComments(anns, indent);
+    return self._metadata.FormatMetadata(anns, indent);
 
   def CustomJSMembers(self):
     return _js_custom_members
diff --git a/tools/dom/scripts/systemnative.py b/tools/dom/scripts/systemnative.py
index fc27037..130c933 100644
--- a/tools/dom/scripts/systemnative.py
+++ b/tools/dom/scripts/systemnative.py
@@ -25,6 +25,7 @@
     self._template_loader = options.templates
     self._type_registry = options.type_registry
     self._interface_type_info = self._type_registry.TypeInfo(self._interface.id)
+    self._metadata = options.metadata
 
   def ImplementsMergedMembers(self):
     # We could not add merged functions to implementation class because
@@ -520,7 +521,7 @@
           overload_name, argument_list)
       cpp_callback_name = self._GenerateNativeBinding(
           overload_name, (0 if operation.is_static else 1) + argument_count,
-          dart_declaration, 'Callback', False)
+          dart_declaration, 'Callback', False, False)
       self._GenerateOperationNativeCallback(operation, operation.arguments[:argument_count], cpp_callback_name)
 
     self._GenerateDispatcherBody(
@@ -817,18 +818,19 @@
         TO_DART_CONVERSION=to_dart_conversion)
 
   def _GenerateNativeBinding(self, idl_name, argument_count, dart_declaration,
-      native_suffix, is_custom):
-    annotations = FormatAnnotationsAndComments(
-        GetAnnotationsAndComments(self._renamer.GetLibraryName(self._interface),
-                                  self._interface.id, idl_name),
-                                  '  ')
+      native_suffix, is_custom, emit_metadata=True):
+    metadata = []
+    if emit_metadata:
+      metadata = self._metadata.GetFormattedMetadata(
+          self._renamer.GetLibraryName(self._interface),
+          self._interface.id, idl_name, '  ')
 
     native_binding = '%s_%s_%s' % (self._interface.id, idl_name, native_suffix)
     self._members_emitter.Emit(
         '\n'
-        '  $ANNOTATIONS$DART_DECLARATION native "$NATIVE_BINDING";\n',
+        '  $METADATA$DART_DECLARATION native "$NATIVE_BINDING";\n',
         DOMINTERFACE=self._interface.id,
-        ANNOTATIONS=annotations,
+        METADATA=metadata,
         DART_DECLARATION=dart_declaration,
         NATIVE_BINDING=native_binding)