Migrate to null safety (#50)

* Support null safety

* update api

* review cleanup
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 50de15e..932dc54 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 4.0.0
+
+- Support null safety.
+
 ## 3.8.3
 
 - Require the latest shelf and remove dead code.
diff --git a/lib/client/sse_client.dart b/lib/client/sse_client.dart
index 00def10..0f1da87 100644
--- a/lib/client/sse_client.dart
+++ b/lib/client/sse_client.dart
@@ -15,7 +15,7 @@
 ///
 /// The client can send any JSON-encodable messages to the server by adding
 /// them to the [sink] and listen to messages from the server on the [stream].
-class SseClient extends StreamChannelMixin<String> {
+class SseClient extends StreamChannelMixin<String?> {
   final _incomingController = StreamController<String>();
 
   final _outgoingController = StreamController<String>();
@@ -26,11 +26,11 @@
 
   int _lastMessageId = -1;
 
-  EventSource _eventSource;
+  late EventSource _eventSource;
 
-  String _serverUrl;
+  late String _serverUrl;
 
-  Timer _errorTimer;
+  Timer? _errorTimer;
 
   /// [serverUrl] is the URL under which the server is listening for
   /// incoming bi-directional SSE connections.
@@ -113,8 +113,8 @@
     close();
   }
 
-  void _onOutgoingMessage(String message) async {
-    String encodedMessage;
+  void _onOutgoingMessage(String? message) async {
+    String? encodedMessage;
     try {
       encodedMessage = jsonEncode(message);
     } on JsonUnsupportedObjectError catch (e) {
diff --git a/lib/src/server/sse_handler.dart b/lib/src/server/sse_handler.dart
index 8dec99e..d8a867e 100644
--- a/lib/src/server/sse_handler.dart
+++ b/lib/src/server/sse_handler.dart
@@ -13,12 +13,12 @@
 import 'package:stream_channel/stream_channel.dart';
 
 // RFC 2616 requires carriage return delimiters.
-String _sseHeaders(String origin) => 'HTTP/1.1 200 OK\r\n'
+String _sseHeaders(String? origin) => 'HTTP/1.1 200 OK\r\n'
     'Content-Type: text/event-stream\r\n'
     'Cache-Control: no-cache\r\n'
     'Connection: keep-alive\r\n'
-    'Access-Control-Allow-Credentials: true\r\n'
-    'Access-Control-Allow-Origin: $origin\r\n'
+    'Access-Control-Allow-Credentials: true\r\n' 
+    "${origin != null ? 'Access-Control-Allow-Origin: $origin\r\n'  : ''}"
     '\r\n\r\n';
 
 class _SseMessage {
@@ -28,7 +28,7 @@
 }
 
 /// A bi-directional SSE connection between server and browser.
-class SseConnection extends StreamChannelMixin<String> {
+class SseConnection extends StreamChannelMixin<String?> {
   /// Incoming messages from the Browser client.
   final _incomingController = StreamController<String>();
 
@@ -38,10 +38,10 @@
   Sink _sink;
 
   /// How long to wait after a connection drops before considering it closed.
-  final Duration _keepAlive;
+  final Duration? _keepAlive;
 
   /// A timer counting down the KeepAlive period (null if hasn't disconnected).
-  Timer _keepAliveTimer;
+  Timer? _keepAliveTimer;
 
   /// Whether this connection is currently in the KeepAlive timeout period.
   bool get isInKeepAlivePeriod => _keepAliveTimer?.isActive ?? false;
@@ -57,7 +57,7 @@
 
   /// Wraps the `_outgoingController.stream` to buffer events to enable keep
   /// alive.
-  StreamQueue _outgoingStreamQueue;
+  late StreamQueue _outgoingStreamQueue;
 
   /// Creates an [SseConnection] for the supplied [_sink].
   ///
@@ -67,7 +67,7 @@
   ///
   /// If [keepAlive] is not supplied, the connection will be closed immediately
   /// after a disconnect.
-  SseConnection(this._sink, {Duration keepAlive}) : _keepAlive = keepAlive {
+  SseConnection(this._sink, {Duration? keepAlive}) : _keepAlive = keepAlive {
     _outgoingStreamQueue = StreamQueue(_outgoingController.stream);
     unawaited(_setUpListener());
     _outgoingController.onCancel = _close;
@@ -154,7 +154,7 @@
       // been completely closed, set a timer to close after the timeout period.
       // If the connection comes back, this will be cancelled and all messages left
       // in the queue tried again.
-      _keepAliveTimer = Timer(_keepAlive, _close);
+      _keepAliveTimer = Timer(_keepAlive!, _close);
     }
   }
 
@@ -187,11 +187,11 @@
 class SseHandler {
   final _logger = Logger('SseHandler');
   final Uri _uri;
-  final Duration _keepAlive;
-  final _connections = <String, SseConnection>{};
+  final Duration? _keepAlive;
+  final _connections = <String?, SseConnection>{};
   final _connectionController = StreamController<SseConnection>();
 
-  StreamQueue<SseConnection> _connectionsStream;
+  StreamQueue<SseConnection>? _connectionsStream;
 
   /// [_uri] is the URL under which the server is listening for
   /// incoming bi-directional SSE connections.
@@ -203,7 +203,7 @@
   ///
   /// If [keepAlive] is not supplied, connections will be closed immediately
   /// after a disconnect.
-  SseHandler(this._uri, {Duration keepAlive}) : _keepAlive = keepAlive;
+  SseHandler(this._uri, {Duration? keepAlive}) : _keepAlive = keepAlive;
 
   StreamQueue<SseConnection> get connections =>
       _connectionsStream ??= StreamQueue(_connectionController.stream);
@@ -221,8 +221,8 @@
       // Check if we already have a connection for this ID that is in the process
       // of timing out (in which case we can reconnect it transparently).
       if (_connections[clientId] != null &&
-          _connections[clientId].isInKeepAlivePeriod) {
-        _connections[clientId]._acceptReconnection(sink);
+          _connections[clientId]!.isInKeepAlivePeriod) {
+        _connections[clientId]!._acceptReconnection(sink);
       } else {
         var connection = SseConnection(sink, keepAlive: _keepAlive);
         _connections[clientId] = connection;
@@ -280,7 +280,7 @@
   String _originFor(shelf.Request req) =>
       // Firefox does not set header "origin".
       // https://bugzilla.mozilla.org/show_bug.cgi?id=1508661
-      req.headers['origin'] ?? req.headers['host'];
+      req.headers['origin'] ?? req.headers['host']!;
 
   /// Immediately close all connections, ignoring any keepAlive periods.
   void shutdown() {
diff --git a/pubspec.yaml b/pubspec.yaml
index 0c67e5c..6f637fe 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: sse
-version: 3.8.3
+version: 4.0.0
 homepage: https://github.com/dart-lang/sse
 description: >-
   Provides client and server functionality for setting up bi-directional
@@ -7,7 +7,7 @@
   requests.
 
 environment:
-  sdk: ">=2.2.0 <3.0.0"
+  sdk: '>=2.12.0 <3.0.0'
 
 dependencies:
   async: ^2.0.8
diff --git a/test/sse_test.dart b/test/sse_test.dart
index cbd8e6d..ad84d7e 100644
--- a/test/sse_test.dart
+++ b/test/sse_test.dart
@@ -16,10 +16,10 @@
 import 'package:webdriver/io.dart';
 
 void main() {
-  HttpServer server;
-  WebDriver webdriver;
-  SseHandler handler;
-  Process chromeDriver;
+  late HttpServer server;
+  late WebDriver webdriver;
+  late SseHandler handler;
+  late Process chromeDriver;
 
   setUpAll(() async {
     try {
diff --git a/test/web/index.dart b/test/web/index.dart
index 7d00757..e149372 100644
--- a/test/web/index.dart
+++ b/test/web/index.dart
@@ -9,7 +9,7 @@
 void main() {
   var channel = SseClient('/test');
 
-  document.querySelector('button').onClick.listen((_) {
+  document.querySelector('button')!.onClick.listen((_) {
     channel.sink.close();
   });
 
diff --git a/test/web/index.dart.js b/test/web/index.dart.js
index 5f962b9..741866a 100644
--- a/test/web/index.dart.js
+++ b/test/web/index.dart.js
@@ -1,4 +1,4 @@
-// Generated by dart2js (fast startup emitter, strong), the Dart to JavaScript compiler version: 2.12.0-133.2.beta.
+// Generated by dart2js (fast startup emitter, strong), the Dart to JavaScript compiler version: 2.13.0-203.0.dev.
 // The code supports the following hooks:
 // dartPrint(message):
 //    if this function is defined it is called instead of the Dart [print]
@@ -27,6 +27,14 @@
       to[key] = from[key];
     }
   }
+  function mixinProperties(from, to) {
+    var keys = Object.keys(from);
+    for (var i = 0; i < keys.length; i++) {
+      var key = keys[i];
+      if (!to.hasOwnProperty(key))
+        to[key] = from[key];
+    }
+  }
   var supportsDirectProtoAccess = function() {
     var cls = function() {
     };
@@ -58,7 +66,7 @@
       for (var j = 0; j < keys.length; j++) {
         var key = keys[j];
         var f = holder[key];
-        if (typeof f == 'function')
+        if (typeof f == "function")
           f.name = key;
       }
     }
@@ -81,7 +89,7 @@
       inherit(classes[i], sup);
   }
   function mixin(cls, mixin) {
-    copyProperties(mixin.prototype, cls.prototype);
+    mixinProperties(mixin.prototype, cls.prototype);
     cls.prototype.constructor = cls;
   }
   function lazyOld(holder, name, getterName, initializer) {
@@ -170,7 +178,7 @@
     var funs = [];
     for (var i = 0; i < funsOrNames.length; i++) {
       var fun = funsOrNames[i];
-      if (typeof fun == 'string')
+      if (typeof fun == "string")
         fun = container[fun];
       fun.$callName = callNames[i];
       funs.push(fun);
@@ -248,9 +256,10 @@
   var C = {},
   H = {JS_CONST: function JS_CONST() {
     },
+    LateError$fieldNI: function(fieldName) {
+      return new H.LateError("Field '" + fieldName + "' has not been initialized.");
+    },
     checkNotNullable: function(value, $name, $T) {
-      if (value == null)
-        throw H.wrapException(new H.NotNullableError($name, $T._eval$1("NotNullableError<0>")));
       return value;
     },
     IterableElementError_noElement: function() {
@@ -259,11 +268,7 @@
     LateError: function LateError(t0) {
       this._message = t0;
     },
-    closure: function closure() {
-    },
-    NotNullableError: function NotNullableError(t0, t1) {
-      this.__internal$_name = t0;
-      this.$ti = t1;
+    nullFuture_closure: function nullFuture_closure() {
     },
     EfficientLengthIterable: function EfficientLengthIterable() {
     },
@@ -308,8 +313,6 @@
       else if (value == null)
         return "null";
       res = J.toString$0$(value);
-      if (typeof res != "string")
-        throw H.wrapException(H.argumentErrorValue(value));
       return res;
     },
     Primitives_objectHashCode: function(object) {
@@ -321,10 +324,8 @@
       return hash;
     },
     Primitives_parseInt: function(source, radix) {
-      var match, decimalMatch;
-      if (typeof source != "string")
-        H.throwExpression(H.argumentErrorValue(source));
-      match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
+      var decimalMatch,
+        match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
       if (match == null)
         return null;
       if (3 >= match.length)
@@ -340,26 +341,27 @@
       return H.Primitives__objectTypeNameNewRti(object);
     },
     Primitives__objectTypeNameNewRti: function(object) {
-      var dispatchName, $constructor, constructorName;
+      var dispatchName, t1, $constructor, constructorName;
       if (object instanceof P.Object)
         return H._rtiToString(H.instanceType(object), null);
       if (J.getInterceptor$(object) === C.Interceptor_methods || type$.UnknownJavaScriptObject._is(object)) {
         dispatchName = C.C_JS_CONST(object);
-        if (H.Primitives__saneNativeClassName(dispatchName))
+        t1 = dispatchName !== "Object" && dispatchName !== "";
+        if (t1)
           return dispatchName;
         $constructor = object.constructor;
         if (typeof $constructor == "function") {
           constructorName = $constructor.name;
-          if (typeof constructorName == "string" && H.Primitives__saneNativeClassName(constructorName))
+          if (typeof constructorName == "string")
+            t1 = constructorName !== "Object" && constructorName !== "";
+          else
+            t1 = false;
+          if (t1)
             return constructorName;
         }
       }
       return H._rtiToString(H.instanceType(object), null);
     },
-    Primitives__saneNativeClassName: function($name) {
-      var t1 = $name !== "Object" && $name !== "";
-      return t1;
-    },
     Primitives_stringFromCharCode: function(charCode) {
       var bits;
       if (charCode <= 65535)
@@ -396,32 +398,20 @@
     Primitives_getMilliseconds: function(receiver) {
       return receiver.isUtc ? H.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : H.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;
     },
-    iae: function(argument) {
-      throw H.wrapException(H.argumentErrorValue(argument));
-    },
     ioore: function(receiver, index) {
       if (receiver == null)
         J.get$length$asx(receiver);
       throw H.wrapException(H.diagnoseIndexError(receiver, index));
     },
     diagnoseIndexError: function(indexable, index) {
-      var $length, t1, _s5_ = "index";
+      var $length, _s5_ = "index";
       if (!H._isInt(index))
         return new P.ArgumentError(true, index, _s5_, null);
-      $length = H._asIntS(J.get$length$asx(indexable));
-      if (!(index < 0)) {
-        if (typeof $length !== "number")
-          return H.iae($length);
-        t1 = index >= $length;
-      } else
-        t1 = true;
-      if (t1)
+      $length = H._asInt(J.get$length$asx(indexable));
+      if (index < 0 || index >= $length)
         return P.IndexError$(index, indexable, _s5_, null, $length);
       return P.RangeError$value(index, _s5_);
     },
-    argumentErrorValue: function(object) {
-      return new P.ArgumentError(true, object, null, null);
-    },
     wrapException: function(ex) {
       var wrapper, t1;
       if (ex == null)
@@ -447,7 +437,7 @@
     },
     TypeErrorDecoder_extractPattern: function(message) {
       var match, $arguments, argumentsExpr, expr, method, receiver;
-      message = H.quoteStringForRegExp(message.replace(String({}), '$receiver$'));
+      message = H.quoteStringForRegExp(message.replace(String({}), "$receiver$"));
       match = message.match(/\\\$[a-zA-Z]+\\\$/g);
       if (match == null)
         match = H.setRuntimeTypeInfo([], type$.JSArray_String);
@@ -456,11 +446,11 @@
       expr = match.indexOf("\\$expr\\$");
       method = match.indexOf("\\$method\\$");
       receiver = match.indexOf("\\$receiver\\$");
-      return new H.TypeErrorDecoder(message.replace(new RegExp('\\\\\\$arguments\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$argumentsExpr\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$expr\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$method\\\\\\$', 'g'), '((?:x|[^x])*)').replace(new RegExp('\\\\\\$receiver\\\\\\$', 'g'), '((?:x|[^x])*)'), $arguments, argumentsExpr, expr, method, receiver);
+      return new H.TypeErrorDecoder(message.replace(new RegExp("\\\\\\$arguments\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$", "g"), "((?:x|[^x])*)"), $arguments, argumentsExpr, expr, method, receiver);
     },
     TypeErrorDecoder_provokeCallErrorOn: function(expression) {
       return function($expr$) {
-        var $argumentsExpr$ = '$arguments$';
+        var $argumentsExpr$ = "$arguments$";
         try {
           $expr$.$method$($argumentsExpr$);
         } catch (e) {
@@ -477,9 +467,6 @@
         }
       }(expression);
     },
-    NullError$: function(_message, match) {
-      return new H.NullError(_message, match == null ? null : match.method);
-    },
     JsNoSuchMethodError$: function(_message, match) {
       var t1 = match == null,
         t2 = t1 ? null : match.method;
@@ -489,7 +476,7 @@
       if (ex == null)
         return new H.NullThrownFromJavaScriptException(ex);
       if (ex instanceof H.ExceptionAndStackTrace)
-        return H.saveStackTrace(ex, ex.dartException);
+        return H.saveStackTrace(ex, type$.Object._as(ex.dartException));
       if (typeof ex !== "object")
         return ex;
       if ("dartException" in ex)
@@ -503,7 +490,7 @@
       return error;
     },
     _unwrapNonDartException: function(ex) {
-      var message, number, ieErrorCode, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, t1, _null = null;
+      var message, number, ieErrorCode, t1, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, _null = null;
       if (!("message" in ex))
         return ex;
       message = ex.message;
@@ -516,7 +503,8 @@
               return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H.S(message) + " (Error " + ieErrorCode + ")", _null));
             case 445:
             case 5007:
-              return H.saveStackTrace(ex, H.NullError$(H.S(message) + " (Error " + ieErrorCode + ")", _null));
+              t1 = H.S(message) + " (Error " + ieErrorCode + ")";
+              return H.saveStackTrace(ex, new H.NullError(t1, _null));
           }
       }
       if (ex instanceof TypeError) {
@@ -532,12 +520,12 @@
         undefLiteralProperty = $.$get$TypeErrorDecoder_undefinedLiteralPropertyPattern();
         match = nsme.matchTypeError$1(message);
         if (match != null)
-          return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H._asStringS(message), match));
+          return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H._asString(message), match));
         else {
           match = notClosure.matchTypeError$1(message);
           if (match != null) {
             match.method = "call";
-            return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H._asStringS(message), match));
+            return H.saveStackTrace(ex, H.JsNoSuchMethodError$(H._asString(message), match));
           } else {
             match = nullCall.matchTypeError$1(message);
             if (match == null) {
@@ -569,8 +557,10 @@
                 t1 = true;
             } else
               t1 = true;
-            if (t1)
-              return H.saveStackTrace(ex, H.NullError$(H._asStringS(message), match));
+            if (t1) {
+              H._asString(message);
+              return H.saveStackTrace(ex, new H.NullError(message, match == null ? _null : match.method));
+            }
           }
         }
         return H.saveStackTrace(ex, new H.UnknownJsTypeError(typeof message == "string" ? message : ""));
@@ -615,7 +605,7 @@
     },
     invokeClosure: function(closure, numberOfArguments, arg1, arg2, arg3, arg4) {
       type$.Function._as(closure);
-      switch (H._asIntS(numberOfArguments)) {
+      switch (H._asInt(numberOfArguments)) {
         case 0:
           return closure.call$0();
         case 1:
@@ -671,6 +661,7 @@
         $prototype.$static_name = propertyName;
         trampoline = $function;
       }
+      type$.Object._as(reflectionInfo);
       $prototype.$signature = H.Closure__computeSignatureFunctionNewRti(reflectionInfo, isStatic, isIntercepted);
       $prototype[callName] = trampoline;
       for (applyTrampoline = trampoline, i = 1; i < functions.length; ++i) {
@@ -774,7 +765,9 @@
           return t1.$add();
         $.Closure_functionCounter = t1 + 1;
         selfName = "self" + t1;
-        return new Function("return function(){var " + selfName + " = this." + H.S(H.BoundClosure_selfFieldName()) + ";return " + selfName + "." + H.S(stubName) + "();}")();
+        t1 = "return function(){var " + selfName + " = this.";
+        t2 = $.BoundClosure_selfFieldNameCache;
+        return new Function(t1 + (t2 == null ? $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self") : t2) + ";return " + selfName + "." + H.S(stubName) + "();}")();
       }
       $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity).join(",");
       t1 = $.Closure_functionCounter;
@@ -782,7 +775,9 @@
         return t1.$add();
       $.Closure_functionCounter = t1 + 1;
       $arguments += t1;
-      return new Function("return function(" + $arguments + "){return this." + H.S(H.BoundClosure_selfFieldName()) + "." + H.S(stubName) + "(" + $arguments + ");}")();
+      t1 = "return function(" + $arguments + "){return this.";
+      t2 = $.BoundClosure_selfFieldNameCache;
+      return new Function(t1 + (t2 == null ? $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self") : t2) + "." + H.S(stubName) + "(" + $arguments + ");}")();
     },
     Closure_cspForwardInterceptedCall: function(arity, isSuperCall, $name, $function) {
       var getSelf = H.BoundClosure_selfOf,
@@ -837,9 +832,11 @@
       }
     },
     Closure_forwardInterceptedCallTo: function(receiver, $function) {
-      var stubName, arity, lookedUpFunction, t1, t2, $arguments,
-        selfField = H.BoundClosure_selfFieldName(),
-        receiverField = $.BoundClosure_receiverFieldNameCache;
+      var receiverField, stubName, arity, lookedUpFunction, t1, t2, $arguments,
+        selfField = $.BoundClosure_selfFieldNameCache;
+      if (selfField == null)
+        selfField = $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self");
+      receiverField = $.BoundClosure_receiverFieldNameCache;
       if (receiverField == null)
         receiverField = $.BoundClosure_receiverFieldNameCache = H.BoundClosure_computeFieldNamed("receiver");
       stubName = $function.$stubName;
@@ -850,7 +847,7 @@
       if (t2)
         return H.Closure_cspForwardInterceptedCall(arity, !t1, stubName, $function);
       if (arity === 1) {
-        t1 = "return function(){return this." + H.S(selfField) + "." + H.S(stubName) + "(this." + receiverField + ");";
+        t1 = "return function(){return this." + selfField + "." + H.S(stubName) + "(this." + receiverField + ");";
         t2 = $.Closure_functionCounter;
         if (typeof t2 !== "number")
           return t2.$add();
@@ -858,7 +855,7 @@
         return new Function(t1 + t2 + "}")();
       }
       $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity - 1).join(",");
-      t1 = "return function(" + $arguments + "){return this." + H.S(selfField) + "." + H.S(stubName) + "(this." + receiverField + ", " + $arguments + ");";
+      t1 = "return function(" + $arguments + "){return this." + selfField + "." + H.S(stubName) + "(this." + receiverField + ", " + $arguments + ");";
       t2 = $.Closure_functionCounter;
       if (typeof t2 !== "number")
         return t2.$add();
@@ -880,10 +877,6 @@
     BoundClosure_receiverOf: function(closure) {
       return closure._receiver;
     },
-    BoundClosure_selfFieldName: function() {
-      var t1 = $.BoundClosure_selfFieldNameCache;
-      return t1 == null ? $.BoundClosure_selfFieldNameCache = H.BoundClosure_computeFieldNamed("self") : t1;
-    },
     BoundClosure_computeFieldNamed: function(fieldName) {
       var t1, i, $name,
         template = new H.BoundClosure("self", "target", "receiver", "name"),
@@ -917,7 +910,7 @@
     },
     lookupAndCacheInterceptor: function(obj) {
       var interceptor, interceptorClass, altTag, mark, t1,
-        tag = H._asStringS($.getTagFunction.call$1(obj)),
+        tag = H._asString($.getTagFunction.call$1(obj)),
         record = $.dispatchRecordsForInstanceTags[tag];
       if (record != null) {
         Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
@@ -1373,7 +1366,7 @@
     },
     getTypeFromTypesTable: function(index) {
       var table, type, rti;
-      H._asIntS(index);
+      H._asInt(index);
       table = init.types;
       type = table[index];
       if (typeof type == "string") {
@@ -1383,27 +1376,13 @@
       }
       return type;
     },
-    createRuntimeType: function(rti) {
-      var recipe, starErasedRecipe, starErasedRti,
-        type = rti._cachedRuntimeType;
-      if (type != null)
-        return type;
-      recipe = rti._canonicalRecipe;
-      starErasedRecipe = recipe.replace(/\*/g, "");
-      if (starErasedRecipe === recipe)
-        return rti._cachedRuntimeType = new H._Type(rti);
-      starErasedRti = H._Universe_eval(init.typeUniverse, starErasedRecipe, true);
-      type = starErasedRti._cachedRuntimeType;
-      return rti._cachedRuntimeType = type == null ? starErasedRti._cachedRuntimeType = new H._Type(starErasedRti) : type;
-    },
     _installSpecializedIsTest: function(object) {
-      var unstarred, isFn, testRti = this,
-        t1 = type$.Object;
-      if (testRti === t1)
+      var t1, unstarred, isFn, testRti = this;
+      if (testRti === type$.Object)
         return H._finishIsFn(testRti, object, H._isObject);
       if (!H.isStrongTopType(testRti))
         if (!(testRti === type$.legacy_Object))
-          t1 = testRti === t1;
+          t1 = false;
         else
           t1 = true;
       else
@@ -1437,10 +1416,11 @@
       return testRti._is(object);
     },
     _installSpecializedAsCheck: function(object) {
-      var t1, asFn, testRti = this;
+      var t1, testRti = this,
+        asFn = H._generalAsCheckImplementation;
       if (!H.isStrongTopType(testRti))
         if (!(testRti === type$.legacy_Object))
-          t1 = testRti === type$.Object;
+          t1 = false;
         else
           t1 = true;
       else
@@ -1449,8 +1429,11 @@
         asFn = H._asTop;
       else if (testRti === type$.Object)
         asFn = H._asObject;
-      else
-        asFn = H._generalNullableAsCheckImplementation;
+      else {
+        t1 = H.isNullable(testRti);
+        if (t1)
+          asFn = H._generalNullableAsCheckImplementation;
+      }
       testRti._as = asFn;
       return testRti._as(object);
     },
@@ -1493,10 +1476,12 @@
       return !!J.getInterceptor$(object)[tag];
     },
     _generalAsCheckImplementation: function(object) {
-      var testRti = this;
-      if (object == null)
-        return object;
-      else if (testRti._is(object))
+      var t1, testRti = this;
+      if (object == null) {
+        t1 = H.isNullable(testRti);
+        if (t1)
+          return object;
+      } else if (testRti._is(object))
         return object;
       H._failedAsCheck(object, testRti);
     },
@@ -1514,7 +1499,7 @@
     _Error_compose: function(object, objectRti, checkedTypeDescription) {
       var objectDescription = P.Error_safeToString(object),
         objectTypeDescription = H._rtiToString(objectRti == null ? H.instanceType(object) : objectRti, null);
-      return objectDescription + ": type '" + H.S(objectTypeDescription) + "' is not a subtype of type '" + H.S(checkedTypeDescription) + "'";
+      return objectDescription + ": type '" + objectTypeDescription + "' is not a subtype of type '" + checkedTypeDescription + "'";
     },
     _TypeError$fromMessage: function(message) {
       return new H._TypeError("TypeError: " + message);
@@ -1526,7 +1511,9 @@
       return object != null;
     },
     _asObject: function(object) {
-      return object;
+      if (object != null)
+        return object;
+      throw H.wrapException(H._TypeError__TypeError$forType(object, "Object"));
     },
     _isTop: function(object) {
       return true;
@@ -1650,11 +1637,11 @@
     _rtiArrayToString: function(array, genericContext) {
       var s, sep, i;
       for (s = "", sep = "", i = 0; i < array.length; ++i, sep = ", ")
-        s += C.JSString_methods.$add(sep, H._rtiToString(array[i], genericContext));
+        s += sep + H._rtiToString(array[i], genericContext);
       return s;
     },
     _functionRtiToString: function(functionType, genericContext, bounds) {
-      var boundsLength, outerContextLength, offset, i, t1, t2, t3, typeParametersText, typeSep, t4, t5, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", ";
+      var boundsLength, outerContextLength, offset, i, t1, t2, typeParametersText, typeSep, t3, t4, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", ";
       if (bounds != null) {
         boundsLength = bounds.length;
         if (genericContext == null) {
@@ -1665,24 +1652,24 @@
         offset = genericContext.length;
         for (i = boundsLength; i > 0; --i)
           C.JSArray_methods.add$1(genericContext, "T" + (offset + i));
-        for (t1 = type$.nullable_Object, t2 = type$.legacy_Object, t3 = type$.Object, typeParametersText = "<", typeSep = "", i = 0; i < boundsLength; ++i, typeSep = _s2_) {
+        for (t1 = type$.nullable_Object, t2 = type$.legacy_Object, typeParametersText = "<", typeSep = "", i = 0; i < boundsLength; ++i, typeSep = _s2_) {
           typeParametersText += typeSep;
-          t4 = genericContext.length;
-          t5 = t4 - 1 - i;
-          if (t5 < 0)
-            return H.ioore(genericContext, t5);
-          typeParametersText = C.JSString_methods.$add(typeParametersText, genericContext[t5]);
+          t3 = genericContext.length;
+          t4 = t3 - 1 - i;
+          if (t4 < 0)
+            return H.ioore(genericContext, t4);
+          typeParametersText = C.JSString_methods.$add(typeParametersText, genericContext[t4]);
           boundRti = bounds[i];
           kind = boundRti._kind;
           if (!(kind === 2 || kind === 3 || kind === 4 || kind === 5 || boundRti === t1))
             if (!(boundRti === t2))
-              t4 = boundRti === t3;
+              t3 = false;
             else
-              t4 = true;
+              t3 = true;
           else
-            t4 = true;
-          if (!t4)
-            typeParametersText += C.JSString_methods.$add(" extends ", H._rtiToString(boundRti, genericContext));
+            t3 = true;
+          if (!t3)
+            typeParametersText += " extends " + H._rtiToString(boundRti, genericContext);
         }
         typeParametersText += ">";
       } else {
@@ -1699,11 +1686,11 @@
       namedLength = named.length;
       returnTypeText = H._rtiToString(t1, genericContext);
       for (argumentsText = "", sep = "", i = 0; i < requiredPositionalLength; ++i, sep = _s2_)
-        argumentsText += C.JSString_methods.$add(sep, H._rtiToString(requiredPositional[i], genericContext));
+        argumentsText += sep + H._rtiToString(requiredPositional[i], genericContext);
       if (optionalPositionalLength > 0) {
         argumentsText += sep + "[";
         for (sep = "", i = 0; i < optionalPositionalLength; ++i, sep = _s2_)
-          argumentsText += C.JSString_methods.$add(sep, H._rtiToString(optionalPositional[i], genericContext));
+          argumentsText += sep + H._rtiToString(optionalPositional[i], genericContext);
         argumentsText += "]";
       }
       if (namedLength > 0) {
@@ -1712,7 +1699,7 @@
           argumentsText += sep;
           if (named[i + 1])
             argumentsText += "required ";
-          argumentsText += J.$add$ansx(H._rtiToString(named[i + 2], genericContext), " ") + named[i];
+          argumentsText += H._rtiToString(named[i + 2], genericContext) + " " + named[i];
         }
         argumentsText += "}";
       }
@@ -1720,7 +1707,7 @@
         genericContext.toString;
         genericContext.length = outerContextLength;
       }
-      return typeParametersText + "(" + argumentsText + ") => " + H.S(returnTypeText);
+      return typeParametersText + "(" + argumentsText + ") => " + returnTypeText;
     },
     _rtiToString: function(rti, genericContext) {
       var s, questionArgument, argumentKind, $name, $arguments, t1, t2,
@@ -1743,10 +1730,10 @@
         questionArgument = rti._primary;
         s = H._rtiToString(questionArgument, genericContext);
         argumentKind = questionArgument._kind;
-        return J.$add$ansx(argumentKind === 11 || argumentKind === 12 ? C.JSString_methods.$add("(", s) + ")" : s, "?");
+        return (argumentKind === 11 || argumentKind === 12 ? "(" + s + ")" : s) + "?";
       }
       if (kind === 8)
-        return "FutureOr<" + H.S(H._rtiToString(rti._primary, genericContext)) + ">";
+        return "FutureOr<" + H._rtiToString(rti._primary, genericContext) + ">";
       if (kind === 9) {
         $name = H._unminifyOrTag(rti._primary);
         $arguments = rti._rest;
@@ -1757,7 +1744,6 @@
       if (kind === 12)
         return H._functionRtiToString(rti._primary, genericContext, rti._rest);
       if (kind === 13) {
-        genericContext.toString;
         t1 = rti._primary;
         t2 = genericContext.length;
         t1 = t2 - 1 - t1;
@@ -1781,8 +1767,8 @@
     },
     _Universe_findErasedType: function(universe, cls) {
       var $length, erased, $arguments, i, $interface,
-        metadata = universe.eT,
-        probe = metadata[cls];
+        t1 = universe.eT,
+        probe = t1[cls];
       if (probe == null)
         return H._Universe_eval(universe, cls, false);
       else if (typeof probe == "number") {
@@ -1792,7 +1778,7 @@
         for (i = 0; i < $length; ++i)
           $arguments.push(erased);
         $interface = H._Universe__lookupInterfaceRti(universe, cls, $arguments);
-        metadata[cls] = $interface;
+        t1[cls] = $interface;
         return $interface;
       } else
         return probe;
@@ -1805,12 +1791,12 @@
     },
     _Universe_eval: function(universe, recipe, normalize) {
       var rti,
-        cache = universe.eC,
-        probe = cache.get(recipe);
+        t1 = universe.eC,
+        probe = t1.get(recipe);
       if (probe != null)
         return probe;
       rti = H._Parser_parse(H._Parser_create(universe, null, recipe, normalize));
-      cache.set(recipe, rti);
+      t1.set(recipe, rti);
       return rti;
     },
     _Universe_evalInEnvironment: function(universe, environment, recipe) {
@@ -1940,7 +1926,7 @@
         t1 = baseType._kind;
         if (!H.isStrongTopType(baseType))
           if (!(baseType === type$.legacy_Object))
-            t2 = baseType === type$.Object;
+            t2 = false;
           else
             t2 = true;
         else
@@ -2103,142 +2089,142 @@
       return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize};
     },
     _Parser_parse: function(parser) {
-      var t1, i, ch, universe, array, head, base, u, parameters, optionalPositional, named, item,
+      var t2, i, ch, t3, array, head, base, parameters, optionalPositional, named, item,
         source = parser.r,
-        stack = parser.s;
-      for (t1 = source.length, i = 0; i < t1;) {
+        t1 = parser.s;
+      for (t2 = source.length, i = 0; i < t2;) {
         ch = source.charCodeAt(i);
         if (ch >= 48 && ch <= 57)
-          i = H._Parser_handleDigit(i + 1, ch, source, stack);
+          i = H._Parser_handleDigit(i + 1, ch, source, t1);
         else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36)
-          i = H._Parser_handleIdentifier(parser, i, source, stack, false);
+          i = H._Parser_handleIdentifier(parser, i, source, t1, false);
         else if (ch === 46)
-          i = H._Parser_handleIdentifier(parser, i, source, stack, true);
+          i = H._Parser_handleIdentifier(parser, i, source, t1, true);
         else {
           ++i;
           switch (ch) {
             case 44:
               break;
             case 58:
-              stack.push(false);
+              t1.push(false);
               break;
             case 33:
-              stack.push(true);
+              t1.push(true);
               break;
             case 59:
-              stack.push(H._Parser_toType(parser.u, parser.e, stack.pop()));
+              t1.push(H._Parser_toType(parser.u, parser.e, t1.pop()));
               break;
             case 94:
-              stack.push(H._Universe__lookupGenericFunctionParameterRti(parser.u, stack.pop()));
+              t1.push(H._Universe__lookupGenericFunctionParameterRti(parser.u, t1.pop()));
               break;
             case 35:
-              stack.push(H._Universe__lookupTerminalRti(parser.u, 5, "#"));
+              t1.push(H._Universe__lookupTerminalRti(parser.u, 5, "#"));
               break;
             case 64:
-              stack.push(H._Universe__lookupTerminalRti(parser.u, 2, "@"));
+              t1.push(H._Universe__lookupTerminalRti(parser.u, 2, "@"));
               break;
             case 126:
-              stack.push(H._Universe__lookupTerminalRti(parser.u, 3, "~"));
+              t1.push(H._Universe__lookupTerminalRti(parser.u, 3, "~"));
               break;
             case 60:
-              stack.push(parser.p);
-              parser.p = stack.length;
+              t1.push(parser.p);
+              parser.p = t1.length;
               break;
             case 62:
-              universe = parser.u;
-              array = stack.splice(parser.p);
+              t3 = parser.u;
+              array = t1.splice(parser.p);
               H._Parser_toTypes(parser.u, parser.e, array);
-              parser.p = stack.pop();
-              head = stack.pop();
+              parser.p = t1.pop();
+              head = t1.pop();
               if (typeof head == "string")
-                stack.push(H._Universe__lookupInterfaceRti(universe, head, array));
+                t1.push(H._Universe__lookupInterfaceRti(t3, head, array));
               else {
-                base = H._Parser_toType(universe, parser.e, head);
+                base = H._Parser_toType(t3, parser.e, head);
                 switch (base._kind) {
                   case 11:
-                    stack.push(H._Universe__lookupGenericFunctionRti(universe, base, array, parser.n));
+                    t1.push(H._Universe__lookupGenericFunctionRti(t3, base, array, parser.n));
                     break;
                   default:
-                    stack.push(H._Universe__lookupBindingRti(universe, base, array));
+                    t1.push(H._Universe__lookupBindingRti(t3, base, array));
                     break;
                 }
               }
               break;
             case 38:
-              H._Parser_handleExtendedOperations(parser, stack);
+              H._Parser_handleExtendedOperations(parser, t1);
               break;
             case 42:
-              u = parser.u;
-              stack.push(H._Universe__lookupStarRti(u, H._Parser_toType(u, parser.e, stack.pop()), parser.n));
+              t3 = parser.u;
+              t1.push(H._Universe__lookupStarRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parser.n));
               break;
             case 63:
-              u = parser.u;
-              stack.push(H._Universe__lookupQuestionRti(u, H._Parser_toType(u, parser.e, stack.pop()), parser.n));
+              t3 = parser.u;
+              t1.push(H._Universe__lookupQuestionRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parser.n));
               break;
             case 47:
-              u = parser.u;
-              stack.push(H._Universe__lookupFutureOrRti(u, H._Parser_toType(u, parser.e, stack.pop()), parser.n));
+              t3 = parser.u;
+              t1.push(H._Universe__lookupFutureOrRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parser.n));
               break;
             case 40:
-              stack.push(parser.p);
-              parser.p = stack.length;
+              t1.push(parser.p);
+              parser.p = t1.length;
               break;
             case 41:
-              universe = parser.u;
+              t3 = parser.u;
               parameters = new H._FunctionParameters();
-              optionalPositional = universe.sEA;
-              named = universe.sEA;
-              head = stack.pop();
+              optionalPositional = t3.sEA;
+              named = t3.sEA;
+              head = t1.pop();
               if (typeof head == "number")
                 switch (head) {
                   case -1:
-                    optionalPositional = stack.pop();
+                    optionalPositional = t1.pop();
                     break;
                   case -2:
-                    named = stack.pop();
+                    named = t1.pop();
                     break;
                   default:
-                    stack.push(head);
+                    t1.push(head);
                     break;
                 }
               else
-                stack.push(head);
-              array = stack.splice(parser.p);
+                t1.push(head);
+              array = t1.splice(parser.p);
               H._Parser_toTypes(parser.u, parser.e, array);
-              parser.p = stack.pop();
+              parser.p = t1.pop();
               parameters._requiredPositional = array;
               parameters._optionalPositional = optionalPositional;
               parameters._named = named;
-              stack.push(H._Universe__lookupFunctionRti(universe, H._Parser_toType(universe, parser.e, stack.pop()), parameters));
+              t1.push(H._Universe__lookupFunctionRti(t3, H._Parser_toType(t3, parser.e, t1.pop()), parameters));
               break;
             case 91:
-              stack.push(parser.p);
-              parser.p = stack.length;
+              t1.push(parser.p);
+              parser.p = t1.length;
               break;
             case 93:
-              array = stack.splice(parser.p);
+              array = t1.splice(parser.p);
               H._Parser_toTypes(parser.u, parser.e, array);
-              parser.p = stack.pop();
-              stack.push(array);
-              stack.push(-1);
+              parser.p = t1.pop();
+              t1.push(array);
+              t1.push(-1);
               break;
             case 123:
-              stack.push(parser.p);
-              parser.p = stack.length;
+              t1.push(parser.p);
+              parser.p = t1.length;
               break;
             case 125:
-              array = stack.splice(parser.p);
+              array = t1.splice(parser.p);
               H._Parser_toTypesNamed(parser.u, parser.e, array);
-              parser.p = stack.pop();
-              stack.push(array);
-              stack.push(-2);
+              parser.p = t1.pop();
+              t1.push(array);
+              t1.push(-2);
               break;
             default:
               throw "Bad character " + ch;
           }
         }
       }
-      item = stack.pop();
+      item = t1.pop();
       return H._Parser_toType(parser.u, parser.e, item);
     },
     _Parser_handleDigit: function(i, digit, source, stack) {
@@ -2345,7 +2331,7 @@
         return true;
       if (!H.isStrongTopType(t))
         if (!(t === type$.legacy_Object))
-          t1 = t === type$.Object;
+          t1 = false;
         else
           t1 = true;
       else
@@ -2358,7 +2344,7 @@
       if (H.isStrongTopType(s))
         return false;
       if (s._kind !== 1)
-        t1 = s === type$.Null || s === type$.JSNull;
+        t1 = false;
       else
         t1 = true;
       if (t1)
@@ -2368,10 +2354,23 @@
         if (H._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv))
           return true;
       tKind = t._kind;
+      t1 = s === type$.Null || s === type$.JSNull;
+      if (t1) {
+        if (tKind === 8)
+          return H._isSubtype(universe, s, sEnv, t._primary, tEnv);
+        return t === type$.Null || t === type$.JSNull || tKind === 7 || tKind === 6;
+      }
+      if (t === type$.Object) {
+        if (sKind === 8)
+          return H._isSubtype(universe, s._primary, sEnv, t, tEnv);
+        if (sKind === 6)
+          return H._isSubtype(universe, s._primary, sEnv, t, tEnv);
+        return sKind !== 7;
+      }
       if (sKind === 6)
         return H._isSubtype(universe, s._primary, sEnv, t, tEnv);
       if (tKind === 6) {
-        t1 = t._primary;
+        t1 = H.Rti__getQuestionFromStar(universe, t);
         return H._isSubtype(universe, s, sEnv, t1, tEnv);
       }
       if (sKind === 8) {
@@ -2380,8 +2379,8 @@
         return H._isSubtype(universe, H.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv);
       }
       if (sKind === 7) {
-        t1 = H._isSubtype(universe, s._primary, sEnv, t, tEnv);
-        return t1;
+        t1 = H._isSubtype(universe, type$.Null, sEnv, t, tEnv);
+        return t1 && H._isSubtype(universe, s._primary, sEnv, t, tEnv);
       }
       if (tKind === 8) {
         if (H._isSubtype(universe, s, sEnv, t._primary, tEnv))
@@ -2389,8 +2388,8 @@
         return H._isSubtype(universe, s, sEnv, H.Rti__getFutureFromFutureOr(universe, t), tEnv);
       }
       if (tKind === 7) {
-        t1 = H._isSubtype(universe, s, sEnv, t._primary, tEnv);
-        return t1;
+        t1 = H._isSubtype(universe, s, sEnv, type$.Null, tEnv);
+        return t1 || H._isSubtype(universe, s, sEnv, t._primary, tEnv);
       }
       if (leftTypeVariable)
         return false;
@@ -2432,7 +2431,7 @@
       return false;
     },
     _isFunctionSubtype: function(universe, s, sEnv, t, tEnv) {
-      var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName;
+      var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired;
       if (!H._isSubtype(universe, s._primary, sEnv, t._primary, tEnv))
         return false;
       sParameters = s._rest;
@@ -2478,14 +2477,26 @@
           sIndex += 3;
           if (tName < sName)
             return false;
-          if (sName < tName)
+          sIsRequired = sNamed[sIndex - 2];
+          if (sName < tName) {
+            if (sIsRequired)
+              return false;
             continue;
+          }
+          t1 = tNamed[tIndex + 1];
+          if (sIsRequired && !t1)
+            return false;
           t1 = sNamed[sIndex - 1];
           if (!H._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv))
             return false;
           break;
         }
       }
+      for (; sIndex < sNamedLength;) {
+        if (sNamed[sIndex + 1])
+          return false;
+        sIndex += 3;
+      }
       return true;
     },
     _isInterfaceSubtype: function(universe, s, sEnv, t, tEnv) {
@@ -2541,7 +2552,7 @@
       var t1;
       if (!H.isStrongTopType(t))
         if (!(t === type$.legacy_Object))
-          t1 = t === type$.Object;
+          t1 = false;
         else
           t1 = true;
       else
@@ -2572,9 +2583,6 @@
     _FunctionParameters: function _FunctionParameters() {
       this._named = this._optionalPositional = this._requiredPositional = null;
     },
-    _Type: function _Type(t0) {
-      this._rti = t0;
-    },
     _Error: function _Error() {
     },
     _TypeError: function _TypeError(t0) {
@@ -2589,7 +2597,7 @@
       return {i: interceptor, p: proto, e: extension, x: indexability};
     },
     getNativeInterceptor: function(object) {
-      var proto, objectProto, $constructor, interceptor,
+      var proto, objectProto, $constructor, interceptor, t1,
         record = object[init.dispatchPropertyName];
       if (record == null)
         if ($.initNativeDispatchFlag == null) {
@@ -2609,7 +2617,14 @@
           throw H.wrapException(P.UnimplementedError$("Return interceptor for " + H.S(proto(object, record))));
       }
       $constructor = object.constructor;
-      interceptor = $constructor == null ? null : $constructor[J.JS_INTEROP_INTERCEPTOR_TAG()];
+      if ($constructor == null)
+        interceptor = null;
+      else {
+        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
+        if (t1 == null)
+          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
+        interceptor = $constructor[t1];
+      }
       if (interceptor != null)
         return interceptor;
       interceptor = H.lookupAndCacheInterceptor(object);
@@ -2623,15 +2638,14 @@
       if (proto === Object.prototype)
         return C.PlainJavaScriptObject_methods;
       if (typeof $constructor == "function") {
-        Object.defineProperty($constructor, J.JS_INTEROP_INTERCEPTOR_TAG(), {value: C.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});
+        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
+        if (t1 == null)
+          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
+        Object.defineProperty($constructor, t1, {value: C.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});
         return C.UnknownJavaScriptObject_methods;
       }
       return C.UnknownJavaScriptObject_methods;
     },
-    JS_INTEROP_INTERCEPTOR_TAG: function() {
-      var t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
-      return t1 == null ? $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js") : t1;
-    },
     JSArray_markFixedList: function(list, $T) {
       list.fixed$length = Array;
       return list;
@@ -2640,7 +2654,7 @@
       if (typeof receiver == "number") {
         if (Math.floor(receiver) == receiver)
           return J.JSInt.prototype;
-        return J.JSDouble.prototype;
+        return J.JSNumNotInt.prototype;
       }
       if (typeof receiver == "string")
         return J.JSString.prototype;
@@ -2659,24 +2673,6 @@
         return receiver;
       return J.getNativeInterceptor(receiver);
     },
-    getInterceptor$ansx: function(receiver) {
-      if (typeof receiver == "number")
-        return J.JSNumber.prototype;
-      if (typeof receiver == "string")
-        return J.JSString.prototype;
-      if (receiver == null)
-        return receiver;
-      if (receiver.constructor == Array)
-        return J.JSArray.prototype;
-      if (typeof receiver != "object") {
-        if (typeof receiver == "function")
-          return J.JavaScriptFunction.prototype;
-        return receiver;
-      }
-      if (receiver instanceof P.Object)
-        return receiver;
-      return J.getNativeInterceptor(receiver);
-    },
     getInterceptor$asx: function(receiver) {
       if (typeof receiver == "string")
         return J.JSString.prototype;
@@ -2707,15 +2703,6 @@
         return receiver;
       return J.getNativeInterceptor(receiver);
     },
-    getInterceptor$s: function(receiver) {
-      if (typeof receiver == "string")
-        return J.JSString.prototype;
-      if (receiver == null)
-        return receiver;
-      if (!(receiver instanceof P.Object))
-        return J.UnknownJavaScriptObject.prototype;
-      return receiver;
-    },
     getInterceptor$x: function(receiver) {
       if (receiver == null)
         return receiver;
@@ -2740,11 +2727,6 @@
     get$onClick$x: function(receiver) {
       return J.getInterceptor$x(receiver).get$onClick(receiver);
     },
-    $add$ansx: function(receiver, a0) {
-      if (typeof receiver == "number" && typeof a0 == "number")
-        return receiver + a0;
-      return J.getInterceptor$ansx(receiver).$add(receiver, a0);
-    },
     $eq$: function(receiver, a0) {
       if (receiver == null)
         return a0 == null;
@@ -2764,9 +2746,6 @@
     forEach$1$ax: function(receiver, a0) {
       return J.getInterceptor$ax(receiver).forEach$1(receiver, a0);
     },
-    startsWith$1$s: function(receiver, a0) {
-      return J.getInterceptor$s(receiver).startsWith$1(receiver, a0);
-    },
     toString$0$: function(receiver) {
       return J.getInterceptor$(receiver).toString$0(receiver);
     },
@@ -2802,7 +2781,7 @@
     },
     JSInt: function JSInt() {
     },
-    JSDouble: function JSDouble() {
+    JSNumNotInt: function JSNumNotInt() {
     },
     JSString: function JSString() {
     }
@@ -2890,21 +2869,18 @@
       }($function, 1);
       return $.Zone__current.registerBinaryCallback$3$1(new P._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic);
     },
-    Future_Future$value: function(value, $T) {
-      var t1 = new P._Future($.Zone__current, $T._eval$1("_Future<0>"));
-      t1._asyncComplete$1(value);
-      return t1;
+    AsyncError$: function(error, stackTrace) {
+      var t1 = H.checkNotNullable(error, "error", type$.Object);
+      return new P.AsyncError(t1, stackTrace == null ? P.AsyncError_defaultStackTrace(error) : stackTrace);
     },
-    _Future__chainForeignFuture: function(source, target) {
-      var e, s, exception;
-      target._state = 1;
-      try {
-        source.then$1$2$onError(new P._Future__chainForeignFuture_closure(target), new P._Future__chainForeignFuture_closure0(target), type$.Null);
-      } catch (exception) {
-        e = H.unwrapException(exception);
-        s = H.getTraceFromException(exception);
-        P.scheduleMicrotask(new P._Future__chainForeignFuture_closure1(target, e, s));
+    AsyncError_defaultStackTrace: function(error) {
+      var stackTrace;
+      if (type$.Error._is(error)) {
+        stackTrace = error.get$stackTrace();
+        if (stackTrace != null)
+          return stackTrace;
       }
+      return C.C__StringStackTrace;
     },
     _Future__chainCoreFuture: function(source, target) {
       var t1, t2, listeners;
@@ -2982,6 +2958,12 @@
             $.Zone__current = oldZone;
           t1 = _box_0.listenerValueOrError;
           if (t4._is(t1)) {
+            t5 = _box_0.listener.$ti;
+            t5 = t5._eval$1("Future<2>")._is(t1) || !t5._rest[1]._is(t1);
+          } else
+            t5 = false;
+          if (t5) {
+            t4._as(t1);
             result = _box_0.listener.result;
             if (t1._state >= 4) {
               current = t3._as(result._resultOrListeners);
@@ -3022,7 +3004,7 @@
       t1 = type$.dynamic_Function_Object;
       if (t1._is(errorHandler))
         return t1._as(errorHandler);
-      throw H.wrapException(P.ArgumentError$value(errorHandler, "onError", "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a a valid result"));
+      throw H.wrapException(P.ArgumentError$value(errorHandler, "onError", "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a valid result"));
     },
     _microtaskLoop: function() {
       var entry, next;
@@ -3118,8 +3100,9 @@
     _nullDoneHandler: function() {
     },
     _cancelAndValue: function(subscription, future, value) {
-      var cancelFuture = subscription.cancel$0();
-      if (cancelFuture != null && cancelFuture !== $.$get$Future__nullFuture())
+      var cancelFuture = subscription.cancel$0(),
+        t1 = $.$get$Future__nullFuture();
+      if (cancelFuture !== t1)
         cancelFuture.whenComplete$1(new P._cancelAndValue_closure(future, value));
       else
         future._complete$1(value);
@@ -3130,19 +3113,6 @@
         return P.Timer__createTimer(duration, type$.void_Function._as(callback));
       return P.Timer__createTimer(duration, type$.void_Function._as(t1.bindCallbackGuarded$1(callback)));
     },
-    AsyncError$: function(error, stackTrace) {
-      var t1 = H.checkNotNullable(error, "error", type$.Object);
-      return new P.AsyncError(t1, stackTrace == null ? P.AsyncError_defaultStackTrace(error) : stackTrace);
-    },
-    AsyncError_defaultStackTrace: function(error) {
-      var stackTrace;
-      if (type$.Error._is(error)) {
-        stackTrace = error.get$stackTrace();
-        if (stackTrace != null)
-          return stackTrace;
-      }
-      return C.C__StringStackTrace;
-    },
     _rootHandleUncaughtError: function($self, $parent, zone, error, stackTrace) {
       P._schedulePriorityAsyncCallback(new P._rootHandleUncaughtError_closure(error, stackTrace));
     },
@@ -3189,11 +3159,9 @@
       }
     },
     _rootScheduleMicrotask: function($self, $parent, zone, f) {
-      var t1;
       type$.void_Function._as(f);
-      t1 = C.C__RootZone !== zone;
-      if (t1)
-        f = !(!t1 || false) ? zone.bindCallbackGuarded$1(f) : zone.bindCallback$1$1(f, type$.void);
+      if (C.C__RootZone !== zone)
+        f = zone.bindCallbackGuarded$1(f);
       P._scheduleAsyncCallback(f);
     },
     _AsyncRun__initializeScheduleImmediate_internalCallback: function _AsyncRun__initializeScheduleImmediate_internalCallback(t0) {
@@ -3231,6 +3199,10 @@
     _wrapJsFunctionForAsync_closure: function _wrapJsFunctionForAsync_closure(t0) {
       this.$protected = t0;
     },
+    AsyncError: function AsyncError(t0, t1) {
+      this.error = t0;
+      this.stackTrace = t1;
+    },
     _Completer: function _Completer() {
     },
     _AsyncCompleter: function _AsyncCompleter(t0, t1) {
@@ -3262,13 +3234,13 @@
       this.$this = t1;
     },
     _Future__chainForeignFuture_closure: function _Future__chainForeignFuture_closure(t0) {
-      this.target = t0;
+      this.$this = t0;
     },
     _Future__chainForeignFuture_closure0: function _Future__chainForeignFuture_closure0(t0) {
-      this.target = t0;
+      this.$this = t0;
     },
     _Future__chainForeignFuture_closure1: function _Future__chainForeignFuture_closure1(t0, t1, t2) {
-      this.target = t0;
+      this.$this = t0;
       this.e = t1;
       this.s = t2;
     },
@@ -3425,10 +3397,6 @@
       this.future = t0;
       this.value = t1;
     },
-    AsyncError: function AsyncError(t0, t1) {
-      this.error = t0;
-      this.stackTrace = t1;
-    },
     _Zone: function _Zone() {
     },
     _rootHandleUncaughtError_closure: function _rootHandleUncaughtError_closure(t0, t1) {
@@ -3437,11 +3405,6 @@
     },
     _RootZone: function _RootZone() {
     },
-    _RootZone_bindCallback_closure: function _RootZone_bindCallback_closure(t0, t1, t2) {
-      this.$this = t0;
-      this.f = t1;
-      this.R = t2;
-    },
     _RootZone_bindCallbackGuarded_closure: function _RootZone_bindCallbackGuarded_closure(t0, t1) {
       this.$this = t0;
       this.f = t1;
@@ -3612,10 +3575,7 @@
     MapMixin: function MapMixin() {
     },
     _parseJson: function(source, reviver) {
-      var parsed, e, exception, t1;
-      if (typeof source != "string")
-        throw H.wrapException(H.argumentErrorValue(source));
-      parsed = null;
+      var e, exception, t1, parsed = null;
       try {
         parsed = JSON.parse(source);
       } catch (exception) {
@@ -3703,7 +3663,7 @@
     Error__objectToString: function(object) {
       if (object instanceof H.Closure)
         return object.toString$0(0);
-      return "Instance of '" + H.S(H.Primitives_objectTypeName(object)) + "'";
+      return "Instance of '" + H.Primitives_objectTypeName(object) + "'";
     },
     List_List$filled: function($length, fill, $E) {
       var result;
@@ -3789,8 +3749,7 @@
       return new P.RangeError(minValue, maxValue, true, invalidValue, $name, "Invalid value");
     },
     IndexError$: function(invalidValue, indexable, $name, message, $length) {
-      var t1 = H._asIntS($length == null ? J.get$length$asx(indexable) : $length);
-      return new P.IndexError(t1, true, invalidValue, $name, "Index out of range");
+      return new P.IndexError($length, true, invalidValue, $name, "Index out of range");
     },
     UnsupportedError$: function(message) {
       return new P.UnsupportedError(message);
@@ -3930,6 +3889,9 @@
       jsPromise.then(H.convertDartClosureToJS(new P.promiseToFuture_closure(completer, $T), 1), H.convertDartClosureToJS(new P.promiseToFuture_closure0(completer), 1));
       return t1;
     },
+    NullRejectionException: function NullRejectionException(t0) {
+      this.isUndefined = t0;
+    },
     promiseToFuture_closure: function promiseToFuture_closure(t0, t1) {
       this.completer = t0;
       this.T = t1;
@@ -3954,10 +3916,10 @@
         xhr = new XMLHttpRequest();
       C.HttpRequest_methods.open$3$async(xhr, method, url, true);
       C.HttpRequest_methods.set$withCredentials(xhr, true);
-      t2 = type$.nullable_void_Function_legacy_ProgressEvent;
+      t2 = type$.nullable_void_Function_ProgressEvent;
       t3 = t2._as(new W.HttpRequest_request_closure(xhr, completer));
       type$.nullable_void_Function._as(null);
-      t4 = type$.legacy_ProgressEvent;
+      t4 = type$.ProgressEvent;
       W._EventStreamSubscription$(xhr, "load", t3, false, t4);
       W._EventStreamSubscription$(xhr, "error", t2._as(completer.get$completeError()), false, t4);
       if (sendData != null)
@@ -4075,7 +4037,7 @@
   },
   M = {
     SseClient$: function(serverUrl) {
-      var t1 = type$.legacy_String;
+      var t1 = type$.String;
       t1 = new M.SseClient(P.StreamController_StreamController(t1), P.StreamController_StreamController(t1), F.Logger_Logger("SseClient"), new P._AsyncCompleter(new P._Future($.Zone__current, type$._Future_dynamic), type$._AsyncCompleter_dynamic));
       t1.SseClient$1(serverUrl);
       return t1;
@@ -4087,7 +4049,7 @@
       _._logger = t2;
       _._onConnected = t3;
       _._lastMessageId = -1;
-      _._errorTimer = _._serverUrl = _._eventSource = null;
+      _._errorTimer = _.__SseClient__serverUrl = _.__SseClient__eventSource = null;
     },
     SseClient_closure: function SseClient_closure(t0) {
       this.$this = t0;
@@ -4124,10 +4086,13 @@
     }},
   E = {
     main: function() {
-      var channel = M.SseClient$("/test"),
-        t1 = J.get$onClick$x(document.querySelector("button")),
-        t2 = t1.$ti,
-        t3 = t2._eval$1("~(1)?")._as(new E.main_closure(channel));
+      var t2, t3,
+        channel = M.SseClient$("/test"),
+        t1 = document.querySelector("button");
+      t1.toString;
+      t1 = J.get$onClick$x(t1);
+      t2 = t1.$ti;
+      t3 = t2._eval$1("~(1)?")._as(new E.main_closure(channel));
       type$.nullable_void_Function._as(null);
       W._EventStreamSubscription$(t1._target, t1._eventType, t3, false, t2._precomputed1);
       t2 = channel._incomingController;
@@ -4152,7 +4117,7 @@
       return H.Primitives_objectHashCode(receiver);
     },
     toString$0: function(receiver) {
-      return "Instance of '" + H.S(H.Primitives_objectTypeName(receiver)) + "'";
+      return "Instance of '" + H.Primitives_objectTypeName(receiver) + "'";
     }
   };
   J.JSBool.prototype = {
@@ -4191,7 +4156,7 @@
       var dartClosure = receiver[$.$get$DART_CLOSURE_PROPERTY_NAME()];
       if (dartClosure == null)
         return this.super$JavaScriptObject$toString(receiver);
-      return "JavaScript function for " + H.S(J.toString$0$(dartClosure));
+      return "JavaScript function for " + J.toString$0$(dartClosure);
     },
     $isFunction: 1
   };
@@ -4239,12 +4204,10 @@
       return receiver[index];
     },
     $indexSet: function(receiver, index, value) {
-      H._asIntS(index);
+      H._asInt(index);
       H._arrayInstanceType(receiver)._precomputed1._as(value);
       if (!!receiver.immutable$list)
         H.throwExpression(P.UnsupportedError$("indexed set"));
-      if (!H._isInt(index))
-        throw H.wrapException(H.diagnoseIndexError(receiver, index));
       if (index >= receiver.length || index < 0)
         throw H.wrapException(H.diagnoseIndexError(receiver, index));
       receiver[index] = value;
@@ -4255,7 +4218,7 @@
   J.JSUnmodifiableArray.prototype = {};
   J.ArrayIterator.prototype = {
     get$current: function() {
-      return this._current;
+      return this.$ti._precomputed1._as(this._current);
     },
     moveNext$0: function() {
       var t2, _this = this,
@@ -4352,7 +4315,7 @@
     $isnum: 1
   };
   J.JSInt.prototype = {$isint: 1};
-  J.JSDouble.prototype = {};
+  J.JSNumNotInt.prototype = {};
   J.JSString.prototype = {
     codeUnitAt$1: function(receiver, index) {
       if (index < 0)
@@ -4367,8 +4330,6 @@
       return receiver.charCodeAt(index);
     },
     $add: function(receiver, other) {
-      if (typeof other != "string")
-        throw H.wrapException(P.ArgumentError$value(other, null, null));
       return receiver + other;
     },
     startsWith$1: function(receiver, pattern) {
@@ -4444,20 +4405,17 @@
   };
   H.LateError.prototype = {
     toString$0: function(_) {
-      var message = this._message;
-      return message != null ? "LateInitializationError: " + message : "LateInitializationError";
+      var t1 = "LateInitializationError: " + this._message;
+      return t1;
     }
   };
-  H.closure.prototype = {
+  H.nullFuture_closure.prototype = {
     call$0: function() {
-      return P.Future_Future$value(null, type$.Null);
+      var t1 = new P._Future($.Zone__current, type$._Future_Null);
+      t1._asyncComplete$1(null);
+      return t1;
     },
-    $signature: 14
-  };
-  H.NotNullableError.prototype = {
-    toString$0: function(_) {
-      return "Null is not a valid value for the parameter '" + this.__internal$_name + "' of type '" + H.createRuntimeType(this.$ti._precomputed1).toString$0(0) + "'";
-    }
+    $signature: 12
   };
   H.EfficientLengthIterable.prototype = {};
   H.ListIterable.prototype = {
@@ -4472,7 +4430,7 @@
   };
   H.ListIterator.prototype = {
     get$current: function() {
-      return this.__internal$_current;
+      return this.$ti._precomputed1._as(this.__internal$_current);
     },
     moveNext$0: function() {
       var t3, _this = this,
@@ -4524,7 +4482,7 @@
     toString$0: function(_) {
       var t1 = this._method;
       if (t1 == null)
-        return "NoSuchMethodError: " + H.S(this.__js_helper$_message);
+        return "NoSuchMethodError: " + this.__js_helper$_message;
       return "NoSuchMethodError: method not found: '" + t1 + "' on null";
     }
   };
@@ -4534,11 +4492,11 @@
         _s38_ = "NoSuchMethodError: method not found: '",
         t1 = _this._method;
       if (t1 == null)
-        return "NoSuchMethodError: " + H.S(_this.__js_helper$_message);
+        return "NoSuchMethodError: " + _this.__js_helper$_message;
       t2 = _this._receiver;
       if (t2 == null)
-        return _s38_ + t1 + "' (" + H.S(_this.__js_helper$_message) + ")";
-      return _s38_ + t1 + "' on '" + t2 + "' (" + H.S(_this.__js_helper$_message) + ")";
+        return _s38_ + t1 + "' (" + _this.__js_helper$_message + ")";
+      return _s38_ + t1 + "' on '" + t2 + "' (" + _this.__js_helper$_message + ")";
     }
   };
   H.UnknownJsTypeError.prototype = {
@@ -4612,7 +4570,7 @@
       var receiver = this._receiver;
       if (receiver == null)
         receiver = this._self;
-      return "Closure '" + H.S(this._name) + "' of " + ("Instance of '" + H.S(H.Primitives_objectTypeName(receiver)) + "'");
+      return "Closure '" + H.S(this._name) + "' of " + ("Instance of '" + H.Primitives_objectTypeName(type$.Object._as(receiver)) + "'");
     }
   };
   H.RuntimeError.prototype = {
@@ -4705,7 +4663,7 @@
       t1._precomputed1._as(key);
       t1._eval$1("2()")._as(ifAbsent);
       if (_this.containsKey$1(key))
-        return _this.$index(0, key);
+        return t1._rest[1]._as(_this.$index(0, key));
       value = ifAbsent.call$0();
       _this.$indexSet(0, key, value);
       return value;
@@ -4799,7 +4757,7 @@
   };
   H.LinkedHashMapKeyIterator.prototype = {
     get$current: function() {
-      return this.__js_helper$_current;
+      return this.$ti._precomputed1._as(this.__js_helper$_current);
     },
     moveNext$0: function() {
       var cell, _this = this,
@@ -4824,19 +4782,19 @@
     call$1: function(o) {
       return this.getTag(o);
     },
-    $signature: 4
+    $signature: 5
   };
   H.initHooks_closure0.prototype = {
     call$2: function(o, tag) {
       return this.getUnknownTag(o, tag);
     },
-    $signature: 15
+    $signature: 13
   };
   H.initHooks_closure1.prototype = {
     call$1: function(tag) {
-      return this.prototypeForTag(H._asStringS(tag));
+      return this.prototypeForTag(H._asString(tag));
     },
-    $signature: 16
+    $signature: 14
   };
   H.NativeTypedData.prototype = {};
   H.NativeTypedArray.prototype = {
@@ -4851,8 +4809,8 @@
       return receiver[index];
     },
     $indexSet: function(receiver, index, value) {
-      H._asIntS(index);
-      H._asDoubleS(value);
+      H._asInt(index);
+      H._asDouble(value);
       H._checkValidIndex(index, receiver, receiver.length);
       receiver[index] = value;
     },
@@ -4861,8 +4819,8 @@
   };
   H.NativeTypedArrayOfInt.prototype = {
     $indexSet: function(receiver, index, value) {
-      H._asIntS(index);
-      H._asIntS(value);
+      H._asInt(index);
+      H._asInt(value);
       H._checkValidIndex(index, receiver, receiver.length);
       receiver[index] = value;
     },
@@ -4930,11 +4888,6 @@
     }
   };
   H._FunctionParameters.prototype = {};
-  H._Type.prototype = {
-    toString$0: function(_) {
-      return H._rtiToString(this._rti, null);
-    }
-  };
   H._Error.prototype = {
     toString$0: function(_) {
       return this.__rti$_message;
@@ -4948,7 +4901,7 @@
       t1.storedCallback = null;
       f.call$0();
     },
-    $signature: 5
+    $signature: 6
   };
   P._AsyncRun__initializeScheduleImmediate_closure.prototype = {
     call$1: function(callback) {
@@ -4958,19 +4911,19 @@
       t2 = this.span;
       t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);
     },
-    $signature: 17
+    $signature: 15
   };
   P._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
     call$0: function() {
       this.callback.call$0();
     },
-    $signature: 1
+    $signature: 3
   };
   P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {
     call$0: function() {
       this.callback.call$0();
     },
-    $signature: 1
+    $signature: 3
   };
   P._TimerImpl.prototype = {
     _TimerImpl$2: function(milliseconds, callback) {
@@ -5003,6 +4956,8 @@
       var t2, _this = this,
         t1 = _this.$ti;
       t1._eval$1("1/?")._as(value);
+      if (value == null)
+        value = t1._precomputed1._as(value);
       if (!_this.isSync)
         _this._future._asyncComplete$1(value);
       else {
@@ -5014,10 +4969,7 @@
       }
     },
     completeError$2: function(e, st) {
-      var t1;
-      if (st == null)
-        st = P.AsyncError_defaultStackTrace(e);
-      t1 = this._future;
+      var t1 = this._future;
       if (this.isSync)
         t1._completeError$2(e, st);
       else
@@ -5035,13 +4987,22 @@
     call$2: function(error, stackTrace) {
       this.bodyFunction.call$2(1, new H.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace)));
     },
-    $signature: 18
+    $signature: 16
   };
   P._wrapJsFunctionForAsync_closure.prototype = {
     call$2: function(errorCode, result) {
-      this.$protected(H._asIntS(errorCode), result);
+      this.$protected(H._asInt(errorCode), result);
     },
-    $signature: 19
+    $signature: 17
+  };
+  P.AsyncError.prototype = {
+    toString$0: function(_) {
+      return H.S(this.error);
+    },
+    $isError: 1,
+    get$stackTrace: function() {
+      return this.stackTrace;
+    }
   };
   P._Completer.prototype = {
     completeError$2: function(error, stackTrace) {
@@ -5083,12 +5044,13 @@
       var errorCallback = this.errorCallback,
         t1 = type$.dynamic,
         t2 = type$.Object,
-        t3 = this.$ti._eval$1("2/"),
-        t4 = this.result._zone;
+        t3 = asyncError.error,
+        t4 = this.$ti._eval$1("2/"),
+        t5 = this.result._zone;
       if (type$.dynamic_Function_Object_StackTrace._is(errorCallback))
-        return t3._as(t4.runBinary$3$3(errorCallback, asyncError.error, asyncError.stackTrace, t1, t2, type$.StackTrace));
+        return t4._as(t5.runBinary$3$3(errorCallback, t3, asyncError.stackTrace, t1, t2, type$.StackTrace));
       else
-        return t3._as(t4.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), asyncError.error, t1, t2));
+        return t4._as(t5.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), t3, t1, t2));
     }
   };
   P._Future.prototype = {
@@ -5189,6 +5151,17 @@
       }
       return prev;
     },
+    _chainForeignFuture$1: function(source) {
+      var e, s, exception, _this = this;
+      _this._state = 1;
+      try {
+        source.then$1$2$onError(new P._Future__chainForeignFuture_closure(_this), new P._Future__chainForeignFuture_closure0(_this), type$.Null);
+      } catch (exception) {
+        e = H.unwrapException(exception);
+        s = H.getTraceFromException(exception);
+        P.scheduleMicrotask(new P._Future__chainForeignFuture_closure1(_this, e, s));
+      }
+    },
     _complete$1: function(value) {
       var listeners, _this = this,
         t1 = _this.$ti;
@@ -5197,7 +5170,7 @@
         if (t1._is(value))
           P._Future__chainCoreFuture(value, _this);
         else
-          P._Future__chainForeignFuture(value, _this);
+          _this._chainForeignFuture$1(value);
       else {
         listeners = _this._removeListeners$0();
         t1._precomputed1._as(value);
@@ -5216,6 +5189,7 @@
     },
     _completeError$2: function(error, stackTrace) {
       var listeners, t1, _this = this;
+      type$.Object._as(error);
       type$.StackTrace._as(stackTrace);
       listeners = _this._removeListeners$0();
       t1 = P.AsyncError$(error, stackTrace);
@@ -5250,7 +5224,7 @@
           P._Future__chainCoreFuture(value, _this);
         return;
       }
-      P._Future__chainForeignFuture(value, _this);
+      _this._chainForeignFuture$1(value);
     },
     _asyncCompleteError$2: function(error, stackTrace) {
       type$.StackTrace._as(stackTrace);
@@ -5273,21 +5247,28 @@
   };
   P._Future__chainForeignFuture_closure.prototype = {
     call$1: function(value) {
-      var t1 = this.target;
+      var error, stackTrace, exception,
+        t1 = this.$this;
       t1._state = 0;
-      t1._complete$1(value);
+      try {
+        t1._completeWithValue$1(t1.$ti._precomputed1._as(value));
+      } catch (exception) {
+        error = H.unwrapException(exception);
+        stackTrace = H.getTraceFromException(exception);
+        t1._completeError$2(error, stackTrace);
+      }
     },
-    $signature: 5
+    $signature: 6
   };
   P._Future__chainForeignFuture_closure0.prototype = {
     call$2: function(error, stackTrace) {
-      this.target._completeError$2(error, type$.StackTrace._as(stackTrace));
+      this.$this._completeError$2(type$.Object._as(error), type$.StackTrace._as(stackTrace));
     },
-    $signature: 7
+    $signature: 8
   };
   P._Future__chainForeignFuture_closure1.prototype = {
     call$0: function() {
-      this.target._completeError$2(this.e, this.s);
+      this.$this._completeError$2(this.e, this.s);
     },
     $signature: 0
   };
@@ -5318,13 +5299,7 @@
       } catch (exception) {
         e = H.unwrapException(exception);
         s = H.getTraceFromException(exception);
-        if (_this.hasError) {
-          t1 = type$.AsyncError._as(_this._box_1.source._resultOrListeners).error;
-          t2 = e;
-          t2 = t1 == null ? t2 == null : t1 === t2;
-          t1 = t2;
-        } else
-          t1 = false;
+        t1 = _this.hasError && type$.AsyncError._as(_this._box_1.source._resultOrListeners).error === e;
         t2 = _this._box_0;
         if (t1)
           t2.listenerValueOrError = type$.AsyncError._as(_this._box_1.source._resultOrListeners);
@@ -5354,7 +5329,7 @@
     call$1: function(_) {
       return this.originalSource;
     },
-    $signature: 21
+    $signature: 19
   };
   P._Future__propagateToListeners_handleValueCallback.prototype = {
     call$0: function() {
@@ -5378,11 +5353,11 @@
   };
   P._Future__propagateToListeners_handleError.prototype = {
     call$0: function() {
-      var asyncError, e, s, t1, exception, t2, t3, t4, _this = this;
+      var asyncError, e, s, t1, exception, t2, _this = this;
       try {
         asyncError = type$.AsyncError._as(_this._box_1.source._resultOrListeners);
         t1 = _this._box_0;
-        if (H.boolConversionCheck(t1.listener.matchesErrorTest$1(asyncError)) && t1.listener.errorCallback != null) {
+        if (t1.listener.matchesErrorTest$1(asyncError) && t1.listener.errorCallback != null) {
           t1.listenerValueOrError = t1.listener.handleError$1(asyncError);
           t1.listenerHasError = false;
         }
@@ -5390,14 +5365,12 @@
         e = H.unwrapException(exception);
         s = H.getTraceFromException(exception);
         t1 = type$.AsyncError._as(_this._box_1.source._resultOrListeners);
-        t2 = t1.error;
-        t3 = e;
-        t4 = _this._box_0;
-        if (t2 == null ? t3 == null : t2 === t3)
-          t4.listenerValueOrError = t1;
+        t2 = _this._box_0;
+        if (t1.error === e)
+          t2.listenerValueOrError = t1;
         else
-          t4.listenerValueOrError = P.AsyncError$(e, s);
-        t4.listenerHasError = true;
+          t2.listenerValueOrError = P.AsyncError$(e, s);
+        t2.listenerHasError = true;
       }
     },
     $signature: 0
@@ -5435,18 +5408,18 @@
   };
   P.Stream_first_closure.prototype = {
     call$0: function() {
-      var e, s, t1, exception, error, stackTrace;
+      var e, s, t1, exception, stackTrace;
       try {
         t1 = H.IterableElementError_noElement();
         throw H.wrapException(t1);
       } catch (exception) {
         e = H.unwrapException(exception);
         s = H.getTraceFromException(exception);
-        error = e;
+        t1 = e;
         stackTrace = s;
         if (stackTrace == null)
-          stackTrace = P.AsyncError_defaultStackTrace(error);
-        this.future._completeError$2(error, stackTrace);
+          stackTrace = P.AsyncError_defaultStackTrace(t1);
+        this.future._completeError$2(t1, stackTrace);
       }
     },
     $signature: 0
@@ -5680,6 +5653,8 @@
       var result, t1 = {};
       $E._eval$1("0?")._as(futureValue);
       t1.resultValue = null;
+      if (!$E._is(null))
+        throw H.wrapException(new P.ArgumentError(false, null, "futureValue", "Must not be null"));
       t1.resultValue = $E._as(futureValue);
       result = new P._Future($.Zone__current, $E._eval$1("_Future<0>"));
       this.set$_onDone(new P._BufferingStreamSubscription_asFuture_closure(t1, result));
@@ -5818,18 +5793,18 @@
     call$2: function(error, stackTrace) {
       var cancelFuture = this.$this.cancel$0(),
         t1 = this.result;
-      if (cancelFuture != $.$get$Future__nullFuture())
+      if (cancelFuture !== $.$get$Future__nullFuture())
         cancelFuture.whenComplete$1(new P._BufferingStreamSubscription_asFuture__closure(t1, error, stackTrace));
       else
         t1._completeError$2(error, stackTrace);
     },
-    $signature: 7
+    $signature: 8
   };
   P._BufferingStreamSubscription_asFuture__closure.prototype = {
     call$0: function() {
       this.result._completeError$2(this.error, this.stackTrace);
     },
-    $signature: 1
+    $signature: 3
   };
   P._BufferingStreamSubscription__sendError_sendError.prototype = {
     call$0: function() {
@@ -5962,20 +5937,11 @@
     },
     $signature: 0
   };
-  P.AsyncError.prototype = {
-    toString$0: function(_) {
-      return H.S(this.error);
-    },
-    $isError: 1,
-    get$stackTrace: function() {
-      return this.stackTrace;
-    }
-  };
   P._Zone.prototype = {$isZone: 1};
   P._rootHandleUncaughtError_closure.prototype = {
     call$0: function() {
-      var error = H.wrapException(this.error);
-      error.stack = J.toString$0$(this.stackTrace);
+      var error = type$.Object._as(H.wrapException(this.error));
+      error.stack = this.stackTrace.toString$0(0);
       throw error;
     },
     $signature: 0
@@ -5993,7 +5959,7 @@
       } catch (exception) {
         e = H.unwrapException(exception);
         s = H.getTraceFromException(exception);
-        P._rootHandleUncaughtError(_null, _null, this, e, type$.StackTrace._as(s));
+        P._rootHandleUncaughtError(_null, _null, this, type$.Object._as(e), type$.StackTrace._as(s));
       }
     },
     runUnaryGuarded$1$2: function(f, arg, $T) {
@@ -6009,7 +5975,7 @@
       } catch (exception) {
         e = H.unwrapException(exception);
         s = H.getTraceFromException(exception);
-        P._rootHandleUncaughtError(_null, _null, this, e, type$.StackTrace._as(s));
+        P._rootHandleUncaughtError(_null, _null, this, type$.Object._as(e), type$.StackTrace._as(s));
       }
     },
     runBinaryGuarded$2$3: function(f, arg1, arg2, T1, T2) {
@@ -6026,12 +5992,9 @@
       } catch (exception) {
         e = H.unwrapException(exception);
         s = H.getTraceFromException(exception);
-        P._rootHandleUncaughtError(_null, _null, this, e, type$.StackTrace._as(s));
+        P._rootHandleUncaughtError(_null, _null, this, type$.Object._as(e), type$.StackTrace._as(s));
       }
     },
-    bindCallback$1$1: function(f, $R) {
-      return new P._RootZone_bindCallback_closure(this, $R._eval$1("0()")._as(f), $R);
-    },
     bindCallbackGuarded$1: function(f) {
       return new P._RootZone_bindCallbackGuarded_closure(this, type$.void_Function._as(f));
     },
@@ -6063,14 +6026,6 @@
       return $R._eval$1("@<0>")._bind$1(T1)._bind$1(T2)._eval$1("1(2,3)")._as(f);
     }
   };
-  P._RootZone_bindCallback_closure.prototype = {
-    call$0: function() {
-      return this.$this.run$1$1(this.f, this.R);
-    },
-    $signature: function() {
-      return this.R._eval$1("0()");
-    }
-  };
   P._RootZone_bindCallbackGuarded_closure.prototype = {
     call$0: function() {
       return this.$this.runGuarded$1(this.f);
@@ -6123,15 +6078,16 @@
       t1._contents = t2 + ": ";
       t1._contents += H.S(v);
     },
-    $signature: 8
+    $signature: 9
   };
   P.MapMixin.prototype = {
     forEach$1: function(_, action) {
-      var t1, key;
-      H._instanceType(this)._eval$1("~(MapMixin.K,MapMixin.V)")._as(action);
-      for (t1 = this.get$keys(), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
-        key = t1.get$current();
-        action.call$2(key, this.$index(0, key));
+      var t2, key,
+        t1 = H._instanceType(this);
+      t1._eval$1("~(MapMixin.K,MapMixin.V)")._as(action);
+      for (t2 = this.get$keys(), t2 = t2.get$iterator(t2), t1 = t1._eval$1("MapMixin.V"); t2.moveNext$0();) {
+        key = t2.get$current();
+        action.call$2(key, t1._as(this.$index(0, key)));
       }
     },
     get$length: function(_) {
@@ -6271,94 +6227,94 @@
   P.JsonDecoder.prototype = {};
   P._JsonStringifier.prototype = {
     writeStringContent$1: function(s) {
-      var t1, t2, offset, i, charCode, t3, t4,
+      var t1, offset, i, charCode, t2, t3,
         $length = s.length;
-      for (t1 = J.getInterceptor$s(s), t2 = this._sink, offset = 0, i = 0; i < $length; ++i) {
-        charCode = t1._codeUnitAt$1(s, i);
+      for (t1 = this._sink, offset = 0, i = 0; i < $length; ++i) {
+        charCode = C.JSString_methods._codeUnitAt$1(s, i);
         if (charCode > 92) {
           if (charCode >= 55296) {
-            t3 = charCode & 64512;
-            if (t3 === 55296) {
-              t4 = i + 1;
-              t4 = !(t4 < $length && (C.JSString_methods._codeUnitAt$1(s, t4) & 64512) === 56320);
+            t2 = charCode & 64512;
+            if (t2 === 55296) {
+              t3 = i + 1;
+              t3 = !(t3 < $length && (C.JSString_methods._codeUnitAt$1(s, t3) & 64512) === 56320);
             } else
-              t4 = false;
-            if (!t4)
-              if (t3 === 56320) {
-                t3 = i - 1;
-                t3 = !(t3 >= 0 && (C.JSString_methods.codeUnitAt$1(s, t3) & 64512) === 55296);
+              t3 = false;
+            if (!t3)
+              if (t2 === 56320) {
+                t2 = i - 1;
+                t2 = !(t2 >= 0 && (C.JSString_methods.codeUnitAt$1(s, t2) & 64512) === 55296);
               } else
-                t3 = false;
+                t2 = false;
             else
-              t3 = true;
-            if (t3) {
+              t2 = true;
+            if (t2) {
               if (i > offset)
-                t2._contents += C.JSString_methods.substring$2(s, offset, i);
+                t1._contents += C.JSString_methods.substring$2(s, offset, i);
               offset = i + 1;
-              t3 = t2._contents += H.Primitives_stringFromCharCode(92);
-              t3 += H.Primitives_stringFromCharCode(117);
-              t2._contents = t3;
-              t3 += H.Primitives_stringFromCharCode(100);
-              t2._contents = t3;
-              t4 = charCode >>> 8 & 15;
-              t3 += H.Primitives_stringFromCharCode(t4 < 10 ? 48 + t4 : 87 + t4);
-              t2._contents = t3;
-              t4 = charCode >>> 4 & 15;
-              t3 += H.Primitives_stringFromCharCode(t4 < 10 ? 48 + t4 : 87 + t4);
-              t2._contents = t3;
-              t4 = charCode & 15;
-              t2._contents = t3 + H.Primitives_stringFromCharCode(t4 < 10 ? 48 + t4 : 87 + t4);
+              t2 = t1._contents += H.Primitives_stringFromCharCode(92);
+              t2 += H.Primitives_stringFromCharCode(117);
+              t1._contents = t2;
+              t2 += H.Primitives_stringFromCharCode(100);
+              t1._contents = t2;
+              t3 = charCode >>> 8 & 15;
+              t2 += H.Primitives_stringFromCharCode(t3 < 10 ? 48 + t3 : 87 + t3);
+              t1._contents = t2;
+              t3 = charCode >>> 4 & 15;
+              t2 += H.Primitives_stringFromCharCode(t3 < 10 ? 48 + t3 : 87 + t3);
+              t1._contents = t2;
+              t3 = charCode & 15;
+              t1._contents = t2 + H.Primitives_stringFromCharCode(t3 < 10 ? 48 + t3 : 87 + t3);
             }
           }
           continue;
         }
         if (charCode < 32) {
           if (i > offset)
-            t2._contents += C.JSString_methods.substring$2(s, offset, i);
+            t1._contents += C.JSString_methods.substring$2(s, offset, i);
           offset = i + 1;
-          t3 = t2._contents += H.Primitives_stringFromCharCode(92);
+          t2 = t1._contents += H.Primitives_stringFromCharCode(92);
           switch (charCode) {
             case 8:
-              t2._contents = t3 + H.Primitives_stringFromCharCode(98);
+              t1._contents = t2 + H.Primitives_stringFromCharCode(98);
               break;
             case 9:
-              t2._contents = t3 + H.Primitives_stringFromCharCode(116);
+              t1._contents = t2 + H.Primitives_stringFromCharCode(116);
               break;
             case 10:
-              t2._contents = t3 + H.Primitives_stringFromCharCode(110);
+              t1._contents = t2 + H.Primitives_stringFromCharCode(110);
               break;
             case 12:
-              t2._contents = t3 + H.Primitives_stringFromCharCode(102);
+              t1._contents = t2 + H.Primitives_stringFromCharCode(102);
               break;
             case 13:
-              t2._contents = t3 + H.Primitives_stringFromCharCode(114);
+              t1._contents = t2 + H.Primitives_stringFromCharCode(114);
               break;
             default:
-              t3 += H.Primitives_stringFromCharCode(117);
-              t2._contents = t3;
-              t3 += H.Primitives_stringFromCharCode(48);
-              t2._contents = t3;
-              t3 += H.Primitives_stringFromCharCode(48);
-              t2._contents = t3;
-              t4 = charCode >>> 4 & 15;
-              t3 += H.Primitives_stringFromCharCode(t4 < 10 ? 48 + t4 : 87 + t4);
-              t2._contents = t3;
-              t4 = charCode & 15;
-              t2._contents = t3 + H.Primitives_stringFromCharCode(t4 < 10 ? 48 + t4 : 87 + t4);
+              t2 += H.Primitives_stringFromCharCode(117);
+              t1._contents = t2;
+              t2 += H.Primitives_stringFromCharCode(48);
+              t1._contents = t2;
+              t2 += H.Primitives_stringFromCharCode(48);
+              t1._contents = t2;
+              t3 = charCode >>> 4 & 15;
+              t2 += H.Primitives_stringFromCharCode(t3 < 10 ? 48 + t3 : 87 + t3);
+              t1._contents = t2;
+              t3 = charCode & 15;
+              t1._contents = t2 + H.Primitives_stringFromCharCode(t3 < 10 ? 48 + t3 : 87 + t3);
               break;
           }
         } else if (charCode === 34 || charCode === 92) {
           if (i > offset)
-            t2._contents += C.JSString_methods.substring$2(s, offset, i);
+            t1._contents += C.JSString_methods.substring$2(s, offset, i);
           offset = i + 1;
-          t3 = t2._contents += H.Primitives_stringFromCharCode(92);
-          t2._contents = t3 + H.Primitives_stringFromCharCode(charCode);
+          t2 = t1._contents += H.Primitives_stringFromCharCode(92);
+          t1._contents = t2 + H.Primitives_stringFromCharCode(charCode);
         }
       }
       if (offset === 0)
-        t2._contents += H.S(s);
+        t1._contents += s;
       else if (offset < $length)
-        t2._contents += t1.substring$2(s, offset, $length);
+        t1._contents += C.JSString_methods.substring$2(s, offset, $length);
     },
     _checkCycle$1: function(object) {
       var t1, t2, i, t3;
@@ -6435,7 +6391,7 @@
       var t2, i,
         t1 = this._sink;
       t1._contents += "[";
-      t2 = J.getInterceptor$ax(list);
+      t2 = J.getInterceptor$asx(list);
       if (t2.get$isNotEmpty(list)) {
         this.writeObject$1(t2.$index(list, 0));
         for (i = 1; i < t2.get$length(list); ++i) {
@@ -6462,7 +6418,7 @@
       t2._contents += "{";
       for (separator = '"'; i < t1; i += 2, separator = ',"') {
         t2._contents += separator;
-        _this.writeStringContent$1(H._asStringS(keyValueList[i]));
+        _this.writeStringContent$1(H._asString(keyValueList[i]));
         t2._contents += '":';
         t3 = i + 1;
         if (t3 >= t1)
@@ -6483,7 +6439,7 @@
       C.JSArray_methods.$indexSet(t1, t2.i++, key);
       C.JSArray_methods.$indexSet(t1, t2.i++, value);
     },
-    $signature: 8
+    $signature: 9
   };
   P._JsonStringStringifier.prototype = {
     get$_partialResult: function() {
@@ -6534,7 +6490,7 @@
       twoDigitMinutes = t1.call$1(C.JSInt_methods._tdivFast$1(t2, 60000000) % 60);
       twoDigitSeconds = t1.call$1(C.JSInt_methods._tdivFast$1(t2, 1000000) % 60);
       sixDigitUs = new P.Duration_toString_sixDigits().call$1(t2 % 1000000);
-      return "" + C.JSInt_methods._tdivFast$1(t2, 3600000000) + ":" + H.S(twoDigitMinutes) + ":" + H.S(twoDigitSeconds) + "." + H.S(sixDigitUs);
+      return "" + C.JSInt_methods._tdivFast$1(t2, 3600000000) + ":" + twoDigitMinutes + ":" + twoDigitSeconds + "." + sixDigitUs;
     }
   };
   P.Duration_toString_sixDigits.prototype = {
@@ -6551,7 +6507,7 @@
         return "0000" + n;
       return "00000" + n;
     },
-    $signature: 9
+    $signature: 10
   };
   P.Duration_toString_twoDigits.prototype = {
     call$1: function(n) {
@@ -6559,7 +6515,7 @@
         return "" + n;
       return "0" + n;
     },
-    $signature: 9
+    $signature: 10
   };
   P.Error.prototype = {
     get$stackTrace: function() {
@@ -6625,16 +6581,12 @@
       return "RangeError";
     },
     get$_errorExplanation: function() {
-      var t1,
-        invalidValue = H._asIntS(this.invalidValue);
-      if (typeof invalidValue !== "number")
-        return invalidValue.$lt();
-      if (invalidValue < 0)
+      if (H._asInt(this.invalidValue) < 0)
         return ": index must not be negative";
-      t1 = this.length;
+      var t1 = this.length;
       if (t1 === 0)
         return ": no indices are valid";
-      return ": index should be less than " + H.S(t1);
+      return ": index should be less than " + t1;
     },
     get$length: function(receiver) {
       return this.length;
@@ -6647,8 +6599,8 @@
   };
   P.UnimplementedError.prototype = {
     toString$0: function(_) {
-      var message = this.message;
-      return message != null ? "UnimplementedError: " + message : "UnimplementedError";
+      var t1 = "UnimplementedError: " + this.message;
+      return t1;
     }
   };
   P.StateError.prototype = {
@@ -6684,8 +6636,8 @@
   };
   P.CyclicInitializationError.prototype = {
     toString$0: function(_) {
-      var variableName = this.variableName;
-      return variableName == null ? "Reading static variable during its initialization" : "Reading static variable '" + variableName + "' during its initialization";
+      var t1 = "Reading static variable '" + this.variableName + "' during its initialization";
+      return t1;
     }
   };
   P._Exception.prototype = {
@@ -6696,7 +6648,7 @@
   P.FormatException.prototype = {
     toString$0: function(_) {
       var message = this.message,
-        report = message != null && "" !== message ? "FormatException: " + H.S(message) : "FormatException";
+        report = "" !== message ? "FormatException: " + message : "FormatException";
       return report;
     }
   };
@@ -6724,7 +6676,7 @@
   };
   P.Null.prototype = {
     get$hashCode: function(_) {
-      return P.Object.prototype.get$hashCode.call(C.JSNull_methods, this);
+      return P.Object.prototype.get$hashCode.call(this, this);
     },
     toString$0: function(_) {
       return "null";
@@ -6738,7 +6690,7 @@
       return H.Primitives_objectHashCode(this);
     },
     toString$0: function(_) {
-      return "Instance of '" + H.S(H.Primitives_objectTypeName(this)) + "'";
+      return "Instance of '" + H.Primitives_objectTypeName(this) + "'";
     },
     toString: function() {
       return this.toString$0(this);
@@ -6781,7 +6733,7 @@
       return receiver.localName;
     },
     get$onClick: function(receiver) {
-      return new W._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_legacy_MouseEvent);
+      return new W._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
     },
     $isElement: 1
   };
@@ -6834,7 +6786,7 @@
       else
         t3.completeError$1(e);
     },
-    $signature: 22
+    $signature: 20
   };
   W.HttpRequestEventTarget.prototype = {};
   W.MessageEvent.prototype = {$isMessageEvent: 1};
@@ -6866,11 +6818,11 @@
     cancel$0: function() {
       var _this = this;
       if (_this._target == null)
-        return null;
+        return $.$get$nullFuture();
       _this._unlisten$0();
       _this._target = null;
       _this.set$_html$_onData(null);
-      return null;
+      return $.$get$nullFuture();
     },
     onData$1: function(handleData) {
       var t1, _this = this;
@@ -6892,15 +6844,12 @@
       }
     },
     _unlisten$0: function() {
-      var t3,
-        t1 = this._html$_onData,
-        t2 = t1 != null;
-      if (t2) {
-        t3 = this._target;
-        t3.toString;
-        type$.nullable_dynamic_Function_Event._as(t1);
-        if (t2)
-          J._removeEventListener$3$x(t3, this._eventType, t1, false);
+      var t2,
+        t1 = this._html$_onData;
+      if (t1 != null) {
+        t2 = this._target;
+        t2.toString;
+        J._removeEventListener$3$x(t2, this._eventType, type$.nullable_dynamic_Function_Event._as(t1), false);
       }
     },
     set$_html$_onData: function(_onData) {
@@ -6911,13 +6860,13 @@
     call$1: function(e) {
       return this.onData.call$1(type$.Event._as(e));
     },
-    $signature: 10
+    $signature: 1
   };
   W._EventStreamSubscription_onData_closure.prototype = {
     call$1: function(e) {
       return this.handleData.call$1(type$.Event._as(e));
     },
-    $signature: 10
+    $signature: 1
   };
   P._AcceptStructuredClone.prototype = {
     findSlot$1: function(value) {
@@ -7003,7 +6952,7 @@
       J.$indexSet$ax(t1, key, t2);
       return t2;
     },
-    $signature: 23
+    $signature: 21
   };
   P._convertDartToNative_Value_closure.prototype = {
     call$1: function(element) {
@@ -7015,7 +6964,7 @@
     call$2: function(key, value) {
       this.object[key] = P._convertDartToNative_Value(value);
     },
-    $signature: 24
+    $signature: 22
   };
   P._AcceptStructuredCloneDart2Js.prototype = {
     forEachJsField$2: function(object, action) {
@@ -7027,6 +6976,11 @@
       }
     }
   };
+  P.NullRejectionException.prototype = {
+    toString$0: function(_) {
+      return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`.";
+    }
+  };
   P.promiseToFuture_closure.prototype = {
     call$1: function(r) {
       return this.completer.complete$1(0, this.T._eval$1("0/?")._as(r));
@@ -7035,6 +6989,8 @@
   };
   P.promiseToFuture_closure0.prototype = {
     call$1: function(e) {
+      if (e == null)
+        return this.completer.completeError$1(new P.NullRejectionException(e === undefined));
       return this.completer.completeError$1(e);
     },
     $signature: 2
@@ -7048,7 +7004,7 @@
   };
   P.SvgElement.prototype = {
     get$onClick: function(receiver) {
-      return new W._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_legacy_MouseEvent);
+      return new W._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
     }
   };
   Y.Level.prototype = {
@@ -7072,17 +7028,21 @@
   F.Logger.prototype = {
     get$fullName: function() {
       var t1 = this.parent,
-        t2 = t1 == null || t1.name === "",
+        t2 = t1 == null ? null : t1.name.length !== 0,
         t3 = this.name;
-      return t2 ? t3 : t1.get$fullName() + "." + t3;
+      return t2 === true ? t1.get$fullName() + "." + t3 : t3;
     },
     get$level: function() {
-      var effectiveLevel, t1;
-      if (this.parent == null)
-        effectiveLevel = this._level;
-      else {
+      var t1, effectiveLevel;
+      if (this.parent == null) {
+        t1 = this._level;
+        t1.toString;
+        effectiveLevel = t1;
+      } else {
         t1 = $.$get$Logger_root();
-        effectiveLevel = t1._level;
+        t1 = t1._level;
+        t1.toString;
+        effectiveLevel = t1;
       }
       return effectiveLevel;
     },
@@ -7105,6 +7065,7 @@
       }
     },
     _publish$1: function(record) {
+      return null;
     }
   };
   F.Logger_Logger_closure.prototype = {
@@ -7120,37 +7081,40 @@
         $parent = F.Logger_Logger(C.JSString_methods.substring$2(thisName, 0, dot));
         thisName = C.JSString_methods.substring$1(thisName, dot + 1);
       }
-      t1 = new F.Logger(thisName, $parent, P.LinkedHashMap_LinkedHashMap$_empty(type$.legacy_String, type$.legacy_Logger));
+      t1 = new F.Logger(thisName, $parent, P.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger));
       if ($parent == null)
         t1._level = C.Level_INFO_800;
       else
         $parent._children.$indexSet(0, thisName, t1);
       return t1;
     },
-    $signature: 25
+    $signature: 23
   };
   M.SseClient.prototype = {
+    get$_eventSource: function() {
+      var t1 = this.__SseClient__eventSource;
+      return t1 == null ? H.throwExpression(H.LateError$fieldNI("_eventSource")) : t1;
+    },
     SseClient$1: function(serverUrl) {
-      var t2, t3, t4, _this = this,
-        clientId = T.generateUuidV4(),
-        t1 = W.EventSource__factoryEventSource(serverUrl + "?sseClientId=" + clientId, P.LinkedHashMap_LinkedHashMap$_literal(["withCredentials", true], type$.String, type$.dynamic));
-      _this._eventSource = t1;
-      _this._serverUrl = serverUrl + "?sseClientId=" + clientId;
-      t1 = new W._EventStream(t1, "open", false, type$._EventStream_legacy_Event);
+      var t1, t2, t3, t4, _this = this,
+        clientId = T.generateUuidV4();
+      _this.__SseClient__eventSource = W.EventSource__factoryEventSource(serverUrl + "?sseClientId=" + clientId, P.LinkedHashMap_LinkedHashMap$_literal(["withCredentials", true], type$.String, type$.dynamic));
+      _this.__SseClient__serverUrl = serverUrl + "?sseClientId=" + clientId;
+      t1 = new W._EventStream(_this.get$_eventSource(), "open", false, type$._EventStream_Event);
       t1.get$first(t1).whenComplete$1(new M.SseClient_closure(_this));
-      C.EventSource_methods.addEventListener$2(_this._eventSource, "message", _this.get$_onIncomingMessage());
-      C.EventSource_methods.addEventListener$2(_this._eventSource, "control", _this.get$_onIncomingControlMessage());
-      t1 = _this._eventSource;
-      t2 = type$.nullable_void_Function_legacy_Event;
+      C.EventSource_methods.addEventListener$2(_this.get$_eventSource(), "message", _this.get$_onIncomingMessage());
+      C.EventSource_methods.addEventListener$2(_this.get$_eventSource(), "control", _this.get$_onIncomingControlMessage());
+      t1 = _this.get$_eventSource();
+      t2 = type$.nullable_void_Function_Event;
       t3 = t2._as(new M.SseClient_closure0(_this));
       type$.nullable_void_Function._as(null);
-      t4 = type$.legacy_Event;
+      t4 = type$.Event;
       W._EventStreamSubscription$(t1, "open", t3, false, t4);
-      W._EventStreamSubscription$(_this._eventSource, "error", t2._as(new M.SseClient_closure1(_this)), false, t4);
+      W._EventStreamSubscription$(_this.get$_eventSource(), "error", t2._as(new M.SseClient_closure1(_this)), false, t4);
     },
     close$0: function(_) {
       var t1, _this = this;
-      _this._eventSource.close();
+      _this.get$_eventSource().close();
       if (_this._onConnected.future._state === 0) {
         t1 = _this._outgoingController;
         new P._ControllerStream(t1, H._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$2$cancelOnError(null, true).asFuture$1$1(null, type$.dynamic);
@@ -7159,20 +7123,20 @@
       _this._outgoingController.close$0(0);
     },
     _onIncomingControlMessage$1: function(message) {
-      var data = new P._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.legacy_MessageEvent._as(type$.legacy_Event._as(message)).data, true);
+      var data = new P._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true);
       if (J.$eq$(data, "close"))
         this.close$0(0);
       else
         throw H.wrapException(P.UnsupportedError$('Illegal Control Message "' + H.S(data) + '"'));
     },
     _onIncomingMessage$1: function(message) {
-      this._incomingController.add$1(0, H._asStringS(C.C_JsonCodec.decode$2$reviver(0, H._asStringS(new P._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.legacy_MessageEvent._as(type$.legacy_Event._as(message)).data, true)), null)));
+      this._incomingController.add$1(0, H._asString(C.C_JsonCodec.decode$2$reviver(0, H._asString(new P._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true)), null)));
     },
     _onOutgoingDone$0: function() {
       this.close$0(0);
     },
     _onOutgoingMessage$1: function(message) {
-      return this._onOutgoingMessage$body$SseClient(H._asStringS(message));
+      return this._onOutgoingMessage$body$SseClient(H._asStringQ(message));
     },
     _onOutgoingMessage$body$SseClient: function(message) {
       var $async$goto = 0,
@@ -7202,8 +7166,9 @@
                   throw exception;
               }
               $async$handler = 3;
+              t1 = $async$self.__SseClient__serverUrl;
               $async$goto = 6;
-              return P._asyncAwait(W.HttpRequest_request($async$self._serverUrl + "&messageId=" + ++$async$self._lastMessageId, "POST", encodedMessage, true), $async$_onOutgoingMessage$1);
+              return P._asyncAwait(W.HttpRequest_request((t1 == null ? H.throwExpression(H.LateError$fieldNI("_serverUrl")) : t1) + "&messageId=" + ++$async$self._lastMessageId, "POST", encodedMessage, true), $async$_onOutgoingMessage$1);
             case 6:
               // returning from await.
               $async$handler = 1;
@@ -7215,8 +7180,7 @@
               $async$handler = 2;
               $async$exception = $async$currentError;
               e1 = H.unwrapException($async$exception);
-              t1 = "Failed to send " + H.S(message) + ":\n " + H.S(e1);
-              $async$self._logger.log$4(C.Level_SEVERE_1000, t1, null, null);
+              $async$self._logger.log$4(C.Level_SEVERE_1000, "Failed to send " + H.S(message) + ":\n " + H.S(e1), null, null);
               $async$self.close$0(0);
               // goto after finally
               $async$goto = 5;
@@ -7246,7 +7210,7 @@
       t2 = t1._outgoingController;
       new P._ControllerStream(t2, H._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$2$onDone(t1.get$_onOutgoingMessage(), t1.get$_onOutgoingDone());
     },
-    $signature: 1
+    $signature: 3
   };
   M.SseClient_closure0.prototype = {
     call$1: function(_) {
@@ -7254,7 +7218,7 @@
       if (t1 != null)
         t1.cancel$0();
     },
-    $signature: 12
+    $signature: 1
   };
   M.SseClient_closure1.prototype = {
     call$1: function(error) {
@@ -7264,7 +7228,7 @@
       if (t2 !== true)
         t1._errorTimer = P.Timer_Timer(C.Duration_5000000, new M.SseClient__closure(t1, error));
     },
-    $signature: 12
+    $signature: 1
   };
   M.SseClient__closure.prototype = {
     call$0: function() {
@@ -7286,45 +7250,45 @@
       if (t1.future._state === 0)
         t1.completeError$1(error);
     },
-    $signature: 1
+    $signature: 0
   };
   T.generateUuidV4__generateBits.prototype = {
     call$1: function(bitCount) {
       return this.random.nextInt$1(C.JSInt_methods._shlPositive$1(1, bitCount));
     },
-    $signature: 27
+    $signature: 25
   };
   T.generateUuidV4__printDigits.prototype = {
     call$2: function(value, count) {
       return C.JSString_methods.padLeft$2(C.JSInt_methods.toRadixString$1(value, 16), count, "0");
     },
-    $signature: 13
+    $signature: 11
   };
   T.generateUuidV4__bitsDigits.prototype = {
     call$2: function(bitCount, digitCount) {
       return this._printDigits.call$2(this._generateBits.call$1(bitCount), digitCount);
     },
-    $signature: 13
+    $signature: 11
   };
   R.StreamChannelMixin.prototype = {};
   E.main_closure.prototype = {
     call$1: function(_) {
-      type$.legacy_MouseEvent._as(_);
+      type$.MouseEvent._as(_);
       this.channel._outgoingController.close$0(0);
     },
-    $signature: 28
+    $signature: 26
   };
   E.main_closure0.prototype = {
     call$1: function(s) {
       var count, t1, t2, t3, i, t4, t5, lastEvent;
-      H._asStringS(s);
-      if (J.startsWith$1$s(s, "send ")) {
+      H._asString(s);
+      if (C.JSString_methods.startsWith$1(s, "send ")) {
         count = P.int_parse(C.JSArray_methods.get$last(s.split(" ")));
         for (t1 = this.channel._outgoingController, t2 = H._instanceType(t1), t3 = t2._precomputed1, t2 = t2._eval$1("_DelayedData<1>"), i = 0; i < count; ++i) {
           t4 = t3._as("" + i);
-          if (t1._state >= 4)
-            H.throwExpression(t1._badEventState$0());
           t5 = t1._state;
+          if (t5 >= 4)
+            H.throwExpression(t1._badEventState$0());
           if ((t5 & 1) !== 0)
             t1._sendData$1(t4);
           else if ((t5 & 3) === 0) {
@@ -7344,7 +7308,7 @@
         t1.add$1(0, H._instanceType(t1)._precomputed1._as(s));
       }
     },
-    $signature: 29
+    $signature: 27
   };
   (function aliases() {
     var _ = J.Interceptor.prototype;
@@ -7360,34 +7324,34 @@
       _instance_2_u = hunkHelpers._instance_2u,
       _instance_1_u = hunkHelpers._instance_1u,
       _instance_0_u = hunkHelpers._instance_0u;
-    _static_1(P, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 3);
-    _static_1(P, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 3);
-    _static_1(P, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 3);
+    _static_1(P, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 4);
+    _static_1(P, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 4);
+    _static_1(P, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 4);
     _static_0(P, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
     _static_1(P, "async___nullDataHandler$closure", "_nullDataHandler", 2);
-    _static_2(P, "async___nullErrorHandler$closure", "_nullErrorHandler", 6);
+    _static_2(P, "async___nullErrorHandler$closure", "_nullErrorHandler", 7);
     _static_0(P, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
-    _instance(P._Completer.prototype, "get$completeError", 0, 1, null, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 20, 0);
-    _instance_2_u(P._Future.prototype, "get$_completeError", "_completeError$2", 6);
-    _static_1(P, "convert___defaultToEncodable$closure", "_defaultToEncodable", 4);
+    _instance(P._Completer.prototype, "get$completeError", 0, 1, null, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 18, 0);
+    _instance_2_u(P._Future.prototype, "get$_completeError", "_completeError$2", 7);
+    _static_1(P, "convert___defaultToEncodable$closure", "_defaultToEncodable", 5);
     var _;
-    _instance_1_u(_ = M.SseClient.prototype, "get$_onIncomingControlMessage", "_onIncomingControlMessage$1", 11);
-    _instance_1_u(_, "get$_onIncomingMessage", "_onIncomingMessage$1", 11);
+    _instance_1_u(_ = M.SseClient.prototype, "get$_onIncomingControlMessage", "_onIncomingControlMessage$1", 1);
+    _instance_1_u(_, "get$_onIncomingMessage", "_onIncomingMessage$1", 1);
     _instance_0_u(_, "get$_onOutgoingDone", "_onOutgoingDone$0", 0);
-    _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 26);
+    _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 24);
   })();
   (function inheritance() {
     var _mixin = hunkHelpers.mixin,
       _inherit = hunkHelpers.inherit,
       _inheritMany = hunkHelpers.inheritMany;
     _inherit(P.Object, null);
-    _inheritMany(P.Object, [H.JS_CONST, J.Interceptor, J.ArrayIterator, P.Error, H.Closure, P.Iterable, H.ListIterator, H.FixedLengthListMixin, H.TypeErrorDecoder, H.NullThrownFromJavaScriptException, H.ExceptionAndStackTrace, H._StackTrace, P.MapMixin, H.LinkedHashMapCell, H.LinkedHashMapKeyIterator, H.Rti, H._FunctionParameters, H._Type, P._TimerImpl, P._AsyncAwaitCompleter, P._Completer, P._FutureListener, P._Future, P._AsyncCallbackEntry, P.Stream, P.StreamSubscription, P.StreamTransformerBase, P._StreamController, P._AsyncStreamControllerDispatch, P._BufferingStreamSubscription, P._StreamSinkWrapper, P._DelayedEvent, P._DelayedDone, P._PendingEvents, P._StreamIterator, P.AsyncError, P._Zone, P.ListMixin, P.Codec, P._JsonStringifier, P.DateTime, P.Duration, P.OutOfMemoryError, P.StackOverflowError, P._Exception, P.FormatException, P.Null, P._StringStackTrace, P.StringBuffer, W.EventStreamProvider, P._AcceptStructuredClone, P._JSRandom, Y.Level, L.LogRecord, F.Logger, R.StreamChannelMixin]);
+    _inheritMany(P.Object, [H.JS_CONST, J.Interceptor, J.ArrayIterator, P.Error, H.Closure, P.Iterable, H.ListIterator, H.FixedLengthListMixin, H.TypeErrorDecoder, H.NullThrownFromJavaScriptException, H.ExceptionAndStackTrace, H._StackTrace, P.MapMixin, H.LinkedHashMapCell, H.LinkedHashMapKeyIterator, H.Rti, H._FunctionParameters, P._TimerImpl, P._AsyncAwaitCompleter, P.AsyncError, P._Completer, P._FutureListener, P._Future, P._AsyncCallbackEntry, P.Stream, P.StreamSubscription, P.StreamTransformerBase, P._StreamController, P._AsyncStreamControllerDispatch, P._BufferingStreamSubscription, P._StreamSinkWrapper, P._DelayedEvent, P._DelayedDone, P._PendingEvents, P._StreamIterator, P._Zone, P.ListMixin, P.Codec, P._JsonStringifier, P.DateTime, P.Duration, P.OutOfMemoryError, P.StackOverflowError, P._Exception, P.FormatException, P.Null, P._StringStackTrace, P.StringBuffer, W.EventStreamProvider, P._AcceptStructuredClone, P.NullRejectionException, P._JSRandom, Y.Level, L.LogRecord, F.Logger, R.StreamChannelMixin]);
     _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSArray, J.JSNumber, J.JSString, H.NativeTypedData, W.EventTarget, W.DomException, W.Event]);
     _inheritMany(J.JavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction]);
     _inherit(J.JSUnmodifiableArray, J.JSArray);
-    _inheritMany(J.JSNumber, [J.JSInt, J.JSDouble]);
-    _inheritMany(P.Error, [H.LateError, H.NotNullableError, P.TypeError, H.JsNoSuchMethodError, H.UnknownJsTypeError, H.RuntimeError, P.AssertionError, H._Error, P.JsonUnsupportedObjectError, P.NullThrownError, P.ArgumentError, P.UnsupportedError, P.UnimplementedError, P.StateError, P.ConcurrentModificationError, P.CyclicInitializationError]);
-    _inheritMany(H.Closure, [H.closure, H.TearOffClosure, H.initHooks_closure, H.initHooks_closure0, H.initHooks_closure1, P._AsyncRun__initializeScheduleImmediate_internalCallback, P._AsyncRun__initializeScheduleImmediate_closure, P._AsyncRun__scheduleImmediateJsOverride_internalCallback, P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, P._TimerImpl_internalCallback, P._awaitOnObject_closure, P._awaitOnObject_closure0, P._wrapJsFunctionForAsync_closure, P._Future__addListener_closure, P._Future__prependListeners_closure, P._Future__chainForeignFuture_closure, P._Future__chainForeignFuture_closure0, P._Future__chainForeignFuture_closure1, P._Future__asyncCompleteWithValue_closure, P._Future__chainFuture_closure, P._Future__asyncCompleteError_closure, P._Future__propagateToListeners_handleWhenCompleteCallback, P._Future__propagateToListeners_handleWhenCompleteCallback_closure, P._Future__propagateToListeners_handleValueCallback, P._Future__propagateToListeners_handleError, P.Stream_length_closure, P.Stream_length_closure0, P.Stream_first_closure, P.Stream_first_closure0, P._StreamController__subscribe_closure, P._StreamController__recordCancel_complete, P._BufferingStreamSubscription_asFuture_closure, P._BufferingStreamSubscription_asFuture_closure0, P._BufferingStreamSubscription_asFuture__closure, P._BufferingStreamSubscription__sendError_sendError, P._BufferingStreamSubscription__sendDone_sendDone, P._PendingEvents_schedule_closure, P._cancelAndValue_closure, P._rootHandleUncaughtError_closure, P._RootZone_bindCallback_closure, P._RootZone_bindCallbackGuarded_closure, P._RootZone_bindUnaryCallbackGuarded_closure, P.MapBase_mapToString_closure, P._JsonStringifier_writeMap_closure, P.Duration_toString_sixDigits, P.Duration_toString_twoDigits, W.HttpRequest_request_closure, W._EventStreamSubscription_closure, W._EventStreamSubscription_onData_closure, P._AcceptStructuredClone_walk_closure, P._convertDartToNative_Value_closure, P.convertDartToNative_Dictionary_closure, P.promiseToFuture_closure, P.promiseToFuture_closure0, F.Logger_Logger_closure, M.SseClient_closure, M.SseClient_closure0, M.SseClient_closure1, M.SseClient__closure, T.generateUuidV4__generateBits, T.generateUuidV4__printDigits, T.generateUuidV4__bitsDigits, E.main_closure, E.main_closure0]);
+    _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]);
+    _inheritMany(P.Error, [H.LateError, P.TypeError, H.JsNoSuchMethodError, H.UnknownJsTypeError, H.RuntimeError, P.AssertionError, H._Error, P.JsonUnsupportedObjectError, P.NullThrownError, P.ArgumentError, P.UnsupportedError, P.UnimplementedError, P.StateError, P.ConcurrentModificationError, P.CyclicInitializationError]);
+    _inheritMany(H.Closure, [H.nullFuture_closure, H.TearOffClosure, H.initHooks_closure, H.initHooks_closure0, H.initHooks_closure1, P._AsyncRun__initializeScheduleImmediate_internalCallback, P._AsyncRun__initializeScheduleImmediate_closure, P._AsyncRun__scheduleImmediateJsOverride_internalCallback, P._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, P._TimerImpl_internalCallback, P._awaitOnObject_closure, P._awaitOnObject_closure0, P._wrapJsFunctionForAsync_closure, P._Future__addListener_closure, P._Future__prependListeners_closure, P._Future__chainForeignFuture_closure, P._Future__chainForeignFuture_closure0, P._Future__chainForeignFuture_closure1, P._Future__asyncCompleteWithValue_closure, P._Future__chainFuture_closure, P._Future__asyncCompleteError_closure, P._Future__propagateToListeners_handleWhenCompleteCallback, P._Future__propagateToListeners_handleWhenCompleteCallback_closure, P._Future__propagateToListeners_handleValueCallback, P._Future__propagateToListeners_handleError, P.Stream_length_closure, P.Stream_length_closure0, P.Stream_first_closure, P.Stream_first_closure0, P._StreamController__subscribe_closure, P._StreamController__recordCancel_complete, P._BufferingStreamSubscription_asFuture_closure, P._BufferingStreamSubscription_asFuture_closure0, P._BufferingStreamSubscription_asFuture__closure, P._BufferingStreamSubscription__sendError_sendError, P._BufferingStreamSubscription__sendDone_sendDone, P._PendingEvents_schedule_closure, P._cancelAndValue_closure, P._rootHandleUncaughtError_closure, P._RootZone_bindCallbackGuarded_closure, P._RootZone_bindUnaryCallbackGuarded_closure, P.MapBase_mapToString_closure, P._JsonStringifier_writeMap_closure, P.Duration_toString_sixDigits, P.Duration_toString_twoDigits, W.HttpRequest_request_closure, W._EventStreamSubscription_closure, W._EventStreamSubscription_onData_closure, P._AcceptStructuredClone_walk_closure, P._convertDartToNative_Value_closure, P.convertDartToNative_Dictionary_closure, P.promiseToFuture_closure, P.promiseToFuture_closure0, F.Logger_Logger_closure, M.SseClient_closure, M.SseClient_closure0, M.SseClient_closure1, M.SseClient__closure, T.generateUuidV4__generateBits, T.generateUuidV4__printDigits, T.generateUuidV4__bitsDigits, E.main_closure, E.main_closure0]);
     _inherit(H.EfficientLengthIterable, P.Iterable);
     _inheritMany(H.EfficientLengthIterable, [H.ListIterable, H.LinkedHashMapKeyIterable]);
     _inherit(H.NullError, P.TypeError);
@@ -7441,12 +7405,12 @@
     mangledNames: {},
     getTypeFromName: getGlobalFromName,
     metadata: [],
-    types: ["~()", "Null()", "~(@)", "~(~())", "@(@)", "Null(@)", "~(Object,StackTrace)", "Null(Object,StackTrace)", "~(Object?,Object?)", "String(int)", "~(Event)", "~(Event*)", "Null(Event*)", "String*(int*,int*)", "Future<Null>()", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "~(Object[StackTrace?])", "_Future<@>(@)", "~(ProgressEvent)", "@(@,@)", "~(@,@)", "Logger*()", "~(String*)", "int*(int*)", "Null(MouseEvent*)", "Null(String*)"],
+    types: ["~()", "~(Event)", "~(@)", "Null()", "~(~())", "@(@)", "Null(@)", "~(Object,StackTrace)", "Null(Object,StackTrace)", "~(Object?,Object?)", "String(int)", "String(int,int)", "Future<Null>()", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "~(Object[StackTrace?])", "_Future<@>(@)", "~(ProgressEvent)", "@(@,@)", "~(@,@)", "Logger()", "~(String?)", "int(int)", "~(MouseEvent)", "~(String)"],
     interceptorsByTag: null,
     leafTags: null,
     arrayRti: typeof Symbol == "function" && typeof Symbol() == "symbol" ? Symbol("$ti") : "$ti"
   };
-  H._Universe_addRules(init.typeUniverse, JSON.parse('{"JavaScriptFunction":"JavaScriptObject","PlainJavaScriptObject":"JavaScriptObject","UnknownJavaScriptObject":"JavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AElement":"SvgElement","GraphicsElement":"SvgElement","_ResourceProgressEvent":"ProgressEvent","AudioElement":"HtmlElement","MediaElement":"HtmlElement","PointerEvent":"MouseEvent","CompositionEvent":"UIEvent","MessagePort":"EventTarget","HtmlDocument":"Node","Document":"Node","NativeFloat32List":"NativeTypedArrayOfDouble","JSBool":{"bool":[]},"JSNull":{"Null":[]},"JavaScriptObject":{"Function":[]},"JSArray":{"List":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"Iterable":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[]},"JSDouble":{"double":[],"num":[]},"JSString":{"String":[],"Pattern":[]},"LateError":{"Error":[]},"NotNullableError":{"Error":[]},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"Iterable":["1"]},"NullError":{"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapMixin":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"LinkedHashMapKeyIterable":{"Iterable":["1"]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"]},"NativeTypedArrayOfDouble":{"ListMixin":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"ListMixin.E":"double"},"NativeTypedArrayOfInt":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeInt16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8ClampedList":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"_Error":{"Error":[]},"_TypeError":{"Error":[]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Future":{"Future":["1"]},"_StreamController":{"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"]},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_StreamImplEvents":{"_PendingEvents":["1"]},"AsyncError":{"Error":[]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"MapBase":{"MapMixin":["1","2"],"Map":["1","2"]},"MapMixin":{"Map":["1","2"]},"_JsonMap":{"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"Iterable":["String"],"ListIterable.E":"String"},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonEncoder":{"Converter":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"]},"double":{"num":[]},"int":{"num":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"NullThrownError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"CyclicInitializationError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"HtmlElement":{"Element":[],"EventTarget":[]},"AnchorElement":{"Element":[],"EventTarget":[]},"AreaElement":{"Element":[],"EventTarget":[]},"Element":{"EventTarget":[]},"EventSource":{"EventTarget":[]},"FormElement":{"Element":[],"EventTarget":[]},"HttpRequest":{"EventTarget":[]},"HttpRequestEventTarget":{"EventTarget":[]},"MessageEvent":{"Event":[]},"MouseEvent":{"Event":[]},"Node":{"EventTarget":[]},"ProgressEvent":{"Event":[]},"SelectElement":{"Element":[],"EventTarget":[]},"UIEvent":{"Event":[]},"_EventStream":{"Stream":["1"]},"_ElementEventStreamImpl":{"_EventStream":["1"],"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"SvgElement":{"Element":[],"EventTarget":[]}}'));
+  H._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"JavaScriptObject","UnknownJavaScriptObject":"JavaScriptObject","JavaScriptFunction":"JavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AElement":"SvgElement","GraphicsElement":"SvgElement","_ResourceProgressEvent":"ProgressEvent","AudioElement":"HtmlElement","MediaElement":"HtmlElement","PointerEvent":"MouseEvent","CompositionEvent":"UIEvent","MessagePort":"EventTarget","HtmlDocument":"Node","Document":"Node","NativeFloat32List":"NativeTypedArrayOfDouble","JSBool":{"bool":[]},"JSNull":{"Null":[]},"JSArray":{"List":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"Iterable":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[]},"JSNumNotInt":{"double":[],"num":[]},"JSString":{"String":[],"Pattern":[]},"LateError":{"Error":[]},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"Iterable":["1"]},"NullError":{"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapMixin":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"LinkedHashMapKeyIterable":{"Iterable":["1"]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"]},"NativeTypedArrayOfDouble":{"ListMixin":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"ListMixin.E":"double"},"NativeTypedArrayOfInt":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeInt16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8ClampedList":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"_Error":{"Error":[]},"_TypeError":{"Error":[]},"_Future":{"Future":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"AsyncError":{"Error":[]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_StreamController":{"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"]},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_StreamImplEvents":{"_PendingEvents":["1"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"MapBase":{"MapMixin":["1","2"],"Map":["1","2"]},"MapMixin":{"Map":["1","2"]},"_JsonMap":{"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"Iterable":["String"],"ListIterable.E":"String"},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonEncoder":{"Converter":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"]},"double":{"num":[]},"int":{"num":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"NullThrownError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"CyclicInitializationError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"HttpRequest":{"EventTarget":[]},"HttpRequestEventTarget":{"EventTarget":[]},"MouseEvent":{"Event":[]},"ProgressEvent":{"Event":[]},"UIEvent":{"Event":[]},"HtmlElement":{"Element":[],"EventTarget":[]},"AnchorElement":{"Element":[],"EventTarget":[]},"AreaElement":{"Element":[],"EventTarget":[]},"Element":{"EventTarget":[]},"EventSource":{"EventTarget":[]},"FormElement":{"Element":[],"EventTarget":[]},"MessageEvent":{"Event":[]},"Node":{"EventTarget":[]},"SelectElement":{"Element":[],"EventTarget":[]},"_EventStream":{"Stream":["1"]},"_ElementEventStreamImpl":{"_EventStream":["1"],"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"SvgElement":{"Element":[],"EventTarget":[]}}'));
   H._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"EfficientLengthIterable":1,"NativeTypedArray":1,"StreamTransformerBase":2,"MapBase":2,"Codec":2,"StreamChannelMixin":1}'));
   0;
   var type$ = (function rtii() {
@@ -7466,7 +7430,10 @@
       JavaScriptFunction: findType("JavaScriptFunction"),
       JavaScriptIndexingBehavior_dynamic: findType("JavaScriptIndexingBehavior<@>"),
       List_dynamic: findType("List<@>"),
+      Logger: findType("Logger"),
       Map_dynamic_dynamic: findType("Map<@,@>"),
+      MessageEvent: findType("MessageEvent"),
+      MouseEvent: findType("MouseEvent"),
       Null: findType("Null"),
       Object: findType("Object"),
       ProgressEvent: findType("ProgressEvent"),
@@ -7475,9 +7442,10 @@
       UnknownJavaScriptObject: findType("UnknownJavaScriptObject"),
       _AsyncCompleter_HttpRequest: findType("_AsyncCompleter<HttpRequest>"),
       _AsyncCompleter_dynamic: findType("_AsyncCompleter<@>"),
-      _ElementEventStreamImpl_legacy_MouseEvent: findType("_ElementEventStreamImpl<MouseEvent*>"),
-      _EventStream_legacy_Event: findType("_EventStream<Event*>"),
+      _ElementEventStreamImpl_MouseEvent: findType("_ElementEventStreamImpl<MouseEvent>"),
+      _EventStream_Event: findType("_EventStream<Event>"),
       _Future_HttpRequest: findType("_Future<HttpRequest>"),
+      _Future_Null: findType("_Future<Null>"),
       _Future_dynamic: findType("_Future<@>"),
       _Future_int: findType("_Future<int>"),
       _Future_void: findType("_Future<~>"),
@@ -7491,14 +7459,8 @@
       dynamic_Function_Object_StackTrace: findType("@(Object,StackTrace)"),
       dynamic_Function_dynamic_dynamic: findType("@(@,@)"),
       int: findType("int"),
-      legacy_Event: findType("Event*"),
-      legacy_Logger: findType("Logger*"),
-      legacy_MessageEvent: findType("MessageEvent*"),
-      legacy_MouseEvent: findType("MouseEvent*"),
       legacy_Never: findType("0&*"),
       legacy_Object: findType("Object*"),
-      legacy_ProgressEvent: findType("ProgressEvent*"),
-      legacy_String: findType("String*"),
       nullable_Future_Null: findType("Future<Null>?"),
       nullable_List_dynamic: findType("List<@>?"),
       nullable_Object: findType("Object?"),
@@ -7508,8 +7470,8 @@
       nullable_nullable_Object_Function_2_nullable_Object_and_nullable_Object: findType("Object?(Object?,Object?)?"),
       nullable_nullable_Object_Function_dynamic: findType("Object?(@)?"),
       nullable_void_Function: findType("~()?"),
-      nullable_void_Function_legacy_Event: findType("~(Event*)?"),
-      nullable_void_Function_legacy_ProgressEvent: findType("~(ProgressEvent*)?"),
+      nullable_void_Function_Event: findType("~(Event)?"),
+      nullable_void_Function_ProgressEvent: findType("~(ProgressEvent)?"),
       num: findType("num"),
       void: findType("~"),
       void_Function: findType("~()"),
@@ -7524,7 +7486,6 @@
     C.Interceptor_methods = J.Interceptor.prototype;
     C.JSArray_methods = J.JSArray.prototype;
     C.JSInt_methods = J.JSInt.prototype;
-    C.JSNull_methods = J.JSNull.prototype;
     C.JSNumber_methods = J.JSNumber.prototype;
     C.JSString_methods = J.JSString.prototype;
     C.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;
@@ -7682,17 +7643,16 @@
     $.Zone__current = C.C__RootZone;
     $._toStringVisiting = H.setRuntimeTypeInfo([], H.findType("JSArray<Object>"));
     $.LogRecord__nextNumber = 0;
-    $.Logger__loggers = P.LinkedHashMap_LinkedHashMap$_empty(type$.legacy_String, type$.legacy_Logger);
+    $.Logger__loggers = P.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger);
   })();
   (function lazyInitializers() {
     var _lazyFinal = hunkHelpers.lazyFinal,
-      _lazy = hunkHelpers.lazy,
-      _lazyOld = hunkHelpers.lazyOld;
+      _lazy = hunkHelpers.lazy;
     _lazyFinal($, "DART_CLOSURE_PROPERTY_NAME", "$get$DART_CLOSURE_PROPERTY_NAME", function() {
       return H.getIsolateAffinityTag("_$dart_dartClosure");
     });
     _lazyFinal($, "nullFuture", "$get$nullFuture", function() {
-      return C.C__RootZone.run$1$1(new H.closure(), H.findType("Future<Null>"));
+      return C.C__RootZone.run$1$1(new H.nullFuture_closure(), H.findType("Future<Null>"));
     });
     _lazyFinal($, "TypeErrorDecoder_noSuchMethodPattern", "$get$TypeErrorDecoder_noSuchMethodPattern", function() {
       return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({
@@ -7713,7 +7673,7 @@
     });
     _lazyFinal($, "TypeErrorDecoder_nullLiteralCallPattern", "$get$TypeErrorDecoder_nullLiteralCallPattern", function() {
       return H.TypeErrorDecoder_extractPattern(function() {
-        var $argumentsExpr$ = '$arguments$';
+        var $argumentsExpr$ = "$arguments$";
         try {
           null.$method$($argumentsExpr$);
         } catch (e) {
@@ -7726,7 +7686,7 @@
     });
     _lazyFinal($, "TypeErrorDecoder_undefinedLiteralCallPattern", "$get$TypeErrorDecoder_undefinedLiteralCallPattern", function() {
       return H.TypeErrorDecoder_extractPattern(function() {
-        var $argumentsExpr$ = '$arguments$';
+        var $argumentsExpr$ = "$arguments$";
         try {
           (void 0).$method$($argumentsExpr$);
         } catch (e) {
@@ -7762,12 +7722,12 @@
       return P._AsyncRun__initializeScheduleImmediate();
     });
     _lazyFinal($, "Future__nullFuture", "$get$Future__nullFuture", function() {
-      return H.findType("_Future<Null>")._as($.$get$nullFuture());
+      return type$._Future_Null._as($.$get$nullFuture());
     });
     _lazy($, "_hasErrorStackProperty", "$get$_hasErrorStackProperty", function() {
       return new Error().stack != void 0;
     });
-    _lazyOld($, "Logger_root", "$get$Logger_root", function() {
+    _lazyFinal($, "Logger_root", "$get$Logger_root", function() {
       return F.Logger_Logger("");
     });
   })();
@@ -7811,7 +7771,7 @@
       callback(null);
       return;
     }
-    if (typeof document.currentScript != 'undefined') {
+    if (typeof document.currentScript != "undefined") {
       callback(document.currentScript);
       return;
     }
@@ -7825,10 +7785,11 @@
       scripts[i].addEventListener("load", onLoad, false);
   })(function(currentScript) {
     init.currentScript = currentScript;
+    var callMain = E.main;
     if (typeof dartMainRunner === "function")
-      dartMainRunner(E.main, []);
+      dartMainRunner(callMain, []);
     else
-      E.main([]);
+      callMain([]);
   });
 })();