try again (#1745)

diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml
index 0ecb4d2..a6151a7 100644
--- a/.github/workflows/dart.yml
+++ b/.github/workflows/dart.yml
@@ -148,6 +148,285 @@
         working-directory: pkgs/test_core
         run: dart analyze --fatal-infos
   job_003:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: integration_tests/nnbd_opted_in; `dart test -p chrome,vm,node`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:integration_tests/nnbd_opted_in;commands:test"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:integration_tests/nnbd_opted_in
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: integration_tests_nnbd_opted_in_pub_upgrade
+        name: integration_tests/nnbd_opted_in; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: integration_tests/nnbd_opted_in
+        run: dart pub upgrade
+      - name: "integration_tests/nnbd_opted_in; dart test -p chrome,vm,node"
+        if: "always() && steps.integration_tests_nnbd_opted_in_pub_upgrade.conclusion == 'success'"
+        working-directory: integration_tests/nnbd_opted_in
+        run: "dart test -p chrome,vm,node"
+    needs:
+      - job_001
+      - job_002
+  job_004:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: integration_tests/nnbd_opted_out; `dart test -p chrome,vm,node`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:integration_tests/nnbd_opted_out;commands:test"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:integration_tests/nnbd_opted_out
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: integration_tests_nnbd_opted_out_pub_upgrade
+        name: integration_tests/nnbd_opted_out; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: integration_tests/nnbd_opted_out
+        run: dart pub upgrade
+      - name: "integration_tests/nnbd_opted_out; dart test -p chrome,vm,node"
+        if: "always() && steps.integration_tests_nnbd_opted_out_pub_upgrade.conclusion == 'success'"
+        working-directory: integration_tests/nnbd_opted_out
+        run: "dart test -p chrome,vm,node"
+    needs:
+      - job_001
+      - job_002
+  job_005:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:integration_tests/spawn_hybrid;commands:test"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:integration_tests/spawn_hybrid
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: integration_tests_spawn_hybrid_pub_upgrade
+        name: integration_tests/spawn_hybrid; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: integration_tests/spawn_hybrid
+        run: dart pub upgrade
+      - name: "integration_tests/spawn_hybrid; dart test -p chrome,vm,node"
+        if: "always() && steps.integration_tests_spawn_hybrid_pub_upgrade.conclusion == 'success'"
+        working-directory: integration_tests/spawn_hybrid
+        run: "dart test -p chrome,vm,node"
+    needs:
+      - job_001
+      - job_002
+  job_006:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test;commands:command_01"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: pkgs_test_pub_upgrade
+        name: pkgs/test; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: dart pub upgrade
+      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0"
+        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0"
+    needs:
+      - job_001
+      - job_002
+  job_007:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test;commands:command_02"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: pkgs_test_pub_upgrade
+        name: pkgs/test; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: dart pub upgrade
+      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1"
+        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1"
+    needs:
+      - job_001
+      - job_002
+  job_008:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test;commands:command_03"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: pkgs_test_pub_upgrade
+        name: pkgs/test; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: dart pub upgrade
+      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2"
+        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2"
+    needs:
+      - job_001
+      - job_002
+  job_009:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test;commands:command_04"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: pkgs_test_pub_upgrade
+        name: pkgs/test; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: dart pub upgrade
+      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3"
+        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3"
+    needs:
+      - job_001
+      - job_002
+  job_010:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test;commands:command_05"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: pkgs_test_pub_upgrade
+        name: pkgs/test; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: dart pub upgrade
+      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4"
+        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
+        working-directory: pkgs/test
+        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4"
+    needs:
+      - job_001
+      - job_002
+  job_011:
+    name: "unit_test; linux; Dart 2.18.0-146.0.dev; PKG: pkgs/test_api; `dart test --preset travis -x browser`"
+    runs-on: ubuntu-latest
+    steps:
+      - name: Cache Pub hosted dependencies
+        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
+        with:
+          path: "~/.pub-cache/hosted"
+          key: "os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test_api;commands:command_11"
+          restore-keys: |
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev;packages:pkgs/test_api
+            os:ubuntu-latest;pub-cache-hosted;sdk:2.18.0-146.0.dev
+            os:ubuntu-latest;pub-cache-hosted
+            os:ubuntu-latest
+      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
+        with:
+          sdk: "2.18.0-146.0.dev"
+      - id: checkout
+        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
+      - id: pkgs_test_api_pub_upgrade
+        name: pkgs/test_api; dart pub upgrade
+        if: "always() && steps.checkout.conclusion == 'success'"
+        working-directory: pkgs/test_api
+        run: dart pub upgrade
+      - name: "pkgs/test_api; dart test --preset travis -x browser"
+        if: "always() && steps.pkgs_test_api_pub_upgrade.conclusion == 'success'"
+        working-directory: pkgs/test_api
+        run: dart test --preset travis -x browser
+    needs:
+      - job_001
+      - job_002
+  job_012:
     name: "unit_test; linux; Dart dev; PKG: integration_tests/nnbd_opted_in; `dart test -p chrome,vm,node`"
     runs-on: ubuntu-latest
     steps:
@@ -178,7 +457,7 @@
     needs:
       - job_001
       - job_002
-  job_004:
+  job_013:
     name: "unit_test; linux; Dart dev; PKG: integration_tests/nnbd_opted_out; `dart test -p chrome,vm,node`"
     runs-on: ubuntu-latest
     steps:
@@ -209,7 +488,7 @@
     needs:
       - job_001
       - job_002
-  job_005:
+  job_014:
     name: "unit_test; linux; Dart dev; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
     runs-on: ubuntu-latest
     steps:
@@ -240,7 +519,7 @@
     needs:
       - job_001
       - job_002
-  job_006:
+  job_015:
     name: "unit_test; linux; Dart dev; PKG: pkgs/checks; `dart test`"
     runs-on: ubuntu-latest
     steps:
@@ -271,7 +550,7 @@
     needs:
       - job_001
       - job_002
-  job_007:
+  job_016:
     name: "unit_test; linux; Dart dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0`"
     runs-on: ubuntu-latest
     steps:
@@ -302,7 +581,7 @@
     needs:
       - job_001
       - job_002
-  job_008:
+  job_017:
     name: "unit_test; linux; Dart dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1`"
     runs-on: ubuntu-latest
     steps:
@@ -333,7 +612,7 @@
     needs:
       - job_001
       - job_002
-  job_009:
+  job_018:
     name: "unit_test; linux; Dart dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2`"
     runs-on: ubuntu-latest
     steps:
@@ -364,7 +643,7 @@
     needs:
       - job_001
       - job_002
-  job_010:
+  job_019:
     name: "unit_test; linux; Dart dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3`"
     runs-on: ubuntu-latest
     steps:
@@ -395,7 +674,7 @@
     needs:
       - job_001
       - job_002
-  job_011:
+  job_020:
     name: "unit_test; linux; Dart dev; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4`"
     runs-on: ubuntu-latest
     steps:
@@ -426,7 +705,7 @@
     needs:
       - job_001
       - job_002
-  job_012:
+  job_021:
     name: "unit_test; linux; Dart dev; PKG: pkgs/test_api; `dart test --preset travis -x browser`"
     runs-on: ubuntu-latest
     steps:
@@ -457,23 +736,13 @@
     needs:
       - job_001
       - job_002
-  job_013:
-    name: "unit_test; linux; Dart stable; PKG: integration_tests/nnbd_opted_in; `dart test -p chrome,vm,node`"
-    runs-on: ubuntu-latest
+  job_022:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: integration_tests/nnbd_opted_in; `dart test -p chrome,vm,node`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:integration_tests/nnbd_opted_in;commands:test"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:integration_tests/nnbd_opted_in
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: integration_tests_nnbd_opted_in_pub_upgrade
@@ -488,23 +757,13 @@
     needs:
       - job_001
       - job_002
-  job_014:
-    name: "unit_test; linux; Dart stable; PKG: integration_tests/nnbd_opted_out; `dart test -p chrome,vm,node`"
-    runs-on: ubuntu-latest
+  job_023:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: integration_tests/nnbd_opted_out; `dart test -p chrome,vm,node`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:integration_tests/nnbd_opted_out;commands:test"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:integration_tests/nnbd_opted_out
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: integration_tests_nnbd_opted_out_pub_upgrade
@@ -519,23 +778,13 @@
     needs:
       - job_001
       - job_002
-  job_015:
-    name: "unit_test; linux; Dart stable; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
-    runs-on: ubuntu-latest
+  job_024:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:integration_tests/spawn_hybrid;commands:test"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:integration_tests/spawn_hybrid
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: integration_tests_spawn_hybrid_pub_upgrade
@@ -550,23 +799,13 @@
     needs:
       - job_001
       - job_002
-  job_016:
-    name: "unit_test; linux; Dart stable; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0`"
-    runs-on: ubuntu-latest
+  job_025:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 0`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test;commands:command_01"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: pkgs_test_pub_upgrade
@@ -574,30 +813,20 @@
         if: "always() && steps.checkout.conclusion == 'success'"
         working-directory: pkgs/test
         run: dart pub upgrade
-      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0"
+      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 0"
         if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/test
-        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 0"
+        run: dart test --preset travis --total-shards 5 --shard-index 0
     needs:
       - job_001
       - job_002
-  job_017:
-    name: "unit_test; linux; Dart stable; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1`"
-    runs-on: ubuntu-latest
+  job_026:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 1`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test;commands:command_02"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: pkgs_test_pub_upgrade
@@ -605,30 +834,20 @@
         if: "always() && steps.checkout.conclusion == 'success'"
         working-directory: pkgs/test
         run: dart pub upgrade
-      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1"
+      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 1"
         if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/test
-        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 1"
+        run: dart test --preset travis --total-shards 5 --shard-index 1
     needs:
       - job_001
       - job_002
-  job_018:
-    name: "unit_test; linux; Dart stable; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2`"
-    runs-on: ubuntu-latest
+  job_027:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 2`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test;commands:command_03"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: pkgs_test_pub_upgrade
@@ -636,30 +855,20 @@
         if: "always() && steps.checkout.conclusion == 'success'"
         working-directory: pkgs/test
         run: dart pub upgrade
-      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2"
+      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 2"
         if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/test
-        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 2"
+        run: dart test --preset travis --total-shards 5 --shard-index 2
     needs:
       - job_001
       - job_002
-  job_019:
-    name: "unit_test; linux; Dart stable; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3`"
-    runs-on: ubuntu-latest
+  job_028:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 3`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test;commands:command_04"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: pkgs_test_pub_upgrade
@@ -667,30 +876,20 @@
         if: "always() && steps.checkout.conclusion == 'success'"
         working-directory: pkgs/test
         run: dart pub upgrade
-      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3"
+      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 3"
         if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/test
-        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 3"
+        run: dart test --preset travis --total-shards 5 --shard-index 3
     needs:
       - job_001
       - job_002
-  job_020:
-    name: "unit_test; linux; Dart stable; PKG: pkgs/test; `xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4`"
-    runs-on: ubuntu-latest
+  job_029:
+    name: "unit_test; windows; Dart 2.18.0-146.0.dev; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 4`"
+    runs-on: windows-latest
     steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test;commands:command_05"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
       - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
         with:
-          sdk: stable
+          sdk: "2.18.0-146.0.dev"
       - id: checkout
         uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
       - id: pkgs_test_pub_upgrade
@@ -698,45 +897,14 @@
         if: "always() && steps.checkout.conclusion == 'success'"
         working-directory: pkgs/test
         run: dart pub upgrade
-      - name: "pkgs/test; xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4"
+      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 4"
         if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
         working-directory: pkgs/test
-        run: "xvfb-run -s \"-screen 0 1024x768x24\" dart test --preset travis --total-shards 5 --shard-index 4"
+        run: dart test --preset travis --total-shards 5 --shard-index 4
     needs:
       - job_001
       - job_002
-  job_021:
-    name: "unit_test; linux; Dart stable; PKG: pkgs/test_api; `dart test --preset travis -x browser`"
-    runs-on: ubuntu-latest
-    steps:
-      - name: Cache Pub hosted dependencies
-        uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8
-        with:
-          path: "~/.pub-cache/hosted"
-          key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test_api;commands:command_11"
-          restore-keys: |
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:pkgs/test_api
-            os:ubuntu-latest;pub-cache-hosted;sdk:stable
-            os:ubuntu-latest;pub-cache-hosted
-            os:ubuntu-latest
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: pkgs_test_api_pub_upgrade
-        name: pkgs/test_api; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/test_api
-        run: dart pub upgrade
-      - name: "pkgs/test_api; dart test --preset travis -x browser"
-        if: "always() && steps.pkgs_test_api_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/test_api
-        run: dart test --preset travis -x browser
-    needs:
-      - job_001
-      - job_002
-  job_022:
+  job_030:
     name: "unit_test; windows; Dart dev; PKG: integration_tests/nnbd_opted_in; `dart test -p chrome,vm,node`"
     runs-on: windows-latest
     steps:
@@ -757,7 +925,7 @@
     needs:
       - job_001
       - job_002
-  job_023:
+  job_031:
     name: "unit_test; windows; Dart dev; PKG: integration_tests/nnbd_opted_out; `dart test -p chrome,vm,node`"
     runs-on: windows-latest
     steps:
@@ -778,7 +946,7 @@
     needs:
       - job_001
       - job_002
-  job_024:
+  job_032:
     name: "unit_test; windows; Dart dev; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
     runs-on: windows-latest
     steps:
@@ -799,174 +967,6 @@
     needs:
       - job_001
       - job_002
-  job_025:
-    name: "unit_test; windows; Dart stable; PKG: integration_tests/nnbd_opted_in; `dart test -p chrome,vm,node`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: integration_tests_nnbd_opted_in_pub_upgrade
-        name: integration_tests/nnbd_opted_in; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: integration_tests/nnbd_opted_in
-        run: dart pub upgrade
-      - name: "integration_tests/nnbd_opted_in; dart test -p chrome,vm,node"
-        if: "always() && steps.integration_tests_nnbd_opted_in_pub_upgrade.conclusion == 'success'"
-        working-directory: integration_tests/nnbd_opted_in
-        run: "dart test -p chrome,vm,node"
-    needs:
-      - job_001
-      - job_002
-  job_026:
-    name: "unit_test; windows; Dart stable; PKG: integration_tests/nnbd_opted_out; `dart test -p chrome,vm,node`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: integration_tests_nnbd_opted_out_pub_upgrade
-        name: integration_tests/nnbd_opted_out; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: integration_tests/nnbd_opted_out
-        run: dart pub upgrade
-      - name: "integration_tests/nnbd_opted_out; dart test -p chrome,vm,node"
-        if: "always() && steps.integration_tests_nnbd_opted_out_pub_upgrade.conclusion == 'success'"
-        working-directory: integration_tests/nnbd_opted_out
-        run: "dart test -p chrome,vm,node"
-    needs:
-      - job_001
-      - job_002
-  job_027:
-    name: "unit_test; windows; Dart stable; PKG: integration_tests/spawn_hybrid; `dart test -p chrome,vm,node`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: integration_tests_spawn_hybrid_pub_upgrade
-        name: integration_tests/spawn_hybrid; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: integration_tests/spawn_hybrid
-        run: dart pub upgrade
-      - name: "integration_tests/spawn_hybrid; dart test -p chrome,vm,node"
-        if: "always() && steps.integration_tests_spawn_hybrid_pub_upgrade.conclusion == 'success'"
-        working-directory: integration_tests/spawn_hybrid
-        run: "dart test -p chrome,vm,node"
-    needs:
-      - job_001
-      - job_002
-  job_028:
-    name: "unit_test; windows; Dart stable; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 0`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: pkgs_test_pub_upgrade
-        name: pkgs/test; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart pub upgrade
-      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 0"
-        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart test --preset travis --total-shards 5 --shard-index 0
-    needs:
-      - job_001
-      - job_002
-  job_029:
-    name: "unit_test; windows; Dart stable; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 1`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: pkgs_test_pub_upgrade
-        name: pkgs/test; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart pub upgrade
-      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 1"
-        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart test --preset travis --total-shards 5 --shard-index 1
-    needs:
-      - job_001
-      - job_002
-  job_030:
-    name: "unit_test; windows; Dart stable; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 2`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: pkgs_test_pub_upgrade
-        name: pkgs/test; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart pub upgrade
-      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 2"
-        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart test --preset travis --total-shards 5 --shard-index 2
-    needs:
-      - job_001
-      - job_002
-  job_031:
-    name: "unit_test; windows; Dart stable; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 3`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: pkgs_test_pub_upgrade
-        name: pkgs/test; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart pub upgrade
-      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 3"
-        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart test --preset travis --total-shards 5 --shard-index 3
-    needs:
-      - job_001
-      - job_002
-  job_032:
-    name: "unit_test; windows; Dart stable; PKG: pkgs/test; `dart test --preset travis --total-shards 5 --shard-index 4`"
-    runs-on: windows-latest
-    steps:
-      - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d
-        with:
-          sdk: stable
-      - id: checkout
-        uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28
-      - id: pkgs_test_pub_upgrade
-        name: pkgs/test; dart pub upgrade
-        if: "always() && steps.checkout.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart pub upgrade
-      - name: "pkgs/test; dart test --preset travis --total-shards 5 --shard-index 4"
-        if: "always() && steps.pkgs_test_pub_upgrade.conclusion == 'success'"
-        working-directory: pkgs/test
-        run: dart test --preset travis --total-shards 5 --shard-index 4
-    needs:
-      - job_001
-      - job_002
   job_033:
     name: Notify failure
     runs-on: ubuntu-latest
diff --git a/integration_tests/nnbd_opted_in/mono_pkg.yaml b/integration_tests/nnbd_opted_in/mono_pkg.yaml
index 2670a06..78c89b2 100644
--- a/integration_tests/nnbd_opted_in/mono_pkg.yaml
+++ b/integration_tests/nnbd_opted_in/mono_pkg.yaml
@@ -2,7 +2,7 @@
 
 sdk:
 - dev
-- stable
+- 2.18.0-146.0.dev
 
 stages:
 - analyze_and_format:
diff --git a/integration_tests/nnbd_opted_out/mono_pkg.yaml b/integration_tests/nnbd_opted_out/mono_pkg.yaml
index 2670a06..78c89b2 100644
--- a/integration_tests/nnbd_opted_out/mono_pkg.yaml
+++ b/integration_tests/nnbd_opted_out/mono_pkg.yaml
@@ -2,7 +2,7 @@
 
 sdk:
 - dev
-- stable
+- 2.18.0-146.0.dev
 
 stages:
 - analyze_and_format:
diff --git a/integration_tests/spawn_hybrid/mono_pkg.yaml b/integration_tests/spawn_hybrid/mono_pkg.yaml
index 2670a06..78c89b2 100644
--- a/integration_tests/spawn_hybrid/mono_pkg.yaml
+++ b/integration_tests/spawn_hybrid/mono_pkg.yaml
@@ -2,7 +2,7 @@
 
 sdk:
 - dev
-- stable
+- 2.18.0-146.0.dev
 
 stages:
 - analyze_and_format:
diff --git a/pkgs/test/CHANGELOG.md b/pkgs/test/CHANGELOG.md
index 704912f..64c4065 100644
--- a/pkgs/test/CHANGELOG.md
+++ b/pkgs/test/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.21.5-dev
+
+* Migrate all dom interactions to static interop.
+
 ## 1.21.4
 
 * Make the labels for test loading more readable in the compact and expanded
diff --git a/pkgs/test/lib/src/runner/browser/dom.dart b/pkgs/test/lib/src/runner/browser/dom.dart
new file mode 100644
index 0000000..af003c9
--- /dev/null
+++ b/pkgs/test/lib/src/runner/browser/dom.dart
@@ -0,0 +1,241 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:js_util' as js_util;
+
+import 'package:js/js.dart';
+
+@JS()
+@staticInterop
+class Window extends EventTarget {}
+
+extension WindowExtension on Window {
+  external Location get location;
+  CSSStyleDeclaration? getComputedStyle(Element elt, [String? pseudoElt]) =>
+      js_util.callMethod(this, 'getComputedStyle', <Object>[
+        elt,
+        if (pseudoElt != null) pseudoElt
+      ]) as CSSStyleDeclaration?;
+  external Navigator get navigator;
+  void postMessage(Object message, String targetOrigin,
+          [List<MessagePort>? messagePorts]) =>
+      js_util.callMethod(this, 'postMessage', <Object?>[
+        message,
+        targetOrigin,
+        if (messagePorts != null) js_util.jsify(messagePorts)
+      ]);
+}
+
+@JS('window')
+external Window get window;
+
+@JS()
+@staticInterop
+class Document extends Node {}
+
+extension DocumentExtension on Document {
+  external Element? querySelector(String selectors);
+  Element createElement(String name, [Object? options]) => js_util.callMethod(
+          this, 'createElement', <Object>[name, if (options != null) options])
+      as Element;
+}
+
+@JS()
+@staticInterop
+class HTMLDocument extends Document {}
+
+extension HTMLDocumentExtension on HTMLDocument {
+  external HTMLBodyElement? get body;
+  external String? get title;
+}
+
+@JS('document')
+external HTMLDocument get document;
+
+@JS()
+@staticInterop
+class Navigator {}
+
+extension NavigatorExtension on Navigator {
+  external String get userAgent;
+}
+
+@JS()
+@staticInterop
+class Element extends Node {}
+
+extension DomElementExtension on Element {
+  external DomTokenList get classList;
+}
+
+@JS()
+@staticInterop
+class HTMLElement extends Element {}
+
+@JS()
+@staticInterop
+class HTMLBodyElement extends HTMLElement {}
+
+@JS()
+@staticInterop
+class Node extends EventTarget {}
+
+extension NodeExtension on Node {
+  external Node appendChild(Node node);
+  void remove() {
+    if (parentNode != null) {
+      final Node parent = parentNode!;
+      parent.removeChild(this);
+    }
+  }
+
+  external Node removeChild(Node child);
+  external Node? get parentNode;
+}
+
+@JS()
+@staticInterop
+class EventTarget {}
+
+extension EventTargetExtension on EventTarget {
+  void addEventListener(String type, EventListener? listener,
+      [bool? useCapture]) {
+    if (listener != null) {
+      js_util.callMethod(this, 'addEventListener',
+          <Object>[type, listener, if (useCapture != null) useCapture]);
+    }
+  }
+
+  void removeEventListener(String type, EventListener? listener,
+      [bool? useCapture]) {
+    if (listener != null) {
+      js_util.callMethod(this, 'removeEventListener',
+          <Object>[type, listener, if (useCapture != null) useCapture]);
+    }
+  }
+}
+
+typedef EventListener = void Function(Event event);
+
+@JS()
+@staticInterop
+class Event {}
+
+extension EventExtension on Event {
+  external void stopPropagation();
+}
+
+@JS()
+@staticInterop
+class MessageEvent extends Event {}
+
+extension MessageEventExtension on MessageEvent {
+  dynamic get data => js_util.dartify(js_util.getProperty(this, 'data'));
+  external String get origin;
+  List<MessagePort> get ports =>
+      js_util.getProperty<List>(this, 'ports').cast<MessagePort>();
+}
+
+@JS()
+@staticInterop
+class Location {}
+
+extension LocationExtension on Location {
+  external String get href;
+  external String get origin;
+}
+
+@JS()
+@staticInterop
+class MessagePort extends EventTarget {}
+
+extension MessagePortExtension on MessagePort {
+  void postMessage(Object? message) => js_util.callMethod(this, 'postMessage',
+      <Object>[if (message != null) js_util.jsify(message) as Object]);
+  external void start();
+}
+
+@JS()
+@staticInterop
+class CSSStyleDeclaration {}
+
+@JS()
+@staticInterop
+class HTMLScriptElement extends HTMLElement {}
+
+extension HTMLScriptElementExtension on HTMLScriptElement {
+  external set src(String value);
+}
+
+HTMLScriptElement createHTMLScriptElement() =>
+    document.createElement('script') as HTMLScriptElement;
+
+@JS()
+@staticInterop
+class DomTokenList {}
+
+extension DomTokenListExtension on DomTokenList {
+  external void add(String value);
+  external void remove(String value);
+  external bool contains(String token);
+}
+
+@JS()
+@staticInterop
+class HTMLIFrameElement extends HTMLElement {}
+
+extension HTMLIFrameElementExtension on HTMLIFrameElement {
+  external String? get src;
+  external set src(String? value);
+  external Window get contentWindow;
+}
+
+HTMLIFrameElement createHTMLIFrameElement() =>
+    document.createElement('iframe') as HTMLIFrameElement;
+
+@JS()
+@staticInterop
+class WebSocket extends EventTarget {}
+
+extension WebSocketExtension on WebSocket {
+  external void send(Object? data);
+}
+
+WebSocket createWebSocket(String url) =>
+    callConstructorString('WebSocket', <Object>[url])! as WebSocket;
+
+@JS()
+@staticInterop
+class MessageChannel {}
+
+extension MessageChannelExtension on MessageChannel {
+  external MessagePort get port1;
+  external MessagePort get port2;
+}
+
+MessageChannel createMessageChannel() =>
+    callConstructorString('MessageChannel', <Object>[])! as MessageChannel;
+
+Object? getConstructor(String constructorName) =>
+    js_util.getProperty(window, constructorName);
+
+Object? callConstructorString(String constructorName, List<Object?> args) {
+  final Object? constructor = getConstructor(constructorName);
+  if (constructor == null) {
+    return null;
+  }
+  return js_util.callConstructor(constructor, args);
+}
+
+class Subscription {
+  final String type;
+  final EventTarget target;
+  final EventListener listener;
+
+  Subscription(this.target, this.type, this.listener) {
+    target.addEventListener(type, listener);
+  }
+
+  void cancel() => target.removeEventListener(type, listener);
+}
diff --git a/pkgs/test/lib/src/runner/browser/post_message_channel.dart b/pkgs/test/lib/src/runner/browser/post_message_channel.dart
index d05c045..fbb6cfc 100644
--- a/pkgs/test/lib/src/runner/browser/post_message_channel.dart
+++ b/pkgs/test/lib/src/runner/browser/post_message_channel.dart
@@ -2,15 +2,15 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-@JS()
 library test.src.runner.browser.post_message_channel;
 
-import 'dart:html';
 import 'dart:js_util';
 
 import 'package:js/js.dart';
 import 'package:stream_channel/stream_channel.dart';
 
+import 'dom.dart' as dom;
+
 // Avoid using this from dart:html to work around dart-lang/sdk#32113.
 @JS('window.parent.postMessage')
 external void _postParentMessage(Object message, String targetOrigin);
@@ -20,36 +20,42 @@
 StreamChannel<Object?> postMessageChannel() {
   var controller = StreamChannelController<Object?>(sync: true);
 
-  // Listen for a message from the host that transfers a message port. Using
-  // `firstWhere` automatically unsubscribes from further messages. This is
-  // important to prevent multiple subscriptions if the test is ever hot
-  // restarted.
-  window.onMessage.firstWhere((message) {
+  // Listen for a message from the host that transfers a message port, then
+  // cancel the subscription.  This is important to prevent multiple
+  // subscriptions if the test is ever hot restarted.
+  late final dom.Subscription subscription;
+  subscription =
+      dom.Subscription(dom.window, 'message', allowInterop((dom.Event event) {
     // A message on the Window can theoretically come from any website. It's
     // very unlikely that a malicious site would care about hacking someone's
     // unit tests, let alone be able to find the test server while it's
     // running, but it's good practice to check the origin anyway.
-    return message.origin == window.location.origin && message.data == 'port';
-  }).then((message) {
-    var port = message.ports.first;
-    var portSubscription = port.onMessage.listen((message) {
-      controller.local.sink.add(message.data);
-    });
+    final message = event as dom.MessageEvent;
+    if (message.origin == dom.window.location.origin &&
+        message.data == 'port') {
+      subscription.cancel();
+      var port = message.ports.first;
+      port.start();
+      var portSubscription =
+          dom.Subscription(port, 'message', allowInterop((dom.Event event) {
+        controller.local.sink.add((event as dom.MessageEvent).data);
+      }));
 
-    controller.local.stream.listen((data) {
-      port.postMessage({'data': data});
-    }, onDone: () {
-      port.postMessage({'event': 'done'});
-      portSubscription.cancel();
-    });
-  });
+      controller.local.stream.listen((data) {
+        port.postMessage({'data': data});
+      }, onDone: () {
+        port.postMessage({'event': 'done'});
+        portSubscription.cancel();
+      });
+    }
+  }));
 
   // Send a ready message once we're listening so the host knows it's safe to
   // start sending events.
   // TODO(nweiz): Stop manually adding href here once issue 22554 is fixed.
   _postParentMessage(
-      jsify({'href': window.location.href, 'ready': true}) as Object,
-      window.location.origin);
+      jsify({'href': dom.window.location.href, 'ready': true}) as Object,
+      dom.window.location.origin);
 
   return controller.foreign;
 }
diff --git a/pkgs/test/lib/src/runner/browser/static/host.dart.js b/pkgs/test/lib/src/runner/browser/static/host.dart.js
index d802346..223bef2 100644
--- a/pkgs/test/lib/src/runner/browser/static/host.dart.js
+++ b/pkgs/test/lib/src/runner/browser/static/host.dart.js
@@ -1,4 +1,4 @@
-// Generated by dart2js (NullSafetyMode.sound, csp), the Dart to JavaScript compiler version: 2.17.0-edge.280a87df1ece4797c12712fe23cc6d712659a5d5.
+// Generated by dart2js (NullSafetyMode.sound, csp), the Dart to JavaScript compiler version: 2.18.0-edge.bd660d98472f01c57ece4dcf2a7a8810ea4e402d.
 // The code supports the following hooks:
 // dartPrint(message):
 //    if this function is defined it is called instead of the Dart [print]
@@ -239,6 +239,12 @@
     LateError$fieldADI(fieldName) {
       return new A.LateError("Field '" + fieldName + "' has been assigned during initialization.");
     },
+    LateError$fieldNI(fieldName) {
+      return new A.LateError("Field '" + fieldName + "' has not been initialized.");
+    },
+    LateError$fieldAI(fieldName) {
+      return new A.LateError("Field '" + fieldName + "' has already been initialized.");
+    },
     hexDigitValue(char) {
       var letter,
         digit = char ^ 48;
@@ -504,23 +510,18 @@
       return A.Primitives__objectTypeNameNewRti(object);
     },
     Primitives__objectTypeNameNewRti(object) {
-      var interceptor, dispatchName, t1, $constructor, constructorName;
+      var interceptor, dispatchName, $constructor, constructorName;
       if (object instanceof A.Object)
         return A._rtiToString(A.instanceType(object), null);
       interceptor = J.getInterceptor$(object);
       if (interceptor === B.Interceptor_methods || interceptor === B.JavaScriptObject_methods || type$.UnknownJavaScriptObject._is(object)) {
         dispatchName = B.C_JS_CONST(object);
-        t1 = dispatchName !== "Object" && dispatchName !== "";
-        if (t1)
+        if (dispatchName !== "Object" && dispatchName !== "")
           return dispatchName;
         $constructor = object.constructor;
         if (typeof $constructor == "function") {
           constructorName = $constructor.name;
-          if (typeof constructorName == "string")
-            t1 = constructorName !== "Object" && constructorName !== "";
-          else
-            t1 = false;
-          if (t1)
+          if (typeof constructorName == "string" && constructorName !== "Object" && constructorName !== "")
             return constructorName;
         }
       }
@@ -596,39 +597,6 @@
       }
       throw A.wrapException(A.RangeError$range(charCode, 0, 1114111, null, null));
     },
-    Primitives_lazyAsJsDate(receiver) {
-      if (receiver.date === void 0)
-        receiver.date = new Date(receiver._value);
-      return receiver.date;
-    },
-    Primitives_getYear(receiver) {
-      var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0;
-      return t1;
-    },
-    Primitives_getMonth(receiver) {
-      var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1;
-      return t1;
-    },
-    Primitives_getDay(receiver) {
-      var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0;
-      return t1;
-    },
-    Primitives_getHours(receiver) {
-      var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0;
-      return t1;
-    },
-    Primitives_getMinutes(receiver) {
-      var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0;
-      return t1;
-    },
-    Primitives_getSeconds(receiver) {
-      var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0;
-      return t1;
-    },
-    Primitives_getMilliseconds(receiver) {
-      var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0;
-      return t1;
-    },
     Primitives_functionNoSuchMethod($function, positionalArguments, namedArguments) {
       var $arguments, namedArgumentList, t1 = {};
       t1.argumentCount = 0;
@@ -637,14 +605,14 @@
       t1.argumentCount = positionalArguments.length;
       B.JSArray_methods.addAll$1($arguments, positionalArguments);
       t1.names = "";
-      if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
+      if (namedArguments != null && namedArguments._length !== 0)
         namedArguments.forEach$1(0, new A.Primitives_functionNoSuchMethod_closure(t1, namedArgumentList, $arguments));
       return J.noSuchMethod$1$($function, new A.JSInvocationMirror(B.Symbol_call, 0, $arguments, namedArgumentList, 0));
     },
     Primitives_applyFunction($function, positionalArguments, namedArguments) {
       var t1, argumentCount, jsStub;
       if (Array.isArray(positionalArguments))
-        t1 = namedArguments == null || namedArguments.__js_helper$_length === 0;
+        t1 = namedArguments == null || namedArguments._length === 0;
       else
         t1 = false;
       if (t1) {
@@ -688,14 +656,14 @@
       if (typeof jsFunction == "string")
         jsFunction = interceptor[jsFunction];
       if (t1) {
-        if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
+        if (namedArguments != null && namedArguments._length !== 0)
           return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
         if (argumentCount === requiredParameterCount)
           return jsFunction.apply($function, $arguments);
         return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
       }
       if (Array.isArray(defaultValues)) {
-        if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
+        if (namedArguments != null && namedArguments._length !== 0)
           return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
         maxArguments = requiredParameterCount + defaultValues.length;
         if (argumentCount > maxArguments)
@@ -723,7 +691,7 @@
         else {
           for (t1 = keys.length, used = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) {
             key = A._asString(keys[_i]);
-            if (namedArguments.containsKey$1(key)) {
+            if (namedArguments.containsKey$1(0, key)) {
               ++used;
               B.JSArray_methods.add$1($arguments, namedArguments.$index(0, key));
             } else {
@@ -733,7 +701,7 @@
               B.JSArray_methods.add$1($arguments, defaultValue);
             }
           }
-          if (used !== namedArguments.__js_helper$_length)
+          if (used !== namedArguments._length)
             return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
         }
         return jsFunction.apply($function, $arguments);
@@ -1404,7 +1372,7 @@
       var match = regexp._execGlobal$2(receiver, startIndex);
       if (match == null)
         return receiver;
-      return A.stringReplaceRangeUnchecked(receiver, match._match.index, match.get$end(), replacement);
+      return A.stringReplaceRangeUnchecked(receiver, match._match.index, match.get$end(match), replacement);
     },
     quoteStringForRegExp(string) {
       if (/[[\]{}()*+?.\\^$|]/.test(string))
@@ -1425,9 +1393,9 @@
     stringReplaceAllGeneral(receiver, pattern, replacement) {
       var t1, startIndex, t2, match;
       for (t1 = J.allMatches$1$s(pattern, receiver), t1 = t1.get$iterator(t1), startIndex = 0, t2 = ""; t1.moveNext$0();) {
-        match = t1.get$current();
+        match = t1.get$current(t1);
         t2 = t2 + receiver.substring(startIndex, match.get$start(match)) + replacement;
-        startIndex = match.get$end();
+        startIndex = match.get$end(match);
       }
       t1 = t2 + receiver.substring(startIndex);
       return t1.charCodeAt(0) == 0 ? t1 : t1;
@@ -1464,8 +1432,8 @@
       matches = t1.get$iterator(t1);
       if (!matches.moveNext$0())
         return receiver;
-      match = matches.get$current();
-      return B.JSString_methods.replaceRange$3(receiver, match.get$start(match), match.get$end(), replacement);
+      match = matches.get$current(matches);
+      return B.JSString_methods.replaceRange$3(receiver, match.get$start(match), match.get$end(match), replacement);
     },
     stringReplaceRangeUnchecked(receiver, start, end, replacement) {
       return receiver.substring(0, start) + replacement + receiver.substring(end);
@@ -1478,11 +1446,15 @@
     },
     ConstantStringMap: function ConstantStringMap(t0, t1, t2, t3) {
       var _ = this;
-      _.__js_helper$_length = t0;
+      _._length = t0;
       _._jsObject = t1;
       _.__js_helper$_keys = t2;
       _.$ti = t3;
     },
+    _ConstantMapKeyIterable: function _ConstantMapKeyIterable(t0, t1) {
+      this._map = t0;
+      this.$ti = t1;
+    },
     Instantiation: function Instantiation() {
     },
     Instantiation1: function Instantiation1(t0, t1) {
@@ -1558,8 +1530,8 @@
     },
     JsLinkedHashMap: function JsLinkedHashMap(t0) {
       var _ = this;
-      _.__js_helper$_length = 0;
-      _._last = _._first = _.__js_helper$_rest = _.__js_helper$_nums = _.__js_helper$_strings = null;
+      _._length = 0;
+      _._last = _._first = _.__js_helper$_rest = _._nums = _._strings = null;
       _._modifications = 0;
       _.$ti = t0;
     },
@@ -1573,12 +1545,12 @@
       _._previous = _._next = null;
     },
     LinkedHashMapKeyIterable: function LinkedHashMapKeyIterable(t0, t1) {
-      this.__js_helper$_map = t0;
+      this._map = t0;
       this.$ti = t1;
     },
     LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1, t2) {
       var _ = this;
-      _.__js_helper$_map = t0;
+      _._map = t0;
       _._modifications = t1;
       _.__js_helper$_current = _._cell = null;
       _.$ti = t2;
@@ -1629,29 +1601,22 @@
       _.__js_helper$_index = t2;
       _.__js_helper$_current = null;
     },
+    throwLateFieldNI(fieldName) {
+      return A.throwExpression(A.LateError$fieldNI(fieldName));
+    },
+    throwLateFieldAI(fieldName) {
+      return A.throwExpression(A.LateError$fieldAI(fieldName));
+    },
     throwLateFieldADI(fieldName) {
       return A.throwExpression(A.LateError$fieldADI(fieldName));
     },
     _Cell$named(_name) {
       var t1 = new A._Cell(_name);
-      return t1.__late_helper$_value = t1;
-    },
-    _lateReadCheck(value, $name) {
-      if (value === $)
-        throw A.wrapException(new A.LateError("Field '" + $name + "' has not been initialized."));
-      return value;
-    },
-    _lateWriteOnceCheck(value, $name) {
-      if (value !== $)
-        throw A.wrapException(new A.LateError("Field '" + $name + "' has already been initialized."));
-    },
-    _lateInitializeOnceCheck(value, $name) {
-      if (value !== $)
-        throw A.wrapException(A.LateError$fieldADI($name));
+      return t1._value = t1;
     },
     _Cell: function _Cell(t0) {
       this.__late_helper$_name = t0;
-      this.__late_helper$_value = null;
+      this._value = null;
     },
     _ensureNativeList(list) {
       return list;
@@ -1673,8 +1638,6 @@
         throw A.wrapException(A.diagnoseRangeError(start, end, $length));
       return end;
     },
-    NativeByteBuffer: function NativeByteBuffer() {
-    },
     NativeTypedData: function NativeTypedData() {
     },
     NativeTypedArray: function NativeTypedArray() {
@@ -3651,7 +3614,7 @@
       type$.nullable_ZoneSpecification._as(specification);
       type$.nullable_Map_of_nullable_Object_and_nullable_Object._as(zoneValues);
       $.printToZone = A.async___printToZone$closure();
-      valueMap = zone.get$_map();
+      valueMap = zone.get$_async$_map();
       valueMap = valueMap;
       t1 = new A._CustomZone(zone.get$_run(), zone.get$_runUnary(), zone.get$_runBinary(), zone.get$_registerCallback(), zone.get$_registerUnaryCallback(), zone.get$_registerBinaryCallback(), zone.get$_errorCallback(), zone.get$_scheduleMicrotask(), zone.get$_createTimer(), zone.get$_createPeriodicTimer(), zone.get$_print(), zone.get$_fork(), zone.get$_handleUncaughtError(), zone, valueMap);
       handleUncaughtError = specification.handleUncaughtError;
@@ -3816,8 +3779,6 @@
       this._box_0 = t0;
       this.future = t1;
     },
-    StreamSubscription: function StreamSubscription() {
-    },
     StreamTransformerBase: function StreamTransformerBase() {
     },
     _StreamController: function _StreamController() {
@@ -3848,7 +3809,7 @@
     _ControllerSubscription: function _ControllerSubscription(t0, t1, t2, t3, t4, t5, t6) {
       var _ = this;
       _._controller = t0;
-      _._async$_onData = t1;
+      _._onData = t1;
       _._onError = t2;
       _._onDone = t3;
       _._zone = t4;
@@ -3857,7 +3818,7 @@
       _.$ti = t6;
     },
     _StreamSinkWrapper: function _StreamSinkWrapper(t0, t1) {
-      this._async$_target = t0;
+      this._target = t0;
       this.$ti = t1;
     },
     _AddStreamState_cancel_closure: function _AddStreamState_cancel_closure(t0) {
@@ -3889,18 +3850,16 @@
     },
     _DelayedDone: function _DelayedDone() {
     },
-    _PendingEvents: function _PendingEvents() {
+    _PendingEvents: function _PendingEvents(t0) {
+      var _ = this;
+      _._async$_state = 0;
+      _.lastPendingEvent = _.firstPendingEvent = null;
+      _.$ti = t0;
     },
     _PendingEvents_schedule_closure: function _PendingEvents_schedule_closure(t0, t1) {
       this.$this = t0;
       this.dispatch = t1;
     },
-    _StreamImplEvents: function _StreamImplEvents(t0) {
-      var _ = this;
-      _.lastPendingEvent = _.firstPendingEvent = null;
-      _._async$_state = 0;
-      _.$ti = t0;
-    },
     _DoneStreamSubscription: function _DoneStreamSubscription(t0, t1, t2) {
       var _ = this;
       _._zone = t0;
@@ -3919,30 +3878,6 @@
       this.$function = t1;
       this.$ti = t2;
     },
-    _RunNullaryZoneFunction: function _RunNullaryZoneFunction(t0, t1) {
-      this.zone = t0;
-      this.$function = t1;
-    },
-    _RunUnaryZoneFunction: function _RunUnaryZoneFunction(t0, t1) {
-      this.zone = t0;
-      this.$function = t1;
-    },
-    _RunBinaryZoneFunction: function _RunBinaryZoneFunction(t0, t1) {
-      this.zone = t0;
-      this.$function = t1;
-    },
-    _RegisterNullaryZoneFunction: function _RegisterNullaryZoneFunction(t0, t1) {
-      this.zone = t0;
-      this.$function = t1;
-    },
-    _RegisterUnaryZoneFunction: function _RegisterUnaryZoneFunction(t0, t1) {
-      this.zone = t0;
-      this.$function = t1;
-    },
-    _RegisterBinaryZoneFunction: function _RegisterBinaryZoneFunction(t0, t1) {
-      this.zone = t0;
-      this.$function = t1;
-    },
     _ZoneSpecification: function _ZoneSpecification(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {
       var _ = this;
       _.handleUncaughtError = t0;
@@ -3981,7 +3916,7 @@
       _._handleUncaughtError = t12;
       _._delegateCache = null;
       _.parent = t13;
-      _._map = t14;
+      _._async$_map = t14;
     },
     _CustomZone_bindCallback_closure: function _CustomZone_bindCallback_closure(t0, t1, t2) {
       this.$this = t0;
@@ -4122,7 +4057,7 @@
           break;
         if (!it.moveNext$0())
           return;
-        next = A.S(it.get$current());
+        next = A.S(it.get$current(it));
         B.JSArray_methods.add$1(parts, next);
         $length += next.length + 2;
         ++count;
@@ -4137,7 +4072,7 @@
           return A.ioore(parts, -1);
         penultimateString = parts.pop();
       } else {
-        penultimate = it.get$current();
+        penultimate = it.get$current(it);
         ++count;
         if (!it.moveNext$0()) {
           if (count <= 4) {
@@ -4150,10 +4085,10 @@
           penultimateString = parts.pop();
           $length += ultimateString.length + 2;
         } else {
-          ultimate = it.get$current();
+          ultimate = it.get$current(it);
           ++count;
           for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
-            ultimate0 = it.get$current();
+            ultimate0 = it.get$current(it);
             ++count;
             if (count > 100) {
               while (true) {
@@ -4203,7 +4138,7 @@
         B.JSArray_methods.add$1($._toStringVisiting, m);
         result._contents += "{";
         t1.first = true;
-        m.forEach$1(0, new A.MapBase_mapToString_closure(t1, result));
+        J.forEach$1$x(m, new A.MapBase_mapToString_closure(t1, result));
         result._contents += "}";
       } finally {
         if (0 >= $._toStringVisiting.length)
@@ -4216,7 +4151,13 @@
     _HashMap: function _HashMap(t0) {
       var _ = this;
       _._collection$_length = 0;
-      _._keys = _._collection$_rest = _._nums = _._strings = null;
+      _._keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
+      _.$ti = t0;
+    },
+    _IdentityHashMap: function _IdentityHashMap(t0) {
+      var _ = this;
+      _._collection$_length = 0;
+      _._keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
       _.$ti = t0;
     },
     _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) {
@@ -4234,7 +4175,7 @@
     _LinkedHashSet: function _LinkedHashSet(t0) {
       var _ = this;
       _._collection$_length = 0;
-      _._collection$_last = _._collection$_first = _._collection$_rest = _._nums = _._strings = null;
+      _._collection$_last = _._collection$_first = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
       _._collection$_modifications = 0;
       _.$ti = t0;
     },
@@ -4507,7 +4448,7 @@
       var t1,
         list = A._setArrayType([], $E._eval$1("JSArray<0>"));
       for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
-        B.JSArray_methods.add$1(list, $E._as(t1.get$current()));
+        B.JSArray_methods.add$1(list, $E._as(t1.get$current(t1)));
       if (growable)
         return list;
       return J.JSArray_markFixedList(list, $E);
@@ -4522,7 +4463,7 @@
         return A._setArrayType(elements.slice(0), $E._eval$1("JSArray<0>"));
       list = A._setArrayType([], $E._eval$1("JSArray<0>"));
       for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
-        B.JSArray_methods.add$1(list, t1.get$current());
+        B.JSArray_methods.add$1(list, t1.get$current(t1));
       return list;
     },
     List_List$unmodifiable(elements, $E) {
@@ -4557,12 +4498,12 @@
       list = [];
       if (t1)
         for (; it.moveNext$0();)
-          list.push(it.get$current());
+          list.push(it.get$current(it));
       else
         for (i = start; i < end; ++i) {
           if (!it.moveNext$0())
             throw A.wrapException(A.RangeError$range(end, start, i, _null, _null));
-          list.push(it.get$current());
+          list.push(it.get$current(it));
         }
       return A.Primitives_stringFromCharCodes(list);
     },
@@ -4575,12 +4516,12 @@
         return string;
       if (separator.length === 0) {
         do
-          string += A.S(iterator.get$current());
+          string += A.S(iterator.get$current(iterator));
         while (iterator.moveNext$0());
       } else {
-        string += A.S(iterator.get$current());
+        string += A.S(iterator.get$current(iterator));
         for (; iterator.moveNext$0();)
-          string = string + separator + A.S(iterator.get$current());
+          string = string + separator + A.S(iterator.get$current(iterator));
       }
       return string;
     },
@@ -4621,29 +4562,6 @@
       }
       return t2.charCodeAt(0) == 0 ? t2 : t2;
     },
-    DateTime__fourDigits(n) {
-      var absN = Math.abs(n),
-        sign = n < 0 ? "-" : "";
-      if (absN >= 1000)
-        return "" + n;
-      if (absN >= 100)
-        return sign + "0" + absN;
-      if (absN >= 10)
-        return sign + "00" + absN;
-      return sign + "000" + absN;
-    },
-    DateTime__threeDigits(n) {
-      if (n >= 100)
-        return "" + n;
-      if (n >= 10)
-        return "0" + n;
-      return "00" + n;
-    },
-    DateTime__twoDigits(n) {
-      if (n >= 10)
-        return "" + n;
-      return "0" + n;
-    },
     Error_safeToString(object) {
       if (typeof object == "number" || A._isBool(object) || object == null)
         return J.toString$0$(object);
@@ -4708,12 +4626,25 @@
     FormatException$(message, source, offset) {
       return new A.FormatException(message, source, offset);
     },
-    Object_hash(object1, object2) {
-      var t2,
-        t1 = object1.get$hashCode(object1);
-      object2 = A.Primitives_objectHashCode(object2);
+    Object_hash(object1, object2, object3, object4) {
+      var t1, t2;
+      if (B.C_SentinelValue === object3) {
+        t1 = J.get$hashCode$(object1);
+        object2 = J.get$hashCode$(object2);
+        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2));
+      }
+      if (B.C_SentinelValue === object4) {
+        t1 = J.get$hashCode$(object1);
+        object2 = J.get$hashCode$(object2);
+        object3 = J.get$hashCode$(object3);
+        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2), object3));
+      }
+      t1 = J.get$hashCode$(object1);
+      object2 = J.get$hashCode$(object2);
+      object3 = J.get$hashCode$(object3);
+      object4 = J.get$hashCode$(object4);
       t2 = $.$get$_hashSeed();
-      return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(t2, t1), object2));
+      return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(t2, t1), object2), object3), object4));
     },
     Uri_Uri$dataFromString($content) {
       var t1, _null = null,
@@ -5038,24 +4969,30 @@
       return windows ? A._Uri__makeWindowsFileUrl(path, false) : A._Uri__makeFileUri(path, false);
     },
     _Uri__checkNonWindowsPathReservedCharacters(segments, argumentError) {
-      var t1, _i, segment;
+      var t1, _i, segment, t2, t3;
       for (t1 = segments.length, _i = 0; _i < t1; ++_i) {
         segment = segments[_i];
-        if (J.contains$1$asx(segment, "/")) {
+        t2 = J.getInterceptor$asx(segment);
+        t3 = t2.get$length(segment);
+        if (0 > t3)
+          A.throwExpression(A.RangeError$range(0, 0, t2.get$length(segment), null, null));
+        if (A.stringContainsUnchecked(segment, "/", 0)) {
           t1 = A.UnsupportedError$("Illegal path character " + A.S(segment));
           throw A.wrapException(t1);
         }
       }
     },
     _Uri__checkWindowsPathReservedCharacters(segments, argumentError, firstSegment) {
-      var t1, t2, t3;
-      for (t1 = A.SubListIterable$(segments, firstSegment, null, A._arrayInstanceType(segments)._precomputed1), t2 = t1.$ti, t1 = new A.ListIterator(t1, t1.get$length(t1), t2._eval$1("ListIterator<ListIterable.E>")), t2 = t2._eval$1("ListIterable.E"); t1.moveNext$0();) {
+      var t1, t2, t3, t4, t5, _null = null;
+      for (t1 = A.SubListIterable$(segments, firstSegment, _null, A._arrayInstanceType(segments)._precomputed1), t2 = t1.$ti, t1 = new A.ListIterator(t1, t1.get$length(t1), t2._eval$1("ListIterator<ListIterable.E>")), t2 = t2._eval$1("ListIterable.E"); t1.moveNext$0();) {
         t3 = t1.__internal$_current;
         if (t3 == null)
           t3 = t2._as(t3);
-        if (B.JSString_methods.contains$1(t3, A.RegExp_RegExp('["*/:<>?\\\\|]', false)))
+        t4 = A.RegExp_RegExp('["*/:<>?\\\\|]', false);
+        t5 = t3.length;
+        if (A.stringContainsUnchecked(t3, t4, 0))
           if (argumentError)
-            throw A.wrapException(A.ArgumentError$("Illegal character in path", null));
+            throw A.wrapException(A.ArgumentError$("Illegal character in path", _null));
           else
             throw A.wrapException(A.UnsupportedError$("Illegal character in path: " + t3));
       }
@@ -5817,7 +5754,7 @@
       B.JSArray_methods.add$1(indices, i);
       t2 = i + 1;
       if ((indices.length & 1) === 1)
-        text = B.C_Base64Codec.normalize$3(text, t2, t1);
+        text = B.C_Base64Codec.normalize$3(0, text, t2, t1);
       else {
         data = A._Uri__normalize(text, t2, t1, B.List_CVk, true);
         if (data != null)
@@ -6043,10 +5980,6 @@
       this._box_0 = t0;
       this.sb = t1;
     },
-    DateTime: function DateTime(t0, t1) {
-      this._value = t0;
-      this.isUtc = t1;
-    },
     Duration: function Duration(t0) {
       this._duration = t0;
     },
@@ -6153,7 +6086,7 @@
       _.path = t4;
       _._query = t5;
       _._fragment = t6;
-      _.___Uri_queryParameters = _.___Uri_hashCode = _.___Uri_pathSegments = _.___Uri__text = $;
+      _.___Uri_queryParameters_FI = _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = $;
     },
     _Uri__makePath_closure: function _Uri__makePath_closure() {
     },
@@ -6190,37 +6123,12 @@
       _.path = t4;
       _._query = t5;
       _._fragment = t6;
-      _.___Uri_queryParameters = _.___Uri_hashCode = _.___Uri_pathSegments = _.___Uri__text = $;
-    },
-    window() {
-      return window;
-    },
-    WebSocket_WebSocket(url) {
-      return new WebSocket(url);
-    },
-    _EventStreamSubscription$(_target, _eventType, onData, _useCapture, $T) {
-      var t1 = onData == null ? null : A._wrapZone(new A._EventStreamSubscription_closure(onData), type$.Event);
-      t1 = new A._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>"));
-      t1._tryResume$0();
-      return t1;
-    },
-    _convertNativeToDart_Window(win) {
-      return A._DOMWindowCrossFrame__createSafe(win);
-    },
-    _DOMWindowCrossFrame__createSafe(w) {
-      if (w === window)
-        return type$.WindowBase._as(w);
-      else
-        return new A._DOMWindowCrossFrame(w);
-    },
-    _wrapZone(callback, $T) {
-      var t1 = $.Zone__current;
-      if (t1 === B.C__RootZone)
-        return callback;
-      return t1.bindUnaryCallbackGuarded$1$1(callback, $T);
+      _.___Uri_queryParameters_FI = _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = $;
     },
     HtmlElement: function HtmlElement() {
     },
+    AccessibleNodeList: function AccessibleNodeList() {
+    },
     AnchorElement: function AnchorElement() {
     },
     AreaElement: function AreaElement() {
@@ -6229,132 +6137,315 @@
     },
     CharacterData: function CharacterData() {
     },
+    CssPerspective: function CssPerspective() {
+    },
+    CssRule: function CssRule() {
+    },
+    CssStyleDeclaration: function CssStyleDeclaration() {
+    },
+    CssStyleDeclarationBase: function CssStyleDeclarationBase() {
+    },
+    CssStyleValue: function CssStyleValue() {
+    },
+    CssTransformComponent: function CssTransformComponent() {
+    },
+    CssTransformValue: function CssTransformValue() {
+    },
+    CssUnparsedValue: function CssUnparsedValue() {
+    },
+    DataTransferItemList: function DataTransferItemList() {
+    },
     DomException: function DomException() {
     },
+    DomRectList: function DomRectList() {
+    },
+    DomRectReadOnly: function DomRectReadOnly() {
+    },
+    DomStringList: function DomStringList() {
+    },
     DomTokenList: function DomTokenList() {
     },
     Element: function Element() {
     },
-    Event: function Event() {
-    },
     EventTarget: function EventTarget() {
     },
     File: function File() {
     },
+    FileList: function FileList() {
+    },
+    FileWriter: function FileWriter() {
+    },
     FormElement: function FormElement() {
     },
+    Gamepad: function Gamepad() {
+    },
+    History: function History() {
+    },
     HtmlCollection: function HtmlCollection() {
     },
-    IFrameElement: function IFrameElement() {
-    },
     Location: function Location() {
     },
-    MessageEvent: function MessageEvent() {
+    MediaList: function MediaList() {
     },
-    MessagePort: function MessagePort() {
+    MidiInputMap: function MidiInputMap() {
     },
-    MouseEvent: function MouseEvent() {
+    MidiInputMap_keys_closure: function MidiInputMap_keys_closure(t0) {
+      this.keys = t0;
+    },
+    MidiOutputMap: function MidiOutputMap() {
+    },
+    MidiOutputMap_keys_closure: function MidiOutputMap_keys_closure(t0) {
+      this.keys = t0;
+    },
+    MimeType: function MimeType() {
+    },
+    MimeTypeArray: function MimeTypeArray() {
     },
     Node: function Node() {
     },
+    NodeList: function NodeList() {
+    },
+    Plugin: function Plugin() {
+    },
+    PluginArray: function PluginArray() {
+    },
+    RtcStatsReport: function RtcStatsReport() {
+    },
+    RtcStatsReport_keys_closure: function RtcStatsReport_keys_closure(t0) {
+      this.keys = t0;
+    },
     SelectElement: function SelectElement() {
     },
-    UIEvent: function UIEvent() {
+    SourceBuffer: function SourceBuffer() {
     },
-    Window: function Window() {
+    SourceBufferList: function SourceBufferList() {
     },
-    EventStreamProvider: function EventStreamProvider(t0, t1) {
-      this._eventType = t0;
-      this.$ti = t1;
+    SpeechGrammar: function SpeechGrammar() {
     },
-    _EventStream: function _EventStream(t0, t1, t2, t3) {
-      var _ = this;
-      _._target = t0;
-      _._eventType = t1;
-      _._useCapture = t2;
-      _.$ti = t3;
+    SpeechGrammarList: function SpeechGrammarList() {
     },
-    _ElementEventStreamImpl: function _ElementEventStreamImpl(t0, t1, t2, t3) {
-      var _ = this;
-      _._target = t0;
-      _._eventType = t1;
-      _._useCapture = t2;
-      _.$ti = t3;
+    SpeechRecognitionResult: function SpeechRecognitionResult() {
     },
-    _EventStreamSubscription: function _EventStreamSubscription(t0, t1, t2, t3, t4) {
-      var _ = this;
-      _._pauseCount = 0;
-      _._target = t0;
-      _._eventType = t1;
-      _._onData = t2;
-      _._useCapture = t3;
-      _.$ti = t4;
+    Storage: function Storage() {
     },
-    _EventStreamSubscription_closure: function _EventStreamSubscription_closure(t0) {
-      this.onData = t0;
+    Storage_keys_closure: function Storage_keys_closure(t0) {
+      this.keys = t0;
     },
-    _EventStreamSubscription_onData_closure: function _EventStreamSubscription_onData_closure(t0) {
-      this.handleData = t0;
+    StyleSheet: function StyleSheet() {
+    },
+    TextTrack: function TextTrack() {
+    },
+    TextTrackCue: function TextTrackCue() {
+    },
+    TextTrackCueList: function TextTrackCueList() {
+    },
+    TextTrackList: function TextTrackList() {
+    },
+    TimeRanges: function TimeRanges() {
+    },
+    Touch: function Touch() {
+    },
+    TouchList: function TouchList() {
+    },
+    TrackDefaultList: function TrackDefaultList() {
+    },
+    Url: function Url() {
+    },
+    VideoTrackList: function VideoTrackList() {
+    },
+    _CssRuleList: function _CssRuleList() {
+    },
+    _DomRect: function _DomRect() {
+    },
+    _GamepadList: function _GamepadList() {
+    },
+    _NamedNodeMap: function _NamedNodeMap() {
+    },
+    _SpeechRecognitionResultList: function _SpeechRecognitionResultList() {
+    },
+    _StyleSheetList: function _StyleSheetList() {
     },
     ImmutableListMixin: function ImmutableListMixin() {
     },
     FixedSizeListIterator: function FixedSizeListIterator(t0, t1, t2) {
       var _ = this;
       _._array = t0;
-      _._length = t1;
+      _._html$_length = t1;
       _._position = -1;
-      _._current = null;
+      _._html$_current = null;
       _.$ti = t2;
     },
-    _DOMWindowCrossFrame: function _DOMWindowCrossFrame(t0) {
-      this._window = t0;
+    _CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase: function _CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase() {
+    },
+    _DomRectList_JavaScriptObject_ListMixin: function _DomRectList_JavaScriptObject_ListMixin() {
+    },
+    _DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin: function _DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _DomStringList_JavaScriptObject_ListMixin: function _DomStringList_JavaScriptObject_ListMixin() {
+    },
+    _DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin: function _DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _FileList_JavaScriptObject_ListMixin: function _FileList_JavaScriptObject_ListMixin() {
+    },
+    _FileList_JavaScriptObject_ListMixin_ImmutableListMixin: function _FileList_JavaScriptObject_ListMixin_ImmutableListMixin() {
     },
     _HtmlCollection_JavaScriptObject_ListMixin: function _HtmlCollection_JavaScriptObject_ListMixin() {
     },
     _HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin: function _HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin() {
     },
-    _StructuredClone: function _StructuredClone() {
+    _MidiInputMap_JavaScriptObject_MapMixin: function _MidiInputMap_JavaScriptObject_MapMixin() {
     },
-    _StructuredClone_walk_closure: function _StructuredClone_walk_closure(t0, t1) {
-      this._box_0 = t0;
-      this.$this = t1;
+    _MidiOutputMap_JavaScriptObject_MapMixin: function _MidiOutputMap_JavaScriptObject_MapMixin() {
     },
-    _StructuredClone_walk_closure0: function _StructuredClone_walk_closure0(t0, t1) {
-      this._box_0 = t0;
-      this.$this = t1;
+    _MimeTypeArray_JavaScriptObject_ListMixin: function _MimeTypeArray_JavaScriptObject_ListMixin() {
     },
-    _AcceptStructuredClone: function _AcceptStructuredClone() {
+    _MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin: function _MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin() {
     },
-    _AcceptStructuredClone_walk_closure: function _AcceptStructuredClone_walk_closure(t0, t1) {
-      this._box_0 = t0;
-      this.$this = t1;
+    _NodeList_JavaScriptObject_ListMixin: function _NodeList_JavaScriptObject_ListMixin() {
     },
-    _StructuredCloneDart2Js: function _StructuredCloneDart2Js(t0, t1) {
-      this.values = t0;
-      this.copies = t1;
+    _NodeList_JavaScriptObject_ListMixin_ImmutableListMixin: function _NodeList_JavaScriptObject_ListMixin_ImmutableListMixin() {
     },
-    _AcceptStructuredCloneDart2Js: function _AcceptStructuredCloneDart2Js(t0, t1) {
-      this.values = t0;
-      this.copies = t1;
-      this.mustCopy = false;
+    _PluginArray_JavaScriptObject_ListMixin: function _PluginArray_JavaScriptObject_ListMixin() {
     },
-    promiseToFuture(jsPromise, $T) {
-      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
-        completer = new A._AsyncCompleter(t1, $T._eval$1("_AsyncCompleter<0>"));
-      jsPromise.then(A.convertDartClosureToJS(new A.promiseToFuture_closure(completer, $T), 1), A.convertDartClosureToJS(new A.promiseToFuture_closure0(completer), 1));
+    _PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin: function _PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _RtcStatsReport_JavaScriptObject_MapMixin: function _RtcStatsReport_JavaScriptObject_MapMixin() {
+    },
+    _SourceBufferList_EventTarget_ListMixin: function _SourceBufferList_EventTarget_ListMixin() {
+    },
+    _SourceBufferList_EventTarget_ListMixin_ImmutableListMixin: function _SourceBufferList_EventTarget_ListMixin_ImmutableListMixin() {
+    },
+    _SpeechGrammarList_JavaScriptObject_ListMixin: function _SpeechGrammarList_JavaScriptObject_ListMixin() {
+    },
+    _SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin: function _SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _Storage_JavaScriptObject_MapMixin: function _Storage_JavaScriptObject_MapMixin() {
+    },
+    _TextTrackCueList_JavaScriptObject_ListMixin: function _TextTrackCueList_JavaScriptObject_ListMixin() {
+    },
+    _TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _TextTrackList_EventTarget_ListMixin: function _TextTrackList_EventTarget_ListMixin() {
+    },
+    _TextTrackList_EventTarget_ListMixin_ImmutableListMixin: function _TextTrackList_EventTarget_ListMixin_ImmutableListMixin() {
+    },
+    _TouchList_JavaScriptObject_ListMixin: function _TouchList_JavaScriptObject_ListMixin() {
+    },
+    _TouchList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TouchList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    __CssRuleList_JavaScriptObject_ListMixin: function __CssRuleList_JavaScriptObject_ListMixin() {
+    },
+    __CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin: function __CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    __GamepadList_JavaScriptObject_ListMixin: function __GamepadList_JavaScriptObject_ListMixin() {
+    },
+    __GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin: function __GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    __NamedNodeMap_JavaScriptObject_ListMixin: function __NamedNodeMap_JavaScriptObject_ListMixin() {
+    },
+    __NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin: function __NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    __SpeechRecognitionResultList_JavaScriptObject_ListMixin: function __SpeechRecognitionResultList_JavaScriptObject_ListMixin() {
+    },
+    __SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin: function __SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    __StyleSheetList_JavaScriptObject_ListMixin: function __StyleSheetList_JavaScriptObject_ListMixin() {
+    },
+    __StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin: function __StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    jsify(object) {
+      if (!type$.Map_dynamic_dynamic._is(object) && !type$.Iterable_dynamic._is(object))
+        throw A.wrapException(A.ArgumentError$("object must be a Map or Iterable", null));
+      return A._convertDataTree(object);
+    },
+    _convertDataTree(data) {
+      var t1 = new A._convertDataTree__convert(new A._IdentityHashMap(type$._IdentityHashMap_dynamic_dynamic)).call$1(data);
+      t1.toString;
       return t1;
     },
-    NullRejectionException: function NullRejectionException(t0) {
-      this.isUndefined = t0;
+    getProperty(o, $name, $T) {
+      return $T._as(o[$name]);
     },
-    promiseToFuture_closure: function promiseToFuture_closure(t0, t1) {
-      this.completer = t0;
-      this.T = t1;
+    callMethod(o, method, args, $T) {
+      return $T._as(o[method].apply(o, args));
     },
-    promiseToFuture_closure0: function promiseToFuture_closure0(t0) {
-      this.completer = t0;
+    callConstructor(constr, $arguments, $T) {
+      var args, factoryFunction;
+      if ($arguments instanceof Array)
+        switch ($arguments.length) {
+          case 0:
+            return $T._as(new constr());
+          case 1:
+            return $T._as(new constr($arguments[0]));
+          case 2:
+            return $T._as(new constr($arguments[0], $arguments[1]));
+          case 3:
+            return $T._as(new constr($arguments[0], $arguments[1], $arguments[2]));
+          case 4:
+            return $T._as(new constr($arguments[0], $arguments[1], $arguments[2], $arguments[3]));
+        }
+      args = [null];
+      B.JSArray_methods.addAll$1(args, $arguments);
+      factoryFunction = constr.bind.apply(constr, args);
+      String(factoryFunction);
+      return $T._as(new factoryFunction());
     },
-    SvgElement: function SvgElement() {
+    dartify(o) {
+      return new A.dartify_convert(new A._IdentityHashMap(type$._IdentityHashMap_dynamic_dynamic), o).call$0();
+    },
+    _convertDataTree__convert: function _convertDataTree__convert(t0) {
+      this._convertedObjects = t0;
+    },
+    dartify_convert: function dartify_convert(t0, t1) {
+      this._convertedObjects = t0;
+      this.o = t1;
+    },
+    Length: function Length() {
+    },
+    LengthList: function LengthList() {
+    },
+    Number: function Number() {
+    },
+    NumberList: function NumberList() {
+    },
+    PointList: function PointList() {
+    },
+    StringList: function StringList() {
+    },
+    Transform: function Transform() {
+    },
+    TransformList: function TransformList() {
+    },
+    _LengthList_JavaScriptObject_ListMixin: function _LengthList_JavaScriptObject_ListMixin() {
+    },
+    _LengthList_JavaScriptObject_ListMixin_ImmutableListMixin: function _LengthList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _NumberList_JavaScriptObject_ListMixin: function _NumberList_JavaScriptObject_ListMixin() {
+    },
+    _NumberList_JavaScriptObject_ListMixin_ImmutableListMixin: function _NumberList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _StringList_JavaScriptObject_ListMixin: function _StringList_JavaScriptObject_ListMixin() {
+    },
+    _StringList_JavaScriptObject_ListMixin_ImmutableListMixin: function _StringList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    _TransformList_JavaScriptObject_ListMixin: function _TransformList_JavaScriptObject_ListMixin() {
+    },
+    _TransformList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TransformList_JavaScriptObject_ListMixin_ImmutableListMixin() {
+    },
+    AudioBuffer: function AudioBuffer() {
+    },
+    AudioParamMap: function AudioParamMap() {
+    },
+    AudioParamMap_keys_closure: function AudioParamMap_keys_closure(t0) {
+      this.keys = t0;
+    },
+    AudioTrackList: function AudioTrackList() {
+    },
+    BaseAudioContext: function BaseAudioContext() {
+    },
+    OfflineAudioContext: function OfflineAudioContext() {
+    },
+    _AudioParamMap_JavaScriptObject_MapMixin: function _AudioParamMap_JavaScriptObject_MapMixin() {
     },
     NullStreamSink: function NullStreamSink(t0, t1) {
       var _ = this;
@@ -6587,7 +6678,7 @@
     },
     LazyTrace: function LazyTrace(t0) {
       this._thunk = t0;
-      this.__LazyTrace__trace = $;
+      this.__LazyTrace__trace_FI = $;
     },
     LazyTrace_terse_closure: function LazyTrace_terse_closure(t0) {
       this.$this = t0;
@@ -6736,7 +6827,7 @@
     },
     GuaranteeChannel: function GuaranteeChannel(t0) {
       var _ = this;
-      _.__GuaranteeChannel__streamController = _.__GuaranteeChannel__sink = $;
+      _.__GuaranteeChannel__streamController_F = _.__GuaranteeChannel__sink_F = $;
       _._subscription = null;
       _._disconnected = false;
       _.$ti = t0;
@@ -6817,65 +6908,138 @@
         foreignToLocalController = A.StreamController_StreamController(_null, _null, true, $T),
         t2 = A._instanceType(foreignToLocalController),
         t3 = A._instanceType(localToForeignController),
-        t4 = $T._eval$1("StreamChannel<0>"),
-        t5 = t4._as(A.GuaranteeChannel$(new A._ControllerStream(foreignToLocalController, t2._eval$1("_ControllerStream<1>")), new A._StreamSinkWrapper(localToForeignController, t3._eval$1("_StreamSinkWrapper<1>")), true, $T));
-      A._lateWriteOnceCheck($, "_local");
-      t1.set$__StreamChannelController__local(t5);
+        t4 = $T._eval$1("StreamChannel<0>");
+      t1.set$__StreamChannelController__local_F(t4._as(A.GuaranteeChannel$(new A._ControllerStream(foreignToLocalController, t2._eval$1("_ControllerStream<1>")), new A._StreamSinkWrapper(localToForeignController, t3._eval$1("_StreamSinkWrapper<1>")), true, $T)));
       t2 = t4._as(A.GuaranteeChannel$(new A._ControllerStream(localToForeignController, t3._eval$1("_ControllerStream<1>")), new A._StreamSinkWrapper(foreignToLocalController, t2._eval$1("_StreamSinkWrapper<1>")), true, $T));
-      A._lateWriteOnceCheck(t1.__StreamChannelController__foreign, "_foreign");
-      t1.set$__StreamChannelController__foreign(t2);
+      t1.__StreamChannelController__foreign_F !== $ && A.throwLateFieldAI("_foreign");
+      t1.set$__StreamChannelController__foreign_F(t2);
       return t1;
     },
     StreamChannelController: function StreamChannelController(t0) {
-      this.__StreamChannelController__foreign = this.__StreamChannelController__local = $;
+      this.__StreamChannelController__foreign_F = this.__StreamChannelController__local_F = $;
       this.$ti = t0;
     },
     StreamChannelMixin: function StreamChannelMixin() {
     },
+    WindowExtension_get_location(_this) {
+      return type$.JavaScriptObject._as(_this.location);
+    },
+    EventTargetExtension_addEventListener(_this, type, listener) {
+      var t1 = A._setArrayType([type, listener], type$.JSArray_Object);
+      A.callMethod(_this, "addEventListener", t1, type$.dynamic);
+    },
+    callConstructorString(constructorName, args) {
+      var $constructor = self.window[constructorName];
+      if ($constructor == null)
+        return null;
+      return A.callConstructor($constructor, args, type$.nullable_Object);
+    },
+    Subscription$(target, type, listener) {
+      A.EventTargetExtension_addEventListener(target, type, listener);
+      return new A.Subscription(type, target, listener);
+    },
+    Window0: function Window0() {
+    },
+    Document0: function Document0() {
+    },
+    HTMLDocument: function HTMLDocument() {
+    },
+    Navigator0: function Navigator0() {
+    },
+    Element0: function Element0() {
+    },
+    HTMLElement: function HTMLElement() {
+    },
+    HTMLBodyElement: function HTMLBodyElement() {
+    },
+    Node0: function Node0() {
+    },
+    EventTarget0: function EventTarget0() {
+    },
+    Event0: function Event0() {
+    },
+    MessageEvent0: function MessageEvent0() {
+    },
+    Location0: function Location0() {
+    },
+    MessagePort0: function MessagePort0() {
+    },
+    CSSStyleDeclaration: function CSSStyleDeclaration() {
+    },
+    HTMLScriptElement: function HTMLScriptElement() {
+    },
+    DomTokenList0: function DomTokenList0() {
+    },
+    HTMLIFrameElement: function HTMLIFrameElement() {
+    },
+    WebSocket0: function WebSocket0() {
+    },
+    MessageChannel0: function MessageChannel0() {
+    },
+    Subscription: function Subscription(t0, t1, t2) {
+      this.type = t0;
+      this.target = t1;
+      this.listener = t2;
+    },
     main() {
       var t1 = self.testRunner;
       if (t1 != null)
-        J.waitUntilDone$0$x(t1);
+        t1.waitUntilDone();
       if (J.$eq$($.$get$_currentUrl().get$queryParameters().$index(0, "debug"), "true"))
-        document.body.classList.add("debug");
+        type$.JavaScriptObject._as(type$.nullable_JavaScriptObject._as(self.document.body).classList).add("debug");
       A.runZonedGuarded(new A.main_closure(), new A.main_closure0(), type$.Null);
     },
     _connectToServer() {
-      var webSocket, controller, t2,
+      var t2, controller, t3,
         t1 = $.$get$_currentUrl().get$queryParameters().$index(0, "managerUrl");
       t1.toString;
-      webSocket = A.WebSocket_WebSocket(t1);
-      t1 = type$.dynamic;
-      controller = A.StreamChannelController$(true, t1);
-      t2 = type$.nullable_void_Function_MessageEvent._as(new A._connectToServer_closure(controller));
-      type$.nullable_void_Function._as(null);
-      A._EventStreamSubscription$(webSocket, "message", t2, false, type$.MessageEvent);
-      t2 = A._lateReadCheck(A._lateReadCheck(controller.__StreamChannelController__local, "_local").__GuaranteeChannel__streamController, "_streamController");
-      new A._ControllerStream(t2, A._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$1(new A._connectToServer_closure0(webSocket));
-      return A._MultiChannel$(A._lateReadCheck(controller.__StreamChannelController__foreign, "_foreign"), t1);
+      t1 = A.callConstructorString("WebSocket", A._setArrayType([t1], type$.JSArray_Object));
+      t1.toString;
+      type$.JavaScriptObject._as(t1);
+      t2 = type$.dynamic;
+      controller = A.StreamChannelController$(true, t2);
+      A.EventTargetExtension_addEventListener(t1, "message", A.allowInterop(new A._connectToServer_closure(controller), type$.void_Function_JavaScriptObject));
+      t3 = controller.__StreamChannelController__local_F;
+      t3 === $ && A.throwLateFieldNI("_local");
+      t3 = t3.__GuaranteeChannel__streamController_F;
+      t3 === $ && A.throwLateFieldNI("_streamController");
+      new A._ControllerStream(t3, A._instanceType(t3)._eval$1("_ControllerStream<1>")).listen$1(new A._connectToServer_closure0(t1));
+      t1 = controller.__StreamChannelController__foreign_F;
+      t1 === $ && A.throwLateFieldNI("_foreign");
+      return A._MultiChannel$(t1, t2);
     },
     _connectToIframe(url, id) {
-      var channel, controller, readyCompleter, subscriptions, t2, t3, t4,
-        t1 = document,
-        iframe = t1.createElement("iframe");
+      var controller, readyCompleter, subscriptions, domSubscriptions,
+        t1 = self.document,
+        t2 = type$.JSArray_Object,
+        t3 = A._setArrayType(["iframe"], t2),
+        t4 = type$.dynamic,
+        t5 = type$.JavaScriptObject,
+        iframe = t5._as(A.callMethod(t1, "createElement", t3, t4));
       $._iframes.$indexSet(0, id, iframe);
-      B.IFrameElement_methods.set$src(iframe, url);
-      t1.body.appendChild(iframe);
-      channel = new MessageChannel();
-      controller = A.StreamChannelController$(true, type$.dynamic);
+      iframe.src = url;
+      t5._as(type$.nullable_JavaScriptObject._as(self.document.body).appendChild(iframe));
+      t2 = A.callConstructorString("MessageChannel", A._setArrayType([], t2));
+      t2.toString;
+      t5._as(t2);
+      controller = A.StreamChannelController$(true, t4);
       readyCompleter = new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_dynamic), type$._AsyncCompleter_dynamic);
       subscriptions = A._setArrayType([], type$.JSArray_StreamSubscription_void);
+      domSubscriptions = A._setArrayType([], type$.JSArray_Subscription);
       $._subscriptions.$indexSet(0, id, subscriptions);
-      t1 = window;
-      t2 = type$.nullable_void_Function_MessageEvent;
-      t3 = t2._as(new A._connectToIframe_closure(iframe, channel, readyCompleter, controller));
-      type$.nullable_void_Function._as(null);
-      t4 = type$.MessageEvent;
-      B.JSArray_methods.add$1(subscriptions, A._EventStreamSubscription$(t1, "message", t3, false, t4));
-      B.JSArray_methods.add$1(subscriptions, A._EventStreamSubscription$(channel.port1, "message", t2._as(new A._connectToIframe_closure0(controller)), false, t4));
-      t4 = A._lateReadCheck(A._lateReadCheck(controller.__StreamChannelController__local, "_local").__GuaranteeChannel__streamController, "_streamController");
-      B.JSArray_methods.add$1(subscriptions, new A._ControllerStream(t4, A._instanceType(t4)._eval$1("_ControllerStream<1>")).listen$1(new A._connectToIframe_closure1(readyCompleter, channel)));
-      return A._lateReadCheck(controller.__StreamChannelController__foreign, "_foreign");
+      $._domSubscriptions.$indexSet(0, id, domSubscriptions);
+      t4 = type$.void_Function_JavaScriptObject;
+      B.JSArray_methods.add$1(domSubscriptions, A.Subscription$(self.window, "message", A.allowInterop(new A._connectToIframe_closure(iframe, t2, readyCompleter, controller), t4)));
+      t5._as(t2.port1).start();
+      B.JSArray_methods.add$1(domSubscriptions, A.Subscription$(t5._as(t2.port1), "message", A.allowInterop(new A._connectToIframe_closure0(controller), t4)));
+      t4 = controller.__StreamChannelController__local_F;
+      t4 === $ && A.throwLateFieldNI("_local");
+      t4 = t4.__GuaranteeChannel__streamController_F;
+      t4 === $ && A.throwLateFieldNI("_streamController");
+      B.JSArray_methods.add$1(subscriptions, new A._ControllerStream(t4, A._instanceType(t4)._eval$1("_ControllerStream<1>")).listen$1(new A._connectToIframe_closure1(readyCompleter, t2)));
+      t2 = controller.__StreamChannelController__foreign_F;
+      t2 === $ && A.throwLateFieldNI("_foreign");
+      return t2;
     },
     TestRunner: function TestRunner() {
     },
@@ -6920,6 +7084,10 @@
       this.readyCompleter = t0;
       this.channel = t1;
     },
+    max(a, b, $T) {
+      A.checkTypeBound($T, type$.num, "T", "max");
+      return Math.max($T._as(a), $T._as(b));
+    },
     printString(string) {
       if (typeof dartPrint == "function") {
         dartPrint(string);
@@ -6937,6 +7105,38 @@
       }
       throw "Unable to print message: " + String(string);
     },
+    _convertNativeToDart_Value(value) {
+      var values, i;
+      if (value == null)
+        return value;
+      if (typeof value == "string" || typeof value == "number" || A._isBool(value))
+        return value;
+      if (A.isJavaScriptSimpleObject(value))
+        return A.convertNativeToDart_Dictionary(value);
+      if (Array.isArray(value)) {
+        values = [];
+        for (i = 0; i < value.length; ++i)
+          values.push(A._convertNativeToDart_Value(value[i]));
+        return values;
+      }
+      return value;
+    },
+    convertNativeToDart_Dictionary(object) {
+      var dict, keys, t1, _i, key;
+      if (object == null)
+        return null;
+      dict = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.dynamic);
+      keys = Object.getOwnPropertyNames(object);
+      for (t1 = keys.length, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) {
+        key = keys[_i];
+        dict.$indexSet(0, key, A._convertNativeToDart_Value(object[key]));
+      }
+      return dict;
+    },
+    isJavaScriptSimpleObject(value) {
+      var proto = Object.getPrototypeOf(value);
+      return proto === Object.prototype || proto === null;
+    },
     _convertDartFunctionFast(f) {
       var ret,
         existing = f.$dart_jsFunction;
@@ -6962,10 +7162,6 @@
       else
         return $F._as(A._convertDartFunctionFast(f));
     },
-    max(a, b, $T) {
-      A.checkTypeBound($T, type$.num, "T", "max");
-      return Math.max($T._as(a), $T._as(b));
-    },
     current() {
       var exception, t1, path, lastIndex, uri = null;
       try {
@@ -7235,15 +7431,18 @@
     get$hashCode$(receiver) {
       return J.getInterceptor$(receiver).get$hashCode(receiver);
     },
+    get$isEmpty$asx(receiver) {
+      return J.getInterceptor$asx(receiver).get$isEmpty(receiver);
+    },
     get$iterator$ax(receiver) {
       return J.getInterceptor$ax(receiver).get$iterator(receiver);
     },
+    get$keys$x(receiver) {
+      return J.getInterceptor$x(receiver).get$keys(receiver);
+    },
     get$length$asx(receiver) {
       return J.getInterceptor$asx(receiver).get$length(receiver);
     },
-    get$onClick$x(receiver) {
-      return J.getInterceptor$x(receiver).get$onClick(receiver);
-    },
     get$parent$z(receiver) {
       return J.getInterceptor$z(receiver).get$parent(receiver);
     },
@@ -7264,15 +7463,6 @@
     $indexSet$ax(receiver, a0, a1) {
       return J.getInterceptor$ax(receiver).$indexSet(receiver, a0, a1);
     },
-    _removeChild$1$x(receiver, a0) {
-      return J.getInterceptor$x(receiver)._removeChild$1(receiver, a0);
-    },
-    _removeEventListener$3$x(receiver, a0, a1, a2) {
-      return J.getInterceptor$x(receiver)._removeEventListener$3(receiver, a0, a1, a2);
-    },
-    addEventListener$3$x(receiver, a0, a1, a2) {
-      return J.getInterceptor$x(receiver).addEventListener$3(receiver, a0, a1, a2);
-    },
     allMatches$1$s(receiver, a0) {
       return J.getInterceptor$s(receiver).allMatches$1(receiver, a0);
     },
@@ -7282,30 +7472,27 @@
     codeUnitAt$1$s(receiver, a0) {
       return J.getInterceptor$s(receiver).codeUnitAt$1(receiver, a0);
     },
-    contains$1$asx(receiver, a0) {
-      return J.getInterceptor$asx(receiver).contains$1(receiver, a0);
-    },
     elementAt$1$ax(receiver, a0) {
       return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0);
     },
     endsWith$1$s(receiver, a0) {
       return J.getInterceptor$s(receiver).endsWith$1(receiver, a0);
     },
+    forEach$1$x(receiver, a0) {
+      return J.getInterceptor$x(receiver).forEach$1(receiver, a0);
+    },
+    map$1$1$ax(receiver, a0, $T1) {
+      return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1);
+    },
     matchAsPrefix$2$s(receiver, a0, a1) {
       return J.getInterceptor$s(receiver).matchAsPrefix$2(receiver, a0, a1);
     },
     noSuchMethod$1$(receiver, a0) {
       return J.getInterceptor$(receiver).noSuchMethod$1(receiver, a0);
     },
-    postMessage$3$x(receiver, a0, a1, a2) {
-      return J.getInterceptor$x(receiver).postMessage$3(receiver, a0, a1, a2);
-    },
     toString$0$(receiver) {
       return J.getInterceptor$(receiver).toString$0(receiver);
     },
-    waitUntilDone$0$x(receiver) {
-      return J.getInterceptor$x(receiver).waitUntilDone$0(receiver);
-    },
     Interceptor: function Interceptor() {
     },
     JSBool: function JSBool() {
@@ -7333,7 +7520,7 @@
       _._iterable = t0;
       _.__interceptors$_length = t1;
       _._index = 0;
-      _.__interceptors$_current = null;
+      _._current = null;
       _.$ti = t2;
     },
     JSNumber: function JSNumber() {
@@ -7392,10 +7579,6 @@
     },
     toString$0(receiver) {
       return String(receiver);
-    },
-    $isJSObject: 1,
-    waitUntilDone$0(receiver) {
-      return receiver.waitUntilDone();
     }
   };
   J.PlainJavaScriptObject.prototype = {};
@@ -7456,11 +7639,16 @@
       return receiver.pop();
     },
     addAll$1(receiver, collection) {
+      var t1;
       A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(collection);
       if (!!receiver.fixed$length)
         A.throwExpression(A.UnsupportedError$("addAll"));
-      this._addAllFromArray$1(receiver, collection);
-      return;
+      if (Array.isArray(collection)) {
+        this._addAllFromArray$1(receiver, collection);
+        return;
+      }
+      for (t1 = J.get$iterator$ax(collection); t1.moveNext$0();)
+        receiver.push(t1.get$current(t1));
     },
     _addAllFromArray$1(receiver, array) {
       var len, i;
@@ -7473,6 +7661,15 @@
       for (i = 0; i < len; ++i)
         receiver.push(array[i]);
     },
+    clear$0(receiver) {
+      if (!!receiver.fixed$length)
+        A.throwExpression(A.UnsupportedError$("clear"));
+      receiver.length = 0;
+    },
+    map$1$1(receiver, f, $T) {
+      var t1 = A._arrayInstanceType(receiver);
+      return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(2)")._as(f), t1._eval$1("@<1>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
+    },
     join$1(receiver, separator) {
       var i,
         list = A.List_List$filled(receiver.length, "", false, type$.String);
@@ -7535,6 +7732,9 @@
     setRange$3($receiver, start, end, iterable) {
       return this.setRange$4($receiver, start, end, iterable, 0);
     },
+    get$isEmpty(receiver) {
+      return receiver.length === 0;
+    },
     get$isNotEmpty(receiver) {
       return receiver.length !== 0;
     },
@@ -7550,13 +7750,6 @@
     get$length(receiver) {
       return receiver.length;
     },
-    set$length(receiver, newLength) {
-      if (!!receiver.fixed$length)
-        A.throwExpression(A.UnsupportedError$("set length"));
-      if (newLength > receiver.length)
-        A._arrayInstanceType(receiver)._precomputed1._as(null);
-      receiver.length = newLength;
-    },
     $index(receiver, index) {
       A._asInt(index);
       if (!(index >= 0 && index < receiver.length))
@@ -7578,8 +7771,8 @@
   };
   J.JSUnmodifiableArray.prototype = {};
   J.ArrayIterator.prototype = {
-    get$current() {
-      var t1 = this.__interceptors$_current;
+    get$current(_) {
+      var t1 = this._current;
       return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
     moveNext$0() {
@@ -7590,15 +7783,15 @@
         throw A.wrapException(A.throwConcurrentModificationError(t1));
       t2 = _this._index;
       if (t2 >= $length) {
-        _this.set$__interceptors$_current(null);
+        _this.set$_current(null);
         return false;
       }
-      _this.set$__interceptors$_current(t1[t2]);
+      _this.set$_current(t1[t2]);
       ++_this._index;
       return true;
     },
-    set$__interceptors$_current(_current) {
-      this.__interceptors$_current = this.$ti._eval$1("1?")._as(_current);
+    set$_current(_current) {
+      this._current = this.$ti._eval$1("1?")._as(_current);
     },
     $isIterator: 1
   };
@@ -7737,9 +7930,9 @@
       var t1, start, $length, match, matchStart, matchEnd,
         result = A._setArrayType([], type$.JSArray_String);
       for (t1 = J.allMatches$1$s(pattern, receiver), t1 = t1.get$iterator(t1), start = 0, $length = 1; t1.moveNext$0();) {
-        match = t1.get$current();
+        match = t1.get$current(t1);
         matchStart = match.get$start(match);
-        matchEnd = match.get$end();
+        matchEnd = match.get$end(match);
         $length = matchEnd - matchStart;
         if ($length === 0 && start === matchStart)
           continue;
@@ -7845,9 +8038,16 @@
     lastIndexOf$1($receiver, pattern) {
       return this.lastIndexOf$2($receiver, pattern, null);
     },
-    contains$1(receiver, other) {
+    contains$2(receiver, other, startIndex) {
+      var t1;
       type$.Pattern._as(other);
-      return A.stringContainsUnchecked(receiver, other, 0);
+      t1 = receiver.length;
+      if (startIndex > t1)
+        throw A.wrapException(A.RangeError$range(startIndex, 0, t1, null, null));
+      return A.stringContainsUnchecked(receiver, other, startIndex);
+    },
+    contains$1($receiver, other) {
+      return this.contains$2($receiver, other, 0);
     },
     toString$0(receiver) {
       return receiver;
@@ -7898,8 +8098,8 @@
     }
   };
   A.CastStreamSubscription.prototype = {
-    cancel$0() {
-      return this._source.cancel$0();
+    cancel$0(_) {
+      return this._source.cancel$0(0);
     },
     onData$1(handleData) {
       var t1 = this.$ti;
@@ -7968,7 +8168,7 @@
     call$0() {
       return A.Future_Future$value(null, type$.Null);
     },
-    $signature: 46
+    $signature: 43
   };
   A.SentinelValue.prototype = {};
   A.EfficientLengthIterable.prototype = {};
@@ -8007,6 +8207,10 @@
     join$0($receiver) {
       return this.join$1($receiver, "");
     },
+    map$1$1(_, toElement, $T) {
+      var t1 = A._instanceType(this);
+      return new A.MappedListIterable(this, t1._bind$1($T)._eval$1("1(ListIterable.E)")._as(toElement), t1._eval$1("@<ListIterable.E>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
+    },
     fold$1$2(_, initialValue, combine, $T) {
       var $length, value, i, _this = this;
       $T._as(initialValue);
@@ -8068,7 +8272,7 @@
     }
   };
   A.ListIterator.prototype = {
-    get$current() {
+    get$current(_) {
       var t1 = this.__internal$_current;
       return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
@@ -8108,13 +8312,13 @@
       var _this = this,
         t1 = _this._iterator;
       if (t1.moveNext$0()) {
-        _this.set$__internal$_current(_this._f.call$1(t1.get$current()));
+        _this.set$__internal$_current(_this._f.call$1(t1.get$current(t1)));
         return true;
       }
       _this.set$__internal$_current(null);
       return false;
     },
-    get$current() {
+    get$current(_) {
       var t1 = this.__internal$_current;
       return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
     },
@@ -8133,18 +8337,23 @@
   A.WhereIterable.prototype = {
     get$iterator(_) {
       return new A.WhereIterator(J.get$iterator$ax(this.__internal$_iterable), this._f, this.$ti._eval$1("WhereIterator<1>"));
+    },
+    map$1$1(_, toElement, $T) {
+      var t1 = this.$ti;
+      return new A.MappedIterable(this, t1._bind$1($T)._eval$1("1(2)")._as(toElement), t1._eval$1("@<1>")._bind$1($T)._eval$1("MappedIterable<1,2>"));
     }
   };
   A.WhereIterator.prototype = {
     moveNext$0() {
       var t1, t2;
       for (t1 = this._iterator, t2 = this._f; t1.moveNext$0();)
-        if (A.boolConversionCheck(t2.call$1(t1.get$current())))
+        if (A.boolConversionCheck(t2.call$1(t1.get$current(t1))))
           return true;
       return false;
     },
-    get$current() {
-      return this._iterator.get$current();
+    get$current(_) {
+      var t1 = this._iterator;
+      return t1.get$current(t1);
     }
   };
   A.ExpandIterable.prototype = {
@@ -8154,7 +8363,7 @@
     }
   };
   A.ExpandIterator.prototype = {
-    get$current() {
+    get$current(_) {
       var t1 = this.__internal$_current;
       return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
     },
@@ -8166,11 +8375,12 @@
         _this.set$__internal$_current(null);
         if (t1.moveNext$0()) {
           _this.set$_currentExpansion(null);
-          _this.set$_currentExpansion(J.get$iterator$ax(t2.call$1(t1.get$current())));
+          _this.set$_currentExpansion(J.get$iterator$ax(t2.call$1(t1.get$current(t1))));
         } else
           return false;
       }
-      _this.set$__internal$_current(_this._currentExpansion.get$current());
+      t1 = _this._currentExpansion;
+      _this.set$__internal$_current(t1.get$current(t1));
       return true;
     },
     set$_currentExpansion(_currentExpansion) {
@@ -8203,12 +8413,14 @@
       this._remaining = -1;
       return false;
     },
-    get$current() {
+    get$current(_) {
+      var t1;
       if (this._remaining < 0) {
         this.$ti._precomputed1._as(null);
         return null;
       }
-      return this._iterator.get$current();
+      t1 = this._iterator;
+      return t1.get$current(t1);
     }
   };
   A.SkipWhileIterable.prototype = {
@@ -8222,20 +8434,21 @@
       if (!_this._hasSkipped) {
         _this._hasSkipped = true;
         for (t1 = _this._iterator, t2 = _this._f; t1.moveNext$0();)
-          if (!A.boolConversionCheck(t2.call$1(t1.get$current())))
+          if (!A.boolConversionCheck(t2.call$1(t1.get$current(t1))))
             return true;
       }
       return _this._iterator.moveNext$0();
     },
-    get$current() {
-      return this._iterator.get$current();
+    get$current(_) {
+      var t1 = this._iterator;
+      return t1.get$current(t1);
     }
   };
   A.EmptyIterator.prototype = {
     moveNext$0() {
       return false;
     },
-    get$current() {
+    get$current(_) {
       throw A.wrapException(A.IterableElementError_noElement());
     },
     $isIterator: 1
@@ -8249,12 +8462,13 @@
     moveNext$0() {
       var t1, t2;
       for (t1 = this._source, t2 = this.$ti._precomputed1; t1.moveNext$0();)
-        if (t2._is(t1.get$current()))
+        if (t2._is(t1.get$current(t1)))
           return true;
       return false;
     },
-    get$current() {
-      return this.$ti._precomputed1._as(this._source.get$current());
+    get$current(_) {
+      var t1 = this._source;
+      return this.$ti._precomputed1._as(t1.get$current(t1));
     },
     $isIterator: 1
   };
@@ -8314,17 +8528,19 @@
   };
   A.ConstantStringMap.prototype = {
     get$length(_) {
-      return this.__js_helper$_length;
+      return this._length;
     },
-    containsKey$1(key) {
+    containsKey$1(_, key) {
+      if (typeof key != "string")
+        return false;
       if ("__proto__" === key)
         return false;
       return this._jsObject.hasOwnProperty(key);
     },
     $index(_, key) {
-      if (!this.containsKey$1(key))
+      if (!this.containsKey$1(0, key))
         return null;
-      return this._jsObject[key];
+      return this._jsObject[A._asString(key)];
     },
     forEach$1(_, f) {
       var keys, t2, t3, i, t4,
@@ -8335,6 +8551,18 @@
         t4 = A._asString(keys[i]);
         f.call$2(t4, t1._as(t3[t4]));
       }
+    },
+    get$keys(_) {
+      return new A._ConstantMapKeyIterable(this, this.$ti._eval$1("_ConstantMapKeyIterable<1>"));
+    }
+  };
+  A._ConstantMapKeyIterable.prototype = {
+    get$iterator(_) {
+      var t1 = this._map.__js_helper$_keys;
+      return new J.ArrayIterator(t1, t1.length, A._arrayInstanceType(t1)._eval$1("ArrayIterator<1>"));
+    },
+    get$length(_) {
+      return this._map.__js_helper$_keys.length;
     }
   };
   A.Instantiation.prototype = {
@@ -8344,7 +8572,7 @@
       return other instanceof A.Instantiation && this._genericClosure.$eq(0, other._genericClosure) && A.getRuntimeType(this) === A.getRuntimeType(other);
     },
     get$hashCode(_) {
-      return A.Object_hash(this._genericClosure, A.getRuntimeType(this));
+      return A.Object_hash(this._genericClosure, A.getRuntimeType(this), B.C_SentinelValue, B.C_SentinelValue);
     },
     toString$0(_) {
       var t1 = B.JSArray_methods.join$1([A.createRuntimeType(this.$ti._precomputed1)], ", ");
@@ -8417,7 +8645,7 @@
       B.JSArray_methods.add$1(this.$arguments, argument);
       ++t1.argumentCount;
     },
-    $signature: 44
+    $signature: 4
   };
   A.TypeErrorDecoder.prototype = {
     matchTypeError$1(message) {
@@ -8545,27 +8773,27 @@
   A._Required.prototype = {};
   A.JsLinkedHashMap.prototype = {
     get$length(_) {
-      return this.__js_helper$_length;
+      return this._length;
     },
     get$isEmpty(_) {
-      return this.__js_helper$_length === 0;
+      return this._length === 0;
     },
-    get$keys() {
+    get$keys(_) {
       return new A.LinkedHashMapKeyIterable(this, A._instanceType(this)._eval$1("LinkedHashMapKeyIterable<1>"));
     },
     get$values(_) {
       var t1 = A._instanceType(this);
       return A.MappedIterable_MappedIterable(new A.LinkedHashMapKeyIterable(this, t1._eval$1("LinkedHashMapKeyIterable<1>")), new A.JsLinkedHashMap_values_closure(this), t1._precomputed1, t1._rest[1]);
     },
-    containsKey$1(key) {
+    containsKey$1(_, key) {
       var strings, nums;
       if (typeof key == "string") {
-        strings = this.__js_helper$_strings;
+        strings = this._strings;
         if (strings == null)
           return false;
         return strings[key] != null;
       } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
-        nums = this.__js_helper$_nums;
+        nums = this._nums;
         if (nums == null)
           return false;
         return nums[key] != null;
@@ -8581,14 +8809,14 @@
     $index(_, key) {
       var strings, cell, t1, nums, _null = null;
       if (typeof key == "string") {
-        strings = this.__js_helper$_strings;
+        strings = this._strings;
         if (strings == null)
           return _null;
         cell = strings[key];
         t1 = cell == null ? _null : cell.hashMapCellValue;
         return t1;
       } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
-        nums = this.__js_helper$_nums;
+        nums = this._nums;
         if (nums == null)
           return _null;
         cell = nums[key];
@@ -8614,11 +8842,11 @@
       t1._precomputed1._as(key);
       t1._rest[1]._as(value);
       if (typeof key == "string") {
-        strings = _this.__js_helper$_strings;
-        _this.__js_helper$_addHashTableEntry$3(strings == null ? _this.__js_helper$_strings = _this._newHashTable$0() : strings, key, value);
+        strings = _this._strings;
+        _this._addHashTableEntry$3(strings == null ? _this._strings = _this._newHashTable$0() : strings, key, value);
       } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
-        nums = _this.__js_helper$_nums;
-        _this.__js_helper$_addHashTableEntry$3(nums == null ? _this.__js_helper$_nums = _this._newHashTable$0() : nums, key, value);
+        nums = _this._nums;
+        _this._addHashTableEntry$3(nums == null ? _this._nums = _this._newHashTable$0() : nums, key, value);
       } else
         _this.internalSet$2(key, value);
     },
@@ -8642,12 +8870,12 @@
           bucket.push(_this._newLinkedCell$2(key, value));
       }
     },
-    putIfAbsent$2(key, ifAbsent) {
+    putIfAbsent$2(_, key, ifAbsent) {
       var t2, value, _this = this,
         t1 = A._instanceType(_this);
       t1._precomputed1._as(key);
       t1._eval$1("2()")._as(ifAbsent);
-      if (_this.containsKey$1(key)) {
+      if (_this.containsKey$1(0, key)) {
         t2 = _this.$index(0, key);
         return t2 == null ? t1._rest[1]._as(t2) : t2;
       }
@@ -8658,9 +8886,9 @@
     remove$1(_, key) {
       var _this = this;
       if (typeof key == "string")
-        return _this._removeHashTableEntry$2(_this.__js_helper$_strings, key);
+        return _this._removeHashTableEntry$2(_this._strings, key);
       else if (typeof key == "number" && (key & 0x3fffffff) === key)
-        return _this._removeHashTableEntry$2(_this.__js_helper$_nums, key);
+        return _this._removeHashTableEntry$2(_this._nums, key);
       else
         return _this.internalRemove$1(key);
     },
@@ -8682,9 +8910,9 @@
     },
     clear$0(_) {
       var _this = this;
-      if (_this.__js_helper$_length > 0) {
-        _this.__js_helper$_strings = _this.__js_helper$_nums = _this.__js_helper$_rest = _this._first = _this._last = null;
-        _this.__js_helper$_length = 0;
+      if (_this._length > 0) {
+        _this._strings = _this._nums = _this.__js_helper$_rest = _this._first = _this._last = null;
+        _this._length = 0;
         _this._modified$0();
       }
     },
@@ -8700,7 +8928,7 @@
         cell = cell._next;
       }
     },
-    __js_helper$_addHashTableEntry$3(table, key, value) {
+    _addHashTableEntry$3(table, key, value) {
       var cell,
         t1 = A._instanceType(this);
       t1._precomputed1._as(key);
@@ -8737,7 +8965,7 @@
         cell._previous = t1;
         _this._last = t1._next = cell;
       }
-      ++_this.__js_helper$_length;
+      ++_this._length;
       _this._modified$0();
       return cell;
     },
@@ -8753,7 +8981,7 @@
         _this._last = previous;
       else
         next._previous = previous;
-      --_this.__js_helper$_length;
+      --_this._length;
       _this._modified$0();
     },
     internalComputeHashCode$1(key) {
@@ -8794,25 +9022,25 @@
   A.LinkedHashMapCell.prototype = {};
   A.LinkedHashMapKeyIterable.prototype = {
     get$length(_) {
-      return this.__js_helper$_map.__js_helper$_length;
+      return this._map._length;
     },
     get$isEmpty(_) {
-      return this.__js_helper$_map.__js_helper$_length === 0;
+      return this._map._length === 0;
     },
     get$iterator(_) {
-      var t1 = this.__js_helper$_map,
+      var t1 = this._map,
         t2 = new A.LinkedHashMapKeyIterator(t1, t1._modifications, this.$ti._eval$1("LinkedHashMapKeyIterator<1>"));
       t2._cell = t1._first;
       return t2;
     }
   };
   A.LinkedHashMapKeyIterator.prototype = {
-    get$current() {
+    get$current(_) {
       return this.__js_helper$_current;
     },
     moveNext$0() {
       var cell, _this = this,
-        t1 = _this.__js_helper$_map;
+        t1 = _this._map;
       if (_this._modifications !== t1._modifications)
         throw A.wrapException(A.ConcurrentModificationError$(t1));
       cell = _this._cell;
@@ -8834,19 +9062,19 @@
     call$1(o) {
       return this.getTag(o);
     },
-    $signature: 14
+    $signature: 15
   };
   A.initHooks_closure0.prototype = {
     call$2(o, tag) {
       return this.getUnknownTag(o, tag);
     },
-    $signature: 42
+    $signature: 51
   };
   A.initHooks_closure1.prototype = {
     call$1(tag) {
       return this.prototypeForTag(A._asString(tag));
     },
-    $signature: 53
+    $signature: 49
   };
   A.JSSyntaxRegExp.prototype = {
     toString$0(_) {
@@ -8914,14 +9142,13 @@
         throw A.wrapException(A.RangeError$range(start, 0, string.length, null, null));
       return this._execAnchored$2(string, start);
     },
-    $isPattern: 1,
-    $isRegExp: 1
+    $isPattern: 1
   };
   A._MatchImplementation.prototype = {
     get$start(_) {
       return this._match.index;
     },
-    get$end() {
+    get$end(_) {
       var t1 = this._match;
       return t1.index + t1[0].length;
     },
@@ -8942,7 +9169,7 @@
     }
   };
   A._AllMatchesIterator.prototype = {
-    get$current() {
+    get$current(_) {
       var t1 = this.__js_helper$_current;
       return t1 == null ? type$.RegExpMatch._as(t1) : t1;
     },
@@ -8958,7 +9185,7 @@
         match = t3._execGlobal$2(string, t1);
         if (match != null) {
           _this.__js_helper$_current = match;
-          nextIndex = match.get$end();
+          nextIndex = match.get$end(match);
           if (match._match.index === nextIndex) {
             if (t3._nativeRegExp.unicode) {
               t1 = _this._nextIndex;
@@ -8986,7 +9213,7 @@
     $isIterator: 1
   };
   A.StringMatch.prototype = {
-    get$end() {
+    get$end(_) {
       return this.start + this.pattern.length;
     },
     $index(_, g) {
@@ -9026,7 +9253,7 @@
       _this.__js_helper$_index = end === _this.__js_helper$_index ? end + 1 : end;
       return true;
     },
-    get$current() {
+    get$current(_) {
       var t1 = this.__js_helper$_current;
       t1.toString;
       return t1;
@@ -9035,14 +9262,13 @@
   };
   A._Cell.prototype = {
     _readLocal$0() {
-      var t1 = this.__late_helper$_value;
+      var t1 = this._value;
       if (t1 === this)
         throw A.wrapException(new A.LateError("Local '" + this.__late_helper$_name + "' has not been initialized."));
       return t1;
     }
   };
-  A.NativeByteBuffer.prototype = {$isNativeByteBuffer: 1};
-  A.NativeTypedData.prototype = {$isNativeTypedData: 1};
+  A.NativeTypedData.prototype = {};
   A.NativeTypedArray.prototype = {
     get$length(receiver) {
       return receiver.length;
@@ -9167,7 +9393,7 @@
       t1.storedCallback = null;
       f.call$0();
     },
-    $signature: 7
+    $signature: 8
   };
   A._AsyncRun__initializeScheduleImmediate_closure.prototype = {
     call$1(callback) {
@@ -9177,7 +9403,7 @@
       t2 = this.span;
       t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);
     },
-    $signature: 51
+    $signature: 45
   };
   A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
     call$0() {
@@ -9259,13 +9485,13 @@
     call$1(result) {
       return this.bodyFunction.call$2(0, result);
     },
-    $signature: 3
+    $signature: 7
   };
   A._awaitOnObject_closure0.prototype = {
     call$2(error, stackTrace) {
       this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace)));
     },
-    $signature: 68
+    $signature: 66
   };
   A._wrapJsFunctionForAsync_closure.prototype = {
     call$2(errorCode, result) {
@@ -9296,9 +9522,6 @@
         stackTrace = A.AsyncError_defaultStackTrace(error);
       this._completeError$2(error, stackTrace);
     },
-    completeError$1(error) {
-      return this.completeError$2(error, null);
-    },
     $isCompleter: 1
   };
   A._AsyncCompleter.prototype = {
@@ -9579,13 +9802,13 @@
         t1._completeError$2(error, stackTrace);
       }
     },
-    $signature: 7
+    $signature: 8
   };
   A._Future__chainForeignFuture_closure0.prototype = {
     call$2(error, stackTrace) {
       this.$this._completeError$2(type$.Object._as(error), type$.StackTrace._as(stackTrace));
     },
-    $signature: 36
+    $signature: 38
   };
   A._Future__chainForeignFuture_closure1.prototype = {
     call$0() {
@@ -9650,7 +9873,7 @@
     call$1(_) {
       return this.originalSource;
     },
-    $signature: 30
+    $signature: 35
   };
   A._Future__propagateToListeners_handleValueCallback.prototype = {
     call$0() {
@@ -9700,7 +9923,7 @@
   A.Stream.prototype = {
     pipe$1(streamConsumer) {
       A._instanceType(this)._eval$1("StreamConsumer<Stream.T>")._as(streamConsumer);
-      return streamConsumer.addStream$1(this).then$1$1(new A.Stream_pipe_closure(streamConsumer), type$.dynamic);
+      return streamConsumer.addStream$1(0, this).then$1$1(new A.Stream_pipe_closure(streamConsumer), type$.dynamic);
     },
     get$length(_) {
       var t1 = {},
@@ -9731,7 +9954,6 @@
     },
     $signature: 0
   };
-  A.StreamSubscription.prototype = {};
   A.StreamTransformerBase.prototype = {$isStreamTransformer: 1};
   A._StreamController.prototype = {
     get$_pendingEvents() {
@@ -9746,15 +9968,15 @@
       if ((_this._async$_state & 8) === 0) {
         events = _this._varData;
         if (events == null)
-          events = _this._varData = new A._StreamImplEvents(A._instanceType(_this)._eval$1("_StreamImplEvents<1>"));
-        return A._instanceType(_this)._eval$1("_StreamImplEvents<1>")._as(events);
+          events = _this._varData = new A._PendingEvents(A._instanceType(_this)._eval$1("_PendingEvents<1>"));
+        return A._instanceType(_this)._eval$1("_PendingEvents<1>")._as(events);
       }
       t1 = A._instanceType(_this);
       state = t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData);
       events = state.varData;
       if (events == null)
-        events = state.varData = new A._StreamImplEvents(t1._eval$1("_StreamImplEvents<1>"));
-      return t1._eval$1("_StreamImplEvents<1>")._as(events);
+        events = state.varData = new A._PendingEvents(t1._eval$1("_PendingEvents<1>"));
+      return t1._eval$1("_PendingEvents<1>")._as(events);
     },
     get$_async$_subscription() {
       var varData = this._varData;
@@ -9778,7 +10000,7 @@
       A._instanceType(_this)._precomputed1._as(value);
       if (_this._async$_state >= 4)
         throw A.wrapException(_this._badEventState$0());
-      _this._add$1(value);
+      _this._add$1(0, value);
     },
     addError$2(error, stackTrace) {
       var replacement,
@@ -9813,7 +10035,7 @@
         _this._ensurePendingEvents$0().add$1(0, B.C__DelayedDone);
       return _this._ensureDoneFuture$0();
     },
-    _add$1(value) {
+    _add$1(_, value) {
       var t2, _this = this,
         t1 = A._instanceType(_this);
       t1._precomputed1._as(value);
@@ -9861,7 +10083,7 @@
       t1._eval$1("StreamSubscription<1>")._as(subscription);
       result = null;
       if ((_this._async$_state & 8) !== 0)
-        result = t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).cancel$0();
+        result = t1._eval$1("_StreamControllerAddStreamState<1>")._as(_this._varData).cancel$0(0);
       _this._varData = null;
       _this._async$_state = _this._async$_state & 4294967286 | 2;
       onCancel = _this.onCancel;
@@ -9910,7 +10132,7 @@
   A._SyncStreamControllerDispatch.prototype = {
     _sendData$1(data) {
       this.$ti._precomputed1._as(data);
-      this.get$_async$_subscription()._add$1(data);
+      this.get$_async$_subscription()._add$1(0, data);
     },
     _sendError$2(error, stackTrace) {
       this.get$_async$_subscription()._async$_addError$2(error, stackTrace);
@@ -9955,7 +10177,7 @@
   };
   A._StreamSinkWrapper.prototype = {
     add$1(_, data) {
-      this._async$_target.add$1(0, this.$ti._precomputed1._as(data));
+      this._target.add$1(0, this.$ti._precomputed1._as(data));
     },
     $isStreamConsumer: 1,
     $isStreamSink: 1
@@ -9980,12 +10202,12 @@
     },
     onData$1(handleData) {
       var t1 = A._instanceType(this);
-      this.set$_async$_onData(A._BufferingStreamSubscription__registerDataHandler(this._zone, t1._eval$1("~(_BufferingStreamSubscription.T)?")._as(handleData), t1._eval$1("_BufferingStreamSubscription.T")));
+      this.set$_onData(A._BufferingStreamSubscription__registerDataHandler(this._zone, t1._eval$1("~(_BufferingStreamSubscription.T)?")._as(handleData), t1._eval$1("_BufferingStreamSubscription.T")));
     },
     onError$1(_, handleError) {
       this._onError = A._BufferingStreamSubscription__registerErrorHandler(this._zone, handleError);
     },
-    cancel$0() {
+    cancel$0(_) {
       var _this = this,
         t1 = (_this._async$_state & 4294967279) >>> 0;
       _this._async$_state = t1;
@@ -10006,7 +10228,7 @@
         _this.set$_pending(null);
       _this._cancelFuture = _this._onCancel$0();
     },
-    _add$1(data) {
+    _add$1(_, data) {
       var t2, _this = this,
         t1 = A._instanceType(_this);
       t1._eval$1("_BufferingStreamSubscription.T")._as(data);
@@ -10047,12 +10269,12 @@
       return null;
     },
     _addPending$1($event) {
-      var _this = this,
-        t1 = A._instanceType(_this),
-        pending = t1._eval$1("_StreamImplEvents<_BufferingStreamSubscription.T>?")._as(_this._pending);
-      if (pending == null)
-        pending = new A._StreamImplEvents(t1._eval$1("_StreamImplEvents<_BufferingStreamSubscription.T>"));
-      _this.set$_pending(pending);
+      var t1, _this = this,
+        pending = _this._pending;
+      if (pending == null) {
+        pending = new A._PendingEvents(A._instanceType(_this)._eval$1("_PendingEvents<_BufferingStreamSubscription.T>"));
+        _this.set$_pending(pending);
+      }
       pending.add$1(0, $event);
       t1 = _this._async$_state;
       if ((t1 & 64) === 0) {
@@ -10068,7 +10290,7 @@
       t1._as(data);
       t2 = _this._async$_state;
       _this._async$_state = (t2 | 32) >>> 0;
-      _this._zone.runUnaryGuarded$1$2(_this._async$_onData, data, t1);
+      _this._zone.runUnaryGuarded$1$2(_this._onData, data, t1);
       _this._async$_state = (_this._async$_state & 4294967263) >>> 0;
       _this._checkState$1((t2 & 4) !== 0);
     },
@@ -10147,8 +10369,8 @@
       if ((t1 & 64) !== 0 && t1 < 128)
         _this._pending.schedule$1(_this);
     },
-    set$_async$_onData(_onData) {
-      this._async$_onData = A._instanceType(this)._eval$1("~(_BufferingStreamSubscription.T)")._as(_onData);
+    set$_onData(_onData) {
+      this._onData = A._instanceType(this)._eval$1("~(_BufferingStreamSubscription.T)")._as(_onData);
     },
     set$_pending(_pending) {
       this._pending = A._instanceType(this)._eval$1("_PendingEvents<_BufferingStreamSubscription.T>?")._as(_pending);
@@ -10209,10 +10431,10 @@
     }
   };
   A._DelayedEvent.prototype = {
-    set$next(next) {
+    set$next(_, next) {
       this.next = type$.nullable__DelayedEvent_dynamic._as(next);
     },
-    get$next() {
+    get$next(receiver) {
       return this.next;
     }
   };
@@ -10230,10 +10452,10 @@
     perform$1(dispatch) {
       dispatch._sendDone$0();
     },
-    get$next() {
+    get$next(_) {
       return null;
     },
-    set$next(_) {
+    set$next(_, _0) {
       throw A.wrapException(A.StateError$("No events after a done."));
     },
     $is_DelayedEvent: 1
@@ -10251,6 +10473,16 @@
       }
       A.scheduleMicrotask(new A._PendingEvents_schedule_closure(_this, dispatch));
       _this._async$_state = 1;
+    },
+    add$1(_, $event) {
+      var _this = this,
+        lastEvent = _this.lastPendingEvent;
+      if (lastEvent == null)
+        _this.firstPendingEvent = _this.lastPendingEvent = $event;
+      else {
+        lastEvent.set$next(0, $event);
+        _this.lastPendingEvent = $event;
+      }
     }
   };
   A._PendingEvents_schedule_closure.prototype = {
@@ -10263,7 +10495,7 @@
         return;
       t2 = t1.$ti._eval$1("_EventDispatch<1>")._as(this.dispatch);
       $event = t1.firstPendingEvent;
-      nextEvent = $event.get$next();
+      nextEvent = $event.get$next($event);
       t1.firstPendingEvent = nextEvent;
       if (nextEvent == null)
         t1.lastPendingEvent = null;
@@ -10271,18 +10503,6 @@
     },
     $signature: 0
   };
-  A._StreamImplEvents.prototype = {
-    add$1(_, $event) {
-      var _this = this,
-        lastEvent = _this.lastPendingEvent;
-      if (lastEvent == null)
-        _this.firstPendingEvent = _this.lastPendingEvent = $event;
-      else {
-        lastEvent.set$next($event);
-        _this.lastPendingEvent = $event;
-      }
-    }
-  };
   A._DoneStreamSubscription.prototype = {
     _schedule$0() {
       var _this = this;
@@ -10296,7 +10516,7 @@
     },
     onError$1(_, handleError) {
     },
-    cancel$0() {
+    cancel$0(_) {
       return $.$get$Future__nullFuture();
     },
     _sendDone$0() {
@@ -10332,12 +10552,6 @@
     }
   };
   A._ZoneFunction.prototype = {};
-  A._RunNullaryZoneFunction.prototype = {};
-  A._RunUnaryZoneFunction.prototype = {};
-  A._RunBinaryZoneFunction.prototype = {};
-  A._RegisterNullaryZoneFunction.prototype = {};
-  A._RegisterUnaryZoneFunction.prototype = {};
-  A._RegisterBinaryZoneFunction.prototype = {};
   A._ZoneSpecification.prototype = {$isZoneSpecification: 1};
   A._ZoneDelegate.prototype = {$isZoneDelegate: 1};
   A._Zone.prototype = {
@@ -10431,9 +10645,9 @@
     },
     $index(_, key) {
       var value,
-        t1 = this._map,
+        t1 = this._async$_map,
         result = t1.$index(0, key);
-      if (result != null || t1.containsKey$1(key))
+      if (result != null || t1.containsKey$1(0, key))
         return result;
       value = this.parent.$index(0, key);
       if (value != null)
@@ -10566,8 +10780,8 @@
     get$parent(receiver) {
       return this.parent;
     },
-    get$_map() {
-      return this._map;
+    get$_async$_map() {
+      return this._async$_map;
     }
   };
   A._CustomZone_bindCallback_closure.prototype = {
@@ -10615,22 +10829,22 @@
   };
   A._RootZone.prototype = {
     get$_run() {
-      return B._RunNullaryZoneFunction__RootZone__rootRun;
+      return B._ZoneFunction__RootZone__rootRun;
     },
     get$_runUnary() {
-      return B._RunUnaryZoneFunction__RootZone__rootRunUnary;
+      return B._ZoneFunction__RootZone__rootRunUnary;
     },
     get$_runBinary() {
-      return B._RunBinaryZoneFunction__RootZone__rootRunBinary;
+      return B._ZoneFunction__RootZone__rootRunBinary;
     },
     get$_registerCallback() {
-      return B._RegisterNullaryZoneFunction__RootZone__rootRegisterCallback;
+      return B._ZoneFunction__RootZone__rootRegisterCallback;
     },
     get$_registerUnaryCallback() {
-      return B._RegisterUnaryZoneFunction_Bqo;
+      return B._ZoneFunction_Eeh;
     },
     get$_registerBinaryCallback() {
-      return B._RegisterBinaryZoneFunction_kGu;
+      return B._ZoneFunction_7G2;
     },
     get$_errorCallback() {
       return B._ZoneFunction__RootZone__rootErrorCallback;
@@ -10656,7 +10870,7 @@
     get$parent(_) {
       return null;
     },
-    get$_map() {
+    get$_async$_map() {
       return $.$get$_RootZone__rootMap();
     },
     get$_delegate() {
@@ -10841,18 +11055,19 @@
     get$isEmpty(_) {
       return this._collection$_length === 0;
     },
-    get$keys() {
+    get$keys(_) {
       return new A._HashMapKeyIterable(this, A._instanceType(this)._eval$1("_HashMapKeyIterable<1>"));
     },
-    containsKey$1(key) {
-      var strings, t1;
-      if (key !== "__proto__") {
-        strings = this._strings;
+    containsKey$1(_, key) {
+      var strings, nums;
+      if (typeof key == "string" && key !== "__proto__") {
+        strings = this._collection$_strings;
         return strings == null ? false : strings[key] != null;
-      } else {
-        t1 = this._containsKey$1(key);
-        return t1;
-      }
+      } else if (typeof key == "number" && (key & 1073741823) === key) {
+        nums = this._collection$_nums;
+        return nums == null ? false : nums[key] != null;
+      } else
+        return this._containsKey$1(key);
     },
     _containsKey$1(key) {
       var rest = this._collection$_rest;
@@ -10863,17 +11078,17 @@
     $index(_, key) {
       var strings, t1, nums;
       if (typeof key == "string" && key !== "__proto__") {
-        strings = this._strings;
+        strings = this._collection$_strings;
         t1 = strings == null ? null : A._HashMap__getTableEntry(strings, key);
         return t1;
       } else if (typeof key == "number" && (key & 1073741823) === key) {
-        nums = this._nums;
+        nums = this._collection$_nums;
         t1 = nums == null ? null : A._HashMap__getTableEntry(nums, key);
         return t1;
       } else
-        return this._get$1(key);
+        return this._get$1(0, key);
     },
-    _get$1(key) {
+    _get$1(_, key) {
       var bucket, index,
         rest = this._collection$_rest;
       if (rest == null)
@@ -10888,11 +11103,11 @@
       t1._precomputed1._as(key);
       t1._rest[1]._as(value);
       if (typeof key == "string" && key !== "__proto__") {
-        strings = _this._strings;
-        _this._addHashTableEntry$3(strings == null ? _this._strings = A._HashMap__newHashTable() : strings, key, value);
+        strings = _this._collection$_strings;
+        _this._collection$_addHashTableEntry$3(strings == null ? _this._collection$_strings = A._HashMap__newHashTable() : strings, key, value);
       } else if (typeof key == "number" && (key & 1073741823) === key) {
-        nums = _this._nums;
-        _this._addHashTableEntry$3(nums == null ? _this._nums = A._HashMap__newHashTable() : nums, key, value);
+        nums = _this._collection$_nums;
+        _this._collection$_addHashTableEntry$3(nums == null ? _this._collection$_nums = A._HashMap__newHashTable() : nums, key, value);
       } else
         _this._set$2(key, value);
     },
@@ -10941,7 +11156,7 @@
       if (result != null)
         return result;
       result = A.List_List$filled(_this._collection$_length, null, false, type$.dynamic);
-      strings = _this._strings;
+      strings = _this._collection$_strings;
       if (strings != null) {
         names = Object.getOwnPropertyNames(strings);
         entries = names.length;
@@ -10951,7 +11166,7 @@
         }
       } else
         index = 0;
-      nums = _this._nums;
+      nums = _this._collection$_nums;
       if (nums != null) {
         names = Object.getOwnPropertyNames(nums);
         entries = names.length;
@@ -10975,7 +11190,7 @@
       }
       return _this._keys = result;
     },
-    _addHashTableEntry$3(table, key, value) {
+    _collection$_addHashTableEntry$3(table, key, value) {
       var t1 = A._instanceType(this);
       t1._precomputed1._as(key);
       t1._rest[1]._as(value);
@@ -11002,6 +11217,23 @@
       return -1;
     }
   };
+  A._IdentityHashMap.prototype = {
+    _computeHashCode$1(key) {
+      return A.objectHashCode(key) & 1073741823;
+    },
+    _findBucketIndex$2(bucket, key) {
+      var $length, i, t1;
+      if (bucket == null)
+        return -1;
+      $length = bucket.length;
+      for (i = 0; i < $length; i += 2) {
+        t1 = bucket[i];
+        if (t1 == null ? key == null : t1 === key)
+          return i;
+      }
+      return -1;
+    }
+  };
   A._HashMapKeyIterable.prototype = {
     get$length(_) {
       return this._collection$_map._collection$_length;
@@ -11015,7 +11247,7 @@
     }
   };
   A._HashMapKeyIterator.prototype = {
-    get$current() {
+    get$current(_) {
       var t1 = this._collection$_current;
       return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
@@ -11043,7 +11275,7 @@
   A._LinkedHashSet.prototype = {
     get$iterator(_) {
       var _this = this,
-        t1 = new A._LinkedHashSetIterator(_this, _this._collection$_modifications, A._instanceType(_this)._eval$1("_LinkedHashSetIterator<1>"));
+        t1 = new A._LinkedHashSetIterator(_this, _this._collection$_modifications, _this.$ti._eval$1("_LinkedHashSetIterator<1>"));
       t1._collection$_cell = _this._collection$_first;
       return t1;
     },
@@ -11053,7 +11285,7 @@
     contains$1(_, object) {
       var nums;
       if ((object & 1073741823) === object) {
-        nums = this._nums;
+        nums = this._collection$_nums;
         if (nums == null)
           return false;
         return type$.nullable__LinkedHashSetCell._as(nums[object]) != null;
@@ -11064,27 +11296,27 @@
       var rest = this._collection$_rest;
       if (rest == null)
         return false;
-      return this._findBucketIndex$2(rest[this._computeHashCode$1(object)], object) >= 0;
+      return this._findBucketIndex$2(rest[B.JSInt_methods.get$hashCode(object) & 1073741823], object) >= 0;
     },
     add$1(_, element) {
       var strings, nums, _this = this;
-      A._instanceType(_this)._precomputed1._as(element);
+      _this.$ti._precomputed1._as(element);
       if (typeof element == "string" && element !== "__proto__") {
-        strings = _this._strings;
-        return _this._addHashTableEntry$2(strings == null ? _this._strings = A._LinkedHashSet__newHashTable() : strings, element);
+        strings = _this._collection$_strings;
+        return _this._collection$_addHashTableEntry$2(strings == null ? _this._collection$_strings = A._LinkedHashSet__newHashTable() : strings, element);
       } else if (typeof element == "number" && (element & 1073741823) === element) {
-        nums = _this._nums;
-        return _this._addHashTableEntry$2(nums == null ? _this._nums = A._LinkedHashSet__newHashTable() : nums, element);
+        nums = _this._collection$_nums;
+        return _this._collection$_addHashTableEntry$2(nums == null ? _this._collection$_nums = A._LinkedHashSet__newHashTable() : nums, element);
       } else
-        return _this._collection$_add$1(element);
+        return _this._collection$_add$1(0, element);
     },
-    _collection$_add$1(element) {
+    _collection$_add$1(_, element) {
       var rest, hash, bucket, _this = this;
-      A._instanceType(_this)._precomputed1._as(element);
+      _this.$ti._precomputed1._as(element);
       rest = _this._collection$_rest;
       if (rest == null)
         rest = _this._collection$_rest = A._LinkedHashSet__newHashTable();
-      hash = _this._computeHashCode$1(element);
+      hash = J.get$hashCode$(element) & 1073741823;
       bucket = rest[hash];
       if (bucket == null)
         rest[hash] = [_this._collection$_newLinkedCell$1(element)];
@@ -11098,30 +11330,30 @@
     remove$1(_, object) {
       var _this = this;
       if (typeof object == "string" && object !== "__proto__")
-        return _this._collection$_removeHashTableEntry$2(_this._strings, object);
+        return _this._collection$_removeHashTableEntry$2(_this._collection$_strings, object);
       else if (typeof object == "number" && (object & 1073741823) === object)
-        return _this._collection$_removeHashTableEntry$2(_this._nums, object);
+        return _this._collection$_removeHashTableEntry$2(_this._collection$_nums, object);
       else
-        return _this._remove$1(object);
+        return _this._remove$1(0, object);
     },
-    _remove$1(object) {
-      var hash, bucket, index, cell, _this = this,
-        rest = _this._collection$_rest;
+    _remove$1(_, object) {
+      var hash, bucket, index, cell,
+        rest = this._collection$_rest;
       if (rest == null)
         return false;
-      hash = _this._computeHashCode$1(object);
+      hash = J.get$hashCode$(object) & 1073741823;
       bucket = rest[hash];
-      index = _this._findBucketIndex$2(bucket, object);
+      index = this._findBucketIndex$2(bucket, object);
       if (index < 0)
         return false;
       cell = bucket.splice(index, 1)[0];
       if (0 === bucket.length)
         delete rest[hash];
-      _this._collection$_unlinkCell$1(cell);
+      this._collection$_unlinkCell$1(cell);
       return true;
     },
-    _addHashTableEntry$2(table, element) {
-      A._instanceType(this)._precomputed1._as(element);
+    _collection$_addHashTableEntry$2(table, element) {
+      this.$ti._precomputed1._as(element);
       if (type$.nullable__LinkedHashSetCell._as(table[element]) != null)
         return false;
       table[element] = this._collection$_newLinkedCell$1(element);
@@ -11143,7 +11375,7 @@
     },
     _collection$_newLinkedCell$1(element) {
       var t1, _this = this,
-        cell = new A._LinkedHashSetCell(A._instanceType(_this)._precomputed1._as(element));
+        cell = new A._LinkedHashSetCell(_this.$ti._precomputed1._as(element));
       if (_this._collection$_first == null)
         _this._collection$_first = _this._collection$_last = cell;
       else {
@@ -11171,9 +11403,6 @@
       --_this._collection$_length;
       _this._collection$_modified$0();
     },
-    _computeHashCode$1(element) {
-      return J.get$hashCode$(element) & 1073741823;
-    },
     _findBucketIndex$2(bucket, element) {
       var $length, i;
       if (bucket == null)
@@ -11187,7 +11416,7 @@
   };
   A._LinkedHashSetCell.prototype = {};
   A._LinkedHashSetIterator.prototype = {
-    get$current() {
+    get$current(_) {
       var t1 = this._collection$_current;
       return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
@@ -11220,11 +11449,12 @@
     elementAt$1(receiver, index) {
       return this.$index(receiver, index);
     },
-    get$isEmpty(receiver) {
-      return this.get$length(receiver) === 0;
-    },
     get$isNotEmpty(receiver) {
-      return !this.get$isEmpty(receiver);
+      return this.get$length(receiver) !== 0;
+    },
+    map$1$1(receiver, f, $T) {
+      var t1 = A.instanceType(receiver);
+      return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(ListMixin.E)")._as(f), t1._eval$1("@<ListMixin.E>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
     },
     fillRange$3(receiver, start, end, fill) {
       var i;
@@ -11253,26 +11483,24 @@
     $signature: 21
   };
   A.MapMixin.prototype = {
-    forEach$1(_, action) {
+    forEach$1(receiver, action) {
       var t2, key, t3,
-        t1 = A._instanceType(this);
+        t1 = A.instanceType(receiver);
       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();
-        t3 = this.$index(0, key);
+      for (t2 = J.get$iterator$ax(this.get$keys(receiver)), t1 = t1._eval$1("MapMixin.V"); t2.moveNext$0();) {
+        key = t2.get$current(t2);
+        t3 = this.$index(receiver, key);
         action.call$2(key, t3 == null ? t1._as(t3) : t3);
       }
     },
-    get$length(_) {
-      var t1 = this.get$keys();
-      return t1.get$length(t1);
+    get$length(receiver) {
+      return J.get$length$asx(this.get$keys(receiver));
     },
-    get$isEmpty(_) {
-      var t1 = this.get$keys();
-      return t1.get$isEmpty(t1);
+    get$isEmpty(receiver) {
+      return J.get$isEmpty$asx(this.get$keys(receiver));
     },
-    toString$0(_) {
-      return A.MapBase_mapToString(this);
+    toString$0(receiver) {
+      return A.MapBase_mapToString(receiver);
     },
     $isMap: 1
   };
@@ -11286,30 +11514,35 @@
   };
   A.MapView.prototype = {
     $index(_, key) {
-      return this._collection$_map.$index(0, key);
+      return J.$index$asx(this._collection$_map, key);
     },
     $indexSet(_, key, value) {
       var t1 = A._instanceType(this);
-      this._collection$_map.$indexSet(0, t1._precomputed1._as(key), t1._rest[1]._as(value));
+      J.$indexSet$ax(this._collection$_map, t1._precomputed1._as(key), t1._rest[1]._as(value));
     },
     forEach$1(_, action) {
-      this._collection$_map.forEach$1(0, A._instanceType(this)._eval$1("~(1,2)")._as(action));
+      J.forEach$1$x(this._collection$_map, A._instanceType(this)._eval$1("~(1,2)")._as(action));
     },
     get$isEmpty(_) {
-      var t1 = this._collection$_map;
-      return t1.get$isEmpty(t1);
+      return J.get$isEmpty$asx(this._collection$_map);
     },
     get$length(_) {
-      var t1 = this._collection$_map;
-      return t1.get$length(t1);
+      return J.get$length$asx(this._collection$_map);
+    },
+    get$keys(_) {
+      return J.get$keys$x(this._collection$_map);
     },
     toString$0(_) {
-      return this._collection$_map.toString$0(0);
+      return J.toString$0$(this._collection$_map);
     },
     $isMap: 1
   };
   A.UnmodifiableMapView.prototype = {};
   A.SetMixin.prototype = {
+    map$1$1(_, f, $T) {
+      var t1 = this.$ti;
+      return new A.EfficientLengthMappedIterable(this, t1._bind$1($T)._eval$1("1(2)")._as(f), t1._eval$1("@<1>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>"));
+    },
     toString$0(_) {
       return A.IterableBase_iterableToFullString(this, "{", "}");
     }
@@ -11332,14 +11565,15 @@
       }
     },
     get$length(_) {
-      return this._processed == null ? this._data.__js_helper$_length : this._convert$_computeKeys$0().length;
+      return this._processed == null ? this._data._length : this._convert$_computeKeys$0().length;
     },
     get$isEmpty(_) {
       return this.get$length(this) === 0;
     },
-    get$keys() {
+    get$keys(_) {
+      var t1;
       if (this._processed == null) {
-        var t1 = this._data;
+        t1 = this._data;
         return new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>"));
       }
       return new A._JsonMapKeyIterable(this);
@@ -11348,7 +11582,7 @@
       var processed, original, _this = this;
       if (_this._processed == null)
         _this._data.$indexSet(0, key, value);
-      else if (_this.containsKey$1(key)) {
+      else if (_this.containsKey$1(0, key)) {
         processed = _this._processed;
         processed[key] = value;
         original = _this._original;
@@ -11357,9 +11591,9 @@
       } else
         _this._upgrade$0().$indexSet(0, key, value);
     },
-    containsKey$1(key) {
+    containsKey$1(_, key) {
       if (this._processed == null)
-        return this._data.containsKey$1(key);
+        return this._data.containsKey$1(0, key);
       return Object.prototype.hasOwnProperty.call(this._original, key);
     },
     forEach$1(_, f) {
@@ -11399,7 +11633,7 @@
       if (t1 === 0)
         B.JSArray_methods.add$1(keys, "");
       else
-        B.JSArray_methods.set$length(keys, 0);
+        B.JSArray_methods.clear$0(keys);
       _this._original = _this._processed = null;
       return _this._data = result;
     },
@@ -11419,7 +11653,7 @@
     elementAt$1(_, index) {
       var t1 = this._convert$_parent;
       if (t1._processed == null)
-        t1 = t1.get$keys().elementAt$1(0, index);
+        t1 = t1.get$keys(t1).elementAt$1(0, index);
       else {
         t1 = t1._convert$_computeKeys$0();
         if (!(index >= 0 && index < t1.length))
@@ -11431,7 +11665,7 @@
     get$iterator(_) {
       var t1 = this._convert$_parent;
       if (t1._processed == null) {
-        t1 = t1.get$keys();
+        t1 = t1.get$keys(t1);
         t1 = t1.get$iterator(t1);
       } else {
         t1 = t1._convert$_computeKeys$0();
@@ -11488,7 +11722,7 @@
   };
   A.AsciiEncoder.prototype = {};
   A.Base64Codec.prototype = {
-    normalize$3(source, start, end) {
+    normalize$3(_, source, start, end) {
       var inverseAlphabet, t1, i, sliceStart, buffer, firstPadding, firstPaddingSourceIndex, paddingCount, i0, char, i1, digit1, digit2, char0, value, t2, t3, endLength, $length,
         _s31_ = "Invalid base64 encoding length ";
       end = A.RangeError_checkValidRange(start, end, source.length);
@@ -11783,27 +12017,28 @@
       _this.writeString$1("]");
     },
     writeMap$1(map) {
-      var t1, keyValueList, i, separator, t2, _this = this, _box_0 = {};
-      if (map.get$isEmpty(map)) {
+      var t2, keyValueList, i, separator, _this = this, _box_0 = {},
+        t1 = J.getInterceptor$asx(map);
+      if (t1.get$isEmpty(map)) {
         _this.writeString$1("{}");
         return true;
       }
-      t1 = map.get$length(map) * 2;
-      keyValueList = A.List_List$filled(t1, null, false, type$.nullable_Object);
+      t2 = t1.get$length(map) * 2;
+      keyValueList = A.List_List$filled(t2, null, false, type$.nullable_Object);
       i = _box_0.i = 0;
       _box_0.allStringKeys = true;
-      map.forEach$1(0, new A._JsonStringifier_writeMap_closure(_box_0, keyValueList));
+      t1.forEach$1(map, new A._JsonStringifier_writeMap_closure(_box_0, keyValueList));
       if (!_box_0.allStringKeys)
         return false;
       _this.writeString$1("{");
-      for (separator = '"'; i < t1; i += 2, separator = ',"') {
+      for (separator = '"'; i < t2; i += 2, separator = ',"') {
         _this.writeString$1(separator);
         _this.writeStringContent$1(A._asString(keyValueList[i]));
         _this.writeString$1('":');
-        t2 = i + 1;
-        if (!(t2 < t1))
-          return A.ioore(keyValueList, t2);
-        _this.writeObject$1(keyValueList[t2]);
+        t1 = i + 1;
+        if (!(t1 < t2))
+          return A.ioore(keyValueList, t1);
+        _this.writeObject$1(keyValueList[t1]);
       }
       _this.writeString$1("}");
       return true;
@@ -11827,13 +12062,13 @@
       return t1 instanceof A.StringBuffer ? t1.toString$0(0) : null;
     },
     writeNumber$1(number) {
-      this._sink.write$1(B.JSNumber_methods.toString$0(number));
+      this._sink.write$1(0, B.JSNumber_methods.toString$0(number));
     },
     writeString$1(string) {
-      this._sink.write$1(string);
+      this._sink.write$1(0, string);
     },
     writeStringSlice$3(string, start, end) {
-      this._sink.write$1(B.JSString_methods.substring$2(string, start, end));
+      this._sink.write$1(0, B.JSString_methods.substring$2(string, start, end));
     },
     writeCharCode$1(charCode) {
       this._sink.writeCharCode$1(charCode);
@@ -12126,29 +12361,7 @@
       t1._contents += A.Error_safeToString(value);
       t2.comma = ", ";
     },
-    $signature: 23
-  };
-  A.DateTime.prototype = {
-    $eq(_, other) {
-      if (other == null)
-        return false;
-      return other instanceof A.DateTime && this._value === other._value && true;
-    },
-    get$hashCode(_) {
-      var t1 = this._value;
-      return (t1 ^ B.JSInt_methods._shrOtherPositive$1(t1, 30)) & 1073741823;
-    },
-    toString$0(_) {
-      var _this = this,
-        y = A.DateTime__fourDigits(A.Primitives_getYear(_this)),
-        m = A.DateTime__twoDigits(A.Primitives_getMonth(_this)),
-        d = A.DateTime__twoDigits(A.Primitives_getDay(_this)),
-        h = A.DateTime__twoDigits(A.Primitives_getHours(_this)),
-        min = A.DateTime__twoDigits(A.Primitives_getMinutes(_this)),
-        sec = A.DateTime__twoDigits(A.Primitives_getSeconds(_this)),
-        ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this));
-      return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + "Z";
-    }
+    $signature: 33
   };
   A.Duration.prototype = {
     $eq(_, other) {
@@ -12169,7 +12382,7 @@
       minutesPadding = minutes < 10 ? "0" : "";
       seconds = B.JSInt_methods._tdivFast$1(microseconds, 1000000);
       secondsPadding = seconds < 10 ? "0" : "";
-      return "" + hours + ":" + minutesPadding + minutes + ":" + secondsPadding + seconds + "." + B.JSString_methods.padLeft$2(B.JSInt_methods.toString$0(microseconds % 1000000), 6, "0");
+      return "" + Math.abs(hours) + ":" + minutesPadding + minutes + ":" + secondsPadding + seconds + "." + B.JSString_methods.padLeft$2(B.JSInt_methods.toString$0(microseconds % 1000000), 6, "0");
     }
   };
   A.Error.prototype = {
@@ -12270,8 +12483,7 @@
   };
   A.UnimplementedError.prototype = {
     toString$0(_) {
-      var message = this.message;
-      return message != null ? "UnimplementedError: " + message : "UnimplementedError";
+      return "UnimplementedError: " + this.message;
     }
   };
   A.StateError.prototype = {
@@ -12388,6 +12600,10 @@
     $isException: 1
   };
   A.Iterable.prototype = {
+    map$1$1(_, toElement, $T) {
+      var t1 = A._instanceType(this);
+      return A.MappedIterable_MappedIterable(this, t1._bind$1($T)._eval$1("1(Iterable.E)")._as(toElement), t1._eval$1("Iterable.E"), $T);
+    },
     get$length(_) {
       var count,
         it = this.get$iterator(this);
@@ -12406,7 +12622,7 @@
       var it = this.get$iterator(this);
       if (!it.moveNext$0())
         throw A.wrapException(A.IterableElementError_noElement());
-      return it.get$current();
+      return it.get$current(it);
     },
     get$last(_) {
       var result,
@@ -12414,7 +12630,7 @@
       if (!it.moveNext$0())
         throw A.wrapException(A.IterableElementError_noElement());
       do
-        result = it.get$current();
+        result = it.get$current(it);
       while (it.moveNext$0());
       return result;
     },
@@ -12422,7 +12638,7 @@
       var t1, elementIndex, element;
       A.RangeError_checkNotNegative(index, "index");
       for (t1 = this.get$iterator(this), elementIndex = 0; t1.moveNext$0();) {
-        element = t1.get$current();
+        element = t1.get$current(t1);
         if (index === elementIndex)
           return element;
         ++elementIndex;
@@ -12470,7 +12686,7 @@
     get$length(_) {
       return this._contents.length;
     },
-    write$1(obj) {
+    write$1(_, obj) {
       this._contents += A.S(obj);
     },
     writeCharCode$1(charCode) {
@@ -12490,16 +12706,16 @@
       index = B.JSString_methods.indexOf$1(element, "=");
       if (index === -1) {
         if (element !== "")
-          map.$indexSet(0, A._Uri__uriDecode(element, 0, element.length, this.encoding, true), "");
+          J.$indexSet$ax(map, A._Uri__uriDecode(element, 0, element.length, this.encoding, true), "");
       } else if (index !== 0) {
         key = B.JSString_methods.substring$2(element, 0, index);
         value = B.JSString_methods.substring$1(element, index + 1);
         t1 = this.encoding;
-        map.$indexSet(0, A._Uri__uriDecode(key, 0, key.length, t1, true), A._Uri__uriDecode(value, 0, value.length, t1, true));
+        J.$indexSet$ax(map, A._Uri__uriDecode(key, 0, key.length, t1, true), A._Uri__uriDecode(value, 0, value.length, t1, true));
       }
       return map;
     },
-    $signature: 34
+    $signature: 23
   };
   A.Uri__parseIPv4Address_error.prototype = {
     call$2(msg, position) {
@@ -12528,7 +12744,7 @@
   A._Uri.prototype = {
     get$_text() {
       var t1, t2, t3, t4, _this = this,
-        value = _this.___Uri__text;
+        value = _this.___Uri__text_FI;
       if (value === $) {
         t1 = _this.scheme;
         t2 = t1.length !== 0 ? "" + t1 + ":" : "";
@@ -12553,44 +12769,44 @@
         t2 = _this._fragment;
         if (t2 != null)
           t1 = t1 + "#" + t2;
-        A._lateInitializeOnceCheck(value, "_text");
-        value = _this.___Uri__text = t1.charCodeAt(0) == 0 ? t1 : t1;
+        value !== $ && A.throwLateFieldADI("_text");
+        value = _this.___Uri__text_FI = t1.charCodeAt(0) == 0 ? t1 : t1;
       }
       return value;
     },
     get$pathSegments() {
       var pathToSplit, result, _this = this,
-        value = _this.___Uri_pathSegments;
+        value = _this.___Uri_pathSegments_FI;
       if (value === $) {
         pathToSplit = _this.path;
         if (pathToSplit.length !== 0 && B.JSString_methods._codeUnitAt$1(pathToSplit, 0) === 47)
           pathToSplit = B.JSString_methods.substring$1(pathToSplit, 1);
         result = pathToSplit.length === 0 ? B.List_empty : A.List_List$unmodifiable(new A.MappedListIterable(A._setArrayType(pathToSplit.split("/"), type$.JSArray_String), type$.dynamic_Function_String._as(A.core_Uri_decodeComponent$closure()), type$.MappedListIterable_String_dynamic), type$.String);
-        A._lateInitializeOnceCheck(_this.___Uri_pathSegments, "pathSegments");
-        _this.set$___Uri_pathSegments(result);
+        _this.___Uri_pathSegments_FI !== $ && A.throwLateFieldADI("pathSegments");
+        _this.set$___Uri_pathSegments_FI(result);
         value = result;
       }
       return value;
     },
     get$hashCode(_) {
       var result, _this = this,
-        value = _this.___Uri_hashCode;
+        value = _this.___Uri_hashCode_FI;
       if (value === $) {
         result = B.JSString_methods.get$hashCode(_this.get$_text());
-        A._lateInitializeOnceCheck(_this.___Uri_hashCode, "hashCode");
-        _this.___Uri_hashCode = result;
+        _this.___Uri_hashCode_FI !== $ && A.throwLateFieldADI("hashCode");
+        _this.___Uri_hashCode_FI = result;
         value = result;
       }
       return value;
     },
     get$queryParameters() {
       var t1, result, _this = this,
-        value = _this.___Uri_queryParameters;
+        value = _this.___Uri_queryParameters_FI;
       if (value === $) {
         t1 = _this._query;
         result = new A.UnmodifiableMapView(A.Uri_splitQueryString(t1 == null ? "" : t1), type$.UnmodifiableMapView_String_String);
-        A._lateInitializeOnceCheck(_this.___Uri_queryParameters, "queryParameters");
-        _this.set$___Uri_queryParameters(result);
+        _this.___Uri_queryParameters_FI !== $ && A.throwLateFieldADI("queryParameters");
+        _this.set$___Uri_queryParameters_FI(result);
         value = result;
       }
       return value;
@@ -12610,7 +12826,7 @@
       var t1 = this._port;
       return t1 == null ? A._Uri__defaultPort(this.scheme) : t1;
     },
-    get$query() {
+    get$query(_) {
       var t1 = this._query;
       return t1 == null ? "" : t1;
     },
@@ -12670,7 +12886,7 @@
           targetUserInfo = "";
         }
         targetPath = A._Uri__removeDotSegments(reference.get$path(reference));
-        targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
+        targetQuery = reference.get$hasQuery() ? reference.get$query(reference) : _null;
       } else {
         targetScheme = _this.scheme;
         if (reference.get$hasAuthority()) {
@@ -12678,14 +12894,14 @@
           targetHost = reference.get$host(reference);
           targetPort = A._Uri__makePort(reference.get$hasPort() ? reference.get$port(reference) : _null, targetScheme);
           targetPath = A._Uri__removeDotSegments(reference.get$path(reference));
-          targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
+          targetQuery = reference.get$hasQuery() ? reference.get$query(reference) : _null;
         } else {
           targetUserInfo = _this._userInfo;
           targetHost = _this._host;
           targetPort = _this._port;
           targetPath = _this.path;
           if (reference.get$path(reference) === "")
-            targetQuery = reference.get$hasQuery() ? reference.get$query() : _this._query;
+            targetQuery = reference.get$hasQuery() ? reference.get$query(reference) : _this._query;
           else {
             packageNameEnd = A._Uri__packageNameEnd(_this, targetPath);
             if (packageNameEnd > 0) {
@@ -12706,7 +12922,7 @@
               else
                 targetPath = A._Uri__normalizeRelativePath(mergedPath, !t1 || targetHost != null);
             }
-            targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
+            targetQuery = reference.get$hasQuery() ? reference.get$query(reference) : _null;
           }
         }
       }
@@ -12739,7 +12955,7 @@
       if ((t1 == null ? "" : t1) !== "")
         throw A.wrapException(A.UnsupportedError$(string$.Cannotff));
       t1 = $.$get$_Uri__isWindowsCached();
-      if (t1)
+      if (A.boolConversionCheck(t1))
         t1 = A._Uri__toWindowsFilePath(_this);
       else {
         if (_this._host != null && _this.get$host(_this) !== "")
@@ -12772,7 +12988,7 @@
                     if (!t2 === other.get$hasQuery()) {
                       if (t2)
                         t1 = "";
-                      if (t1 === other.get$query()) {
+                      if (t1 === other.get$query(other)) {
                         t1 = _this._fragment;
                         t2 = t1 == null;
                         if (!t2 === other.get$hasFragment()) {
@@ -12801,11 +13017,11 @@
         t1 = false;
       return t1;
     },
-    set$___Uri_pathSegments(___Uri_pathSegments) {
-      this.___Uri_pathSegments = type$.List_String._as(___Uri_pathSegments);
+    set$___Uri_pathSegments_FI(___Uri_pathSegments_FI) {
+      this.___Uri_pathSegments_FI = type$.List_String._as(___Uri_pathSegments_FI);
     },
-    set$___Uri_queryParameters(___Uri_queryParameters) {
-      this.___Uri_queryParameters = type$.Map_String_String._as(___Uri_queryParameters);
+    set$___Uri_queryParameters_FI(___Uri_queryParameters_FI) {
+      this.___Uri_queryParameters_FI = type$.Map_String_String._as(___Uri_queryParameters_FI);
     },
     $isUri: 1,
     get$scheme() {
@@ -12945,7 +13161,7 @@
     get$path(_) {
       return B.JSString_methods.substring$2(this._uri, this._pathStart, this._queryStart);
     },
-    get$query() {
+    get$query(_) {
       var t1 = this._queryStart,
         t2 = this._fragmentStart;
       return t1 < t2 ? B.JSString_methods.substring$2(this._uri, t1 + 1, t2) : "";
@@ -12974,9 +13190,10 @@
       return A.List_List$unmodifiable(parts, type$.String);
     },
     get$queryParameters() {
-      if (this._queryStart >= this._fragmentStart)
+      var _this = this;
+      if (_this._queryStart >= _this._fragmentStart)
         return B.Map_empty;
-      return new A.UnmodifiableMapView(A.Uri_splitQueryString(this.get$query()), type$.UnmodifiableMapView_String_String);
+      return new A.UnmodifiableMapView(A.Uri_splitQueryString(_this.get$query(_this)), type$.UnmodifiableMapView_String_String);
     },
     _isPort$1(port) {
       var portDigitStart = this._portStart + 1;
@@ -13104,7 +13321,7 @@
         throw A.wrapException(A.UnsupportedError$(string$.Cannotff));
       }
       t3 = $.$get$_Uri__isWindowsCached();
-      if (t3)
+      if (A.boolConversionCheck(t3))
         t1 = A._Uri__toWindowsFilePath(_this);
       else {
         if (_this._hostStart < _this._portStart)
@@ -13134,7 +13351,7 @@
         t6 = _this._queryStart,
         t7 = B.JSString_methods.substring$2(t5, _this._pathStart, t6),
         t8 = _this._fragmentStart;
-      t6 = t6 < t8 ? _this.get$query() : _null;
+      t6 = t6 < t8 ? _this.get$query(_this) : _null;
       return A._Uri$_internal(t1, t2, t3, t4, t7, t6, t8 < t5.length ? _this.get$fragment() : _null);
     },
     toString$0(_) {
@@ -13144,6 +13361,11 @@
   };
   A._DataUri.prototype = {};
   A.HtmlElement.prototype = {};
+  A.AccessibleNodeList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
   A.AnchorElement.prototype = {
     toString$0(receiver) {
       return String(receiver);
@@ -13154,17 +13376,159 @@
       return String(receiver);
     }
   };
-  A.Blob.prototype = {$isBlob: 1};
+  A.Blob.prototype = {};
   A.CharacterData.prototype = {
     get$length(receiver) {
       return receiver.length;
     }
   };
+  A.CssPerspective.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
+  A.CssRule.prototype = {$isCssRule: 1};
+  A.CssStyleDeclaration.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
+  A.CssStyleDeclarationBase.prototype = {};
+  A.CssStyleValue.prototype = {};
+  A.CssTransformComponent.prototype = {};
+  A.CssTransformValue.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
+  A.CssUnparsedValue.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
+  A.DataTransferItemList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      return receiver[A._asInt(index)];
+    }
+  };
   A.DomException.prototype = {
     toString$0(receiver) {
       return String(receiver);
     }
   };
+  A.DomRectList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Rectangle_num._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.DomRectReadOnly.prototype = {
+    toString$0(receiver) {
+      var t2,
+        t1 = receiver.left;
+      t1.toString;
+      t2 = receiver.top;
+      t2.toString;
+      return "Rectangle (" + A.S(t1) + ", " + A.S(t2) + ") " + A.S(this.get$width(receiver)) + " x " + A.S(this.get$height(receiver));
+    },
+    $eq(receiver, other) {
+      var t1, t2;
+      if (other == null)
+        return false;
+      if (type$.Rectangle_num._is(other)) {
+        t1 = receiver.left;
+        t1.toString;
+        t2 = other.left;
+        t2.toString;
+        if (t1 === t2) {
+          t1 = receiver.top;
+          t1.toString;
+          t2 = other.top;
+          t2.toString;
+          if (t1 === t2) {
+            t1 = J.getInterceptor$x(other);
+            t1 = this.get$width(receiver) === t1.get$width(other) && this.get$height(receiver) === t1.get$height(other);
+          } else
+            t1 = false;
+        } else
+          t1 = false;
+      } else
+        t1 = false;
+      return t1;
+    },
+    get$hashCode(receiver) {
+      var t2,
+        t1 = receiver.left;
+      t1.toString;
+      t2 = receiver.top;
+      t2.toString;
+      return A.Object_hash(t1, t2, this.get$width(receiver), this.get$height(receiver));
+    },
+    get$_height(receiver) {
+      return receiver.height;
+    },
+    get$height(receiver) {
+      var t1 = this.get$_height(receiver);
+      t1.toString;
+      return t1;
+    },
+    get$_width(receiver) {
+      return receiver.width;
+    },
+    get$width(receiver) {
+      var t1 = this.get$_width(receiver);
+      t1.toString;
+      return t1;
+    },
+    $isRectangle: 1
+  };
+  A.DomStringList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      A._asString(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
   A.DomTokenList.prototype = {
     get$length(receiver) {
       return receiver.length;
@@ -13173,33 +13537,51 @@
   A.Element.prototype = {
     toString$0(receiver) {
       return receiver.localName;
-    },
-    get$onClick(receiver) {
-      return new A._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
-    },
-    $isElement: 1
+    }
   };
-  A.Event.prototype = {$isEvent: 1};
-  A.EventTarget.prototype = {
-    addEventListener$3(receiver, type, listener, useCapture) {
-      type$.nullable_dynamic_Function_Event._as(listener);
-      if (listener != null)
-        this._addEventListener$3(receiver, type, listener, false);
-    },
-    _addEventListener$3(receiver, type, listener, options) {
-      return receiver.addEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), false);
-    },
-    _removeEventListener$3(receiver, type, listener, options) {
-      return receiver.removeEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), false);
-    },
-    $isEventTarget: 1
-  };
+  A.EventTarget.prototype = {};
   A.File.prototype = {$isFile: 1};
+  A.FileList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.File._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.FileWriter.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
   A.FormElement.prototype = {
     get$length(receiver) {
       return receiver.length;
     }
   };
+  A.Gamepad.prototype = {$isGamepad: 1};
+  A.History.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
   A.HtmlCollection.prototype = {
     get$length(receiver) {
       return receiver.length;
@@ -13225,416 +13607,913 @@
     $isIterable: 1,
     $isList: 1
   };
-  A.IFrameElement.prototype = {
-    set$src(receiver, value) {
-      receiver.src = value;
-    },
-    $isIFrameElement: 1
-  };
   A.Location.prototype = {
-    get$origin(receiver) {
-      if ("origin" in receiver)
-        return receiver.origin;
-      return receiver.protocol + "//" + receiver.host;
-    },
     toString$0(receiver) {
       return String(receiver);
-    },
-    $isLocation: 1
+    }
   };
-  A.MessageEvent.prototype = {$isMessageEvent: 1};
-  A.MessagePort.prototype = {
-    addEventListener$3(receiver, type, listener, useCapture) {
-      type$.nullable_dynamic_Function_Event._as(listener);
-      if (type === "message")
-        receiver.start();
-      this.super$EventTarget$addEventListener(receiver, type, listener, false);
-    },
-    postMessage$1(receiver, message) {
-      receiver.postMessage(new A._StructuredCloneDart2Js([], []).walk$1(message));
-      return;
-    },
-    $isMessagePort: 1
+  A.MediaList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
   };
-  A.MouseEvent.prototype = {$isMouseEvent: 1};
+  A.MidiInputMap.prototype = {
+    $index(receiver, key) {
+      return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key)));
+    },
+    forEach$1(receiver, f) {
+      var entries, entry;
+      type$.void_Function_String_dynamic._as(f);
+      entries = receiver.entries();
+      for (; true;) {
+        entry = entries.next();
+        if (entry.done)
+          return;
+        f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1]));
+      }
+    },
+    get$keys(receiver) {
+      var keys = A._setArrayType([], type$.JSArray_String);
+      this.forEach$1(receiver, new A.MidiInputMap_keys_closure(keys));
+      return keys;
+    },
+    get$length(receiver) {
+      return receiver.size;
+    },
+    get$isEmpty(receiver) {
+      return receiver.size === 0;
+    },
+    $indexSet(receiver, key, value) {
+      throw A.wrapException(A.UnsupportedError$("Not supported"));
+    },
+    $isMap: 1
+  };
+  A.MidiInputMap_keys_closure.prototype = {
+    call$2(k, v) {
+      return B.JSArray_methods.add$1(this.keys, k);
+    },
+    $signature: 4
+  };
+  A.MidiOutputMap.prototype = {
+    $index(receiver, key) {
+      return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key)));
+    },
+    forEach$1(receiver, f) {
+      var entries, entry;
+      type$.void_Function_String_dynamic._as(f);
+      entries = receiver.entries();
+      for (; true;) {
+        entry = entries.next();
+        if (entry.done)
+          return;
+        f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1]));
+      }
+    },
+    get$keys(receiver) {
+      var keys = A._setArrayType([], type$.JSArray_String);
+      this.forEach$1(receiver, new A.MidiOutputMap_keys_closure(keys));
+      return keys;
+    },
+    get$length(receiver) {
+      return receiver.size;
+    },
+    get$isEmpty(receiver) {
+      return receiver.size === 0;
+    },
+    $indexSet(receiver, key, value) {
+      throw A.wrapException(A.UnsupportedError$("Not supported"));
+    },
+    $isMap: 1
+  };
+  A.MidiOutputMap_keys_closure.prototype = {
+    call$2(k, v) {
+      return B.JSArray_methods.add$1(this.keys, k);
+    },
+    $signature: 4
+  };
+  A.MimeType.prototype = {$isMimeType: 1};
+  A.MimeTypeArray.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.MimeType._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
   A.Node.prototype = {
     toString$0(receiver) {
       var value = receiver.nodeValue;
       return value == null ? this.super$Interceptor$toString(receiver) : value;
     },
-    _removeChild$1(receiver, child) {
-      return receiver.removeChild(child);
-    },
     $isNode: 1
   };
+  A.NodeList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Node._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.Plugin.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $isPlugin: 1
+  };
+  A.PluginArray.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Plugin._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.RtcStatsReport.prototype = {
+    $index(receiver, key) {
+      return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key)));
+    },
+    forEach$1(receiver, f) {
+      var entries, entry;
+      type$.void_Function_String_dynamic._as(f);
+      entries = receiver.entries();
+      for (; true;) {
+        entry = entries.next();
+        if (entry.done)
+          return;
+        f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1]));
+      }
+    },
+    get$keys(receiver) {
+      var keys = A._setArrayType([], type$.JSArray_String);
+      this.forEach$1(receiver, new A.RtcStatsReport_keys_closure(keys));
+      return keys;
+    },
+    get$length(receiver) {
+      return receiver.size;
+    },
+    get$isEmpty(receiver) {
+      return receiver.size === 0;
+    },
+    $indexSet(receiver, key, value) {
+      throw A.wrapException(A.UnsupportedError$("Not supported"));
+    },
+    $isMap: 1
+  };
+  A.RtcStatsReport_keys_closure.prototype = {
+    call$2(k, v) {
+      return B.JSArray_methods.add$1(this.keys, k);
+    },
+    $signature: 4
+  };
   A.SelectElement.prototype = {
     get$length(receiver) {
       return receiver.length;
     }
   };
-  A.UIEvent.prototype = {};
-  A.Window.prototype = {
-    get$location(receiver) {
-      return type$.Location._as(receiver.location);
+  A.SourceBuffer.prototype = {$isSourceBuffer: 1};
+  A.SourceBufferList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     },
-    postMessage$3(receiver, message, targetOrigin, transfer) {
-      type$.nullable_List_Object._as(transfer);
-      this._postMessage_1$3(receiver, new A._StructuredCloneDart2Js([], []).walk$1(message), targetOrigin, transfer);
-      return;
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
     },
-    _postMessage_1$3(receiver, message, targetOrigin, transfer) {
-      return receiver.postMessage(message, targetOrigin, type$.List_Object._as(transfer));
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.SourceBuffer._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
     },
-    $isWindowBase: 1
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
   };
-  A.EventStreamProvider.prototype = {};
-  A._EventStream.prototype = {
-    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
-      var t1 = A._instanceType(this);
-      t1._eval$1("~(1)?")._as(onData);
-      type$.nullable_void_Function._as(onDone);
-      return A._EventStreamSubscription$(this._target, this._eventType, onData, false, t1._precomputed1);
+  A.SpeechGrammar.prototype = {$isSpeechGrammar: 1};
+  A.SpeechGrammarList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     },
-    listen$1(onData) {
-      return this.listen$4$cancelOnError$onDone$onError(onData, null, null, null);
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
     },
-    listen$3$onDone$onError(onData, onDone, onError) {
-      return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError);
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.SpeechGrammar._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
     },
-    listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) {
-      return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null);
-    }
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
   };
-  A._ElementEventStreamImpl.prototype = {};
-  A._EventStreamSubscription.prototype = {
-    cancel$0() {
-      var _this = this;
-      if (_this._target == null)
-        return $.$get$nullFuture();
-      _this._unlisten$0();
-      _this._target = null;
-      _this.set$_onData(null);
-      return $.$get$nullFuture();
+  A.SpeechRecognitionResult.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     },
-    onData$1(handleData) {
-      var t1, _this = this;
-      _this.$ti._eval$1("~(1)?")._as(handleData);
-      if (_this._target == null)
-        throw A.wrapException(A.StateError$("Subscription has been canceled."));
-      _this._unlisten$0();
-      t1 = A._wrapZone(new A._EventStreamSubscription_onData_closure(handleData), type$.Event);
-      _this.set$_onData(t1);
-      _this._tryResume$0();
+    $isSpeechRecognitionResult: 1
+  };
+  A.Storage.prototype = {
+    $index(receiver, key) {
+      return receiver.getItem(A._asString(key));
     },
-    onError$1(_, handleError) {
+    $indexSet(receiver, key, value) {
+      receiver.setItem(key, value);
     },
-    _tryResume$0() {
-      var t2, _this = this,
-        t1 = _this._onData;
-      if (t1 != null && _this._pauseCount <= 0) {
-        t2 = _this._target;
-        t2.toString;
-        J.addEventListener$3$x(t2, _this._eventType, t1, false);
+    forEach$1(receiver, f) {
+      var i, key, t1;
+      type$.void_Function_String_String._as(f);
+      for (i = 0; true; ++i) {
+        key = receiver.key(i);
+        if (key == null)
+          return;
+        t1 = receiver.getItem(key);
+        t1.toString;
+        f.call$2(key, t1);
       }
     },
-    _unlisten$0() {
-      var t2,
-        t1 = this._onData;
-      if (t1 != null) {
-        t2 = this._target;
-        t2.toString;
-        J._removeEventListener$3$x(t2, this._eventType, type$.nullable_dynamic_Function_Event._as(t1), false);
-      }
+    get$keys(receiver) {
+      var keys = A._setArrayType([], type$.JSArray_String);
+      this.forEach$1(receiver, new A.Storage_keys_closure(keys));
+      return keys;
     },
-    set$_onData(_onData) {
-      this._onData = type$.nullable_dynamic_Function_Event._as(_onData);
+    get$length(receiver) {
+      return receiver.length;
+    },
+    get$isEmpty(receiver) {
+      return receiver.key(0) == null;
+    },
+    $isMap: 1
+  };
+  A.Storage_keys_closure.prototype = {
+    call$2(k, v) {
+      return B.JSArray_methods.add$1(this.keys, k);
+    },
+    $signature: 30
+  };
+  A.StyleSheet.prototype = {$isStyleSheet: 1};
+  A.TextTrack.prototype = {$isTextTrack: 1};
+  A.TextTrackCue.prototype = {$isTextTrackCue: 1};
+  A.TextTrackCueList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.TextTrackCue._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.TextTrackList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.TextTrack._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.TimeRanges.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     }
   };
-  A._EventStreamSubscription_closure.prototype = {
-    call$1(e) {
-      return this.onData.call$1(type$.Event._as(e));
+  A.Touch.prototype = {$isTouch: 1};
+  A.TouchList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     },
-    $signature: 18
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Touch._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
   };
-  A._EventStreamSubscription_onData_closure.prototype = {
-    call$1(e) {
-      return this.handleData.call$1(type$.Event._as(e));
+  A.TrackDefaultList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
+  A.Url.prototype = {
+    toString$0(receiver) {
+      return String(receiver);
+    }
+  };
+  A.VideoTrackList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
+  A._CssRuleList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     },
-    $signature: 18
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.CssRule._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A._DomRect.prototype = {
+    toString$0(receiver) {
+      var t2, t3, t4,
+        t1 = receiver.left;
+      t1.toString;
+      t2 = receiver.top;
+      t2.toString;
+      t3 = receiver.width;
+      t3.toString;
+      t4 = receiver.height;
+      t4.toString;
+      return "Rectangle (" + A.S(t1) + ", " + A.S(t2) + ") " + A.S(t3) + " x " + A.S(t4);
+    },
+    $eq(receiver, other) {
+      var t1, t2;
+      if (other == null)
+        return false;
+      if (type$.Rectangle_num._is(other)) {
+        t1 = receiver.left;
+        t1.toString;
+        t2 = other.left;
+        t2.toString;
+        if (t1 === t2) {
+          t1 = receiver.top;
+          t1.toString;
+          t2 = other.top;
+          t2.toString;
+          if (t1 === t2) {
+            t1 = receiver.width;
+            t1.toString;
+            t2 = J.getInterceptor$x(other);
+            if (t1 === t2.get$width(other)) {
+              t1 = receiver.height;
+              t1.toString;
+              t2 = t1 === t2.get$height(other);
+              t1 = t2;
+            } else
+              t1 = false;
+          } else
+            t1 = false;
+        } else
+          t1 = false;
+      } else
+        t1 = false;
+      return t1;
+    },
+    get$hashCode(receiver) {
+      var t2, t3, t4,
+        t1 = receiver.left;
+      t1.toString;
+      t2 = receiver.top;
+      t2.toString;
+      t3 = receiver.width;
+      t3.toString;
+      t4 = receiver.height;
+      t4.toString;
+      return A.Object_hash(t1, t2, t3, t4);
+    },
+    get$_height(receiver) {
+      return receiver.height;
+    },
+    get$height(receiver) {
+      var t1 = receiver.height;
+      t1.toString;
+      return t1;
+    },
+    get$_width(receiver) {
+      return receiver.width;
+    },
+    get$width(receiver) {
+      var t1 = receiver.width;
+      t1.toString;
+      return t1;
+    }
+  };
+  A._GamepadList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.nullable_Gamepad._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A._NamedNodeMap.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Node._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A._SpeechRecognitionResultList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.SpeechRecognitionResult._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A._StyleSheetList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver[index];
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.StyleSheet._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      if (!(index >= 0 && index < receiver.length))
+        return A.ioore(receiver, index);
+      return receiver[index];
+    },
+    $isEfficientLengthIterable: 1,
+    $isJavaScriptIndexingBehavior: 1,
+    $isIterable: 1,
+    $isList: 1
   };
   A.ImmutableListMixin.prototype = {
     get$iterator(receiver) {
-      return new A.FixedSizeListIterator(receiver, receiver.length, A.instanceType(receiver)._eval$1("FixedSizeListIterator<ImmutableListMixin.E>"));
+      return new A.FixedSizeListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("FixedSizeListIterator<ImmutableListMixin.E>"));
     }
   };
   A.FixedSizeListIterator.prototype = {
     moveNext$0() {
       var _this = this,
         nextPosition = _this._position + 1,
-        t1 = _this._length;
+        t1 = _this._html$_length;
       if (nextPosition < t1) {
-        t1 = _this._array;
-        if (!(nextPosition >= 0 && nextPosition < t1.length))
-          return A.ioore(t1, nextPosition);
-        _this.set$_current(t1[nextPosition]);
+        _this.set$_html$_current(J.$index$asx(_this._array, nextPosition));
         _this._position = nextPosition;
         return true;
       }
-      _this.set$_current(null);
+      _this.set$_html$_current(null);
       _this._position = t1;
       return false;
     },
-    get$current() {
-      var t1 = this._current;
+    get$current(_) {
+      var t1 = this._html$_current;
       return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
     },
-    set$_current(_current) {
-      this._current = this.$ti._eval$1("1?")._as(_current);
+    set$_html$_current(_current) {
+      this._html$_current = this.$ti._eval$1("1?")._as(_current);
     },
     $isIterator: 1
   };
-  A._DOMWindowCrossFrame.prototype = {
-    postMessage$3(_, message, targetOrigin, messagePorts) {
-      this._window.postMessage(new A._StructuredCloneDart2Js([], []).walk$1(message), targetOrigin, messagePorts);
-    },
-    $isEventTarget: 1,
-    $isWindowBase: 1
-  };
+  A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase.prototype = {};
+  A._DomRectList_JavaScriptObject_ListMixin.prototype = {};
+  A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._DomStringList_JavaScriptObject_ListMixin.prototype = {};
+  A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._FileList_JavaScriptObject_ListMixin.prototype = {};
+  A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
   A._HtmlCollection_JavaScriptObject_ListMixin.prototype = {};
   A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
-  A._StructuredClone.prototype = {
-    findSlot$1(value) {
-      var i,
-        t1 = this.values,
-        $length = t1.length;
-      for (i = 0; i < $length; ++i)
-        if (t1[i] === value)
-          return i;
-      B.JSArray_methods.add$1(t1, value);
-      B.JSArray_methods.add$1(this.copies, null);
-      return $length;
-    },
-    walk$1(e) {
-      var slot, t2, copy, _this = this, t1 = {};
-      if (e == null)
-        return e;
-      if (A._isBool(e))
-        return e;
-      if (typeof e == "number")
-        return e;
-      if (typeof e == "string")
-        return e;
-      if (e instanceof A.DateTime)
-        return new Date(e._value);
-      if (type$.RegExp._is(e))
-        throw A.wrapException(A.UnimplementedError$("structured clone of RegExp"));
-      if (type$.File._is(e))
-        return e;
-      if (type$.Blob._is(e))
-        return e;
-      if (type$.NativeByteBuffer._is(e) || type$.NativeTypedData._is(e) || type$.MessagePort._is(e))
-        return e;
-      if (type$.Map_dynamic_dynamic._is(e)) {
-        slot = _this.findSlot$1(e);
-        t2 = _this.copies;
-        if (!(slot < t2.length))
-          return A.ioore(t2, slot);
-        copy = t1.copy = t2[slot];
-        if (copy != null)
-          return copy;
-        copy = {};
-        t1.copy = copy;
-        B.JSArray_methods.$indexSet(t2, slot, copy);
-        e.forEach$1(0, new A._StructuredClone_walk_closure(t1, _this));
-        return t1.copy;
-      }
-      if (type$.List_dynamic._is(e)) {
-        slot = _this.findSlot$1(e);
-        t1 = _this.copies;
-        if (!(slot < t1.length))
-          return A.ioore(t1, slot);
-        copy = t1[slot];
-        if (copy != null)
-          return copy;
-        return _this.copyList$2(e, slot);
-      }
-      if (type$.JSObject._is(e)) {
-        slot = _this.findSlot$1(e);
-        t2 = _this.copies;
-        if (!(slot < t2.length))
-          return A.ioore(t2, slot);
-        copy = t1.copy = t2[slot];
-        if (copy != null)
-          return copy;
-        copy = {};
-        t1.copy = copy;
-        B.JSArray_methods.$indexSet(t2, slot, copy);
-        _this.forEachObjectKey$2(e, new A._StructuredClone_walk_closure0(t1, _this));
-        return t1.copy;
-      }
-      throw A.wrapException(A.UnimplementedError$("structured clone of other type"));
-    },
-    copyList$2(e, slot) {
-      var i,
-        t1 = J.getInterceptor$asx(e),
-        $length = t1.get$length(e),
-        copy = new Array($length);
-      B.JSArray_methods.$indexSet(this.copies, slot, copy);
-      for (i = 0; i < $length; ++i)
-        B.JSArray_methods.$indexSet(copy, i, this.walk$1(t1.$index(e, i)));
-      return copy;
-    }
-  };
-  A._StructuredClone_walk_closure.prototype = {
-    call$2(key, value) {
-      this._box_0.copy[key] = this.$this.walk$1(value);
+  A._MidiInputMap_JavaScriptObject_MapMixin.prototype = {};
+  A._MidiOutputMap_JavaScriptObject_MapMixin.prototype = {};
+  A._MimeTypeArray_JavaScriptObject_ListMixin.prototype = {};
+  A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._NodeList_JavaScriptObject_ListMixin.prototype = {};
+  A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._PluginArray_JavaScriptObject_ListMixin.prototype = {};
+  A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._RtcStatsReport_JavaScriptObject_MapMixin.prototype = {};
+  A._SourceBufferList_EventTarget_ListMixin.prototype = {};
+  A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin.prototype = {};
+  A._SpeechGrammarList_JavaScriptObject_ListMixin.prototype = {};
+  A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._Storage_JavaScriptObject_MapMixin.prototype = {};
+  A._TextTrackCueList_JavaScriptObject_ListMixin.prototype = {};
+  A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._TextTrackList_EventTarget_ListMixin.prototype = {};
+  A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin.prototype = {};
+  A._TouchList_JavaScriptObject_ListMixin.prototype = {};
+  A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A.__CssRuleList_JavaScriptObject_ListMixin.prototype = {};
+  A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A.__GamepadList_JavaScriptObject_ListMixin.prototype = {};
+  A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A.__NamedNodeMap_JavaScriptObject_ListMixin.prototype = {};
+  A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin.prototype = {};
+  A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A.__StyleSheetList_JavaScriptObject_ListMixin.prototype = {};
+  A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._convertDataTree__convert.prototype = {
+    call$1(o) {
+      var convertedMap, t2, key, convertedList,
+        t1 = this._convertedObjects;
+      if (t1.containsKey$1(0, o))
+        return t1.$index(0, o);
+      if (type$.Map_dynamic_dynamic._is(o)) {
+        convertedMap = {};
+        t1.$indexSet(0, o, convertedMap);
+        for (t1 = J.getInterceptor$x(o), t2 = J.get$iterator$ax(t1.get$keys(o)); t2.moveNext$0();) {
+          key = t2.get$current(t2);
+          convertedMap[key] = this.call$1(t1.$index(o, key));
+        }
+        return convertedMap;
+      } else if (type$.Iterable_dynamic._is(o)) {
+        convertedList = [];
+        t1.$indexSet(0, o, convertedList);
+        B.JSArray_methods.addAll$1(convertedList, J.map$1$1$ax(o, this, type$.dynamic));
+        return convertedList;
+      } else
+        return o;
     },
     $signature: 31
   };
-  A._StructuredClone_walk_closure0.prototype = {
-    call$2(key, value) {
-      this._box_0.copy[key] = this.$this.walk$1(value);
+  A.dartify_convert.prototype = {
+    call$0() {
+      var proto, t3, dartObject, originalKeys, dartKeys, i, jsKey, dartKey, $constructor, $length,
+        t1 = this._convertedObjects,
+        t2 = this.o;
+      if (t1.containsKey$1(0, t2))
+        return t1.$index(0, t2);
+      if (t2 == null || A._isBool(t2) || typeof t2 == "number" || typeof t2 == "string")
+        return t2;
+      proto = Object.getPrototypeOf(t2);
+      if (proto == null || J.$eq$(proto, Object.prototype)) {
+        t3 = type$.nullable_Object;
+        dartObject = A.LinkedHashMap_LinkedHashMap$_empty(t3, t3);
+        t1.$indexSet(0, t2, dartObject);
+        originalKeys = Object.keys(t2);
+        dartKeys = [];
+        for (t1 = J.getInterceptor$ax(originalKeys), t3 = t1.get$iterator(originalKeys); t3.moveNext$0();)
+          dartKeys.push(A.dartify(t3.get$current(t3)));
+        for (i = 0; i < t1.get$length(originalKeys); ++i) {
+          jsKey = t1.$index(originalKeys, i);
+          if (!(i < dartKeys.length))
+            return A.ioore(dartKeys, i);
+          dartKey = dartKeys[i];
+          if (jsKey != null)
+            dartObject.$indexSet(0, dartKey, A.dartify(t2[jsKey]));
+        }
+        return dartObject;
+      }
+      $constructor = globalThis.Array;
+      if ($constructor != null && t2 instanceof $constructor) {
+        dartObject = [];
+        t1.$indexSet(0, t2, dartObject);
+        $length = A._asInt(t2.length);
+        for (i = 0; i < $length; ++i)
+          dartObject.push(A.dartify(t2[i]));
+        return dartObject;
+      }
+      throw A.wrapException(A.ArgumentError$("JavaScriptObject " + A.S(t2) + " must be a primitive, simple object, or array", null));
     },
     $signature: 32
   };
-  A._AcceptStructuredClone.prototype = {
-    findSlot$1(value) {
-      var i,
-        t1 = this.values,
-        $length = t1.length;
-      for (i = 0; i < $length; ++i)
-        if (t1[i] === value)
-          return i;
-      B.JSArray_methods.add$1(t1, value);
-      B.JSArray_methods.add$1(this.copies, null);
-      return $length;
+  A.Length.prototype = {$isLength: 1};
+  A.LengthList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     },
-    walk$1(e) {
-      var millisSinceEpoch, t1, proto, slot, copy, t2, l, $length, i, _this = this, _box_0 = {};
-      if (e == null)
-        return e;
-      if (A._isBool(e))
-        return e;
-      if (typeof e == "number")
-        return e;
-      if (typeof e == "string")
-        return e;
-      if (e instanceof Date) {
-        millisSinceEpoch = e.getTime();
-        if (Math.abs(millisSinceEpoch) <= 864e13)
-          t1 = false;
-        else
-          t1 = true;
-        if (t1)
-          A.throwExpression(A.ArgumentError$("DateTime is outside valid range: " + millisSinceEpoch, null));
-        A.checkNotNullable(true, "isUtc", type$.bool);
-        return new A.DateTime(millisSinceEpoch, true);
-      }
-      if (e instanceof RegExp)
-        throw A.wrapException(A.UnimplementedError$("structured clone of RegExp"));
-      if (typeof Promise != "undefined" && e instanceof Promise)
-        return A.promiseToFuture(e, type$.dynamic);
-      proto = Object.getPrototypeOf(e);
-      if (proto === Object.prototype || proto === null) {
-        slot = _this.findSlot$1(e);
-        t1 = _this.copies;
-        if (!(slot < t1.length))
-          return A.ioore(t1, slot);
-        copy = _box_0.copy = t1[slot];
-        if (copy != null)
-          return copy;
-        t2 = type$.dynamic;
-        copy = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
-        _box_0.copy = copy;
-        B.JSArray_methods.$indexSet(t1, slot, copy);
-        _this.forEachJsField$2(e, new A._AcceptStructuredClone_walk_closure(_box_0, _this));
-        return _box_0.copy;
-      }
-      if (e instanceof Array) {
-        l = e;
-        slot = _this.findSlot$1(l);
-        t1 = _this.copies;
-        if (!(slot < t1.length))
-          return A.ioore(t1, slot);
-        copy = t1[slot];
-        if (copy != null)
-          return copy;
-        t2 = J.getInterceptor$asx(l);
-        $length = t2.get$length(l);
-        copy = _this.mustCopy ? new Array($length) : l;
-        B.JSArray_methods.$indexSet(t1, slot, copy);
-        for (t1 = J.getInterceptor$ax(copy), i = 0; i < $length; ++i)
-          t1.$indexSet(copy, i, _this.walk$1(t2.$index(l, i)));
-        return copy;
-      }
-      return e;
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver.getItem(index);
     },
-    convertNativeToDart_AcceptStructuredClone$2$mustCopy(object, mustCopy) {
-      this.mustCopy = true;
-      return this.walk$1(object);
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Length._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      return this.$index(receiver, index);
+    },
+    $isEfficientLengthIterable: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.Number.prototype = {$isNumber: 1};
+  A.NumberList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver.getItem(index);
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Number._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      return this.$index(receiver, index);
+    },
+    $isEfficientLengthIterable: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A.PointList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     }
   };
-  A._AcceptStructuredClone_walk_closure.prototype = {
-    call$2(key, value) {
-      var t1 = this._box_0.copy,
-        t2 = this.$this.walk$1(value);
-      J.$indexSet$ax(t1, key, t2);
-      return t2;
+  A.StringList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     },
-    $signature: 33
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver.getItem(index);
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      A._asString(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      return this.$index(receiver, index);
+    },
+    $isEfficientLengthIterable: 1,
+    $isIterable: 1,
+    $isList: 1
   };
-  A._StructuredCloneDart2Js.prototype = {
-    forEachObjectKey$2(object, action) {
-      var t1, t2, _i, key;
-      type$.dynamic_Function_dynamic_dynamic._as(action);
-      for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t2; ++_i) {
-        key = t1[_i];
-        action.call$2(key, object[key]);
+  A.Transform.prototype = {$isTransform: 1};
+  A.TransformList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    },
+    $index(receiver, index) {
+      A._asInt(index);
+      if (index >>> 0 !== index || index >= receiver.length)
+        throw A.wrapException(A.IndexError$(index, receiver, null, null, null));
+      return receiver.getItem(index);
+    },
+    $indexSet(receiver, index, value) {
+      A._asInt(index);
+      type$.Transform._as(value);
+      throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List."));
+    },
+    elementAt$1(receiver, index) {
+      return this.$index(receiver, index);
+    },
+    $isEfficientLengthIterable: 1,
+    $isIterable: 1,
+    $isList: 1
+  };
+  A._LengthList_JavaScriptObject_ListMixin.prototype = {};
+  A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._NumberList_JavaScriptObject_ListMixin.prototype = {};
+  A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._StringList_JavaScriptObject_ListMixin.prototype = {};
+  A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A._TransformList_JavaScriptObject_ListMixin.prototype = {};
+  A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {};
+  A.AudioBuffer.prototype = {
+    get$length(receiver) {
+      return receiver.length;
+    }
+  };
+  A.AudioParamMap.prototype = {
+    $index(receiver, key) {
+      return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key)));
+    },
+    forEach$1(receiver, f) {
+      var entries, entry;
+      type$.void_Function_String_dynamic._as(f);
+      entries = receiver.entries();
+      for (; true;) {
+        entry = entries.next();
+        if (entry.done)
+          return;
+        f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1]));
       }
+    },
+    get$keys(receiver) {
+      var keys = A._setArrayType([], type$.JSArray_String);
+      this.forEach$1(receiver, new A.AudioParamMap_keys_closure(keys));
+      return keys;
+    },
+    get$length(receiver) {
+      return receiver.size;
+    },
+    get$isEmpty(receiver) {
+      return receiver.size === 0;
+    },
+    $indexSet(receiver, key, value) {
+      throw A.wrapException(A.UnsupportedError$("Not supported"));
+    },
+    $isMap: 1
+  };
+  A.AudioParamMap_keys_closure.prototype = {
+    call$2(k, v) {
+      return B.JSArray_methods.add$1(this.keys, k);
+    },
+    $signature: 4
+  };
+  A.AudioTrackList.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     }
   };
-  A._AcceptStructuredCloneDart2Js.prototype = {
-    forEachJsField$2(object, action) {
-      var t1, t2, _i, key;
-      type$.dynamic_Function_dynamic_dynamic._as(action);
-      for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
-        key = t1[_i];
-        action.call$2(key, object[key]);
-      }
+  A.BaseAudioContext.prototype = {};
+  A.OfflineAudioContext.prototype = {
+    get$length(receiver) {
+      return receiver.length;
     }
   };
-  A.NullRejectionException.prototype = {
-    toString$0(_) {
-      return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`.";
-    },
-    $isException: 1
-  };
-  A.promiseToFuture_closure.prototype = {
-    call$1(r) {
-      return this.completer.complete$1(0, this.T._eval$1("0/?")._as(r));
-    },
-    $signature: 3
-  };
-  A.promiseToFuture_closure0.prototype = {
-    call$1(e) {
-      if (e == null)
-        return this.completer.completeError$1(new A.NullRejectionException(e === undefined));
-      return this.completer.completeError$1(e);
-    },
-    $signature: 3
-  };
-  A.SvgElement.prototype = {
-    get$onClick(receiver) {
-      return new A._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
-    }
-  };
+  A._AudioParamMap_JavaScriptObject_MapMixin.prototype = {};
   A.NullStreamSink.prototype = {
-    addStream$1(stream) {
+    addStream$1(_, stream) {
       var _this = this;
       _this.$ti._eval$1("Stream<1>")._as(stream);
       _this._checkEventAllowed$0();
       _this._addingStream = true;
-      return stream.listen$1(null).cancel$0().whenComplete$1(new A.NullStreamSink_addStream_closure(_this));
+      return stream.listen$1(null).cancel$0(0).whenComplete$1(new A.NullStreamSink_addStream_closure(_this));
     },
     _checkEventAllowed$0() {
       if (this._null_stream_sink$_closed)
@@ -13681,7 +14560,7 @@
       var t1, t2, t3, needsSeparator, isAbsoluteAndNotRootRelative, t4, t5, parsed, path, t6;
       type$.Iterable_String._as(parts);
       for (t1 = parts.$ti, t2 = t1._eval$1("bool(Iterable.E)")._as(new A.Context_joinAll_closure()), t3 = parts.get$iterator(parts), t1 = new A.WhereIterator(t3, t2, t1._eval$1("WhereIterator<Iterable.E>")), t2 = this.style, needsSeparator = false, isAbsoluteAndNotRootRelative = false, t4 = ""; t1.moveNext$0();) {
-        t5 = t3.get$current();
+        t5 = t3.get$current(t3);
         if (t2.isRootRelative$1(t5) && isAbsoluteAndNotRootRelative) {
           parsed = A.ParsedPath_ParsedPath$parse(t5, t2);
           path = t4.charCodeAt(0) == 0 ? t4 : t4;
@@ -13721,12 +14600,12 @@
         B.JSArray_methods.insert$2(parsed.parts, 0, t1);
       return parsed.parts;
     },
-    normalize$1(path) {
+    normalize$1(_, path) {
       var parsed;
       if (!this._needsNormalization$1(path))
         return path;
       parsed = A.ParsedPath_ParsedPath$parse(path, this.style);
-      parsed.normalize$0();
+      parsed.normalize$0(0);
       return parsed.toString$0(0);
     },
     _needsNormalization$1(path) {
@@ -13777,19 +14656,19 @@
         t1 = _this.style,
         t2 = t1.rootLength$1(path);
       if (t2 <= 0)
-        return _this.normalize$1(path);
+        return _this.normalize$1(0, path);
       t2 = _this._context$_current;
       from = t2 == null ? A.current() : t2;
       if (t1.rootLength$1(from) <= 0 && t1.rootLength$1(path) > 0)
-        return _this.normalize$1(path);
+        return _this.normalize$1(0, path);
       if (t1.rootLength$1(path) <= 0 || t1.isRootRelative$1(path))
         path = _this.absolute$1(0, path);
       if (t1.rootLength$1(path) <= 0 && t1.rootLength$1(from) > 0)
         throw A.wrapException(A.PathException$(_s26_ + path + '" from "' + from + '".'));
       fromParsed = A.ParsedPath_ParsedPath$parse(from, t1);
-      fromParsed.normalize$0();
+      fromParsed.normalize$0(0);
       pathParsed = A.ParsedPath_ParsedPath$parse(path, t1);
-      pathParsed.normalize$0();
+      pathParsed.normalize$0(0);
       t2 = fromParsed.parts;
       t3 = t2.length;
       if (t3 !== 0) {
@@ -13883,7 +14762,7 @@
         return typedUri.toString$0(0);
       else if (typedUri.get$scheme() !== "file" && typedUri.get$scheme() !== "" && _this.style !== $.$get$Style_url())
         return typedUri.toString$0(0);
-      path = _this.normalize$1(_this.style.pathFromUri$1(A._parseUri(typedUri)));
+      path = _this.normalize$1(0, _this.style.pathFromUri$1(A._parseUri(typedUri)));
       rel = _this.relative$1(path);
       return _this.split$1(0, rel).length > _this.split$1(0, path).length ? path : rel;
     }
@@ -13905,7 +14784,7 @@
       A._asStringQ(arg);
       return arg == null ? "null" : '"' + arg + '"';
     },
-    $signature: 35
+    $signature: 34
   };
   A.InternalStyle.prototype = {
     getRoot$1(path) {
@@ -13961,7 +14840,7 @@
       if (t2 !== 0)
         B.JSArray_methods.$indexSet(t1, t2 - 1, "");
     },
-    normalize$0() {
+    normalize$0(_) {
       var t1, t2, leadingDoubles, _i, part, t3, _this = this,
         newParts = A._setArrayType([], type$.JSArray_String);
       for (t1 = _this.parts, t2 = t1.length, leadingDoubles = 0, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
@@ -14289,19 +15168,19 @@
     call$1(trace) {
       return A.Trace$parseVM(A._asString(trace));
     },
-    $signature: 17
+    $signature: 18
   };
   A.Chain_Chain$parse_closure1.prototype = {
     call$1(trace) {
       return A.Trace$parseFriendly(A._asString(trace));
     },
-    $signature: 17
+    $signature: 18
   };
   A.Chain_toTrace_closure.prototype = {
     call$1(trace) {
       return type$.Trace._as(trace).get$frames();
     },
-    $signature: 37
+    $signature: 36
   };
   A.Chain_toString_closure0.prototype = {
     call$1(trace) {
@@ -14309,14 +15188,14 @@
         t2 = A._arrayInstanceType(t1);
       return new A.MappedListIterable(t1, t2._eval$1("int(1)")._as(new A.Chain_toString__closure0()), t2._eval$1("MappedListIterable<1,int>")).fold$1$2(0, 0, B.CONSTANT, type$.int);
     },
-    $signature: 38
+    $signature: 37
   };
   A.Chain_toString__closure0.prototype = {
     call$1(frame) {
       type$.Frame._as(frame);
       return frame.get$location(frame).length;
     },
-    $signature: 16
+    $signature: 17
   };
   A.Chain_toString_closure.prototype = {
     call$1(trace) {
@@ -14324,14 +15203,14 @@
         t2 = A._arrayInstanceType(t1);
       return new A.MappedListIterable(t1, t2._eval$1("String(1)")._as(new A.Chain_toString__closure(this.longest)), t2._eval$1("MappedListIterable<1,String>")).join$0(0);
     },
-    $signature: 40
+    $signature: 39
   };
   A.Chain_toString__closure.prototype = {
     call$1(frame) {
       type$.Frame._as(frame);
       return B.JSString_methods.padRight$1(frame.get$location(frame), this.longest) + "  " + A.S(frame.get$member()) + "\n";
     },
-    $signature: 15
+    $signature: 16
   };
   A.Frame.prototype = {
     get$isCore() {
@@ -14365,7 +15244,7 @@
     get$uri() {
       return this.uri;
     },
-    get$line() {
+    get$line(receiver) {
       return this.line;
     },
     get$column() {
@@ -14478,7 +15357,7 @@
       columnMatch = t1[3];
       return new A.Frame(uri, line, columnMatch != null ? A.int_parse(columnMatch, _null) : _null, member);
     },
-    $signature: 43
+    $signature: 42
   };
   A.Frame_Frame$_parseFirefoxEval_closure.prototype = {
     call$0() {
@@ -14616,11 +15495,11 @@
   A.LazyTrace.prototype = {
     get$_lazy_trace$_trace() {
       var result, _this = this,
-        value = _this.__LazyTrace__trace;
+        value = _this.__LazyTrace__trace_FI;
       if (value === $) {
         result = _this._thunk.call$0();
-        A._lateInitializeOnceCheck(_this.__LazyTrace__trace, "_trace");
-        _this.__LazyTrace__trace = result;
+        _this.__LazyTrace__trace_FI !== $ && A.throwLateFieldADI("_trace");
+        _this.__LazyTrace__trace_FI = result;
         value = result;
       }
       return value;
@@ -14641,7 +15520,7 @@
     call$0() {
       return this.$this.get$_lazy_trace$_trace().get$terse();
     },
-    $signature: 13
+    $signature: 14
   };
   A.Trace.prototype = {
     get$terse() {
@@ -14661,7 +15540,7 @@
         if (t3 instanceof A.UnparsedFrame || !A.boolConversionCheck(_box_0.predicate.call$1(t3)))
           B.JSArray_methods.add$1(newFrames, t3);
         else if (newFrames.length === 0 || !A.boolConversionCheck(_box_0.predicate.call$1(B.JSArray_methods.get$last(newFrames))))
-          B.JSArray_methods.add$1(newFrames, new A.Frame(t3.get$uri(), t3.get$line(), t3.get$column(), t3.get$member()));
+          B.JSArray_methods.add$1(newFrames, new A.Frame(t3.get$uri(), t3.get$line(t3), t3.get$column(), t3.get$member()));
       }
       t1 = type$.MappedListIterable_Frame_Frame;
       newFrames = A.List_List$of(new A.MappedListIterable(newFrames, type$.Frame_Function_Frame._as(new A.Trace_foldFrames_closure0(_box_0)), t1), true, t1._eval$1("ListIterable.E"));
@@ -14683,7 +15562,7 @@
     call$0() {
       return A.Trace_Trace$parse(this.trace.toString$0(0));
     },
-    $signature: 13
+    $signature: 14
   };
   A.Trace__parseVM_closure.prototype = {
     call$1(line) {
@@ -14695,7 +15574,7 @@
     call$1(line) {
       return A.Frame_Frame$parseVM(A._asString(line));
     },
-    $signature: 4
+    $signature: 3
   };
   A.Trace$parseV8_closure.prototype = {
     call$1(line) {
@@ -14707,7 +15586,7 @@
     call$1(line) {
       return A.Frame_Frame$parseV8(A._asString(line));
     },
-    $signature: 4
+    $signature: 3
   };
   A.Trace$parseJSCore_closure.prototype = {
     call$1(line) {
@@ -14719,7 +15598,7 @@
     call$1(line) {
       return A.Frame_Frame$parseV8(A._asString(line));
     },
-    $signature: 4
+    $signature: 3
   };
   A.Trace$parseFirefox_closure.prototype = {
     call$1(line) {
@@ -14732,7 +15611,7 @@
     call$1(line) {
       return A.Frame_Frame$parseFirefox(A._asString(line));
     },
-    $signature: 4
+    $signature: 3
   };
   A.Trace$parseFriendly_closure.prototype = {
     call$1(line) {
@@ -14744,13 +15623,13 @@
     call$1(line) {
       return A.Frame_Frame$parseFriendly(A._asString(line));
     },
-    $signature: 4
+    $signature: 3
   };
   A.Trace_terse_closure.prototype = {
     call$1(_) {
       return false;
     },
-    $signature: 12
+    $signature: 13
   };
   A.Trace_foldFrames_closure.prototype = {
     call$1(frame) {
@@ -14765,9 +15644,9 @@
       t1.toString;
       if (!B.JSString_methods.contains$1(t1, "<async>"))
         return false;
-      return frame.get$line() == null;
+      return frame.get$line(frame) == null;
     },
-    $signature: 12
+    $signature: 13
   };
   A.Trace_foldFrames_closure0.prototype = {
     call$1(frame) {
@@ -14779,14 +15658,14 @@
       t2 = type$.Pattern._as($.$get$_terseRegExp());
       return new A.Frame(A.Uri_parse(A.stringReplaceAllUnchecked(t1, t2, "")), null, null, frame.get$member());
     },
-    $signature: 47
+    $signature: 46
   };
   A.Trace_toString_closure0.prototype = {
     call$1(frame) {
       type$.Frame._as(frame);
       return frame.get$location(frame).length;
     },
-    $signature: 16
+    $signature: 17
   };
   A.Trace_toString_closure.prototype = {
     call$1(frame) {
@@ -14795,7 +15674,7 @@
         return frame.toString$0(0) + "\n";
       return B.JSString_methods.padRight$1(frame.get$location(frame), this.longest) + "  " + A.S(frame.get$member()) + "\n";
     },
-    $signature: 15
+    $signature: 16
   };
   A.UnparsedFrame.prototype = {
     toString$0(_) {
@@ -14832,24 +15711,27 @@
       var _this = this,
         t1 = _this.$ti,
         t2 = t1._eval$1("_GuaranteeSink<1>")._as(new A._GuaranteeSink(innerSink, _this, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_dynamic), type$._AsyncCompleter_dynamic), true, $T._eval$1("_GuaranteeSink<0>")));
-      A._lateWriteOnceCheck(_this.__GuaranteeChannel__sink, "_sink");
-      _this.set$__GuaranteeChannel__sink(t2);
+      _this.__GuaranteeChannel__sink_F !== $ && A.throwLateFieldAI("_sink");
+      _this.set$__GuaranteeChannel__sink_F(t2);
       t1 = t1._eval$1("StreamController<1>")._as(A.StreamController_StreamController(null, new A.GuaranteeChannel_closure(_box_0, _this, $T), true, $T));
-      A._lateWriteOnceCheck(_this.__GuaranteeChannel__streamController, "_streamController");
-      _this.set$__GuaranteeChannel__streamController(t1);
+      _this.__GuaranteeChannel__streamController_F !== $ && A.throwLateFieldAI("_streamController");
+      _this.set$__GuaranteeChannel__streamController_F(t1);
     },
     _onSinkDisconnected$0() {
+      var subscription, t1;
       this._disconnected = true;
-      var subscription = this._subscription;
+      subscription = this._subscription;
       if (subscription != null)
-        subscription.cancel$0();
-      A._lateReadCheck(this.__GuaranteeChannel__streamController, "_streamController").close$0(0);
+        subscription.cancel$0(0);
+      t1 = this.__GuaranteeChannel__streamController_F;
+      t1 === $ && A.throwLateFieldNI("_streamController");
+      t1.close$0(0);
     },
-    set$__GuaranteeChannel__sink(__GuaranteeChannel__sink) {
-      this.__GuaranteeChannel__sink = this.$ti._eval$1("_GuaranteeSink<1>")._as(__GuaranteeChannel__sink);
+    set$__GuaranteeChannel__sink_F(__GuaranteeChannel__sink_F) {
+      this.__GuaranteeChannel__sink_F = this.$ti._eval$1("_GuaranteeSink<1>")._as(__GuaranteeChannel__sink_F);
     },
-    set$__GuaranteeChannel__streamController(__GuaranteeChannel__streamController) {
-      this.__GuaranteeChannel__streamController = this.$ti._eval$1("StreamController<1>")._as(__GuaranteeChannel__streamController);
+    set$__GuaranteeChannel__streamController_F(__GuaranteeChannel__streamController_F) {
+      this.__GuaranteeChannel__streamController_F = this.$ti._eval$1("StreamController<1>")._as(__GuaranteeChannel__streamController_F);
     },
     set$_subscription(_subscription) {
       this._subscription = this.$ti._eval$1("StreamSubscription<1>?")._as(_subscription);
@@ -14858,21 +15740,25 @@
   A.GuaranteeChannel_closure.prototype = {
     call$0() {
       var t2, t3,
-        _s17_ = "_streamController",
         t1 = this.$this;
       if (t1._disconnected)
         return;
       t2 = this._box_0.innerStream;
-      t3 = A._lateReadCheck(t1.__GuaranteeChannel__streamController, _s17_);
-      t1.set$_subscription(t2.listen$3$onDone$onError(this.T._eval$1("~(0)")._as(t3.get$add(t3)), new A.GuaranteeChannel__closure(t1), A._lateReadCheck(t1.__GuaranteeChannel__streamController, _s17_).get$addError()));
+      t3 = t1.__GuaranteeChannel__streamController_F;
+      t3 === $ && A.throwLateFieldNI("_streamController");
+      t1.set$_subscription(t2.listen$3$onDone$onError(this.T._eval$1("~(0)")._as(t3.get$add(t3)), new A.GuaranteeChannel__closure(t1), t3.get$addError()));
     },
     $signature: 0
   };
   A.GuaranteeChannel__closure.prototype = {
     call$0() {
-      var t1 = this.$this;
-      A._lateReadCheck(t1.__GuaranteeChannel__sink, "_sink")._onStreamDisconnected$0();
-      A._lateReadCheck(t1.__GuaranteeChannel__streamController, "_streamController").close$0(0);
+      var t1 = this.$this,
+        t2 = t1.__GuaranteeChannel__sink_F;
+      t2 === $ && A.throwLateFieldNI("_sink");
+      t2._onStreamDisconnected$0();
+      t1 = t1.__GuaranteeChannel__streamController_F;
+      t1 === $ && A.throwLateFieldNI("_streamController");
+      t1.close$0(0);
     },
     $signature: 0
   };
@@ -14887,7 +15773,7 @@
       if (_this._disconnected)
         return;
       t1 = _this._inner;
-      t1._async$_target.add$1(0, t1.$ti._precomputed1._as(data));
+      t1._target.add$1(0, t1.$ti._precomputed1._as(data));
     },
     addError$2(error, stackTrace) {
       var _this = this;
@@ -14905,13 +15791,13 @@
       return this.addError$2(error, null);
     },
     _addError$2(error, stackTrace) {
-      this._inner._async$_target.addError$2(type$.Object._as(error), type$.nullable_StackTrace._as(stackTrace));
+      this._inner._target.addError$2(type$.Object._as(error), type$.nullable_StackTrace._as(stackTrace));
       return;
     },
     _addError$1(error) {
       return this._addError$2(error, null);
     },
-    addStream$1(stream) {
+    addStream$1(_, stream) {
       var t2, t3, _this = this,
         t1 = _this.$ti;
       t1._eval$1("Stream<1>")._as(stream);
@@ -14935,7 +15821,7 @@
       _this._closed = true;
       if (!_this._disconnected) {
         _this._channel._onSinkDisconnected$0();
-        _this._doneCompleter.complete$1(0, _this._inner._async$_target.close$0(0));
+        _this._doneCompleter.complete$1(0, _this._inner._target.close$0(0));
       }
       return _this._doneCompleter.future;
     },
@@ -14950,7 +15836,7 @@
         return;
       t2 = _this._addStreamCompleter;
       t2.toString;
-      t2.complete$1(0, t1.cancel$0());
+      t2.complete$1(0, t1.cancel$0(0));
       _this._addStreamCompleter = null;
       _this.set$_addStreamSubscription(null);
     },
@@ -14966,7 +15852,7 @@
       t1._addStreamCompleter = null;
       t1.set$_addStreamSubscription(null);
     },
-    $signature: 7
+    $signature: 8
   };
   A._MultiChannel.prototype = {
     _MultiChannel$1(inner, $T) {
@@ -14974,11 +15860,17 @@
         _s17_ = "_streamController",
         t1 = _this._mainController;
       _this._controllers.$indexSet(0, 0, t1);
-      t2 = A._lateReadCheck(A._lateReadCheck(t1.__StreamChannelController__local, "_local").__GuaranteeChannel__streamController, _s17_);
+      t1 = t1.__StreamChannelController__local_F;
+      t1 === $ && A.throwLateFieldNI("_local");
+      t2 = t1.__GuaranteeChannel__streamController_F;
+      t2 === $ && A.throwLateFieldNI(_s17_);
       new A._ControllerStream(t2, A._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$2$onDone(new A._MultiChannel_closure(_this, $T), new A._MultiChannel_closure0(_this));
-      t2 = A._lateReadCheck(_this._multi_channel$_inner.__GuaranteeChannel__streamController, _s17_);
+      t2 = _this._multi_channel$_inner.__GuaranteeChannel__streamController_F;
+      t2 === $ && A.throwLateFieldNI(_s17_);
       t3 = A._instanceType(t2)._eval$1("_ControllerStream<1>");
-      _this._innerStreamSubscription = new A.CastStream(new A._ControllerStream(t2, t3), t3._eval$1("CastStream<Stream.T,List<@>>")).listen$3$onDone$onError(new A._MultiChannel_closure1(_this, $T), _this.get$_closeInnerChannel(), A._lateReadCheck(A._lateReadCheck(t1.__StreamChannelController__local, "_local").__GuaranteeChannel__sink, "_sink").get$addError());
+      t1 = t1.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      _this._innerStreamSubscription = new A.CastStream(new A._ControllerStream(t2, t3), t3._eval$1("CastStream<Stream.T,List<@>>")).listen$3$onDone$onError(new A._MultiChannel_closure1(_this, $T), _this.get$_closeInnerChannel(), t1.get$addError());
     },
     virtualChannel$1(id) {
       var t2, controller, _this = this,
@@ -14997,20 +15889,30 @@
       if (_this._pendingIds.remove$1(0, id)) {
         t2 = _this._controllers.$index(0, id);
         t2.toString;
-        controller.__late_helper$_value = t2;
+        controller._value = t2;
       } else {
         t2 = _this._controllers;
-        if (t2.containsKey$1(id) || _this._closedIds.contains$1(0, id))
+        if (t2.containsKey$1(0, id) || _this._closedIds.contains$1(0, id))
           throw A.wrapException(A.ArgumentError$("A virtual channel with id " + id + " already exists.", null));
         else {
-          controller.__late_helper$_value = A.StreamChannelController$(true, _this.$ti._precomputed1);
+          controller._value = A.StreamChannelController$(true, _this.$ti._precomputed1);
           t2.$indexSet(0, id, controller._readLocal$0());
         }
       }
-      t2 = A._lateReadCheck(A._lateReadCheck(controller._readLocal$0().__StreamChannelController__local, "_local").__GuaranteeChannel__streamController, _s17_);
+      t2 = controller._readLocal$0().__StreamChannelController__local_F;
+      t2 === $ && A.throwLateFieldNI("_local");
+      t2 = t2.__GuaranteeChannel__streamController_F;
+      t2 === $ && A.throwLateFieldNI(_s17_);
       new A._ControllerStream(t2, A._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$2$onDone(new A._MultiChannel_virtualChannel_closure(t1, _this), new A._MultiChannel_virtualChannel_closure0(t1, _this));
-      t1 = A._lateReadCheck(A._lateReadCheck(controller._readLocal$0().__StreamChannelController__foreign, _s8_).__GuaranteeChannel__streamController, _s17_);
-      return new A.VirtualChannel(_this, new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")), A._lateReadCheck(A._lateReadCheck(controller._readLocal$0().__StreamChannelController__foreign, _s8_).__GuaranteeChannel__sink, "_sink"), _this.$ti._eval$1("VirtualChannel<1>"));
+      t1 = controller._readLocal$0().__StreamChannelController__foreign_F;
+      t1 === $ && A.throwLateFieldNI(_s8_);
+      t1 = t1.__GuaranteeChannel__streamController_F;
+      t1 === $ && A.throwLateFieldNI(_s17_);
+      t2 = controller._readLocal$0().__StreamChannelController__foreign_F;
+      t2 === $ && A.throwLateFieldNI(_s8_);
+      t2 = t2.__GuaranteeChannel__sink_F;
+      t2 === $ && A.throwLateFieldNI("_sink");
+      return new A.VirtualChannel(_this, new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")), t2, _this.$ti._eval$1("VirtualChannel<1>"));
     },
     _closeChannel$2(inputId, outputId) {
       var t1, t2, _this = this;
@@ -15018,29 +15920,43 @@
       t1 = _this._controllers;
       t2 = t1.remove$1(0, inputId);
       t2.toString;
-      A._lateReadCheck(A._lateReadCheck(t2.__StreamChannelController__local, "_local").__GuaranteeChannel__sink, "_sink").close$0(0);
+      t2 = t2.__StreamChannelController__local_F;
+      t2 === $ && A.throwLateFieldNI("_local");
+      t2 = t2.__GuaranteeChannel__sink_F;
+      t2 === $ && A.throwLateFieldNI("_sink");
+      t2.close$0(0);
       t2 = _this._multi_channel$_inner;
       if (t2 == null)
         return;
-      A._lateReadCheck(t2.__GuaranteeChannel__sink, "_sink").add$1(0, A._setArrayType([outputId], type$.JSArray_int));
-      if (t1.__js_helper$_length === 0)
+      t2 = t2.__GuaranteeChannel__sink_F;
+      t2 === $ && A.throwLateFieldNI("_sink");
+      t2.add$1(0, A._setArrayType([outputId], type$.JSArray_int));
+      if (t1._length === 0)
         _this._closeInnerChannel$0();
     },
     _closeInnerChannel$0() {
-      var t1, t2, t3, _i, _this = this;
-      A._lateReadCheck(_this._multi_channel$_inner.__GuaranteeChannel__sink, "_sink").close$0(0);
-      _this._innerStreamSubscription._source.cancel$0();
+      var t2, t3, _i, t4, _this = this,
+        t1 = _this._multi_channel$_inner.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      t1.close$0(0);
+      _this._innerStreamSubscription._source.cancel$0(0);
       _this._multi_channel$_inner = null;
-      for (t1 = _this._controllers, t2 = A.List_List$from(t1.get$values(t1), true, type$.dynamic), t3 = t2.length, _i = 0; _i < t3; ++_i)
-        A._lateReadCheck(t2[_i].get$local().__GuaranteeChannel__sink, "_sink").close$0(0);
+      for (t1 = _this._controllers, t2 = A.List_List$from(t1.get$values(t1), true, type$.dynamic), t3 = t2.length, _i = 0; _i < t3; ++_i) {
+        t4 = t2[_i].get$local().__GuaranteeChannel__sink_F;
+        t4 === $ && A.throwLateFieldNI("_sink");
+        t4.close$0(0);
+      }
       t1.clear$0(0);
     },
     $isMultiChannel: 1
   };
   A._MultiChannel_closure.prototype = {
     call$1(message) {
+      var t1;
       this.T._as(message);
-      return A._lateReadCheck(this.$this._multi_channel$_inner.__GuaranteeChannel__sink, "_sink").add$1(0, [0, message]);
+      t1 = this.$this._multi_channel$_inner.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      return t1.add$1(0, [0, message]);
     },
     $signature() {
       return this.T._eval$1("~(0)");
@@ -15062,15 +15978,22 @@
       if (t2._closedIds.contains$1(0, id))
         return;
       t3 = this.T;
-      controller = t2._controllers.putIfAbsent$2(id, new A._MultiChannel__closure(t2, id, t3));
+      controller = t2._controllers.putIfAbsent$2(0, id, new A._MultiChannel__closure(t2, id, t3));
       t2 = t1.get$length(message);
-      t4 = controller.__StreamChannelController__local;
-      if (t2 > 1)
-        A._lateReadCheck(A._lateReadCheck(t4, "_local").__GuaranteeChannel__sink, "_sink").add$1(0, t3._as(t1.$index(message, 1)));
-      else
-        A._lateReadCheck(A._lateReadCheck(t4, "_local").__GuaranteeChannel__sink, "_sink").close$0(0);
+      t4 = controller.__StreamChannelController__local_F;
+      if (t2 > 1) {
+        t4 === $ && A.throwLateFieldNI("_local");
+        t2 = t4.__GuaranteeChannel__sink_F;
+        t2 === $ && A.throwLateFieldNI("_sink");
+        t2.add$1(0, t3._as(t1.$index(message, 1)));
+      } else {
+        t4 === $ && A.throwLateFieldNI("_local");
+        t1 = t4.__GuaranteeChannel__sink_F;
+        t1 === $ && A.throwLateFieldNI("_sink");
+        t1.close$0(0);
+      }
     },
-    $signature: 48
+    $signature: 47
   };
   A._MultiChannel__closure.prototype = {
     call$0() {
@@ -15085,7 +16008,9 @@
     call$1(message) {
       var t1 = this.$this;
       t1.$ti._precomputed1._as(message);
-      return A._lateReadCheck(t1._multi_channel$_inner.__GuaranteeChannel__sink, "_sink").add$1(0, [this._box_0.outputId, message]);
+      t1 = t1._multi_channel$_inner.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      return t1.add$1(0, [this._box_0.outputId, message]);
     },
     $signature() {
       return this.$this.$ti._eval$1("~(1)");
@@ -15101,106 +16026,156 @@
   A.VirtualChannel.prototype = {$isMultiChannel: 1};
   A.StreamChannelController.prototype = {
     get$local() {
-      return A._lateReadCheck(this.__StreamChannelController__local, "_local");
+      var t1 = this.__StreamChannelController__local_F;
+      t1 === $ && A.throwLateFieldNI("_local");
+      return t1;
     },
-    set$__StreamChannelController__local(__StreamChannelController__local) {
-      this.__StreamChannelController__local = this.$ti._eval$1("StreamChannel<1>")._as(__StreamChannelController__local);
+    set$__StreamChannelController__local_F(__StreamChannelController__local_F) {
+      this.__StreamChannelController__local_F = this.$ti._eval$1("StreamChannel<1>")._as(__StreamChannelController__local_F);
     },
-    set$__StreamChannelController__foreign(__StreamChannelController__foreign) {
-      this.__StreamChannelController__foreign = this.$ti._eval$1("StreamChannel<1>")._as(__StreamChannelController__foreign);
+    set$__StreamChannelController__foreign_F(__StreamChannelController__foreign_F) {
+      this.__StreamChannelController__foreign_F = this.$ti._eval$1("StreamChannel<1>")._as(__StreamChannelController__foreign_F);
     }
   };
   A.StreamChannelMixin.prototype = {$isStreamChannel: 1};
+  A.Window0.prototype = {};
+  A.Document0.prototype = {};
+  A.HTMLDocument.prototype = {};
+  A.Navigator0.prototype = {};
+  A.Element0.prototype = {};
+  A.HTMLElement.prototype = {};
+  A.HTMLBodyElement.prototype = {};
+  A.Node0.prototype = {};
+  A.EventTarget0.prototype = {};
+  A.Event0.prototype = {};
+  A.MessageEvent0.prototype = {};
+  A.Location0.prototype = {};
+  A.MessagePort0.prototype = {};
+  A.CSSStyleDeclaration.prototype = {};
+  A.HTMLScriptElement.prototype = {};
+  A.DomTokenList0.prototype = {};
+  A.HTMLIFrameElement.prototype = {};
+  A.WebSocket0.prototype = {};
+  A.MessageChannel0.prototype = {};
+  A.Subscription.prototype = {};
   A.TestRunner.prototype = {};
   A._JSApi.prototype = {};
   A.main_closure.prototype = {
     call$0() {
-      var play, t2, t3,
-        serverChannel = A._connectToServer(),
-        t1 = A._lateReadCheck(A._lateReadCheck(serverChannel._mainController.__StreamChannelController__foreign, "_foreign").__GuaranteeChannel__streamController, "_streamController");
+      var serverChannel = A._connectToServer(),
+        t1 = serverChannel._mainController.__StreamChannelController__foreign_F;
+      t1 === $ && A.throwLateFieldNI("_foreign");
+      t1 = t1.__GuaranteeChannel__streamController_F;
+      t1 === $ && A.throwLateFieldNI("_streamController");
       new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$1(new A.main__closure(serverChannel));
       A.Timer_Timer$periodic(new A.Duration(1000000), new A.main__closure0(serverChannel));
-      play = document.querySelector("#play");
-      play.toString;
-      t1 = J.get$onClick$x(play);
-      t2 = t1.$ti;
-      t3 = t2._eval$1("~(1)?")._as(new A.main__closure1(serverChannel));
-      type$.nullable_void_Function._as(null);
-      A._EventStreamSubscription$(t1._target, t1._eventType, t3, false, t2._precomputed1);
-      t2 = type$.void_Function;
-      self.dartTest = {resume: A.allowInterop(new A.main__closure2(serverChannel), t2), restartCurrent: A.allowInterop(new A.main__closure3(serverChannel), t2)};
+      t1 = type$.nullable_JavaScriptObject._as(self.document.querySelector("#play"));
+      t1.toString;
+      A.EventTargetExtension_addEventListener(t1, "click", A.allowInterop(new A.main__closure1(serverChannel), type$.void_Function_JavaScriptObject));
+      t1 = type$.void_Function;
+      self.dartTest = type$.JavaScriptObject._as({resume: A.allowInterop(new A.main__closure2(serverChannel), t1), restartCurrent: A.allowInterop(new A.main__closure3(serverChannel), t1)});
     },
     $signature: 2
   };
   A.main__closure.prototype = {
     call$1(message) {
-      var suiteChannel, t2, t3,
+      var suiteChannel, t2, t3, t4,
         _s7_ = "command",
+        _s2_ = "id",
         t1 = J.getInterceptor$asx(message);
       if (J.$eq$(t1.$index(message, _s7_), "loadSuite")) {
         suiteChannel = this.serverChannel.virtualChannel$1(A._asInt(t1.$index(message, "channel")));
-        t1 = suiteChannel.$ti._eval$1("StreamChannel<1>")._as(A._connectToIframe(A._asString(t1.$index(message, "url")), A._asInt(t1.$index(message, "id"))));
-        suiteChannel.stream.pipe$1(A._lateReadCheck(t1.__GuaranteeChannel__sink, "_sink"));
-        t1 = A._lateReadCheck(t1.__GuaranteeChannel__streamController, "_streamController");
+        t1 = suiteChannel.$ti._eval$1("StreamChannel<1>")._as(A._connectToIframe(A._asString(t1.$index(message, "url")), A._asInt(t1.$index(message, _s2_))));
+        t2 = t1.__GuaranteeChannel__sink_F;
+        t2 === $ && A.throwLateFieldNI("_sink");
+        suiteChannel.stream.pipe$1(t2);
+        t1 = t1.__GuaranteeChannel__streamController_F;
+        t1 === $ && A.throwLateFieldNI("_streamController");
         new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).pipe$1(suiteChannel.sink);
       } else if (J.$eq$(t1.$index(message, _s7_), "displayPause"))
-        document.body.classList.add("paused");
+        type$.JavaScriptObject._as(type$.nullable_JavaScriptObject._as(self.document.body).classList).add("paused");
       else if (J.$eq$(t1.$index(message, _s7_), "resume"))
-        document.body.classList.remove("paused");
+        type$.JavaScriptObject._as(type$.nullable_JavaScriptObject._as(self.document.body).classList).remove("paused");
       else {
-        t2 = $._iframes.remove$1(0, t1.$index(message, "id"));
-        t3 = t2.parentNode;
-        if (t3 != null)
-          J._removeChild$1$x(t3, t2);
-        t1 = $._subscriptions.remove$1(0, t1.$index(message, "id"));
+        t2 = $._iframes.remove$1(0, t1.$index(message, _s2_));
+        t3 = type$.nullable_JavaScriptObject;
+        if (t3._as(t2.parentNode) != null)
+          type$.JavaScriptObject._as(t3._as(t2.parentNode).removeChild(t2));
+        t2 = $._subscriptions.remove$1(0, t1.$index(message, _s2_));
+        t2.toString;
+        t2 = J.get$iterator$ax(t2);
+        for (; t2.moveNext$0();)
+          t2.get$current(t2).cancel$0(0);
+        t1 = $._domSubscriptions.remove$1(0, t1.$index(message, _s2_));
         t1.toString;
         t1 = J.get$iterator$ax(t1);
-        for (; t1.moveNext$0();)
-          t1.get$current().cancel$0();
+        t2 = type$.JSArray_Object;
+        for (; t1.moveNext$0();) {
+          t3 = t1.get$current(t1);
+          t4 = t3.target;
+          t3 = A._setArrayType([t3.type, t3.listener], t2);
+          t4.removeEventListener.apply(t4, t3);
+        }
       }
     },
-    $signature: 3
+    $signature: 7
   };
   A.main__closure0.prototype = {
     call$1(_) {
-      var t1;
+      var t1, t2;
       type$.Timer._as(_);
-      t1 = type$.String;
-      return A._lateReadCheck(A._lateReadCheck(this.serverChannel._mainController.__StreamChannelController__foreign, "_foreign").__GuaranteeChannel__sink, "_sink").add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "ping"], t1, t1));
+      t1 = this.serverChannel._mainController.__StreamChannelController__foreign_F;
+      t1 === $ && A.throwLateFieldNI("_foreign");
+      t1 = t1.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      t2 = type$.String;
+      return t1.add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "ping"], t2, t2));
     },
-    $signature: 49
+    $signature: 48
   };
   A.main__closure1.prototype = {
     call$1(_) {
-      var list, removed, t1;
-      type$.MouseEvent._as(_);
-      list = document.body.classList;
-      removed = list.contains("paused");
-      list.remove("paused");
-      if (!removed)
+      var t2,
+        t1 = type$.JavaScriptObject;
+      t1._as(_);
+      t2 = type$.nullable_JavaScriptObject;
+      if (!A._asBool(t1._as(t2._as(self.document.body).classList).contains("paused")))
         return;
-      t1 = type$.String;
-      A._lateReadCheck(A._lateReadCheck(this.serverChannel._mainController.__StreamChannelController__foreign, "_foreign").__GuaranteeChannel__sink, "_sink").add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "resume"], t1, t1));
+      t1._as(t2._as(self.document.body).classList).remove("paused");
+      t1 = this.serverChannel._mainController.__StreamChannelController__foreign_F;
+      t1 === $ && A.throwLateFieldNI("_foreign");
+      t1 = t1.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      t2 = type$.String;
+      t1.add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "resume"], t2, t2));
     },
-    $signature: 50
+    $signature: 6
   };
   A.main__closure2.prototype = {
     call$0() {
-      var t1,
-        list = document.body.classList,
-        removed = list.contains("paused");
-      list.remove("paused");
-      if (!removed)
+      var t1 = type$.nullable_JavaScriptObject,
+        t2 = type$.JavaScriptObject;
+      if (!A._asBool(t2._as(t1._as(self.document.body).classList).contains("paused")))
         return;
-      t1 = type$.String;
-      A._lateReadCheck(A._lateReadCheck(this.serverChannel._mainController.__StreamChannelController__foreign, "_foreign").__GuaranteeChannel__sink, "_sink").add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "resume"], t1, t1));
+      t2._as(t1._as(self.document.body).classList).remove("paused");
+      t1 = this.serverChannel._mainController.__StreamChannelController__foreign_F;
+      t1 === $ && A.throwLateFieldNI("_foreign");
+      t1 = t1.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      t2 = type$.String;
+      t1.add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "resume"], t2, t2));
     },
     $signature: 0
   };
   A.main__closure3.prototype = {
     call$0() {
-      var t1 = type$.String;
-      A._lateReadCheck(A._lateReadCheck(this.serverChannel._mainController.__StreamChannelController__foreign, "_foreign").__GuaranteeChannel__sink, "_sink").add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "restart"], t1, t1));
+      var t2,
+        t1 = this.serverChannel._mainController.__StreamChannelController__foreign_F;
+      t1 === $ && A.throwLateFieldNI("_foreign");
+      t1 = t1.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      t2 = type$.String;
+      t1.add$1(0, A.LinkedHashMap_LinkedHashMap$_literal(["command", "restart"], t2, t2));
     },
     $signature: 0
   };
@@ -15216,54 +16191,72 @@
       else
         toZone.call$1(line);
     },
-    $signature: 9
+    $signature: 10
   };
   A._connectToServer_closure.prototype = {
     call$1(message) {
-      type$.MessageEvent._as(message);
-      A._lateReadCheck(A._lateReadCheck(this.controller.__StreamChannelController__local, "_local").__GuaranteeChannel__sink, "_sink").add$1(0, B.C_JsonCodec.decode$2$reviver(0, A._asString(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(message.data, true)), null));
+      var t1;
+      type$.JavaScriptObject._as(message);
+      t1 = this.controller.__StreamChannelController__local_F;
+      t1 === $ && A.throwLateFieldNI("_local");
+      t1 = t1.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      t1.add$1(0, B.C_JsonCodec.decode$2$reviver(0, A._asString(A.dartify(message.data)), null));
     },
-    $signature: 8
+    $signature: 6
   };
   A._connectToServer_closure0.prototype = {
     call$1(message) {
-      return this.webSocket.send(B.C_JsonCodec.encode$2$toEncodable(message, null));
+      return A.callMethod(this.webSocket, "send", [B.C_JsonCodec.encode$2$toEncodable(message, null)], type$.void);
     },
-    $signature: 3
+    $signature: 7
   };
   A._connectToIframe_closure.prototype = {
-    call$1(message) {
-      var t1, t2, _this = this;
-      type$.MessageEvent._as(message);
-      t1 = type$.Location;
-      if (message.origin !== B.Location_methods.get$origin(t1._as(window.location)))
+    call$1($event) {
+      var t2, t3, t4, _this = this,
+        t1 = type$.JavaScriptObject;
+      t1._as($event);
+      if (A._asString($event.origin) !== A._asString(t1._as(self.window.location).origin))
         return;
       t2 = _this.iframe;
-      if (!J.$eq$(J.$index$asx(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(message.data, true), "href"), t2.src))
+      if (!J.$eq$(J.$index$asx(A.dartify($event.data), "href"), A._asStringQ(t2.src)))
         return;
-      message.stopPropagation();
-      if (J.$eq$(J.$index$asx(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(message.data, true), "ready"), true)) {
-        t2 = A._convertNativeToDart_Window(t2.contentWindow);
-        t2.toString;
-        J.postMessage$3$x(t2, "port", B.Location_methods.get$origin(t1._as(window.location)), A._setArrayType([_this.channel.port2], type$.JSArray_MessagePort));
+      $event.stopPropagation();
+      if (J.$eq$(J.$index$asx(A.dartify($event.data), "ready"), true)) {
+        t3 = _this.channel;
+        t1._as(t3.port2).start();
+        t2 = t1._as(t2.contentWindow);
+        t4 = ["port", A._asString(t1._as(self.window.location).origin)];
+        t4.push(A.jsify(A._setArrayType([t1._as(t3.port2)], type$.JSArray_JavaScriptObject)));
+        A.callMethod(t2, "postMessage", t4, type$.void);
         _this.readyCompleter.complete$0(0);
-      } else if (J.$eq$(J.$index$asx(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(message.data, true), "exception"), true))
-        A._lateReadCheck(A._lateReadCheck(_this.controller.__StreamChannelController__local, "_local").__GuaranteeChannel__sink, "_sink").add$1(0, J.$index$asx(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(message.data, true), "data"));
+      } else if (J.$eq$(J.$index$asx(A.dartify($event.data), "exception"), true)) {
+        t1 = _this.controller.__StreamChannelController__local_F;
+        t1 === $ && A.throwLateFieldNI("_local");
+        t1 = t1.__GuaranteeChannel__sink_F;
+        t1 === $ && A.throwLateFieldNI("_sink");
+        t1.add$1(0, J.$index$asx(A.dartify($event.data), "data"));
+      }
     },
-    $signature: 8
+    $signature: 6
   };
   A._connectToIframe_closure0.prototype = {
-    call$1(message) {
-      type$.MessageEvent._as(message);
-      A._lateReadCheck(A._lateReadCheck(this.controller.__StreamChannelController__local, "_local").__GuaranteeChannel__sink, "_sink").add$1(0, J.$index$asx(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(message.data, true), "data"));
+    call$1($event) {
+      var t1;
+      type$.JavaScriptObject._as($event);
+      t1 = this.controller.__StreamChannelController__local_F;
+      t1 === $ && A.throwLateFieldNI("_local");
+      t1 = t1.__GuaranteeChannel__sink_F;
+      t1 === $ && A.throwLateFieldNI("_sink");
+      t1.add$1(0, J.$index$asx(A.dartify($event.data), "data"));
     },
-    $signature: 8
+    $signature: 6
   };
   A._connectToIframe_closure1.prototype = {
     call$1(message) {
       var $async$goto = 0,
         $async$completer = A._makeAsyncAwaitCompleter(type$.void),
-        $async$self = this;
+        $async$self = this, t1, t2, t3;
       var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
         if ($async$errorCode === 1)
           return A._asyncRethrow($async$result, $async$completer);
@@ -15275,14 +16268,20 @@
               return A._asyncAwait($async$self.readyCompleter.future, $async$call$1);
             case 2:
               // returning from await.
-              B.MessagePort_methods.postMessage$1($async$self.channel.port1, message);
+              t1 = type$.JavaScriptObject._as($async$self.channel.port1);
+              t2 = A._setArrayType([], type$.JSArray_Object);
+              if (message != null) {
+                t3 = A.jsify(message);
+                t2.push(t3);
+              }
+              A.callMethod(t1, "postMessage", t2, type$.void);
               // implicit return
               return A._asyncReturn(null, $async$completer);
           }
       });
       return A._asyncStartSync($async$call$1, $async$completer);
     },
-    $signature: 52
+    $signature: 50
   };
   (function aliases() {
     var _ = J.Interceptor.prototype;
@@ -15291,8 +16290,6 @@
     _.super$LegacyJavaScriptObject$toString = _.toString$0;
     _ = A.Iterable.prototype;
     _.super$Iterable$skipWhile = _.skipWhile$1;
-    _ = A.EventTarget.prototype;
-    _.super$EventTarget$addEventListener = _.addEventListener$3;
   })();
   (function installTearOffs() {
     var _instance_1_u = hunkHelpers._instance_1u,
@@ -15304,83 +16301,83 @@
       _instance_2_u = hunkHelpers._instance_2u,
       _instance_1_i = hunkHelpers._instance_1i,
       _instance_0_u = hunkHelpers._instance_0u;
-    _instance_1_u(A.CastStreamSubscription.prototype, "get$__internal$_onData", "__internal$_onData$1", 11);
-    _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 6);
-    _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 6);
-    _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 6);
+    _instance_1_u(A.CastStreamSubscription.prototype, "get$__internal$_onData", "__internal$_onData$1", 12);
+    _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 9);
+    _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 9);
+    _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 9);
     _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
-    _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 3);
-    _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 9);
+    _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 7);
+    _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 10);
     _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
-    _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 54, 0);
+    _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 52, 0);
     _static(A, "async___rootRun$closure", 4, null, ["call$1$4", "call$4"], ["_rootRun", function($self, $parent, zone, f) {
       return A._rootRun($self, $parent, zone, f, type$.dynamic);
-    }], 55, 1);
+    }], 53, 1);
     _static(A, "async___rootRunUnary$closure", 5, null, ["call$2$5", "call$5"], ["_rootRunUnary", function($self, $parent, zone, f, arg) {
       return A._rootRunUnary($self, $parent, zone, f, arg, type$.dynamic, type$.dynamic);
-    }], 56, 1);
+    }], 54, 1);
     _static(A, "async___rootRunBinary$closure", 6, null, ["call$3$6", "call$6"], ["_rootRunBinary", function($self, $parent, zone, f, arg1, arg2) {
       return A._rootRunBinary($self, $parent, zone, f, arg1, arg2, type$.dynamic, type$.dynamic, type$.dynamic);
-    }], 57, 1);
+    }], 55, 1);
     _static(A, "async___rootRegisterCallback$closure", 4, null, ["call$1$4", "call$4"], ["_rootRegisterCallback", function($self, $parent, zone, f) {
       return A._rootRegisterCallback($self, $parent, zone, f, type$.dynamic);
-    }], 58, 0);
+    }], 56, 0);
     _static(A, "async___rootRegisterUnaryCallback$closure", 4, null, ["call$2$4", "call$4"], ["_rootRegisterUnaryCallback", function($self, $parent, zone, f) {
       return A._rootRegisterUnaryCallback($self, $parent, zone, f, type$.dynamic, type$.dynamic);
-    }], 59, 0);
+    }], 57, 0);
     _static(A, "async___rootRegisterBinaryCallback$closure", 4, null, ["call$3$4", "call$4"], ["_rootRegisterBinaryCallback", function($self, $parent, zone, f) {
       return A._rootRegisterBinaryCallback($self, $parent, zone, f, type$.dynamic, type$.dynamic, type$.dynamic);
-    }], 60, 0);
-    _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 61, 0);
-    _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 62, 0);
-    _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 63, 0);
-    _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 64, 0);
-    _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 65, 0);
-    _static_1(A, "async___printToZone$closure", "_printToZone", 66);
-    _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 67, 0);
+    }], 58, 0);
+    _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 59, 0);
+    _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 60, 0);
+    _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 61, 0);
+    _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 62, 0);
+    _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 63, 0);
+    _static_1(A, "async___printToZone$closure", "_printToZone", 64);
+    _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 65, 0);
     _instance(A._SyncCompleter.prototype, "get$complete", 1, 0, function() {
       return [null];
-    }, ["call$1", "call$0"], ["complete$1", "complete$0"], 39, 0, 0);
-    _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 9);
+    }, ["call$1", "call$0"], ["complete$1", "complete$0"], 40, 0, 0);
+    _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 10);
     var _;
-    _instance_1_i(_ = A._StreamController.prototype, "get$add", "add$1", 11);
+    _instance_1_i(_ = A._StreamController.prototype, "get$add", "add$1", 12);
     _instance(_, "get$addError", 0, 1, function() {
       return [null];
-    }, ["call$2", "call$1"], ["addError$2", "addError$1"], 10, 0, 0);
-    _instance_1_i(A._StreamSinkWrapper.prototype, "get$add", "add$1", 11);
+    }, ["call$2", "call$1"], ["addError$2", "addError$1"], 11, 0, 0);
+    _instance_1_i(A._StreamSinkWrapper.prototype, "get$add", "add$1", 12);
     _instance_0_u(A._DoneStreamSubscription.prototype, "get$_sendDone", "_sendDone$0", 0);
-    _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 14);
+    _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 15);
     _static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 20);
     _instance(_ = A._GuaranteeSink.prototype, "get$addError", 0, 1, function() {
       return [null];
-    }, ["call$2", "call$1"], ["addError$2", "addError$1"], 10, 0, 0);
+    }, ["call$2", "call$1"], ["addError$2", "addError$1"], 11, 0, 0);
     _instance(_, "get$_addError", 0, 1, function() {
       return [null];
-    }, ["call$2", "call$1"], ["_addError$2", "_addError$1"], 10, 0, 0);
+    }, ["call$2", "call$1"], ["_addError$2", "_addError$1"], 11, 0, 0);
     _instance_0_u(A._MultiChannel.prototype, "get$_closeInnerChannel", "_closeInnerChannel$0", 0);
     _static(A, "math__max$closure", 2, null, ["call$1$2", "call$2"], ["max", function(a, b) {
       return A.max(a, b, type$.num);
-    }], 45, 0);
+    }], 44, 0);
   })();
   (function inheritance() {
     var _mixin = hunkHelpers.mixin,
       _inherit = hunkHelpers.inherit,
       _inheritMany = hunkHelpers.inheritMany;
     _inherit(A.Object, null);
-    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A.Stream, A.CastStreamSubscription, A.Error, A._ListBase_Object_ListMixin, A.Closure, A.SentinelValue, A.Iterable, A.ListIterator, A.Iterator, A.ExpandIterator, A.EmptyIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A.Symbol, A.MapView, A.ConstantMap, A.JSInvocationMirror, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A._Required, A.MapMixin, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.StreamSubscription, A.StreamTransformerBase, A._StreamController, A._SyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._ZoneFunction, A._RunNullaryZoneFunction, A._RunUnaryZoneFunction, A._RunBinaryZoneFunction, A._RegisterNullaryZoneFunction, A._RegisterUnaryZoneFunction, A._RegisterBinaryZoneFunction, A._ZoneSpecification, A._ZoneDelegate, A._Zone, A._HashMapKeyIterator, A.__SetBase_Object_SetMixin, A._LinkedHashSetCell, A._LinkedHashSetIterator, A.ListMixin, A._UnmodifiableMapMixin, A.SetMixin, A.Codec, A._JsonStringifier, A._Utf8Encoder, A._Utf8Decoder, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.EventStreamProvider, A.ImmutableListMixin, A.FixedSizeListIterator, A._DOMWindowCrossFrame, A._StructuredClone, A._AcceptStructuredClone, A.NullRejectionException, A.NullStreamSink, A.Context, A.Style, A.ParsedPath, A.PathException, A.Chain, A.Frame, A.LazyTrace, A.Trace, A.UnparsedFrame, A.StreamChannelMixin, A._GuaranteeSink, A.StreamChannelController]);
-    _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSArray, J.JSNumber, J.JSString, A.NativeByteBuffer, A.NativeTypedData]);
-    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, A.EventTarget, A.Blob, A.DomException, A.DomTokenList, A.Event, A._HtmlCollection_JavaScriptObject_ListMixin, A.Location]);
-    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, A.TestRunner, A._JSApi]);
+    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A.Stream, A.CastStreamSubscription, A.Error, A._ListBase_Object_ListMixin, A.Closure, A.SentinelValue, A.Iterable, A.ListIterator, A.Iterator, A.ExpandIterator, A.EmptyIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A.Symbol, A.MapView, A.ConstantMap, A.JSInvocationMirror, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A._Required, A.MapMixin, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.StreamTransformerBase, A._StreamController, A._SyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._ZoneFunction, A._ZoneSpecification, A._ZoneDelegate, A._Zone, A._HashMapKeyIterator, A.__SetBase_Object_SetMixin, A._LinkedHashSetCell, A._LinkedHashSetIterator, A.ListMixin, A._UnmodifiableMapMixin, A.SetMixin, A.Codec, A._JsonStringifier, A._Utf8Encoder, A._Utf8Decoder, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.CssStyleDeclarationBase, A.ImmutableListMixin, A.FixedSizeListIterator, A.NullStreamSink, A.Context, A.Style, A.ParsedPath, A.PathException, A.Chain, A.Frame, A.LazyTrace, A.Trace, A.UnparsedFrame, A.StreamChannelMixin, A._GuaranteeSink, A.StreamChannelController, A.Subscription]);
+    _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSArray, J.JSNumber, J.JSString, A.NativeTypedData]);
+    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, A.EventTarget, A.AccessibleNodeList, A.Blob, A.CssTransformComponent, A.CssRule, A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase, A.CssStyleValue, A.DataTransferItemList, A.DomException, A._DomRectList_JavaScriptObject_ListMixin, A.DomRectReadOnly, A._DomStringList_JavaScriptObject_ListMixin, A.DomTokenList, A._FileList_JavaScriptObject_ListMixin, A.Gamepad, A.History, A._HtmlCollection_JavaScriptObject_ListMixin, A.Location, A.MediaList, A._MidiInputMap_JavaScriptObject_MapMixin, A._MidiOutputMap_JavaScriptObject_MapMixin, A.MimeType, A._MimeTypeArray_JavaScriptObject_ListMixin, A._NodeList_JavaScriptObject_ListMixin, A.Plugin, A._PluginArray_JavaScriptObject_ListMixin, A._RtcStatsReport_JavaScriptObject_MapMixin, A.SpeechGrammar, A._SpeechGrammarList_JavaScriptObject_ListMixin, A.SpeechRecognitionResult, A._Storage_JavaScriptObject_MapMixin, A.StyleSheet, A._TextTrackCueList_JavaScriptObject_ListMixin, A.TimeRanges, A.Touch, A._TouchList_JavaScriptObject_ListMixin, A.TrackDefaultList, A.Url, A.__CssRuleList_JavaScriptObject_ListMixin, A.__GamepadList_JavaScriptObject_ListMixin, A.__NamedNodeMap_JavaScriptObject_ListMixin, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin, A.__StyleSheetList_JavaScriptObject_ListMixin, A.Length, A._LengthList_JavaScriptObject_ListMixin, A.Number, A._NumberList_JavaScriptObject_ListMixin, A.PointList, A._StringList_JavaScriptObject_ListMixin, A.Transform, A._TransformList_JavaScriptObject_ListMixin, A.AudioBuffer, A._AudioParamMap_JavaScriptObject_MapMixin]);
+    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, A.EventTarget0, A.Navigator0, A.Event0, A.Location0, A.CSSStyleDeclaration, A.DomTokenList0, A.MessageChannel0, A.TestRunner, A._JSApi]);
     _inherit(J.JSUnmodifiableArray, J.JSArray);
     _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]);
-    _inheritMany(A.Stream, [A.CastStream, A._StreamImpl, A._EmptyStream, A._EventStream]);
+    _inheritMany(A.Stream, [A.CastStream, A._StreamImpl, A._EmptyStream]);
     _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A.RuntimeError, A.AssertionError, A._Error, A.JsonUnsupportedObjectError, A.NullThrownError, A.ArgumentError, A.NoSuchMethodError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError, A.CyclicInitializationError]);
     _inherit(A.ListBase, A._ListBase_Object_ListMixin);
     _inherit(A.UnmodifiableListBase, A.ListBase);
     _inherit(A.CodeUnits, A.UnmodifiableListBase);
-    _inheritMany(A.Closure, [A.Closure0Args, A.Instantiation, A.Closure2Args, A.TearOffClosure, A.JsLinkedHashMap_values_closure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_pipe_closure, A.Stream_length_closure, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_closure, A._Uri__makePath_closure, A._createTables_setChars, A._createTables_setRange, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.WindowsStyle_absolutePathToUri_closure, A.Chain_Chain$parse_closure, A.Chain_Chain$parse_closure0, A.Chain_Chain$parse_closure1, A.Chain_toTrace_closure, A.Chain_toString_closure0, A.Chain_toString__closure0, A.Chain_toString_closure, A.Chain_toString__closure, A.Trace__parseVM_closure, A.Trace__parseVM_closure0, A.Trace$parseV8_closure, A.Trace$parseV8_closure0, A.Trace$parseJSCore_closure, A.Trace$parseJSCore_closure0, A.Trace$parseFirefox_closure, A.Trace$parseFirefox_closure0, A.Trace$parseFriendly_closure, A.Trace$parseFriendly_closure0, A.Trace_terse_closure, A.Trace_foldFrames_closure, A.Trace_foldFrames_closure0, A.Trace_toString_closure0, A.Trace_toString_closure, A._GuaranteeSink_addStream_closure, A._MultiChannel_closure, A._MultiChannel_closure1, A._MultiChannel_virtualChannel_closure, A.main__closure, A.main__closure0, A.main__closure1, A._connectToServer_closure, A._connectToServer_closure0, A._connectToIframe_closure, A._connectToIframe_closure0, A._connectToIframe_closure1]);
-    _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._TimerImpl$periodic_closure, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__asyncCompleteWithValue_closure, A._Future__chainFuture_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A._StreamController__subscribe_closure, A._StreamController__recordCancel_complete, A._AddStreamState_cancel_closure, A._BufferingStreamSubscription__sendError_sendError, A._BufferingStreamSubscription__sendDone_sendDone, A._PendingEvents_schedule_closure, A._CustomZone_bindCallback_closure, A._CustomZone_bindCallbackGuarded_closure, A._rootHandleError_closure, A._RootZone_bindCallback_closure, A._RootZone_bindCallbackGuarded_closure, A.Utf8Decoder__decoder_closure, A.Utf8Decoder__decoderNonfatal_closure, A.NullStreamSink_addStream_closure, A.Frame_Frame$parseVM_closure, A.Frame_Frame$parseV8_closure, A.Frame_Frame$_parseFirefoxEval_closure, A.Frame_Frame$parseFirefox_closure, A.Frame_Frame$parseFriendly_closure, A.LazyTrace_terse_closure, A.Trace_Trace$from_closure, A.GuaranteeChannel_closure, A.GuaranteeChannel__closure, A._MultiChannel_closure0, A._MultiChannel__closure, A._MultiChannel_virtualChannel_closure0, A.main_closure, A.main__closure2, A.main__closure3]);
-    _inheritMany(A.Iterable, [A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A.ExpandIterable, A.TakeIterable, A.SkipWhileIterable, A.WhereTypeIterable, A.IterableBase, A._StringAllMatchesIterable]);
+    _inheritMany(A.Closure, [A.Closure0Args, A.Instantiation, A.Closure2Args, A.TearOffClosure, A.JsLinkedHashMap_values_closure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_pipe_closure, A.Stream_length_closure, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_closure, A._Uri__makePath_closure, A._createTables_setChars, A._createTables_setRange, A._convertDataTree__convert, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.WindowsStyle_absolutePathToUri_closure, A.Chain_Chain$parse_closure, A.Chain_Chain$parse_closure0, A.Chain_Chain$parse_closure1, A.Chain_toTrace_closure, A.Chain_toString_closure0, A.Chain_toString__closure0, A.Chain_toString_closure, A.Chain_toString__closure, A.Trace__parseVM_closure, A.Trace__parseVM_closure0, A.Trace$parseV8_closure, A.Trace$parseV8_closure0, A.Trace$parseJSCore_closure, A.Trace$parseJSCore_closure0, A.Trace$parseFirefox_closure, A.Trace$parseFirefox_closure0, A.Trace$parseFriendly_closure, A.Trace$parseFriendly_closure0, A.Trace_terse_closure, A.Trace_foldFrames_closure, A.Trace_foldFrames_closure0, A.Trace_toString_closure0, A.Trace_toString_closure, A._GuaranteeSink_addStream_closure, A._MultiChannel_closure, A._MultiChannel_closure1, A._MultiChannel_virtualChannel_closure, A.main__closure, A.main__closure0, A.main__closure1, A._connectToServer_closure, A._connectToServer_closure0, A._connectToIframe_closure, A._connectToIframe_closure0, A._connectToIframe_closure1]);
+    _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._TimerImpl$periodic_closure, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__asyncCompleteWithValue_closure, A._Future__chainFuture_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A._StreamController__subscribe_closure, A._StreamController__recordCancel_complete, A._AddStreamState_cancel_closure, A._BufferingStreamSubscription__sendError_sendError, A._BufferingStreamSubscription__sendDone_sendDone, A._PendingEvents_schedule_closure, A._CustomZone_bindCallback_closure, A._CustomZone_bindCallbackGuarded_closure, A._rootHandleError_closure, A._RootZone_bindCallback_closure, A._RootZone_bindCallbackGuarded_closure, A.Utf8Decoder__decoder_closure, A.Utf8Decoder__decoderNonfatal_closure, A.dartify_convert, A.NullStreamSink_addStream_closure, A.Frame_Frame$parseVM_closure, A.Frame_Frame$parseV8_closure, A.Frame_Frame$_parseFirefoxEval_closure, A.Frame_Frame$parseFirefox_closure, A.Frame_Frame$parseFriendly_closure, A.LazyTrace_terse_closure, A.Trace_Trace$from_closure, A.GuaranteeChannel_closure, A.GuaranteeChannel__closure, A._MultiChannel_closure0, A._MultiChannel__closure, A._MultiChannel_virtualChannel_closure0, A.main_closure, A.main__closure2, A.main__closure3]);
+    _inheritMany(A.Iterable, [A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A.ExpandIterable, A.TakeIterable, A.SkipWhileIterable, A.WhereTypeIterable, A._ConstantMapKeyIterable, A.IterableBase, A._StringAllMatchesIterable]);
     _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.LinkedHashMapKeyIterable, A._HashMapKeyIterable]);
     _inheritMany(A.ListIterable, [A.SubListIterable, A.MappedListIterable, A.ReversedListIterable, A._JsonMapKeyIterable]);
     _inherit(A.EfficientLengthMappedIterable, A.MappedIterable);
@@ -15391,7 +16388,7 @@
     _inherit(A.ConstantMapView, A.UnmodifiableMapView);
     _inherit(A.ConstantStringMap, A.ConstantMap);
     _inherit(A.Instantiation1, A.Instantiation);
-    _inheritMany(A.Closure2Args, [A.Primitives_functionNoSuchMethod_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A.NoSuchMethodError_toString_closure, A.Uri_splitQueryString_closure, A.Uri__parseIPv4Address_error, A.Uri_parseIPv6Address_error, A.Uri_parseIPv6Address_parseHex, A._createTables_build, A._StructuredClone_walk_closure, A._StructuredClone_walk_closure0, A._AcceptStructuredClone_walk_closure, A.Frame_Frame$parseV8_closure_parseLocation, A.main_closure0]);
+    _inheritMany(A.Closure2Args, [A.Primitives_functionNoSuchMethod_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A.NoSuchMethodError_toString_closure, A.Uri_splitQueryString_closure, A.Uri__parseIPv4Address_error, A.Uri_parseIPv6Address_error, A.Uri_parseIPv6Address_parseHex, A._createTables_build, A.MidiInputMap_keys_closure, A.MidiOutputMap_keys_closure, A.RtcStatsReport_keys_closure, A.Storage_keys_closure, A.AudioParamMap_keys_closure, A.Frame_Frame$parseV8_closure_parseLocation, A.main_closure0]);
     _inherit(A.NullError, A.TypeError);
     _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]);
     _inherit(A._AssertionError, A.AssertionError);
@@ -15411,8 +16408,8 @@
     _inherit(A._ControllerStream, A._StreamImpl);
     _inherit(A._ControllerSubscription, A._BufferingStreamSubscription);
     _inheritMany(A._DelayedEvent, [A._DelayedData, A._DelayedError]);
-    _inherit(A._StreamImplEvents, A._PendingEvents);
     _inheritMany(A._Zone, [A._CustomZone, A._RootZone]);
+    _inherit(A._IdentityHashMap, A._HashMap);
     _inherit(A._SetBase, A.__SetBase_Object_SetMixin);
     _inherit(A._LinkedHashSet, A._SetBase);
     _inheritMany(A.Codec, [A.Encoding, A.Base64Codec, A._FusedCodec, A.JsonCodec]);
@@ -15424,22 +16421,72 @@
     _inherit(A._JsonStringStringifier, A._JsonStringifier);
     _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]);
     _inherit(A._DataUri, A._Uri);
-    _inheritMany(A.EventTarget, [A.Node, A.MessagePort, A.Window]);
+    _inheritMany(A.EventTarget, [A.Node, A.FileWriter, A.SourceBuffer, A._SourceBufferList_EventTarget_ListMixin, A.TextTrack, A.TextTrackCue, A._TextTrackList_EventTarget_ListMixin, A.VideoTrackList, A.AudioTrackList, A.BaseAudioContext]);
     _inheritMany(A.Node, [A.Element, A.CharacterData]);
-    _inheritMany(A.Element, [A.HtmlElement, A.SvgElement]);
-    _inheritMany(A.HtmlElement, [A.AnchorElement, A.AreaElement, A.FormElement, A.IFrameElement, A.SelectElement]);
+    _inherit(A.HtmlElement, A.Element);
+    _inheritMany(A.HtmlElement, [A.AnchorElement, A.AreaElement, A.FormElement, A.SelectElement]);
+    _inherit(A.CssPerspective, A.CssTransformComponent);
+    _inherit(A.CssStyleDeclaration, A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase);
+    _inheritMany(A.CssStyleValue, [A.CssTransformValue, A.CssUnparsedValue]);
+    _inherit(A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin, A._DomRectList_JavaScriptObject_ListMixin);
+    _inherit(A.DomRectList, A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin, A._DomStringList_JavaScriptObject_ListMixin);
+    _inherit(A.DomStringList, A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin);
     _inherit(A.File, A.Blob);
+    _inherit(A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin, A._FileList_JavaScriptObject_ListMixin);
+    _inherit(A.FileList, A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin);
     _inherit(A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin, A._HtmlCollection_JavaScriptObject_ListMixin);
     _inherit(A.HtmlCollection, A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin);
-    _inheritMany(A.Event, [A.MessageEvent, A.UIEvent]);
-    _inherit(A.MouseEvent, A.UIEvent);
-    _inherit(A._ElementEventStreamImpl, A._EventStream);
-    _inherit(A._EventStreamSubscription, A.StreamSubscription);
-    _inherit(A._StructuredCloneDart2Js, A._StructuredClone);
-    _inherit(A._AcceptStructuredCloneDart2Js, A._AcceptStructuredClone);
+    _inherit(A.MidiInputMap, A._MidiInputMap_JavaScriptObject_MapMixin);
+    _inherit(A.MidiOutputMap, A._MidiOutputMap_JavaScriptObject_MapMixin);
+    _inherit(A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin, A._MimeTypeArray_JavaScriptObject_ListMixin);
+    _inherit(A.MimeTypeArray, A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin, A._NodeList_JavaScriptObject_ListMixin);
+    _inherit(A.NodeList, A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin, A._PluginArray_JavaScriptObject_ListMixin);
+    _inherit(A.PluginArray, A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A.RtcStatsReport, A._RtcStatsReport_JavaScriptObject_MapMixin);
+    _inherit(A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin, A._SourceBufferList_EventTarget_ListMixin);
+    _inherit(A.SourceBufferList, A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin);
+    _inherit(A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin, A._SpeechGrammarList_JavaScriptObject_ListMixin);
+    _inherit(A.SpeechGrammarList, A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A.Storage, A._Storage_JavaScriptObject_MapMixin);
+    _inherit(A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TextTrackCueList_JavaScriptObject_ListMixin);
+    _inherit(A.TextTrackCueList, A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin, A._TextTrackList_EventTarget_ListMixin);
+    _inherit(A.TextTrackList, A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin);
+    _inherit(A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TouchList_JavaScriptObject_ListMixin);
+    _inherit(A.TouchList, A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__CssRuleList_JavaScriptObject_ListMixin);
+    _inherit(A._CssRuleList, A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._DomRect, A.DomRectReadOnly);
+    _inherit(A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__GamepadList_JavaScriptObject_ListMixin);
+    _inherit(A._GamepadList, A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin, A.__NamedNodeMap_JavaScriptObject_ListMixin);
+    _inherit(A._NamedNodeMap, A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin);
+    _inherit(A._SpeechRecognitionResultList, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__StyleSheetList_JavaScriptObject_ListMixin);
+    _inherit(A._StyleSheetList, A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin, A._LengthList_JavaScriptObject_ListMixin);
+    _inherit(A.LengthList, A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin, A._NumberList_JavaScriptObject_ListMixin);
+    _inherit(A.NumberList, A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin, A._StringList_JavaScriptObject_ListMixin);
+    _inherit(A.StringList, A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TransformList_JavaScriptObject_ListMixin);
+    _inherit(A.TransformList, A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin);
+    _inherit(A.AudioParamMap, A._AudioParamMap_JavaScriptObject_MapMixin);
+    _inherit(A.OfflineAudioContext, A.BaseAudioContext);
     _inherit(A.InternalStyle, A.Style);
     _inheritMany(A.InternalStyle, [A.PosixStyle, A.UrlStyle, A.WindowsStyle]);
     _inheritMany(A.StreamChannelMixin, [A.GuaranteeChannel, A._MultiChannel, A.VirtualChannel]);
+    _inheritMany(A.EventTarget0, [A.Window0, A.Node0, A.MessagePort0, A.WebSocket0]);
+    _inheritMany(A.Node0, [A.Document0, A.Element0]);
+    _inherit(A.HTMLDocument, A.Document0);
+    _inherit(A.HTMLElement, A.Element0);
+    _inheritMany(A.HTMLElement, [A.HTMLBodyElement, A.HTMLScriptElement, A.HTMLIFrameElement]);
+    _inherit(A.MessageEvent0, A.Event0);
     _mixin(A.UnmodifiableListBase, A.UnmodifiableListMixin);
     _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListMixin);
     _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
@@ -15449,19 +16496,65 @@
     _mixin(A._ListBase_Object_ListMixin, A.ListMixin);
     _mixin(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A._UnmodifiableMapMixin);
     _mixin(A.__SetBase_Object_SetMixin, A.SetMixin);
+    _mixin(A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase, A.CssStyleDeclarationBase);
+    _mixin(A._DomRectList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._DomStringList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._FileList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
     _mixin(A._HtmlCollection_JavaScriptObject_ListMixin, A.ListMixin);
     _mixin(A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._MidiInputMap_JavaScriptObject_MapMixin, A.MapMixin);
+    _mixin(A._MidiOutputMap_JavaScriptObject_MapMixin, A.MapMixin);
+    _mixin(A._MimeTypeArray_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._NodeList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._PluginArray_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._RtcStatsReport_JavaScriptObject_MapMixin, A.MapMixin);
+    _mixin(A._SourceBufferList_EventTarget_ListMixin, A.ListMixin);
+    _mixin(A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._SpeechGrammarList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._Storage_JavaScriptObject_MapMixin, A.MapMixin);
+    _mixin(A._TextTrackCueList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._TextTrackList_EventTarget_ListMixin, A.ListMixin);
+    _mixin(A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._TouchList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A.__CssRuleList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A.__GamepadList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A.__NamedNodeMap_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A.__StyleSheetList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._LengthList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._NumberList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._StringList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._TransformList_JavaScriptObject_ListMixin, A.ListMixin);
+    _mixin(A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin);
+    _mixin(A._AudioParamMap_JavaScriptObject_MapMixin, A.MapMixin);
   })();
   var init = {
     typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []},
     mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List"},
     mangledNames: {},
-    types: ["~()", "bool(String)", "Null()", "~(@)", "Frame(String)", "Frame()", "~(~())", "Null(@)", "~(MessageEvent)", "~(Object,StackTrace)", "~(Object[StackTrace?])", "~(Object?)", "bool(Frame)", "Trace()", "@(@)", "String(Frame)", "int(Frame)", "Trace(String)", "~(Event)", "~(Uint8List,String,int)", "String(String)", "~(Object?,Object?)", "@()", "~(Symbol0,@)", "~(String,int)", "~(String,int?)", "int(int,int)", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "Uint8List(@,@)", "Future<@>(@)", "_Future<@>(@)", "~(@,@)", "Null(@,@)", "@(@,@)", "Map<String,String>(Map<String,String>,String)", "String(String?)", "Null(Object,StackTrace)", "List<Frame>(Trace)", "int(Trace)", "~([Object?])", "String(Trace)", "~(int,@)", "@(@,String)", "Frame(String,String)", "~(String,@)", "0^(0^,0^)<num>", "Future<Null>()", "Frame(Frame)", "~(List<@>)", "~(Timer)", "~(MouseEvent)", "Null(~())", "Future<~>(@)", "@(String)", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())<Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)<Object?Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)<Object?Object?Object?>", "0^()(Zone,ZoneDelegate,Zone,0^())<Object?>", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?Object?>", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?Object?Object?>", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map<Object?,Object?>?)", "Null(@,StackTrace)"],
+    types: ["~()", "bool(String)", "Null()", "Frame(String)", "~(String,@)", "Frame()", "~(JavaScriptObject)", "~(@)", "Null(@)", "~(~())", "~(Object,StackTrace)", "~(Object[StackTrace?])", "~(Object?)", "bool(Frame)", "Trace()", "@(@)", "String(Frame)", "int(Frame)", "Trace(String)", "~(Uint8List,String,int)", "String(String)", "~(Object?,Object?)", "@()", "Map<String,String>(Map<String,String>,String)", "~(String,int)", "~(String,int?)", "int(int,int)", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "Uint8List(@,@)", "Future<@>(@)", "~(String,String)", "Object?(Object?)", "Object?()", "~(Symbol0,@)", "String(String?)", "_Future<@>(@)", "List<Frame>(Trace)", "int(Trace)", "Null(Object,StackTrace)", "String(Trace)", "~([Object?])", "~(int,@)", "Frame(String,String)", "Future<Null>()", "0^(0^,0^)<num>", "Null(~())", "Frame(Frame)", "~(List<@>)", "~(Timer)", "@(String)", "Future<~>(@)", "@(@,String)", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())<Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)<Object?Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)<Object?Object?Object?>", "0^()(Zone,ZoneDelegate,Zone,0^())<Object?>", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?Object?>", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?Object?Object?>", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map<Object?,Object?>?)", "Null(@,StackTrace)"],
     interceptorsByTag: null,
     leafTags: null,
     arrayRti: Symbol("$ti")
   };
-  A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","TestRunner":"LegacyJavaScriptObject","_JSApi":"LegacyJavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AElement":"SvgElement","GraphicsElement":"SvgElement","AudioElement":"HtmlElement","MediaElement":"HtmlElement","HtmlDocument":"Node","Document":"Node","PointerEvent":"MouseEvent","WebSocket":"EventTarget","CompositionEvent":"UIEvent","CDataSection":"CharacterData","Text":"CharacterData","HtmlFormControlsCollection":"HtmlCollection","NativeFloat32List":"NativeTypedArrayOfDouble","NativeByteData":"NativeTypedData","JSBool":{"bool":[]},"JSNull":{"Null":[]},"LegacyJavaScriptObject":{"JSObject":[]},"JSArray":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[]},"JSNumNotInt":{"double":[],"num":[]},"JSString":{"String":[],"Pattern":[]},"CastStream":{"Stream":["2"],"Stream.T":"2"},"CastStreamSubscription":{"StreamSubscription":["2"]},"LateError":{"Error":[]},"CodeUnits":{"ListMixin":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListMixin.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"ListIterator":{"Iterator":["1"]},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedIterator":{"Iterator":["2"]},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListIterable.E":"2","Iterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"ExpandIterator":{"Iterator":["2"]},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"TakeIterator":{"Iterator":["1"]},"SkipWhileIterable":{"Iterable":["1"],"Iterable.E":"1"},"SkipWhileIterator":{"Iterator":["1"]},"EmptyIterator":{"Iterator":["1"]},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListMixin":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"Symbol":{"Symbol0":[]},"ConstantMapView":{"UnmodifiableMapView":["1","2"],"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"Instantiation":{"Closure":[],"Function":[]},"Instantiation1":{"Closure":[],"Function":[]},"JSInvocationMirror":{"Invocation":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Closure":[],"Function":[]},"Closure2Args":{"Closure":[],"Function":[]},"TearOffClosure":{"Closure":[],"Function":[]},"StaticClosure":{"Closure":[],"Function":[]},"BoundClosure":{"Closure":[],"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapMixin":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"LinkedHashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"JSSyntaxRegExp":{"RegExp":[],"Pattern":[]},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"_AllMatchesIterator":{"Iterator":["RegExpMatch"]},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"_StringAllMatchesIterator":{"Iterator":["Match"]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"NativeTypedData":[]},"NativeTypedArrayOfDouble":{"ListMixin":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"NativeTypedData":[],"EfficientLengthIterable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"ListMixin.E":"double"},"NativeTypedArrayOfInt":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeInt16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8ClampedList":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8List":{"ListMixin":["int"],"Uint8List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"_Future":{"Future":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"StreamTransformerBase":{"StreamTransformer":["1","2"]},"_StreamController":{"StreamController":["1"],"StreamSink":["1"],"StreamConsumer":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_SyncStreamController":{"_SyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"StreamConsumer":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamSinkWrapper":{"StreamSink":["1"],"StreamConsumer":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_StreamImplEvents":{"_PendingEvents":["1"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_EmptyStream":{"Stream":["1"],"Stream.T":"1"},"_ZoneSpecification":{"ZoneSpecification":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_Zone":{"Zone":[]},"_CustomZone":{"_Zone":[],"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_HashMap":{"MapMixin":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"_LinkedHashSet":{"SetMixin":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_LinkedHashSetIterator":{"Iterator":["1"]},"IterableBase":{"Iterable":["1"]},"ListBase":{"ListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"MapMixin":["1","2"],"Map":["1","2"]},"MapMixin":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"_SetBase":{"SetMixin":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_JsonMap":{"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"EfficientLengthIterable":["String"],"Iterable":["String"],"ListIterable.E":"String","Iterable.E":"String"},"AsciiCodec":{"Codec":["String","List<int>"],"Codec.S":"String"},"_UnicodeSubsetEncoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"AsciiEncoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"Base64Codec":{"Codec":["List<int>","String"],"Codec.S":"List<int>"},"Base64Encoder":{"Converter":["List<int>","String"],"StreamTransformer":["List<int>","String"]},"_FusedCodec":{"Codec":["1","3"],"Codec.S":"1"},"Converter":{"StreamTransformer":["1","2"]},"Encoding":{"Codec":["String","List<int>"]},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"],"Codec.S":"Object?"},"JsonEncoder":{"Converter":["Object?","String"],"StreamTransformer":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"],"StreamTransformer":["String","Object?"]},"Utf8Codec":{"Codec":["String","List<int>"],"Codec.S":"String"},"Utf8Encoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"Utf8Decoder":{"Converter":["List<int>","String"],"StreamTransformer":["List<int>","String"]},"double":{"num":[]},"int":{"num":[]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"RegExpMatch":{"Match":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"NullThrownError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"NoSuchMethodError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"CyclicInitializationError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"IFrameElement":{"Element":[],"Node":[],"EventTarget":[]},"MessageEvent":{"Event":[]},"MessagePort":{"EventTarget":[]},"MouseEvent":{"Event":[]},"Node":{"EventTarget":[]},"HtmlElement":{"Element":[],"Node":[],"EventTarget":[]},"AnchorElement":{"Element":[],"Node":[],"EventTarget":[]},"AreaElement":{"Element":[],"Node":[],"EventTarget":[]},"CharacterData":{"Node":[],"EventTarget":[]},"Element":{"Node":[],"EventTarget":[]},"File":{"Blob":[]},"FormElement":{"Element":[],"Node":[],"EventTarget":[]},"HtmlCollection":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"SelectElement":{"Element":[],"Node":[],"EventTarget":[]},"UIEvent":{"Event":[]},"Window":{"WindowBase":[],"EventTarget":[]},"_EventStream":{"Stream":["1"],"Stream.T":"1"},"_ElementEventStreamImpl":{"_EventStream":["1"],"Stream":["1"],"Stream.T":"1"},"_EventStreamSubscription":{"StreamSubscription":["1"]},"FixedSizeListIterator":{"Iterator":["1"]},"_DOMWindowCrossFrame":{"WindowBase":[],"EventTarget":[]},"NullRejectionException":{"Exception":[]},"SvgElement":{"Element":[],"Node":[],"EventTarget":[]},"NullStreamSink":{"StreamSink":["1"],"StreamConsumer":["1"]},"PathException":{"Exception":[]},"PosixStyle":{"InternalStyle":[]},"UrlStyle":{"InternalStyle":[]},"WindowsStyle":{"InternalStyle":[]},"Chain":{"StackTrace":[]},"LazyTrace":{"Trace":[],"StackTrace":[]},"Trace":{"StackTrace":[]},"UnparsedFrame":{"Frame":[]},"GuaranteeChannel":{"StreamChannelMixin":["1"],"StreamChannel":["1"]},"_GuaranteeSink":{"StreamSink":["1"],"StreamConsumer":["1"]},"_MultiChannel":{"StreamChannelMixin":["1"],"MultiChannel":["1"],"StreamChannel":["1"]},"VirtualChannel":{"StreamChannelMixin":["1"],"MultiChannel":["1"],"StreamChannel":["1"]},"StreamChannelMixin":{"StreamChannel":["1"]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]}}'));
+  A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","Window0":"LegacyJavaScriptObject","Document0":"LegacyJavaScriptObject","HTMLDocument":"LegacyJavaScriptObject","Navigator0":"LegacyJavaScriptObject","Element0":"LegacyJavaScriptObject","HTMLElement":"LegacyJavaScriptObject","HTMLBodyElement":"LegacyJavaScriptObject","Node0":"LegacyJavaScriptObject","EventTarget0":"LegacyJavaScriptObject","Event0":"LegacyJavaScriptObject","MessageEvent0":"LegacyJavaScriptObject","Location0":"LegacyJavaScriptObject","MessagePort0":"LegacyJavaScriptObject","CSSStyleDeclaration":"LegacyJavaScriptObject","HTMLScriptElement":"LegacyJavaScriptObject","DomTokenList0":"LegacyJavaScriptObject","HTMLIFrameElement":"LegacyJavaScriptObject","WebSocket0":"LegacyJavaScriptObject","MessageChannel0":"LegacyJavaScriptObject","TestRunner":"LegacyJavaScriptObject","_JSApi":"LegacyJavaScriptObject","AbortPaymentEvent":"JavaScriptObject","ExtendableEvent":"JavaScriptObject","Event":"JavaScriptObject","AudioContext":"BaseAudioContext","AbsoluteOrientationSensor":"EventTarget","OrientationSensor":"EventTarget","Sensor":"EventTarget","MathMLElement":"Element","AudioElement":"HtmlElement","MediaElement":"HtmlElement","HtmlDocument":"Node","Document":"Node","VttCue":"TextTrackCue","CDataSection":"CharacterData","Text":"CharacterData","HtmlFormControlsCollection":"HtmlCollection","CssCharsetRule":"CssRule","CssMatrixComponent":"CssTransformComponent","CssStyleSheet":"StyleSheet","CssurlImageValue":"CssStyleValue","CssImageValue":"CssStyleValue","CssResourceValue":"CssStyleValue","NativeFloat32List":"NativeTypedArrayOfDouble","JSBool":{"bool":[]},"JSNull":{"Null":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[]},"JSArray":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[]},"JSNumNotInt":{"double":[],"num":[]},"JSString":{"String":[],"Pattern":[]},"CastStream":{"Stream":["2"],"Stream.T":"2"},"CastStreamSubscription":{"StreamSubscription":["2"]},"LateError":{"Error":[]},"CodeUnits":{"ListMixin":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListMixin.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"ListIterator":{"Iterator":["1"]},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedIterator":{"Iterator":["2"]},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListIterable.E":"2","Iterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"ExpandIterator":{"Iterator":["2"]},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"TakeIterator":{"Iterator":["1"]},"SkipWhileIterable":{"Iterable":["1"],"Iterable.E":"1"},"SkipWhileIterator":{"Iterator":["1"]},"EmptyIterator":{"Iterator":["1"]},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListMixin":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"Symbol":{"Symbol0":[]},"ConstantMapView":{"UnmodifiableMapView":["1","2"],"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_ConstantMapKeyIterable":{"Iterable":["1"],"Iterable.E":"1"},"Instantiation":{"Closure":[],"Function":[]},"Instantiation1":{"Closure":[],"Function":[]},"JSInvocationMirror":{"Invocation":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Closure":[],"Function":[]},"Closure2Args":{"Closure":[],"Function":[]},"TearOffClosure":{"Closure":[],"Function":[]},"StaticClosure":{"Closure":[],"Function":[]},"BoundClosure":{"Closure":[],"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapMixin":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"LinkedHashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"JSSyntaxRegExp":{"Pattern":[]},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"_AllMatchesIterator":{"Iterator":["RegExpMatch"]},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"_StringAllMatchesIterator":{"Iterator":["Match"]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"]},"NativeTypedArrayOfDouble":{"ListMixin":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"ListMixin.E":"double"},"NativeTypedArrayOfInt":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeInt16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt8List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint16List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint32List":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8ClampedList":{"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8List":{"ListMixin":["int"],"Uint8List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"_Future":{"Future":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"StreamTransformerBase":{"StreamTransformer":["1","2"]},"_StreamController":{"StreamController":["1"],"StreamSink":["1"],"StreamConsumer":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_SyncStreamController":{"_SyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"StreamConsumer":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamSinkWrapper":{"StreamSink":["1"],"StreamConsumer":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_EmptyStream":{"Stream":["1"],"Stream.T":"1"},"_ZoneSpecification":{"ZoneSpecification":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_Zone":{"Zone":[]},"_CustomZone":{"_Zone":[],"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_HashMap":{"MapMixin":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"_IdentityHashMap":{"_HashMap":["1","2"],"MapMixin":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"_LinkedHashSet":{"SetMixin":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_LinkedHashSetIterator":{"Iterator":["1"]},"IterableBase":{"Iterable":["1"]},"ListBase":{"ListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"MapMixin":["1","2"],"Map":["1","2"]},"MapMixin":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"_SetBase":{"SetMixin":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_JsonMap":{"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"EfficientLengthIterable":["String"],"Iterable":["String"],"ListIterable.E":"String","Iterable.E":"String"},"AsciiCodec":{"Codec":["String","List<int>"],"Codec.S":"String"},"_UnicodeSubsetEncoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"AsciiEncoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"Base64Codec":{"Codec":["List<int>","String"],"Codec.S":"List<int>"},"Base64Encoder":{"Converter":["List<int>","String"],"StreamTransformer":["List<int>","String"]},"_FusedCodec":{"Codec":["1","3"],"Codec.S":"1"},"Converter":{"StreamTransformer":["1","2"]},"Encoding":{"Codec":["String","List<int>"]},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"],"Codec.S":"Object?"},"JsonEncoder":{"Converter":["Object?","String"],"StreamTransformer":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"],"StreamTransformer":["String","Object?"]},"Utf8Codec":{"Codec":["String","List<int>"],"Codec.S":"String"},"Utf8Encoder":{"Converter":["String","List<int>"],"StreamTransformer":["String","List<int>"]},"Utf8Decoder":{"Converter":["List<int>","String"],"StreamTransformer":["List<int>","String"]},"double":{"num":[]},"int":{"num":[]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"RegExpMatch":{"Match":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"NullThrownError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"NoSuchMethodError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"CyclicInitializationError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"CssRule":{"JavaScriptObject":[]},"File":{"JavaScriptObject":[]},"Gamepad":{"JavaScriptObject":[]},"MimeType":{"JavaScriptObject":[]},"Node":{"JavaScriptObject":[]},"Plugin":{"JavaScriptObject":[]},"SourceBuffer":{"JavaScriptObject":[]},"SpeechGrammar":{"JavaScriptObject":[]},"SpeechRecognitionResult":{"JavaScriptObject":[]},"StyleSheet":{"JavaScriptObject":[]},"TextTrack":{"JavaScriptObject":[]},"TextTrackCue":{"JavaScriptObject":[]},"Touch":{"JavaScriptObject":[]},"HtmlElement":{"Node":[],"JavaScriptObject":[]},"AccessibleNodeList":{"JavaScriptObject":[]},"AnchorElement":{"Node":[],"JavaScriptObject":[]},"AreaElement":{"Node":[],"JavaScriptObject":[]},"Blob":{"JavaScriptObject":[]},"CharacterData":{"Node":[],"JavaScriptObject":[]},"CssPerspective":{"JavaScriptObject":[]},"CssStyleDeclaration":{"JavaScriptObject":[]},"CssStyleValue":{"JavaScriptObject":[]},"CssTransformComponent":{"JavaScriptObject":[]},"CssTransformValue":{"JavaScriptObject":[]},"CssUnparsedValue":{"JavaScriptObject":[]},"DataTransferItemList":{"JavaScriptObject":[]},"DomException":{"JavaScriptObject":[]},"DomRectList":{"ListMixin":["Rectangle<num>"],"ImmutableListMixin":["Rectangle<num>"],"List":["Rectangle<num>"],"JavaScriptIndexingBehavior":["Rectangle<num>"],"JavaScriptObject":[],"EfficientLengthIterable":["Rectangle<num>"],"Iterable":["Rectangle<num>"],"ImmutableListMixin.E":"Rectangle<num>","ListMixin.E":"Rectangle<num>"},"DomRectReadOnly":{"JavaScriptObject":[],"Rectangle":["num"]},"DomStringList":{"ListMixin":["String"],"ImmutableListMixin":["String"],"List":["String"],"JavaScriptIndexingBehavior":["String"],"JavaScriptObject":[],"EfficientLengthIterable":["String"],"Iterable":["String"],"ImmutableListMixin.E":"String","ListMixin.E":"String"},"DomTokenList":{"JavaScriptObject":[]},"Element":{"Node":[],"JavaScriptObject":[]},"EventTarget":{"JavaScriptObject":[]},"FileList":{"ListMixin":["File"],"ImmutableListMixin":["File"],"List":["File"],"JavaScriptIndexingBehavior":["File"],"JavaScriptObject":[],"EfficientLengthIterable":["File"],"Iterable":["File"],"ImmutableListMixin.E":"File","ListMixin.E":"File"},"FileWriter":{"JavaScriptObject":[]},"FormElement":{"Node":[],"JavaScriptObject":[]},"History":{"JavaScriptObject":[]},"HtmlCollection":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"Location":{"JavaScriptObject":[]},"MediaList":{"JavaScriptObject":[]},"MidiInputMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"MidiOutputMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"MimeTypeArray":{"ListMixin":["MimeType"],"ImmutableListMixin":["MimeType"],"List":["MimeType"],"JavaScriptIndexingBehavior":["MimeType"],"JavaScriptObject":[],"EfficientLengthIterable":["MimeType"],"Iterable":["MimeType"],"ImmutableListMixin.E":"MimeType","ListMixin.E":"MimeType"},"NodeList":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"PluginArray":{"ListMixin":["Plugin"],"ImmutableListMixin":["Plugin"],"List":["Plugin"],"JavaScriptIndexingBehavior":["Plugin"],"JavaScriptObject":[],"EfficientLengthIterable":["Plugin"],"Iterable":["Plugin"],"ImmutableListMixin.E":"Plugin","ListMixin.E":"Plugin"},"RtcStatsReport":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"SelectElement":{"Node":[],"JavaScriptObject":[]},"SourceBufferList":{"ListMixin":["SourceBuffer"],"ImmutableListMixin":["SourceBuffer"],"List":["SourceBuffer"],"JavaScriptIndexingBehavior":["SourceBuffer"],"JavaScriptObject":[],"EfficientLengthIterable":["SourceBuffer"],"Iterable":["SourceBuffer"],"ImmutableListMixin.E":"SourceBuffer","ListMixin.E":"SourceBuffer"},"SpeechGrammarList":{"ListMixin":["SpeechGrammar"],"ImmutableListMixin":["SpeechGrammar"],"List":["SpeechGrammar"],"JavaScriptIndexingBehavior":["SpeechGrammar"],"JavaScriptObject":[],"EfficientLengthIterable":["SpeechGrammar"],"Iterable":["SpeechGrammar"],"ImmutableListMixin.E":"SpeechGrammar","ListMixin.E":"SpeechGrammar"},"Storage":{"JavaScriptObject":[],"MapMixin":["String","String"],"Map":["String","String"],"MapMixin.K":"String","MapMixin.V":"String"},"TextTrackCueList":{"ListMixin":["TextTrackCue"],"ImmutableListMixin":["TextTrackCue"],"List":["TextTrackCue"],"JavaScriptIndexingBehavior":["TextTrackCue"],"JavaScriptObject":[],"EfficientLengthIterable":["TextTrackCue"],"Iterable":["TextTrackCue"],"ImmutableListMixin.E":"TextTrackCue","ListMixin.E":"TextTrackCue"},"TextTrackList":{"ListMixin":["TextTrack"],"ImmutableListMixin":["TextTrack"],"List":["TextTrack"],"JavaScriptIndexingBehavior":["TextTrack"],"JavaScriptObject":[],"EfficientLengthIterable":["TextTrack"],"Iterable":["TextTrack"],"ImmutableListMixin.E":"TextTrack","ListMixin.E":"TextTrack"},"TimeRanges":{"JavaScriptObject":[]},"TouchList":{"ListMixin":["Touch"],"ImmutableListMixin":["Touch"],"List":["Touch"],"JavaScriptIndexingBehavior":["Touch"],"JavaScriptObject":[],"EfficientLengthIterable":["Touch"],"Iterable":["Touch"],"ImmutableListMixin.E":"Touch","ListMixin.E":"Touch"},"TrackDefaultList":{"JavaScriptObject":[]},"Url":{"JavaScriptObject":[]},"VideoTrackList":{"JavaScriptObject":[]},"_CssRuleList":{"ListMixin":["CssRule"],"ImmutableListMixin":["CssRule"],"List":["CssRule"],"JavaScriptIndexingBehavior":["CssRule"],"JavaScriptObject":[],"EfficientLengthIterable":["CssRule"],"Iterable":["CssRule"],"ImmutableListMixin.E":"CssRule","ListMixin.E":"CssRule"},"_DomRect":{"JavaScriptObject":[],"Rectangle":["num"]},"_GamepadList":{"ListMixin":["Gamepad?"],"ImmutableListMixin":["Gamepad?"],"List":["Gamepad?"],"JavaScriptIndexingBehavior":["Gamepad?"],"JavaScriptObject":[],"EfficientLengthIterable":["Gamepad?"],"Iterable":["Gamepad?"],"ImmutableListMixin.E":"Gamepad?","ListMixin.E":"Gamepad?"},"_NamedNodeMap":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"_SpeechRecognitionResultList":{"ListMixin":["SpeechRecognitionResult"],"ImmutableListMixin":["SpeechRecognitionResult"],"List":["SpeechRecognitionResult"],"JavaScriptIndexingBehavior":["SpeechRecognitionResult"],"JavaScriptObject":[],"EfficientLengthIterable":["SpeechRecognitionResult"],"Iterable":["SpeechRecognitionResult"],"ImmutableListMixin.E":"SpeechRecognitionResult","ListMixin.E":"SpeechRecognitionResult"},"_StyleSheetList":{"ListMixin":["StyleSheet"],"ImmutableListMixin":["StyleSheet"],"List":["StyleSheet"],"JavaScriptIndexingBehavior":["StyleSheet"],"JavaScriptObject":[],"EfficientLengthIterable":["StyleSheet"],"Iterable":["StyleSheet"],"ImmutableListMixin.E":"StyleSheet","ListMixin.E":"StyleSheet"},"FixedSizeListIterator":{"Iterator":["1"]},"Length":{"JavaScriptObject":[]},"Number":{"JavaScriptObject":[]},"Transform":{"JavaScriptObject":[]},"LengthList":{"ListMixin":["Length"],"ImmutableListMixin":["Length"],"List":["Length"],"JavaScriptObject":[],"EfficientLengthIterable":["Length"],"Iterable":["Length"],"ImmutableListMixin.E":"Length","ListMixin.E":"Length"},"NumberList":{"ListMixin":["Number"],"ImmutableListMixin":["Number"],"List":["Number"],"JavaScriptObject":[],"EfficientLengthIterable":["Number"],"Iterable":["Number"],"ImmutableListMixin.E":"Number","ListMixin.E":"Number"},"PointList":{"JavaScriptObject":[]},"StringList":{"ListMixin":["String"],"ImmutableListMixin":["String"],"List":["String"],"JavaScriptObject":[],"EfficientLengthIterable":["String"],"Iterable":["String"],"ImmutableListMixin.E":"String","ListMixin.E":"String"},"TransformList":{"ListMixin":["Transform"],"ImmutableListMixin":["Transform"],"List":["Transform"],"JavaScriptObject":[],"EfficientLengthIterable":["Transform"],"Iterable":["Transform"],"ImmutableListMixin.E":"Transform","ListMixin.E":"Transform"},"AudioBuffer":{"JavaScriptObject":[]},"AudioParamMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"AudioTrackList":{"JavaScriptObject":[]},"BaseAudioContext":{"JavaScriptObject":[]},"OfflineAudioContext":{"JavaScriptObject":[]},"NullStreamSink":{"StreamSink":["1"],"StreamConsumer":["1"]},"PathException":{"Exception":[]},"PosixStyle":{"InternalStyle":[]},"UrlStyle":{"InternalStyle":[]},"WindowsStyle":{"InternalStyle":[]},"Chain":{"StackTrace":[]},"LazyTrace":{"Trace":[],"StackTrace":[]},"Trace":{"StackTrace":[]},"UnparsedFrame":{"Frame":[]},"GuaranteeChannel":{"StreamChannelMixin":["1"],"StreamChannel":["1"]},"_GuaranteeSink":{"StreamSink":["1"],"StreamConsumer":["1"]},"_MultiChannel":{"StreamChannelMixin":["1"],"MultiChannel":["1"],"StreamChannel":["1"]},"VirtualChannel":{"StreamChannelMixin":["1"],"MultiChannel":["1"],"StreamChannel":["1"]},"StreamChannelMixin":{"StreamChannel":["1"]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]}}'));
   A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"EfficientLengthIterable":1,"UnmodifiableListBase":1,"NativeTypedArray":1,"StreamTransformerBase":2,"IterableBase":1,"ListBase":1,"MapBase":2,"_SetBase":1,"_ListBase_Object_ListMixin":1,"__SetBase_Object_SetMixin":1}'));
   var string$ = {
     ______: "===== asynchronous gap ===========================\n",
@@ -15475,12 +16568,11 @@
     var findType = A.findType;
     return {
       AsyncError: findType("AsyncError"),
-      Blob: findType("Blob"),
       ConstantMapView_Symbol_dynamic: findType("ConstantMapView<Symbol0,@>"),
+      CssRule: findType("CssRule"),
       Duration: findType("Duration"),
       EfficientLengthIterable_dynamic: findType("EfficientLengthIterable<@>"),
       Error: findType("Error"),
-      Event: findType("Event"),
       Exception: findType("Exception"),
       File: findType("File"),
       Frame: findType("Frame"),
@@ -15494,48 +16586,55 @@
       Iterable_String: findType("Iterable<String>"),
       Iterable_dynamic: findType("Iterable<@>"),
       JSArray_Frame: findType("JSArray<Frame>"),
-      JSArray_MessagePort: findType("JSArray<MessagePort>"),
+      JSArray_JavaScriptObject: findType("JSArray<JavaScriptObject>"),
+      JSArray_Object: findType("JSArray<Object>"),
       JSArray_StreamSubscription_void: findType("JSArray<StreamSubscription<~>>"),
       JSArray_String: findType("JSArray<String>"),
+      JSArray_Subscription: findType("JSArray<Subscription>"),
       JSArray_Trace: findType("JSArray<Trace>"),
       JSArray_Uint8List: findType("JSArray<Uint8List>"),
       JSArray_dynamic: findType("JSArray<@>"),
       JSArray_int: findType("JSArray<int>"),
       JSArray_nullable_String: findType("JSArray<String?>"),
       JSNull: findType("JSNull"),
-      JSObject: findType("JSObject"),
       JavaScriptFunction: findType("JavaScriptFunction"),
       JavaScriptIndexingBehavior_dynamic: findType("JavaScriptIndexingBehavior<@>"),
+      JavaScriptObject: findType("JavaScriptObject"),
       JsLinkedHashMap_Symbol_dynamic: findType("JsLinkedHashMap<Symbol0,@>"),
-      List_Object: findType("List<Object>"),
+      Length: findType("Length"),
       List_String: findType("List<String>"),
       List_dynamic: findType("List<@>"),
       List_int: findType("List<int>"),
-      Location: findType("Location"),
       Map_String_String: findType("Map<String,String>"),
       Map_dynamic_dynamic: findType("Map<@,@>"),
       MappedIterable_String_Frame: findType("MappedIterable<String,Frame>"),
       MappedListIterable_Frame_Frame: findType("MappedListIterable<Frame,Frame>"),
       MappedListIterable_String_Trace: findType("MappedListIterable<String,Trace>"),
       MappedListIterable_String_dynamic: findType("MappedListIterable<String,@>"),
-      MessageEvent: findType("MessageEvent"),
-      MessagePort: findType("MessagePort"),
-      MouseEvent: findType("MouseEvent"),
-      NativeByteBuffer: findType("NativeByteBuffer"),
-      NativeTypedData: findType("NativeTypedData"),
+      MimeType: findType("MimeType"),
       NativeUint8List: findType("NativeUint8List"),
       Node: findType("Node"),
       Null: findType("Null"),
+      Number: findType("Number"),
       Object: findType("Object"),
       Pattern: findType("Pattern"),
-      RegExp: findType("RegExp"),
+      Plugin: findType("Plugin"),
+      Rectangle_num: findType("Rectangle<num>"),
       RegExpMatch: findType("RegExpMatch"),
+      SourceBuffer: findType("SourceBuffer"),
+      SpeechGrammar: findType("SpeechGrammar"),
+      SpeechRecognitionResult: findType("SpeechRecognitionResult"),
       StackTrace: findType("StackTrace"),
       String: findType("String"),
+      StyleSheet: findType("StyleSheet"),
       Symbol: findType("Symbol0"),
+      TextTrack: findType("TextTrack"),
+      TextTrackCue: findType("TextTrackCue"),
       Timer: findType("Timer"),
+      Touch: findType("Touch"),
       Trace: findType("Trace"),
       Trace_Function_String: findType("Trace(String)"),
+      Transform: findType("Transform"),
       TypeError: findType("TypeError"),
       Uint8List: findType("Uint8List"),
       UnknownJavaScriptObject: findType("UnknownJavaScriptObject"),
@@ -15543,13 +16642,12 @@
       Uri: findType("Uri"),
       WhereIterable_String: findType("WhereIterable<String>"),
       WhereTypeIterable_String: findType("WhereTypeIterable<String>"),
-      WindowBase: findType("WindowBase"),
       Zone: findType("Zone"),
       _AsyncCompleter_dynamic: findType("_AsyncCompleter<@>"),
-      _ElementEventStreamImpl_MouseEvent: findType("_ElementEventStreamImpl<MouseEvent>"),
       _Future_dynamic: findType("_Future<@>"),
       _Future_int: findType("_Future<int>"),
       _Future_void: findType("_Future<~>"),
+      _IdentityHashMap_dynamic_dynamic: findType("_IdentityHashMap<@,@>"),
       _StreamControllerAddStreamState_nullable_Object: findType("_StreamControllerAddStreamState<Object?>"),
       _SyncCompleter_dynamic: findType("_SyncCompleter<@>"),
       _ZoneFunction_of_void_Function_Zone_ZoneDelegate_Zone_Object_StackTrace: findType("_ZoneFunction<~(Zone,ZoneDelegate,Zone,Object,StackTrace)>"),
@@ -15563,12 +16661,12 @@
       dynamic_Function_Object: findType("@(Object)"),
       dynamic_Function_Object_StackTrace: findType("@(Object,StackTrace)"),
       dynamic_Function_String: findType("@(String)"),
-      dynamic_Function_dynamic_dynamic: findType("@(@,@)"),
       int: findType("int"),
       legacy_Never: findType("0&*"),
       legacy_Object: findType("Object*"),
       nullable_Future_Null: findType("Future<Null>?"),
-      nullable_List_Object: findType("List<Object>?"),
+      nullable_Gamepad: findType("Gamepad?"),
+      nullable_JavaScriptObject: findType("JavaScriptObject?"),
       nullable_List_dynamic: findType("List<@>?"),
       nullable_Map_of_nullable_Object_and_nullable_Object: findType("Map<Object?,Object?>?"),
       nullable_Object: findType("Object?"),
@@ -15579,24 +16677,23 @@
       nullable__DelayedEvent_dynamic: findType("_DelayedEvent<@>?"),
       nullable__FutureListener_dynamic_dynamic: findType("_FutureListener<@,@>?"),
       nullable__LinkedHashSetCell: findType("_LinkedHashSetCell?"),
-      nullable_dynamic_Function_Event: findType("@(Event)?"),
       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_MessageEvent: findType("~(MessageEvent)?"),
       num: findType("num"),
       void: findType("~"),
       void_Function: findType("~()"),
       void_Function_$opt_dynamic: findType("~([@])"),
+      void_Function_JavaScriptObject: findType("~(JavaScriptObject)"),
       void_Function_Object: findType("~(Object)"),
       void_Function_Object_StackTrace: findType("~(Object,StackTrace)"),
+      void_Function_String_String: findType("~(String,String)"),
       void_Function_String_dynamic: findType("~(String,@)"),
       void_Function_Timer: findType("~(Timer)")
     };
   })();
   (function constants() {
     var makeConstList = hunkHelpers.makeConstList;
-    B.IFrameElement_methods = A.IFrameElement.prototype;
     B.Interceptor_methods = J.Interceptor.prototype;
     B.JSArray_methods = J.JSArray.prototype;
     B.JSInt_methods = J.JSInt.prototype;
@@ -15604,12 +16701,9 @@
     B.JSString_methods = J.JSString.prototype;
     B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;
     B.JavaScriptObject_methods = J.JavaScriptObject.prototype;
-    B.Location_methods = A.Location.prototype;
-    B.MessagePort_methods = A.MessagePort.prototype;
     B.NativeUint8List_methods = A.NativeUint8List.prototype;
     B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
     B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
-    B.Window_methods = A.Window.prototype;
     B.AsciiEncoder_127 = new A.AsciiEncoder(127);
     B.CONSTANT = new A.Instantiation1(A.math__max$closure(), A.findType("Instantiation1<int>"));
     B.C_AsciiCodec = new A.AsciiCodec();
@@ -15764,19 +16858,19 @@
     B.Symbol_call = new A.Symbol("call");
     B.Type_Object_xQ6 = A.typeLiteral("Object");
     B.Utf8Decoder_false = new A.Utf8Decoder(false);
-    B._RegisterBinaryZoneFunction_kGu = new A._RegisterBinaryZoneFunction(B.C__RootZone, A.async___rootRegisterBinaryCallback$closure());
-    B._RegisterNullaryZoneFunction__RootZone__rootRegisterCallback = new A._RegisterNullaryZoneFunction(B.C__RootZone, A.async___rootRegisterCallback$closure());
-    B._RegisterUnaryZoneFunction_Bqo = new A._RegisterUnaryZoneFunction(B.C__RootZone, A.async___rootRegisterUnaryCallback$closure());
-    B._RunBinaryZoneFunction__RootZone__rootRunBinary = new A._RunBinaryZoneFunction(B.C__RootZone, A.async___rootRunBinary$closure());
-    B._RunNullaryZoneFunction__RootZone__rootRun = new A._RunNullaryZoneFunction(B.C__RootZone, A.async___rootRun$closure());
-    B._RunUnaryZoneFunction__RootZone__rootRunUnary = new A._RunUnaryZoneFunction(B.C__RootZone, A.async___rootRunUnary$closure());
     B._StringStackTrace_3uE = new A._StringStackTrace("");
     B._ZoneFunction_3bB = new A._ZoneFunction(B.C__RootZone, A.async___rootCreatePeriodicTimer$closure(), A.findType("_ZoneFunction<Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))>"));
+    B._ZoneFunction_7G2 = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterBinaryCallback$closure(), A.findType("_ZoneFunction<0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?Object?Object?>>"));
+    B._ZoneFunction_Eeh = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterUnaryCallback$closure(), A.findType("_ZoneFunction<0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?Object?>>"));
     B._ZoneFunction_NMc = new A._ZoneFunction(B.C__RootZone, A.async___rootHandleUncaughtError$closure(), type$._ZoneFunction_of_void_Function_Zone_ZoneDelegate_Zone_Object_StackTrace);
     B._ZoneFunction__RootZone__rootCreateTimer = new A._ZoneFunction(B.C__RootZone, A.async___rootCreateTimer$closure(), A.findType("_ZoneFunction<Timer(Zone,ZoneDelegate,Zone,Duration,~())>"));
     B._ZoneFunction__RootZone__rootErrorCallback = new A._ZoneFunction(B.C__RootZone, A.async___rootErrorCallback$closure(), A.findType("_ZoneFunction<AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)>"));
     B._ZoneFunction__RootZone__rootFork = new A._ZoneFunction(B.C__RootZone, A.async___rootFork$closure(), A.findType("_ZoneFunction<Zone(Zone,ZoneDelegate,Zone,ZoneSpecification?,Map<Object?,Object?>?)>"));
     B._ZoneFunction__RootZone__rootPrint = new A._ZoneFunction(B.C__RootZone, A.async___rootPrint$closure(), A.findType("_ZoneFunction<~(Zone,ZoneDelegate,Zone,String)>"));
+    B._ZoneFunction__RootZone__rootRegisterCallback = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterCallback$closure(), A.findType("_ZoneFunction<0^()(Zone,ZoneDelegate,Zone,0^())<Object?>>"));
+    B._ZoneFunction__RootZone__rootRun = new A._ZoneFunction(B.C__RootZone, A.async___rootRun$closure(), A.findType("_ZoneFunction<0^(Zone,ZoneDelegate,Zone,0^())<Object?>>"));
+    B._ZoneFunction__RootZone__rootRunBinary = new A._ZoneFunction(B.C__RootZone, A.async___rootRunBinary$closure(), A.findType("_ZoneFunction<0^(Zone,ZoneDelegate,Zone,0^(1^,2^),1^,2^)<Object?Object?Object?>>"));
+    B._ZoneFunction__RootZone__rootRunUnary = new A._ZoneFunction(B.C__RootZone, A.async___rootRunUnary$closure(), A.findType("_ZoneFunction<0^(Zone,ZoneDelegate,Zone,0^(1^),1^)<Object?Object?>>"));
     B._ZoneFunction__RootZone__rootScheduleMicrotask = new A._ZoneFunction(B.C__RootZone, A.async___rootScheduleMicrotask$closure(), A.findType("_ZoneFunction<~(Zone,ZoneDelegate,Zone,~())>"));
   })();
   (function staticFields() {
@@ -15797,11 +16891,12 @@
     $._isInCallbackLoop = false;
     $.Zone__current = B.C__RootZone;
     $._RootZone__rootDelegate = null;
-    $._toStringVisiting = A._setArrayType([], A.findType("JSArray<Object>"));
+    $._toStringVisiting = A._setArrayType([], type$.JSArray_Object);
     $._currentUriBase = null;
     $._current = null;
-    $._iframes = A.LinkedHashMap_LinkedHashMap$_empty(type$.int, A.findType("IFrameElement"));
+    $._iframes = A.LinkedHashMap_LinkedHashMap$_empty(type$.int, type$.JavaScriptObject);
     $._subscriptions = A.LinkedHashMap_LinkedHashMap$_empty(type$.int, A.findType("List<StreamSubscription<~>>"));
+    $._domSubscriptions = A.LinkedHashMap_LinkedHashMap$_empty(type$.int, A.findType("List<Subscription>"));
   })();
   (function lazyInitializers() {
     var _lazyFinal = hunkHelpers.lazyFinal;
@@ -15888,7 +16983,7 @@
     _lazyFinal($, "_firefoxSafariTrace", "$get$_firefoxSafariTrace", () => A.RegExp_RegExp("^(([.0-9A-Za-z_$/<]|\\(.*\\))*@)?[^\\s]*:\\d*$", true));
     _lazyFinal($, "_friendlyTrace", "$get$_friendlyTrace", () => A.RegExp_RegExp("^[^\\s<][^\\s]*( \\d+(:\\d+)?)?[ \\t]+[^\\s]+$", true));
     _lazyFinal($, "vmChainGap", "$get$vmChainGap", () => A.RegExp_RegExp("^<asynchronous suspension>\\n?$", true));
-    _lazyFinal($, "_currentUrl", "$get$_currentUrl", () => A.Uri_parse(B.Window_methods.get$location(A.window()).href));
+    _lazyFinal($, "_currentUrl", "$get$_currentUrl", () => A.Uri_parse(A.getProperty(A.WindowExtension_get_location(self.window), "href", type$.String)));
   })();
   (function nativeSupport() {
     !function() {
@@ -15913,8 +17008,8 @@
       }
       init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
     }();
-    hunkHelpers.setOrUpdateInterceptorsByTag({DOMError: J.JavaScriptObject, MediaError: J.JavaScriptObject, MessageChannel: J.JavaScriptObject, NavigatorUserMediaError: J.JavaScriptObject, OverconstrainedError: J.JavaScriptObject, PositionError: J.JavaScriptObject, GeolocationPositionError: J.JavaScriptObject, ArrayBuffer: A.NativeByteBuffer, DataView: A.NativeTypedData, ArrayBufferView: A.NativeTypedData, Float32Array: A.NativeTypedArrayOfDouble, Float64Array: A.NativeTypedArrayOfDouble, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List, HTMLAudioElement: A.HtmlElement, HTMLBRElement: A.HtmlElement, HTMLBaseElement: A.HtmlElement, HTMLBodyElement: A.HtmlElement, HTMLButtonElement: A.HtmlElement, HTMLCanvasElement: A.HtmlElement, HTMLContentElement: A.HtmlElement, HTMLDListElement: A.HtmlElement, HTMLDataElement: A.HtmlElement, HTMLDataListElement: A.HtmlElement, HTMLDetailsElement: A.HtmlElement, HTMLDialogElement: A.HtmlElement, HTMLDivElement: A.HtmlElement, HTMLEmbedElement: A.HtmlElement, HTMLFieldSetElement: A.HtmlElement, HTMLHRElement: A.HtmlElement, HTMLHeadElement: A.HtmlElement, HTMLHeadingElement: A.HtmlElement, HTMLHtmlElement: A.HtmlElement, HTMLImageElement: A.HtmlElement, HTMLInputElement: A.HtmlElement, HTMLLIElement: A.HtmlElement, HTMLLabelElement: A.HtmlElement, HTMLLegendElement: A.HtmlElement, HTMLLinkElement: A.HtmlElement, HTMLMapElement: A.HtmlElement, HTMLMediaElement: A.HtmlElement, HTMLMenuElement: A.HtmlElement, HTMLMetaElement: A.HtmlElement, HTMLMeterElement: A.HtmlElement, HTMLModElement: A.HtmlElement, HTMLOListElement: A.HtmlElement, HTMLObjectElement: A.HtmlElement, HTMLOptGroupElement: A.HtmlElement, HTMLOptionElement: A.HtmlElement, HTMLOutputElement: A.HtmlElement, HTMLParagraphElement: A.HtmlElement, HTMLParamElement: A.HtmlElement, HTMLPictureElement: A.HtmlElement, HTMLPreElement: A.HtmlElement, HTMLProgressElement: A.HtmlElement, HTMLQuoteElement: A.HtmlElement, HTMLScriptElement: A.HtmlElement, HTMLShadowElement: A.HtmlElement, HTMLSlotElement: A.HtmlElement, HTMLSourceElement: A.HtmlElement, HTMLSpanElement: A.HtmlElement, HTMLStyleElement: A.HtmlElement, HTMLTableCaptionElement: A.HtmlElement, HTMLTableCellElement: A.HtmlElement, HTMLTableDataCellElement: A.HtmlElement, HTMLTableHeaderCellElement: A.HtmlElement, HTMLTableColElement: A.HtmlElement, HTMLTableElement: A.HtmlElement, HTMLTableRowElement: A.HtmlElement, HTMLTableSectionElement: A.HtmlElement, HTMLTemplateElement: A.HtmlElement, HTMLTextAreaElement: A.HtmlElement, HTMLTimeElement: A.HtmlElement, HTMLTitleElement: A.HtmlElement, HTMLTrackElement: A.HtmlElement, HTMLUListElement: A.HtmlElement, HTMLUnknownElement: A.HtmlElement, HTMLVideoElement: A.HtmlElement, HTMLDirectoryElement: A.HtmlElement, HTMLFontElement: A.HtmlElement, HTMLFrameElement: A.HtmlElement, HTMLFrameSetElement: A.HtmlElement, HTMLMarqueeElement: A.HtmlElement, HTMLElement: A.HtmlElement, HTMLAnchorElement: A.AnchorElement, HTMLAreaElement: A.AreaElement, Blob: A.Blob, CDATASection: A.CharacterData, CharacterData: A.CharacterData, Comment: A.CharacterData, ProcessingInstruction: A.CharacterData, Text: A.CharacterData, DOMException: A.DomException, DOMTokenList: A.DomTokenList, Element: A.Element, AbortPaymentEvent: A.Event, AnimationEvent: A.Event, AnimationPlaybackEvent: A.Event, ApplicationCacheErrorEvent: A.Event, BackgroundFetchClickEvent: A.Event, BackgroundFetchEvent: A.Event, BackgroundFetchFailEvent: A.Event, BackgroundFetchedEvent: A.Event, BeforeInstallPromptEvent: A.Event, BeforeUnloadEvent: A.Event, BlobEvent: A.Event, CanMakePaymentEvent: A.Event, ClipboardEvent: A.Event, CloseEvent: A.Event, CustomEvent: A.Event, DeviceMotionEvent: A.Event, DeviceOrientationEvent: A.Event, ErrorEvent: A.Event, ExtendableEvent: A.Event, ExtendableMessageEvent: A.Event, FetchEvent: A.Event, FontFaceSetLoadEvent: A.Event, ForeignFetchEvent: A.Event, GamepadEvent: A.Event, HashChangeEvent: A.Event, InstallEvent: A.Event, MediaEncryptedEvent: A.Event, MediaKeyMessageEvent: A.Event, MediaQueryListEvent: A.Event, MediaStreamEvent: A.Event, MediaStreamTrackEvent: A.Event, MIDIConnectionEvent: A.Event, MIDIMessageEvent: A.Event, MutationEvent: A.Event, NotificationEvent: A.Event, PageTransitionEvent: A.Event, PaymentRequestEvent: A.Event, PaymentRequestUpdateEvent: A.Event, PopStateEvent: A.Event, PresentationConnectionAvailableEvent: A.Event, PresentationConnectionCloseEvent: A.Event, ProgressEvent: A.Event, PromiseRejectionEvent: A.Event, PushEvent: A.Event, RTCDataChannelEvent: A.Event, RTCDTMFToneChangeEvent: A.Event, RTCPeerConnectionIceEvent: A.Event, RTCTrackEvent: A.Event, SecurityPolicyViolationEvent: A.Event, SensorErrorEvent: A.Event, SpeechRecognitionError: A.Event, SpeechRecognitionEvent: A.Event, SpeechSynthesisEvent: A.Event, StorageEvent: A.Event, SyncEvent: A.Event, TrackEvent: A.Event, TransitionEvent: A.Event, WebKitTransitionEvent: A.Event, VRDeviceEvent: A.Event, VRDisplayEvent: A.Event, VRSessionEvent: A.Event, MojoInterfaceRequestEvent: A.Event, ResourceProgressEvent: A.Event, USBConnectionEvent: A.Event, IDBVersionChangeEvent: A.Event, AudioProcessingEvent: A.Event, OfflineAudioCompletionEvent: A.Event, WebGLContextEvent: A.Event, Event: A.Event, InputEvent: A.Event, SubmitEvent: A.Event, WebSocket: A.EventTarget, EventTarget: A.EventTarget, File: A.File, HTMLFormElement: A.FormElement, HTMLCollection: A.HtmlCollection, HTMLFormControlsCollection: A.HtmlCollection, HTMLOptionsCollection: A.HtmlCollection, HTMLIFrameElement: A.IFrameElement, Location: A.Location, MessageEvent: A.MessageEvent, MessagePort: A.MessagePort, MouseEvent: A.MouseEvent, DragEvent: A.MouseEvent, PointerEvent: A.MouseEvent, WheelEvent: A.MouseEvent, Document: A.Node, DocumentFragment: A.Node, HTMLDocument: A.Node, ShadowRoot: A.Node, XMLDocument: A.Node, Attr: A.Node, DocumentType: A.Node, Node: A.Node, HTMLSelectElement: A.SelectElement, CompositionEvent: A.UIEvent, FocusEvent: A.UIEvent, KeyboardEvent: A.UIEvent, TextEvent: A.UIEvent, TouchEvent: A.UIEvent, UIEvent: A.UIEvent, Window: A.Window, DOMWindow: A.Window, SVGAElement: A.SvgElement, SVGAnimateElement: A.SvgElement, SVGAnimateMotionElement: A.SvgElement, SVGAnimateTransformElement: A.SvgElement, SVGAnimationElement: A.SvgElement, SVGCircleElement: A.SvgElement, SVGClipPathElement: A.SvgElement, SVGDefsElement: A.SvgElement, SVGDescElement: A.SvgElement, SVGDiscardElement: A.SvgElement, SVGEllipseElement: A.SvgElement, SVGFEBlendElement: A.SvgElement, SVGFEColorMatrixElement: A.SvgElement, SVGFEComponentTransferElement: A.SvgElement, SVGFECompositeElement: A.SvgElement, SVGFEConvolveMatrixElement: A.SvgElement, SVGFEDiffuseLightingElement: A.SvgElement, SVGFEDisplacementMapElement: A.SvgElement, SVGFEDistantLightElement: A.SvgElement, SVGFEFloodElement: A.SvgElement, SVGFEFuncAElement: A.SvgElement, SVGFEFuncBElement: A.SvgElement, SVGFEFuncGElement: A.SvgElement, SVGFEFuncRElement: A.SvgElement, SVGFEGaussianBlurElement: A.SvgElement, SVGFEImageElement: A.SvgElement, SVGFEMergeElement: A.SvgElement, SVGFEMergeNodeElement: A.SvgElement, SVGFEMorphologyElement: A.SvgElement, SVGFEOffsetElement: A.SvgElement, SVGFEPointLightElement: A.SvgElement, SVGFESpecularLightingElement: A.SvgElement, SVGFESpotLightElement: A.SvgElement, SVGFETileElement: A.SvgElement, SVGFETurbulenceElement: A.SvgElement, SVGFilterElement: A.SvgElement, SVGForeignObjectElement: A.SvgElement, SVGGElement: A.SvgElement, SVGGeometryElement: A.SvgElement, SVGGraphicsElement: A.SvgElement, SVGImageElement: A.SvgElement, SVGLineElement: A.SvgElement, SVGLinearGradientElement: A.SvgElement, SVGMarkerElement: A.SvgElement, SVGMaskElement: A.SvgElement, SVGMetadataElement: A.SvgElement, SVGPathElement: A.SvgElement, SVGPatternElement: A.SvgElement, SVGPolygonElement: A.SvgElement, SVGPolylineElement: A.SvgElement, SVGRadialGradientElement: A.SvgElement, SVGRectElement: A.SvgElement, SVGScriptElement: A.SvgElement, SVGSetElement: A.SvgElement, SVGStopElement: A.SvgElement, SVGStyleElement: A.SvgElement, SVGElement: A.SvgElement, SVGSVGElement: A.SvgElement, SVGSwitchElement: A.SvgElement, SVGSymbolElement: A.SvgElement, SVGTSpanElement: A.SvgElement, SVGTextContentElement: A.SvgElement, SVGTextElement: A.SvgElement, SVGTextPathElement: A.SvgElement, SVGTextPositioningElement: A.SvgElement, SVGTitleElement: A.SvgElement, SVGUseElement: A.SvgElement, SVGViewElement: A.SvgElement, SVGGradientElement: A.SvgElement, SVGComponentTransferFunctionElement: A.SvgElement, SVGFEDropShadowElement: A.SvgElement, SVGMPathElement: A.SvgElement});
-    hunkHelpers.setOrUpdateLeafTags({DOMError: true, MediaError: true, MessageChannel: true, NavigatorUserMediaError: true, OverconstrainedError: true, PositionError: true, GeolocationPositionError: true, ArrayBuffer: true, DataView: true, ArrayBufferView: false, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false, HTMLAudioElement: true, HTMLBRElement: true, HTMLBaseElement: true, HTMLBodyElement: true, HTMLButtonElement: true, HTMLCanvasElement: true, HTMLContentElement: true, HTMLDListElement: true, HTMLDataElement: true, HTMLDataListElement: true, HTMLDetailsElement: true, HTMLDialogElement: true, HTMLDivElement: true, HTMLEmbedElement: true, HTMLFieldSetElement: true, HTMLHRElement: true, HTMLHeadElement: true, HTMLHeadingElement: true, HTMLHtmlElement: true, HTMLImageElement: true, HTMLInputElement: true, HTMLLIElement: true, HTMLLabelElement: true, HTMLLegendElement: true, HTMLLinkElement: true, HTMLMapElement: true, HTMLMediaElement: true, HTMLMenuElement: true, HTMLMetaElement: true, HTMLMeterElement: true, HTMLModElement: true, HTMLOListElement: true, HTMLObjectElement: true, HTMLOptGroupElement: true, HTMLOptionElement: true, HTMLOutputElement: true, HTMLParagraphElement: true, HTMLParamElement: true, HTMLPictureElement: true, HTMLPreElement: true, HTMLProgressElement: true, HTMLQuoteElement: true, HTMLScriptElement: true, HTMLShadowElement: true, HTMLSlotElement: true, HTMLSourceElement: true, HTMLSpanElement: true, HTMLStyleElement: true, HTMLTableCaptionElement: true, HTMLTableCellElement: true, HTMLTableDataCellElement: true, HTMLTableHeaderCellElement: true, HTMLTableColElement: true, HTMLTableElement: true, HTMLTableRowElement: true, HTMLTableSectionElement: true, HTMLTemplateElement: true, HTMLTextAreaElement: true, HTMLTimeElement: true, HTMLTitleElement: true, HTMLTrackElement: true, HTMLUListElement: true, HTMLUnknownElement: true, HTMLVideoElement: true, HTMLDirectoryElement: true, HTMLFontElement: true, HTMLFrameElement: true, HTMLFrameSetElement: true, HTMLMarqueeElement: true, HTMLElement: false, HTMLAnchorElement: true, HTMLAreaElement: true, Blob: false, CDATASection: true, CharacterData: true, Comment: true, ProcessingInstruction: true, Text: true, DOMException: true, DOMTokenList: true, Element: false, AbortPaymentEvent: true, AnimationEvent: true, AnimationPlaybackEvent: true, ApplicationCacheErrorEvent: true, BackgroundFetchClickEvent: true, BackgroundFetchEvent: true, BackgroundFetchFailEvent: true, BackgroundFetchedEvent: true, BeforeInstallPromptEvent: true, BeforeUnloadEvent: true, BlobEvent: true, CanMakePaymentEvent: true, ClipboardEvent: true, CloseEvent: true, CustomEvent: true, DeviceMotionEvent: true, DeviceOrientationEvent: true, ErrorEvent: true, ExtendableEvent: true, ExtendableMessageEvent: true, FetchEvent: true, FontFaceSetLoadEvent: true, ForeignFetchEvent: true, GamepadEvent: true, HashChangeEvent: true, InstallEvent: true, MediaEncryptedEvent: true, MediaKeyMessageEvent: true, MediaQueryListEvent: true, MediaStreamEvent: true, MediaStreamTrackEvent: true, MIDIConnectionEvent: true, MIDIMessageEvent: true, MutationEvent: true, NotificationEvent: true, PageTransitionEvent: true, PaymentRequestEvent: true, PaymentRequestUpdateEvent: true, PopStateEvent: true, PresentationConnectionAvailableEvent: true, PresentationConnectionCloseEvent: true, ProgressEvent: true, PromiseRejectionEvent: true, PushEvent: true, RTCDataChannelEvent: true, RTCDTMFToneChangeEvent: true, RTCPeerConnectionIceEvent: true, RTCTrackEvent: true, SecurityPolicyViolationEvent: true, SensorErrorEvent: true, SpeechRecognitionError: true, SpeechRecognitionEvent: true, SpeechSynthesisEvent: true, StorageEvent: true, SyncEvent: true, TrackEvent: true, TransitionEvent: true, WebKitTransitionEvent: true, VRDeviceEvent: true, VRDisplayEvent: true, VRSessionEvent: true, MojoInterfaceRequestEvent: true, ResourceProgressEvent: true, USBConnectionEvent: true, IDBVersionChangeEvent: true, AudioProcessingEvent: true, OfflineAudioCompletionEvent: true, WebGLContextEvent: true, Event: false, InputEvent: false, SubmitEvent: false, WebSocket: true, EventTarget: false, File: true, HTMLFormElement: true, HTMLCollection: true, HTMLFormControlsCollection: true, HTMLOptionsCollection: true, HTMLIFrameElement: true, Location: true, MessageEvent: true, MessagePort: true, MouseEvent: true, DragEvent: true, PointerEvent: true, WheelEvent: true, Document: true, DocumentFragment: true, HTMLDocument: true, ShadowRoot: true, XMLDocument: true, Attr: true, DocumentType: true, Node: false, HTMLSelectElement: true, CompositionEvent: true, FocusEvent: true, KeyboardEvent: true, TextEvent: true, TouchEvent: true, UIEvent: false, Window: true, DOMWindow: true, SVGAElement: true, SVGAnimateElement: true, SVGAnimateMotionElement: true, SVGAnimateTransformElement: true, SVGAnimationElement: true, SVGCircleElement: true, SVGClipPathElement: true, SVGDefsElement: true, SVGDescElement: true, SVGDiscardElement: true, SVGEllipseElement: true, SVGFEBlendElement: true, SVGFEColorMatrixElement: true, SVGFEComponentTransferElement: true, SVGFECompositeElement: true, SVGFEConvolveMatrixElement: true, SVGFEDiffuseLightingElement: true, SVGFEDisplacementMapElement: true, SVGFEDistantLightElement: true, SVGFEFloodElement: true, SVGFEFuncAElement: true, SVGFEFuncBElement: true, SVGFEFuncGElement: true, SVGFEFuncRElement: true, SVGFEGaussianBlurElement: true, SVGFEImageElement: true, SVGFEMergeElement: true, SVGFEMergeNodeElement: true, SVGFEMorphologyElement: true, SVGFEOffsetElement: true, SVGFEPointLightElement: true, SVGFESpecularLightingElement: true, SVGFESpotLightElement: true, SVGFETileElement: true, SVGFETurbulenceElement: true, SVGFilterElement: true, SVGForeignObjectElement: true, SVGGElement: true, SVGGeometryElement: true, SVGGraphicsElement: true, SVGImageElement: true, SVGLineElement: true, SVGLinearGradientElement: true, SVGMarkerElement: true, SVGMaskElement: true, SVGMetadataElement: true, SVGPathElement: true, SVGPatternElement: true, SVGPolygonElement: true, SVGPolylineElement: true, SVGRadialGradientElement: true, SVGRectElement: true, SVGScriptElement: true, SVGSetElement: true, SVGStopElement: true, SVGStyleElement: true, SVGElement: true, SVGSVGElement: true, SVGSwitchElement: true, SVGSymbolElement: true, SVGTSpanElement: true, SVGTextContentElement: true, SVGTextElement: true, SVGTextPathElement: true, SVGTextPositioningElement: true, SVGTitleElement: true, SVGUseElement: true, SVGViewElement: true, SVGGradientElement: true, SVGComponentTransferFunctionElement: true, SVGFEDropShadowElement: true, SVGMPathElement: true});
+    hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer: J.Interceptor, WebGL: J.Interceptor, AbortPaymentEvent: J.JavaScriptObject, AnimationEffectReadOnly: J.JavaScriptObject, AnimationEffectTiming: J.JavaScriptObject, AnimationEffectTimingReadOnly: J.JavaScriptObject, AnimationEvent: J.JavaScriptObject, AnimationPlaybackEvent: J.JavaScriptObject, AnimationTimeline: J.JavaScriptObject, AnimationWorkletGlobalScope: J.JavaScriptObject, ApplicationCacheErrorEvent: J.JavaScriptObject, AuthenticatorAssertionResponse: J.JavaScriptObject, AuthenticatorAttestationResponse: J.JavaScriptObject, AuthenticatorResponse: J.JavaScriptObject, BackgroundFetchClickEvent: J.JavaScriptObject, BackgroundFetchEvent: J.JavaScriptObject, BackgroundFetchFailEvent: J.JavaScriptObject, BackgroundFetchFetch: J.JavaScriptObject, BackgroundFetchManager: J.JavaScriptObject, BackgroundFetchSettledFetch: J.JavaScriptObject, BackgroundFetchedEvent: J.JavaScriptObject, BarProp: J.JavaScriptObject, BarcodeDetector: J.JavaScriptObject, BeforeInstallPromptEvent: J.JavaScriptObject, BeforeUnloadEvent: J.JavaScriptObject, BlobEvent: J.JavaScriptObject, BluetoothRemoteGATTDescriptor: J.JavaScriptObject, Body: J.JavaScriptObject, BudgetState: J.JavaScriptObject, CacheStorage: J.JavaScriptObject, CanMakePaymentEvent: J.JavaScriptObject, CanvasGradient: J.JavaScriptObject, CanvasPattern: J.JavaScriptObject, CanvasRenderingContext2D: J.JavaScriptObject, Client: J.JavaScriptObject, Clients: J.JavaScriptObject, ClipboardEvent: J.JavaScriptObject, CloseEvent: J.JavaScriptObject, CompositionEvent: J.JavaScriptObject, CookieStore: J.JavaScriptObject, Coordinates: J.JavaScriptObject, Credential: J.JavaScriptObject, CredentialUserData: J.JavaScriptObject, CredentialsContainer: J.JavaScriptObject, Crypto: J.JavaScriptObject, CryptoKey: J.JavaScriptObject, CSS: J.JavaScriptObject, CSSVariableReferenceValue: J.JavaScriptObject, CustomElementRegistry: J.JavaScriptObject, CustomEvent: J.JavaScriptObject, DataTransfer: J.JavaScriptObject, DataTransferItem: J.JavaScriptObject, DeprecatedStorageInfo: J.JavaScriptObject, DeprecatedStorageQuota: J.JavaScriptObject, DeprecationReport: J.JavaScriptObject, DetectedBarcode: J.JavaScriptObject, DetectedFace: J.JavaScriptObject, DetectedText: J.JavaScriptObject, DeviceAcceleration: J.JavaScriptObject, DeviceMotionEvent: J.JavaScriptObject, DeviceOrientationEvent: J.JavaScriptObject, DeviceRotationRate: J.JavaScriptObject, DirectoryEntry: J.JavaScriptObject, webkitFileSystemDirectoryEntry: J.JavaScriptObject, FileSystemDirectoryEntry: J.JavaScriptObject, DirectoryReader: J.JavaScriptObject, WebKitDirectoryReader: J.JavaScriptObject, webkitFileSystemDirectoryReader: J.JavaScriptObject, FileSystemDirectoryReader: J.JavaScriptObject, DocumentOrShadowRoot: J.JavaScriptObject, DocumentTimeline: J.JavaScriptObject, DOMError: J.JavaScriptObject, DOMImplementation: J.JavaScriptObject, Iterator: J.JavaScriptObject, DOMMatrix: J.JavaScriptObject, DOMMatrixReadOnly: J.JavaScriptObject, DOMParser: J.JavaScriptObject, DOMPoint: J.JavaScriptObject, DOMPointReadOnly: J.JavaScriptObject, DOMQuad: J.JavaScriptObject, DOMStringMap: J.JavaScriptObject, Entry: J.JavaScriptObject, webkitFileSystemEntry: J.JavaScriptObject, FileSystemEntry: J.JavaScriptObject, ErrorEvent: J.JavaScriptObject, Event: J.JavaScriptObject, InputEvent: J.JavaScriptObject, SubmitEvent: J.JavaScriptObject, ExtendableEvent: J.JavaScriptObject, ExtendableMessageEvent: J.JavaScriptObject, External: J.JavaScriptObject, FaceDetector: J.JavaScriptObject, FederatedCredential: J.JavaScriptObject, FetchEvent: J.JavaScriptObject, FileEntry: J.JavaScriptObject, webkitFileSystemFileEntry: J.JavaScriptObject, FileSystemFileEntry: J.JavaScriptObject, DOMFileSystem: J.JavaScriptObject, WebKitFileSystem: J.JavaScriptObject, webkitFileSystem: J.JavaScriptObject, FileSystem: J.JavaScriptObject, FocusEvent: J.JavaScriptObject, FontFace: J.JavaScriptObject, FontFaceSetLoadEvent: J.JavaScriptObject, FontFaceSource: J.JavaScriptObject, ForeignFetchEvent: J.JavaScriptObject, FormData: J.JavaScriptObject, GamepadButton: J.JavaScriptObject, GamepadEvent: J.JavaScriptObject, GamepadPose: J.JavaScriptObject, Geolocation: J.JavaScriptObject, Position: J.JavaScriptObject, GeolocationPosition: J.JavaScriptObject, HashChangeEvent: J.JavaScriptObject, Headers: J.JavaScriptObject, HTMLHyperlinkElementUtils: J.JavaScriptObject, IdleDeadline: J.JavaScriptObject, ImageBitmap: J.JavaScriptObject, ImageBitmapRenderingContext: J.JavaScriptObject, ImageCapture: J.JavaScriptObject, ImageData: J.JavaScriptObject, InputDeviceCapabilities: J.JavaScriptObject, InstallEvent: J.JavaScriptObject, IntersectionObserver: J.JavaScriptObject, IntersectionObserverEntry: J.JavaScriptObject, InterventionReport: J.JavaScriptObject, KeyboardEvent: J.JavaScriptObject, KeyframeEffect: J.JavaScriptObject, KeyframeEffectReadOnly: J.JavaScriptObject, MediaCapabilities: J.JavaScriptObject, MediaCapabilitiesInfo: J.JavaScriptObject, MediaDeviceInfo: J.JavaScriptObject, MediaEncryptedEvent: J.JavaScriptObject, MediaError: J.JavaScriptObject, MediaKeyMessageEvent: J.JavaScriptObject, MediaKeyStatusMap: J.JavaScriptObject, MediaKeySystemAccess: J.JavaScriptObject, MediaKeys: J.JavaScriptObject, MediaKeysPolicy: J.JavaScriptObject, MediaMetadata: J.JavaScriptObject, MediaQueryListEvent: J.JavaScriptObject, MediaSession: J.JavaScriptObject, MediaSettingsRange: J.JavaScriptObject, MediaStreamEvent: J.JavaScriptObject, MediaStreamTrackEvent: J.JavaScriptObject, MemoryInfo: J.JavaScriptObject, MessageChannel: J.JavaScriptObject, MessageEvent: J.JavaScriptObject, Metadata: J.JavaScriptObject, MIDIConnectionEvent: J.JavaScriptObject, MIDIMessageEvent: J.JavaScriptObject, MouseEvent: J.JavaScriptObject, DragEvent: J.JavaScriptObject, MutationEvent: J.JavaScriptObject, MutationObserver: J.JavaScriptObject, WebKitMutationObserver: J.JavaScriptObject, MutationRecord: J.JavaScriptObject, NavigationPreloadManager: J.JavaScriptObject, Navigator: J.JavaScriptObject, NavigatorAutomationInformation: J.JavaScriptObject, NavigatorConcurrentHardware: J.JavaScriptObject, NavigatorCookies: J.JavaScriptObject, NavigatorUserMediaError: J.JavaScriptObject, NodeFilter: J.JavaScriptObject, NodeIterator: J.JavaScriptObject, NonDocumentTypeChildNode: J.JavaScriptObject, NonElementParentNode: J.JavaScriptObject, NoncedElement: J.JavaScriptObject, NotificationEvent: J.JavaScriptObject, OffscreenCanvasRenderingContext2D: J.JavaScriptObject, OverconstrainedError: J.JavaScriptObject, PageTransitionEvent: J.JavaScriptObject, PaintRenderingContext2D: J.JavaScriptObject, PaintSize: J.JavaScriptObject, PaintWorkletGlobalScope: J.JavaScriptObject, PasswordCredential: J.JavaScriptObject, Path2D: J.JavaScriptObject, PaymentAddress: J.JavaScriptObject, PaymentInstruments: J.JavaScriptObject, PaymentManager: J.JavaScriptObject, PaymentRequestEvent: J.JavaScriptObject, PaymentRequestUpdateEvent: J.JavaScriptObject, PaymentResponse: J.JavaScriptObject, PerformanceEntry: J.JavaScriptObject, PerformanceLongTaskTiming: J.JavaScriptObject, PerformanceMark: J.JavaScriptObject, PerformanceMeasure: J.JavaScriptObject, PerformanceNavigation: J.JavaScriptObject, PerformanceNavigationTiming: J.JavaScriptObject, PerformanceObserver: J.JavaScriptObject, PerformanceObserverEntryList: J.JavaScriptObject, PerformancePaintTiming: J.JavaScriptObject, PerformanceResourceTiming: J.JavaScriptObject, PerformanceServerTiming: J.JavaScriptObject, PerformanceTiming: J.JavaScriptObject, Permissions: J.JavaScriptObject, PhotoCapabilities: J.JavaScriptObject, PointerEvent: J.JavaScriptObject, PopStateEvent: J.JavaScriptObject, PositionError: J.JavaScriptObject, GeolocationPositionError: J.JavaScriptObject, Presentation: J.JavaScriptObject, PresentationConnectionAvailableEvent: J.JavaScriptObject, PresentationConnectionCloseEvent: J.JavaScriptObject, PresentationReceiver: J.JavaScriptObject, ProgressEvent: J.JavaScriptObject, PromiseRejectionEvent: J.JavaScriptObject, PublicKeyCredential: J.JavaScriptObject, PushEvent: J.JavaScriptObject, PushManager: J.JavaScriptObject, PushMessageData: J.JavaScriptObject, PushSubscription: J.JavaScriptObject, PushSubscriptionOptions: J.JavaScriptObject, Range: J.JavaScriptObject, RelatedApplication: J.JavaScriptObject, ReportBody: J.JavaScriptObject, ReportingObserver: J.JavaScriptObject, ResizeObserver: J.JavaScriptObject, ResizeObserverEntry: J.JavaScriptObject, RTCCertificate: J.JavaScriptObject, RTCDataChannelEvent: J.JavaScriptObject, RTCDTMFToneChangeEvent: J.JavaScriptObject, RTCIceCandidate: J.JavaScriptObject, mozRTCIceCandidate: J.JavaScriptObject, RTCLegacyStatsReport: J.JavaScriptObject, RTCPeerConnectionIceEvent: J.JavaScriptObject, RTCRtpContributingSource: J.JavaScriptObject, RTCRtpReceiver: J.JavaScriptObject, RTCRtpSender: J.JavaScriptObject, RTCSessionDescription: J.JavaScriptObject, mozRTCSessionDescription: J.JavaScriptObject, RTCStatsResponse: J.JavaScriptObject, RTCTrackEvent: J.JavaScriptObject, Screen: J.JavaScriptObject, ScrollState: J.JavaScriptObject, ScrollTimeline: J.JavaScriptObject, SecurityPolicyViolationEvent: J.JavaScriptObject, Selection: J.JavaScriptObject, SensorErrorEvent: J.JavaScriptObject, SharedArrayBuffer: J.JavaScriptObject, SpeechRecognitionAlternative: J.JavaScriptObject, SpeechRecognitionError: J.JavaScriptObject, SpeechRecognitionEvent: J.JavaScriptObject, SpeechSynthesisEvent: J.JavaScriptObject, SpeechSynthesisVoice: J.JavaScriptObject, StaticRange: J.JavaScriptObject, StorageEvent: J.JavaScriptObject, StorageManager: J.JavaScriptObject, StyleMedia: J.JavaScriptObject, StylePropertyMap: J.JavaScriptObject, StylePropertyMapReadonly: J.JavaScriptObject, SyncEvent: J.JavaScriptObject, SyncManager: J.JavaScriptObject, TaskAttributionTiming: J.JavaScriptObject, TextDetector: J.JavaScriptObject, TextEvent: J.JavaScriptObject, TextMetrics: J.JavaScriptObject, TouchEvent: J.JavaScriptObject, TrackDefault: J.JavaScriptObject, TrackEvent: J.JavaScriptObject, TransitionEvent: J.JavaScriptObject, WebKitTransitionEvent: J.JavaScriptObject, TreeWalker: J.JavaScriptObject, TrustedHTML: J.JavaScriptObject, TrustedScriptURL: J.JavaScriptObject, TrustedURL: J.JavaScriptObject, UIEvent: J.JavaScriptObject, UnderlyingSourceBase: J.JavaScriptObject, URLSearchParams: J.JavaScriptObject, VRCoordinateSystem: J.JavaScriptObject, VRDeviceEvent: J.JavaScriptObject, VRDisplayCapabilities: J.JavaScriptObject, VRDisplayEvent: J.JavaScriptObject, VREyeParameters: J.JavaScriptObject, VRFrameData: J.JavaScriptObject, VRFrameOfReference: J.JavaScriptObject, VRPose: J.JavaScriptObject, VRSessionEvent: J.JavaScriptObject, VRStageBounds: J.JavaScriptObject, VRStageBoundsPoint: J.JavaScriptObject, VRStageParameters: J.JavaScriptObject, ValidityState: J.JavaScriptObject, VideoPlaybackQuality: J.JavaScriptObject, VideoTrack: J.JavaScriptObject, VTTRegion: J.JavaScriptObject, WheelEvent: J.JavaScriptObject, WindowClient: J.JavaScriptObject, WorkletAnimation: J.JavaScriptObject, WorkletGlobalScope: J.JavaScriptObject, XPathEvaluator: J.JavaScriptObject, XPathExpression: J.JavaScriptObject, XPathNSResolver: J.JavaScriptObject, XPathResult: J.JavaScriptObject, XMLSerializer: J.JavaScriptObject, XSLTProcessor: J.JavaScriptObject, Bluetooth: J.JavaScriptObject, BluetoothCharacteristicProperties: J.JavaScriptObject, BluetoothRemoteGATTServer: J.JavaScriptObject, BluetoothRemoteGATTService: J.JavaScriptObject, BluetoothUUID: J.JavaScriptObject, BudgetService: J.JavaScriptObject, Cache: J.JavaScriptObject, DOMFileSystemSync: J.JavaScriptObject, DirectoryEntrySync: J.JavaScriptObject, DirectoryReaderSync: J.JavaScriptObject, EntrySync: J.JavaScriptObject, FileEntrySync: J.JavaScriptObject, FileReaderSync: J.JavaScriptObject, FileWriterSync: J.JavaScriptObject, HTMLAllCollection: J.JavaScriptObject, Mojo: J.JavaScriptObject, MojoHandle: J.JavaScriptObject, MojoInterfaceRequestEvent: J.JavaScriptObject, MojoWatcher: J.JavaScriptObject, NFC: J.JavaScriptObject, PagePopupController: J.JavaScriptObject, Report: J.JavaScriptObject, Request: J.JavaScriptObject, ResourceProgressEvent: J.JavaScriptObject, Response: J.JavaScriptObject, SubtleCrypto: J.JavaScriptObject, USBAlternateInterface: J.JavaScriptObject, USBConfiguration: J.JavaScriptObject, USBConnectionEvent: J.JavaScriptObject, USBDevice: J.JavaScriptObject, USBEndpoint: J.JavaScriptObject, USBInTransferResult: J.JavaScriptObject, USBInterface: J.JavaScriptObject, USBIsochronousInTransferPacket: J.JavaScriptObject, USBIsochronousInTransferResult: J.JavaScriptObject, USBIsochronousOutTransferPacket: J.JavaScriptObject, USBIsochronousOutTransferResult: J.JavaScriptObject, USBOutTransferResult: J.JavaScriptObject, WorkerLocation: J.JavaScriptObject, WorkerNavigator: J.JavaScriptObject, Worklet: J.JavaScriptObject, IDBCursor: J.JavaScriptObject, IDBCursorWithValue: J.JavaScriptObject, IDBFactory: J.JavaScriptObject, IDBIndex: J.JavaScriptObject, IDBKeyRange: J.JavaScriptObject, IDBObjectStore: J.JavaScriptObject, IDBObservation: J.JavaScriptObject, IDBObserver: J.JavaScriptObject, IDBObserverChanges: J.JavaScriptObject, IDBVersionChangeEvent: J.JavaScriptObject, SVGAngle: J.JavaScriptObject, SVGAnimatedAngle: J.JavaScriptObject, SVGAnimatedBoolean: J.JavaScriptObject, SVGAnimatedEnumeration: J.JavaScriptObject, SVGAnimatedInteger: J.JavaScriptObject, SVGAnimatedLength: J.JavaScriptObject, SVGAnimatedLengthList: J.JavaScriptObject, SVGAnimatedNumber: J.JavaScriptObject, SVGAnimatedNumberList: J.JavaScriptObject, SVGAnimatedPreserveAspectRatio: J.JavaScriptObject, SVGAnimatedRect: J.JavaScriptObject, SVGAnimatedString: J.JavaScriptObject, SVGAnimatedTransformList: J.JavaScriptObject, SVGMatrix: J.JavaScriptObject, SVGPoint: J.JavaScriptObject, SVGPreserveAspectRatio: J.JavaScriptObject, SVGRect: J.JavaScriptObject, SVGUnitTypes: J.JavaScriptObject, AudioListener: J.JavaScriptObject, AudioParam: J.JavaScriptObject, AudioProcessingEvent: J.JavaScriptObject, AudioTrack: J.JavaScriptObject, AudioWorkletGlobalScope: J.JavaScriptObject, AudioWorkletProcessor: J.JavaScriptObject, OfflineAudioCompletionEvent: J.JavaScriptObject, PeriodicWave: J.JavaScriptObject, WebGLActiveInfo: J.JavaScriptObject, ANGLEInstancedArrays: J.JavaScriptObject, ANGLE_instanced_arrays: J.JavaScriptObject, WebGLBuffer: J.JavaScriptObject, WebGLCanvas: J.JavaScriptObject, WebGLColorBufferFloat: J.JavaScriptObject, WebGLCompressedTextureASTC: J.JavaScriptObject, WebGLCompressedTextureATC: J.JavaScriptObject, WEBGL_compressed_texture_atc: J.JavaScriptObject, WebGLCompressedTextureETC1: J.JavaScriptObject, WEBGL_compressed_texture_etc1: J.JavaScriptObject, WebGLCompressedTextureETC: J.JavaScriptObject, WebGLCompressedTexturePVRTC: J.JavaScriptObject, WEBGL_compressed_texture_pvrtc: J.JavaScriptObject, WebGLCompressedTextureS3TC: J.JavaScriptObject, WEBGL_compressed_texture_s3tc: J.JavaScriptObject, WebGLCompressedTextureS3TCsRGB: J.JavaScriptObject, WebGLContextEvent: J.JavaScriptObject, WebGLDebugRendererInfo: J.JavaScriptObject, WEBGL_debug_renderer_info: J.JavaScriptObject, WebGLDebugShaders: J.JavaScriptObject, WEBGL_debug_shaders: J.JavaScriptObject, WebGLDepthTexture: J.JavaScriptObject, WEBGL_depth_texture: J.JavaScriptObject, WebGLDrawBuffers: J.JavaScriptObject, WEBGL_draw_buffers: J.JavaScriptObject, EXTsRGB: J.JavaScriptObject, EXT_sRGB: J.JavaScriptObject, EXTBlendMinMax: J.JavaScriptObject, EXT_blend_minmax: J.JavaScriptObject, EXTColorBufferFloat: J.JavaScriptObject, EXTColorBufferHalfFloat: J.JavaScriptObject, EXTDisjointTimerQuery: J.JavaScriptObject, EXTDisjointTimerQueryWebGL2: J.JavaScriptObject, EXTFragDepth: J.JavaScriptObject, EXT_frag_depth: J.JavaScriptObject, EXTShaderTextureLOD: J.JavaScriptObject, EXT_shader_texture_lod: J.JavaScriptObject, EXTTextureFilterAnisotropic: J.JavaScriptObject, EXT_texture_filter_anisotropic: J.JavaScriptObject, WebGLFramebuffer: J.JavaScriptObject, WebGLGetBufferSubDataAsync: J.JavaScriptObject, WebGLLoseContext: J.JavaScriptObject, WebGLExtensionLoseContext: J.JavaScriptObject, WEBGL_lose_context: J.JavaScriptObject, OESElementIndexUint: J.JavaScriptObject, OES_element_index_uint: J.JavaScriptObject, OESStandardDerivatives: J.JavaScriptObject, OES_standard_derivatives: J.JavaScriptObject, OESTextureFloat: J.JavaScriptObject, OES_texture_float: J.JavaScriptObject, OESTextureFloatLinear: J.JavaScriptObject, OES_texture_float_linear: J.JavaScriptObject, OESTextureHalfFloat: J.JavaScriptObject, OES_texture_half_float: J.JavaScriptObject, OESTextureHalfFloatLinear: J.JavaScriptObject, OES_texture_half_float_linear: J.JavaScriptObject, OESVertexArrayObject: J.JavaScriptObject, OES_vertex_array_object: J.JavaScriptObject, WebGLProgram: J.JavaScriptObject, WebGLQuery: J.JavaScriptObject, WebGLRenderbuffer: J.JavaScriptObject, WebGLRenderingContext: J.JavaScriptObject, WebGL2RenderingContext: J.JavaScriptObject, WebGLSampler: J.JavaScriptObject, WebGLShader: J.JavaScriptObject, WebGLShaderPrecisionFormat: J.JavaScriptObject, WebGLSync: J.JavaScriptObject, WebGLTexture: J.JavaScriptObject, WebGLTimerQueryEXT: J.JavaScriptObject, WebGLTransformFeedback: J.JavaScriptObject, WebGLUniformLocation: J.JavaScriptObject, WebGLVertexArrayObject: J.JavaScriptObject, WebGLVertexArrayObjectOES: J.JavaScriptObject, WebGL2RenderingContextBase: J.JavaScriptObject, DataView: A.NativeTypedData, ArrayBufferView: A.NativeTypedData, Float32Array: A.NativeTypedArrayOfDouble, Float64Array: A.NativeTypedArrayOfDouble, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List, HTMLAudioElement: A.HtmlElement, HTMLBRElement: A.HtmlElement, HTMLBaseElement: A.HtmlElement, HTMLBodyElement: A.HtmlElement, HTMLButtonElement: A.HtmlElement, HTMLCanvasElement: A.HtmlElement, HTMLContentElement: A.HtmlElement, HTMLDListElement: A.HtmlElement, HTMLDataElement: A.HtmlElement, HTMLDataListElement: A.HtmlElement, HTMLDetailsElement: A.HtmlElement, HTMLDialogElement: A.HtmlElement, HTMLDivElement: A.HtmlElement, HTMLEmbedElement: A.HtmlElement, HTMLFieldSetElement: A.HtmlElement, HTMLHRElement: A.HtmlElement, HTMLHeadElement: A.HtmlElement, HTMLHeadingElement: A.HtmlElement, HTMLHtmlElement: A.HtmlElement, HTMLIFrameElement: A.HtmlElement, HTMLImageElement: A.HtmlElement, HTMLInputElement: A.HtmlElement, HTMLLIElement: A.HtmlElement, HTMLLabelElement: A.HtmlElement, HTMLLegendElement: A.HtmlElement, HTMLLinkElement: A.HtmlElement, HTMLMapElement: A.HtmlElement, HTMLMediaElement: A.HtmlElement, HTMLMenuElement: A.HtmlElement, HTMLMetaElement: A.HtmlElement, HTMLMeterElement: A.HtmlElement, HTMLModElement: A.HtmlElement, HTMLOListElement: A.HtmlElement, HTMLObjectElement: A.HtmlElement, HTMLOptGroupElement: A.HtmlElement, HTMLOptionElement: A.HtmlElement, HTMLOutputElement: A.HtmlElement, HTMLParagraphElement: A.HtmlElement, HTMLParamElement: A.HtmlElement, HTMLPictureElement: A.HtmlElement, HTMLPreElement: A.HtmlElement, HTMLProgressElement: A.HtmlElement, HTMLQuoteElement: A.HtmlElement, HTMLScriptElement: A.HtmlElement, HTMLShadowElement: A.HtmlElement, HTMLSlotElement: A.HtmlElement, HTMLSourceElement: A.HtmlElement, HTMLSpanElement: A.HtmlElement, HTMLStyleElement: A.HtmlElement, HTMLTableCaptionElement: A.HtmlElement, HTMLTableCellElement: A.HtmlElement, HTMLTableDataCellElement: A.HtmlElement, HTMLTableHeaderCellElement: A.HtmlElement, HTMLTableColElement: A.HtmlElement, HTMLTableElement: A.HtmlElement, HTMLTableRowElement: A.HtmlElement, HTMLTableSectionElement: A.HtmlElement, HTMLTemplateElement: A.HtmlElement, HTMLTextAreaElement: A.HtmlElement, HTMLTimeElement: A.HtmlElement, HTMLTitleElement: A.HtmlElement, HTMLTrackElement: A.HtmlElement, HTMLUListElement: A.HtmlElement, HTMLUnknownElement: A.HtmlElement, HTMLVideoElement: A.HtmlElement, HTMLDirectoryElement: A.HtmlElement, HTMLFontElement: A.HtmlElement, HTMLFrameElement: A.HtmlElement, HTMLFrameSetElement: A.HtmlElement, HTMLMarqueeElement: A.HtmlElement, HTMLElement: A.HtmlElement, AccessibleNodeList: A.AccessibleNodeList, HTMLAnchorElement: A.AnchorElement, HTMLAreaElement: A.AreaElement, Blob: A.Blob, CDATASection: A.CharacterData, CharacterData: A.CharacterData, Comment: A.CharacterData, ProcessingInstruction: A.CharacterData, Text: A.CharacterData, CSSPerspective: A.CssPerspective, CSSCharsetRule: A.CssRule, CSSConditionRule: A.CssRule, CSSFontFaceRule: A.CssRule, CSSGroupingRule: A.CssRule, CSSImportRule: A.CssRule, CSSKeyframeRule: A.CssRule, MozCSSKeyframeRule: A.CssRule, WebKitCSSKeyframeRule: A.CssRule, CSSKeyframesRule: A.CssRule, MozCSSKeyframesRule: A.CssRule, WebKitCSSKeyframesRule: A.CssRule, CSSMediaRule: A.CssRule, CSSNamespaceRule: A.CssRule, CSSPageRule: A.CssRule, CSSRule: A.CssRule, CSSStyleRule: A.CssRule, CSSSupportsRule: A.CssRule, CSSViewportRule: A.CssRule, CSSStyleDeclaration: A.CssStyleDeclaration, MSStyleCSSProperties: A.CssStyleDeclaration, CSS2Properties: A.CssStyleDeclaration, CSSImageValue: A.CssStyleValue, CSSKeywordValue: A.CssStyleValue, CSSNumericValue: A.CssStyleValue, CSSPositionValue: A.CssStyleValue, CSSResourceValue: A.CssStyleValue, CSSUnitValue: A.CssStyleValue, CSSURLImageValue: A.CssStyleValue, CSSStyleValue: A.CssStyleValue, CSSMatrixComponent: A.CssTransformComponent, CSSRotation: A.CssTransformComponent, CSSScale: A.CssTransformComponent, CSSSkew: A.CssTransformComponent, CSSTranslation: A.CssTransformComponent, CSSTransformComponent: A.CssTransformComponent, CSSTransformValue: A.CssTransformValue, CSSUnparsedValue: A.CssUnparsedValue, DataTransferItemList: A.DataTransferItemList, DOMException: A.DomException, ClientRectList: A.DomRectList, DOMRectList: A.DomRectList, DOMRectReadOnly: A.DomRectReadOnly, DOMStringList: A.DomStringList, DOMTokenList: A.DomTokenList, MathMLElement: A.Element, SVGAElement: A.Element, SVGAnimateElement: A.Element, SVGAnimateMotionElement: A.Element, SVGAnimateTransformElement: A.Element, SVGAnimationElement: A.Element, SVGCircleElement: A.Element, SVGClipPathElement: A.Element, SVGDefsElement: A.Element, SVGDescElement: A.Element, SVGDiscardElement: A.Element, SVGEllipseElement: A.Element, SVGFEBlendElement: A.Element, SVGFEColorMatrixElement: A.Element, SVGFEComponentTransferElement: A.Element, SVGFECompositeElement: A.Element, SVGFEConvolveMatrixElement: A.Element, SVGFEDiffuseLightingElement: A.Element, SVGFEDisplacementMapElement: A.Element, SVGFEDistantLightElement: A.Element, SVGFEFloodElement: A.Element, SVGFEFuncAElement: A.Element, SVGFEFuncBElement: A.Element, SVGFEFuncGElement: A.Element, SVGFEFuncRElement: A.Element, SVGFEGaussianBlurElement: A.Element, SVGFEImageElement: A.Element, SVGFEMergeElement: A.Element, SVGFEMergeNodeElement: A.Element, SVGFEMorphologyElement: A.Element, SVGFEOffsetElement: A.Element, SVGFEPointLightElement: A.Element, SVGFESpecularLightingElement: A.Element, SVGFESpotLightElement: A.Element, SVGFETileElement: A.Element, SVGFETurbulenceElement: A.Element, SVGFilterElement: A.Element, SVGForeignObjectElement: A.Element, SVGGElement: A.Element, SVGGeometryElement: A.Element, SVGGraphicsElement: A.Element, SVGImageElement: A.Element, SVGLineElement: A.Element, SVGLinearGradientElement: A.Element, SVGMarkerElement: A.Element, SVGMaskElement: A.Element, SVGMetadataElement: A.Element, SVGPathElement: A.Element, SVGPatternElement: A.Element, SVGPolygonElement: A.Element, SVGPolylineElement: A.Element, SVGRadialGradientElement: A.Element, SVGRectElement: A.Element, SVGScriptElement: A.Element, SVGSetElement: A.Element, SVGStopElement: A.Element, SVGStyleElement: A.Element, SVGElement: A.Element, SVGSVGElement: A.Element, SVGSwitchElement: A.Element, SVGSymbolElement: A.Element, SVGTSpanElement: A.Element, SVGTextContentElement: A.Element, SVGTextElement: A.Element, SVGTextPathElement: A.Element, SVGTextPositioningElement: A.Element, SVGTitleElement: A.Element, SVGUseElement: A.Element, SVGViewElement: A.Element, SVGGradientElement: A.Element, SVGComponentTransferFunctionElement: A.Element, SVGFEDropShadowElement: A.Element, SVGMPathElement: A.Element, Element: A.Element, AbsoluteOrientationSensor: A.EventTarget, Accelerometer: A.EventTarget, AccessibleNode: A.EventTarget, AmbientLightSensor: A.EventTarget, Animation: A.EventTarget, ApplicationCache: A.EventTarget, DOMApplicationCache: A.EventTarget, OfflineResourceList: A.EventTarget, BackgroundFetchRegistration: A.EventTarget, BatteryManager: A.EventTarget, BroadcastChannel: A.EventTarget, CanvasCaptureMediaStreamTrack: A.EventTarget, DedicatedWorkerGlobalScope: A.EventTarget, EventSource: A.EventTarget, FileReader: A.EventTarget, FontFaceSet: A.EventTarget, Gyroscope: A.EventTarget, XMLHttpRequest: A.EventTarget, XMLHttpRequestEventTarget: A.EventTarget, XMLHttpRequestUpload: A.EventTarget, LinearAccelerationSensor: A.EventTarget, Magnetometer: A.EventTarget, MediaDevices: A.EventTarget, MediaKeySession: A.EventTarget, MediaQueryList: A.EventTarget, MediaRecorder: A.EventTarget, MediaSource: A.EventTarget, MediaStream: A.EventTarget, MediaStreamTrack: A.EventTarget, MessagePort: A.EventTarget, MIDIAccess: A.EventTarget, MIDIInput: A.EventTarget, MIDIOutput: A.EventTarget, MIDIPort: A.EventTarget, NetworkInformation: A.EventTarget, Notification: A.EventTarget, OffscreenCanvas: A.EventTarget, OrientationSensor: A.EventTarget, PaymentRequest: A.EventTarget, Performance: A.EventTarget, PermissionStatus: A.EventTarget, PresentationAvailability: A.EventTarget, PresentationConnection: A.EventTarget, PresentationConnectionList: A.EventTarget, PresentationRequest: A.EventTarget, RelativeOrientationSensor: A.EventTarget, RemotePlayback: A.EventTarget, RTCDataChannel: A.EventTarget, DataChannel: A.EventTarget, RTCDTMFSender: A.EventTarget, RTCPeerConnection: A.EventTarget, webkitRTCPeerConnection: A.EventTarget, mozRTCPeerConnection: A.EventTarget, ScreenOrientation: A.EventTarget, Sensor: A.EventTarget, ServiceWorker: A.EventTarget, ServiceWorkerContainer: A.EventTarget, ServiceWorkerGlobalScope: A.EventTarget, ServiceWorkerRegistration: A.EventTarget, SharedWorker: A.EventTarget, SharedWorkerGlobalScope: A.EventTarget, SpeechRecognition: A.EventTarget, SpeechSynthesis: A.EventTarget, SpeechSynthesisUtterance: A.EventTarget, VR: A.EventTarget, VRDevice: A.EventTarget, VRDisplay: A.EventTarget, VRSession: A.EventTarget, VisualViewport: A.EventTarget, WebSocket: A.EventTarget, Window: A.EventTarget, DOMWindow: A.EventTarget, Worker: A.EventTarget, WorkerGlobalScope: A.EventTarget, WorkerPerformance: A.EventTarget, BluetoothDevice: A.EventTarget, BluetoothRemoteGATTCharacteristic: A.EventTarget, Clipboard: A.EventTarget, MojoInterfaceInterceptor: A.EventTarget, USB: A.EventTarget, IDBDatabase: A.EventTarget, IDBOpenDBRequest: A.EventTarget, IDBVersionChangeRequest: A.EventTarget, IDBRequest: A.EventTarget, IDBTransaction: A.EventTarget, AnalyserNode: A.EventTarget, RealtimeAnalyserNode: A.EventTarget, AudioBufferSourceNode: A.EventTarget, AudioDestinationNode: A.EventTarget, AudioNode: A.EventTarget, AudioScheduledSourceNode: A.EventTarget, AudioWorkletNode: A.EventTarget, BiquadFilterNode: A.EventTarget, ChannelMergerNode: A.EventTarget, AudioChannelMerger: A.EventTarget, ChannelSplitterNode: A.EventTarget, AudioChannelSplitter: A.EventTarget, ConstantSourceNode: A.EventTarget, ConvolverNode: A.EventTarget, DelayNode: A.EventTarget, DynamicsCompressorNode: A.EventTarget, GainNode: A.EventTarget, AudioGainNode: A.EventTarget, IIRFilterNode: A.EventTarget, MediaElementAudioSourceNode: A.EventTarget, MediaStreamAudioDestinationNode: A.EventTarget, MediaStreamAudioSourceNode: A.EventTarget, OscillatorNode: A.EventTarget, Oscillator: A.EventTarget, PannerNode: A.EventTarget, AudioPannerNode: A.EventTarget, webkitAudioPannerNode: A.EventTarget, ScriptProcessorNode: A.EventTarget, JavaScriptAudioNode: A.EventTarget, StereoPannerNode: A.EventTarget, WaveShaperNode: A.EventTarget, EventTarget: A.EventTarget, File: A.File, FileList: A.FileList, FileWriter: A.FileWriter, HTMLFormElement: A.FormElement, Gamepad: A.Gamepad, History: A.History, HTMLCollection: A.HtmlCollection, HTMLFormControlsCollection: A.HtmlCollection, HTMLOptionsCollection: A.HtmlCollection, Location: A.Location, MediaList: A.MediaList, MIDIInputMap: A.MidiInputMap, MIDIOutputMap: A.MidiOutputMap, MimeType: A.MimeType, MimeTypeArray: A.MimeTypeArray, Document: A.Node, DocumentFragment: A.Node, HTMLDocument: A.Node, ShadowRoot: A.Node, XMLDocument: A.Node, Attr: A.Node, DocumentType: A.Node, Node: A.Node, NodeList: A.NodeList, RadioNodeList: A.NodeList, Plugin: A.Plugin, PluginArray: A.PluginArray, RTCStatsReport: A.RtcStatsReport, HTMLSelectElement: A.SelectElement, SourceBuffer: A.SourceBuffer, SourceBufferList: A.SourceBufferList, SpeechGrammar: A.SpeechGrammar, SpeechGrammarList: A.SpeechGrammarList, SpeechRecognitionResult: A.SpeechRecognitionResult, Storage: A.Storage, CSSStyleSheet: A.StyleSheet, StyleSheet: A.StyleSheet, TextTrack: A.TextTrack, TextTrackCue: A.TextTrackCue, VTTCue: A.TextTrackCue, TextTrackCueList: A.TextTrackCueList, TextTrackList: A.TextTrackList, TimeRanges: A.TimeRanges, Touch: A.Touch, TouchList: A.TouchList, TrackDefaultList: A.TrackDefaultList, URL: A.Url, VideoTrackList: A.VideoTrackList, CSSRuleList: A._CssRuleList, ClientRect: A._DomRect, DOMRect: A._DomRect, GamepadList: A._GamepadList, NamedNodeMap: A._NamedNodeMap, MozNamedAttrMap: A._NamedNodeMap, SpeechRecognitionResultList: A._SpeechRecognitionResultList, StyleSheetList: A._StyleSheetList, SVGLength: A.Length, SVGLengthList: A.LengthList, SVGNumber: A.Number, SVGNumberList: A.NumberList, SVGPointList: A.PointList, SVGStringList: A.StringList, SVGTransform: A.Transform, SVGTransformList: A.TransformList, AudioBuffer: A.AudioBuffer, AudioParamMap: A.AudioParamMap, AudioTrackList: A.AudioTrackList, AudioContext: A.BaseAudioContext, webkitAudioContext: A.BaseAudioContext, BaseAudioContext: A.BaseAudioContext, OfflineAudioContext: A.OfflineAudioContext});
+    hunkHelpers.setOrUpdateLeafTags({ArrayBuffer: true, WebGL: true, AbortPaymentEvent: true, AnimationEffectReadOnly: true, AnimationEffectTiming: true, AnimationEffectTimingReadOnly: true, AnimationEvent: true, AnimationPlaybackEvent: true, AnimationTimeline: true, AnimationWorkletGlobalScope: true, ApplicationCacheErrorEvent: true, AuthenticatorAssertionResponse: true, AuthenticatorAttestationResponse: true, AuthenticatorResponse: true, BackgroundFetchClickEvent: true, BackgroundFetchEvent: true, BackgroundFetchFailEvent: true, BackgroundFetchFetch: true, BackgroundFetchManager: true, BackgroundFetchSettledFetch: true, BackgroundFetchedEvent: true, BarProp: true, BarcodeDetector: true, BeforeInstallPromptEvent: true, BeforeUnloadEvent: true, BlobEvent: true, BluetoothRemoteGATTDescriptor: true, Body: true, BudgetState: true, CacheStorage: true, CanMakePaymentEvent: true, CanvasGradient: true, CanvasPattern: true, CanvasRenderingContext2D: true, Client: true, Clients: true, ClipboardEvent: true, CloseEvent: true, CompositionEvent: true, CookieStore: true, Coordinates: true, Credential: true, CredentialUserData: true, CredentialsContainer: true, Crypto: true, CryptoKey: true, CSS: true, CSSVariableReferenceValue: true, CustomElementRegistry: true, CustomEvent: true, DataTransfer: true, DataTransferItem: true, DeprecatedStorageInfo: true, DeprecatedStorageQuota: true, DeprecationReport: true, DetectedBarcode: true, DetectedFace: true, DetectedText: true, DeviceAcceleration: true, DeviceMotionEvent: true, DeviceOrientationEvent: true, DeviceRotationRate: true, DirectoryEntry: true, webkitFileSystemDirectoryEntry: true, FileSystemDirectoryEntry: true, DirectoryReader: true, WebKitDirectoryReader: true, webkitFileSystemDirectoryReader: true, FileSystemDirectoryReader: true, DocumentOrShadowRoot: true, DocumentTimeline: true, DOMError: true, DOMImplementation: true, Iterator: true, DOMMatrix: true, DOMMatrixReadOnly: true, DOMParser: true, DOMPoint: true, DOMPointReadOnly: true, DOMQuad: true, DOMStringMap: true, Entry: true, webkitFileSystemEntry: true, FileSystemEntry: true, ErrorEvent: true, Event: true, InputEvent: true, SubmitEvent: true, ExtendableEvent: true, ExtendableMessageEvent: true, External: true, FaceDetector: true, FederatedCredential: true, FetchEvent: true, FileEntry: true, webkitFileSystemFileEntry: true, FileSystemFileEntry: true, DOMFileSystem: true, WebKitFileSystem: true, webkitFileSystem: true, FileSystem: true, FocusEvent: true, FontFace: true, FontFaceSetLoadEvent: true, FontFaceSource: true, ForeignFetchEvent: true, FormData: true, GamepadButton: true, GamepadEvent: true, GamepadPose: true, Geolocation: true, Position: true, GeolocationPosition: true, HashChangeEvent: true, Headers: true, HTMLHyperlinkElementUtils: true, IdleDeadline: true, ImageBitmap: true, ImageBitmapRenderingContext: true, ImageCapture: true, ImageData: true, InputDeviceCapabilities: true, InstallEvent: true, IntersectionObserver: true, IntersectionObserverEntry: true, InterventionReport: true, KeyboardEvent: true, KeyframeEffect: true, KeyframeEffectReadOnly: true, MediaCapabilities: true, MediaCapabilitiesInfo: true, MediaDeviceInfo: true, MediaEncryptedEvent: true, MediaError: true, MediaKeyMessageEvent: true, MediaKeyStatusMap: true, MediaKeySystemAccess: true, MediaKeys: true, MediaKeysPolicy: true, MediaMetadata: true, MediaQueryListEvent: true, MediaSession: true, MediaSettingsRange: true, MediaStreamEvent: true, MediaStreamTrackEvent: true, MemoryInfo: true, MessageChannel: true, MessageEvent: true, Metadata: true, MIDIConnectionEvent: true, MIDIMessageEvent: true, MouseEvent: true, DragEvent: true, MutationEvent: true, MutationObserver: true, WebKitMutationObserver: true, MutationRecord: true, NavigationPreloadManager: true, Navigator: true, NavigatorAutomationInformation: true, NavigatorConcurrentHardware: true, NavigatorCookies: true, NavigatorUserMediaError: true, NodeFilter: true, NodeIterator: true, NonDocumentTypeChildNode: true, NonElementParentNode: true, NoncedElement: true, NotificationEvent: true, OffscreenCanvasRenderingContext2D: true, OverconstrainedError: true, PageTransitionEvent: true, PaintRenderingContext2D: true, PaintSize: true, PaintWorkletGlobalScope: true, PasswordCredential: true, Path2D: true, PaymentAddress: true, PaymentInstruments: true, PaymentManager: true, PaymentRequestEvent: true, PaymentRequestUpdateEvent: true, PaymentResponse: true, PerformanceEntry: true, PerformanceLongTaskTiming: true, PerformanceMark: true, PerformanceMeasure: true, PerformanceNavigation: true, PerformanceNavigationTiming: true, PerformanceObserver: true, PerformanceObserverEntryList: true, PerformancePaintTiming: true, PerformanceResourceTiming: true, PerformanceServerTiming: true, PerformanceTiming: true, Permissions: true, PhotoCapabilities: true, PointerEvent: true, PopStateEvent: true, PositionError: true, GeolocationPositionError: true, Presentation: true, PresentationConnectionAvailableEvent: true, PresentationConnectionCloseEvent: true, PresentationReceiver: true, ProgressEvent: true, PromiseRejectionEvent: true, PublicKeyCredential: true, PushEvent: true, PushManager: true, PushMessageData: true, PushSubscription: true, PushSubscriptionOptions: true, Range: true, RelatedApplication: true, ReportBody: true, ReportingObserver: true, ResizeObserver: true, ResizeObserverEntry: true, RTCCertificate: true, RTCDataChannelEvent: true, RTCDTMFToneChangeEvent: true, RTCIceCandidate: true, mozRTCIceCandidate: true, RTCLegacyStatsReport: true, RTCPeerConnectionIceEvent: true, RTCRtpContributingSource: true, RTCRtpReceiver: true, RTCRtpSender: true, RTCSessionDescription: true, mozRTCSessionDescription: true, RTCStatsResponse: true, RTCTrackEvent: true, Screen: true, ScrollState: true, ScrollTimeline: true, SecurityPolicyViolationEvent: true, Selection: true, SensorErrorEvent: true, SharedArrayBuffer: true, SpeechRecognitionAlternative: true, SpeechRecognitionError: true, SpeechRecognitionEvent: true, SpeechSynthesisEvent: true, SpeechSynthesisVoice: true, StaticRange: true, StorageEvent: true, StorageManager: true, StyleMedia: true, StylePropertyMap: true, StylePropertyMapReadonly: true, SyncEvent: true, SyncManager: true, TaskAttributionTiming: true, TextDetector: true, TextEvent: true, TextMetrics: true, TouchEvent: true, TrackDefault: true, TrackEvent: true, TransitionEvent: true, WebKitTransitionEvent: true, TreeWalker: true, TrustedHTML: true, TrustedScriptURL: true, TrustedURL: true, UIEvent: true, UnderlyingSourceBase: true, URLSearchParams: true, VRCoordinateSystem: true, VRDeviceEvent: true, VRDisplayCapabilities: true, VRDisplayEvent: true, VREyeParameters: true, VRFrameData: true, VRFrameOfReference: true, VRPose: true, VRSessionEvent: true, VRStageBounds: true, VRStageBoundsPoint: true, VRStageParameters: true, ValidityState: true, VideoPlaybackQuality: true, VideoTrack: true, VTTRegion: true, WheelEvent: true, WindowClient: true, WorkletAnimation: true, WorkletGlobalScope: true, XPathEvaluator: true, XPathExpression: true, XPathNSResolver: true, XPathResult: true, XMLSerializer: true, XSLTProcessor: true, Bluetooth: true, BluetoothCharacteristicProperties: true, BluetoothRemoteGATTServer: true, BluetoothRemoteGATTService: true, BluetoothUUID: true, BudgetService: true, Cache: true, DOMFileSystemSync: true, DirectoryEntrySync: true, DirectoryReaderSync: true, EntrySync: true, FileEntrySync: true, FileReaderSync: true, FileWriterSync: true, HTMLAllCollection: true, Mojo: true, MojoHandle: true, MojoInterfaceRequestEvent: true, MojoWatcher: true, NFC: true, PagePopupController: true, Report: true, Request: true, ResourceProgressEvent: true, Response: true, SubtleCrypto: true, USBAlternateInterface: true, USBConfiguration: true, USBConnectionEvent: true, USBDevice: true, USBEndpoint: true, USBInTransferResult: true, USBInterface: true, USBIsochronousInTransferPacket: true, USBIsochronousInTransferResult: true, USBIsochronousOutTransferPacket: true, USBIsochronousOutTransferResult: true, USBOutTransferResult: true, WorkerLocation: true, WorkerNavigator: true, Worklet: true, IDBCursor: true, IDBCursorWithValue: true, IDBFactory: true, IDBIndex: true, IDBKeyRange: true, IDBObjectStore: true, IDBObservation: true, IDBObserver: true, IDBObserverChanges: true, IDBVersionChangeEvent: true, SVGAngle: true, SVGAnimatedAngle: true, SVGAnimatedBoolean: true, SVGAnimatedEnumeration: true, SVGAnimatedInteger: true, SVGAnimatedLength: true, SVGAnimatedLengthList: true, SVGAnimatedNumber: true, SVGAnimatedNumberList: true, SVGAnimatedPreserveAspectRatio: true, SVGAnimatedRect: true, SVGAnimatedString: true, SVGAnimatedTransformList: true, SVGMatrix: true, SVGPoint: true, SVGPreserveAspectRatio: true, SVGRect: true, SVGUnitTypes: true, AudioListener: true, AudioParam: true, AudioProcessingEvent: true, AudioTrack: true, AudioWorkletGlobalScope: true, AudioWorkletProcessor: true, OfflineAudioCompletionEvent: true, PeriodicWave: true, WebGLActiveInfo: true, ANGLEInstancedArrays: true, ANGLE_instanced_arrays: true, WebGLBuffer: true, WebGLCanvas: true, WebGLColorBufferFloat: true, WebGLCompressedTextureASTC: true, WebGLCompressedTextureATC: true, WEBGL_compressed_texture_atc: true, WebGLCompressedTextureETC1: true, WEBGL_compressed_texture_etc1: true, WebGLCompressedTextureETC: true, WebGLCompressedTexturePVRTC: true, WEBGL_compressed_texture_pvrtc: true, WebGLCompressedTextureS3TC: true, WEBGL_compressed_texture_s3tc: true, WebGLCompressedTextureS3TCsRGB: true, WebGLContextEvent: true, WebGLDebugRendererInfo: true, WEBGL_debug_renderer_info: true, WebGLDebugShaders: true, WEBGL_debug_shaders: true, WebGLDepthTexture: true, WEBGL_depth_texture: true, WebGLDrawBuffers: true, WEBGL_draw_buffers: true, EXTsRGB: true, EXT_sRGB: true, EXTBlendMinMax: true, EXT_blend_minmax: true, EXTColorBufferFloat: true, EXTColorBufferHalfFloat: true, EXTDisjointTimerQuery: true, EXTDisjointTimerQueryWebGL2: true, EXTFragDepth: true, EXT_frag_depth: true, EXTShaderTextureLOD: true, EXT_shader_texture_lod: true, EXTTextureFilterAnisotropic: true, EXT_texture_filter_anisotropic: true, WebGLFramebuffer: true, WebGLGetBufferSubDataAsync: true, WebGLLoseContext: true, WebGLExtensionLoseContext: true, WEBGL_lose_context: true, OESElementIndexUint: true, OES_element_index_uint: true, OESStandardDerivatives: true, OES_standard_derivatives: true, OESTextureFloat: true, OES_texture_float: true, OESTextureFloatLinear: true, OES_texture_float_linear: true, OESTextureHalfFloat: true, OES_texture_half_float: true, OESTextureHalfFloatLinear: true, OES_texture_half_float_linear: true, OESVertexArrayObject: true, OES_vertex_array_object: true, WebGLProgram: true, WebGLQuery: true, WebGLRenderbuffer: true, WebGLRenderingContext: true, WebGL2RenderingContext: true, WebGLSampler: true, WebGLShader: true, WebGLShaderPrecisionFormat: true, WebGLSync: true, WebGLTexture: true, WebGLTimerQueryEXT: true, WebGLTransformFeedback: true, WebGLUniformLocation: true, WebGLVertexArrayObject: true, WebGLVertexArrayObjectOES: true, WebGL2RenderingContextBase: true, DataView: true, ArrayBufferView: false, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false, HTMLAudioElement: true, HTMLBRElement: true, HTMLBaseElement: true, HTMLBodyElement: true, HTMLButtonElement: true, HTMLCanvasElement: true, HTMLContentElement: true, HTMLDListElement: true, HTMLDataElement: true, HTMLDataListElement: true, HTMLDetailsElement: true, HTMLDialogElement: true, HTMLDivElement: true, HTMLEmbedElement: true, HTMLFieldSetElement: true, HTMLHRElement: true, HTMLHeadElement: true, HTMLHeadingElement: true, HTMLHtmlElement: true, HTMLIFrameElement: true, HTMLImageElement: true, HTMLInputElement: true, HTMLLIElement: true, HTMLLabelElement: true, HTMLLegendElement: true, HTMLLinkElement: true, HTMLMapElement: true, HTMLMediaElement: true, HTMLMenuElement: true, HTMLMetaElement: true, HTMLMeterElement: true, HTMLModElement: true, HTMLOListElement: true, HTMLObjectElement: true, HTMLOptGroupElement: true, HTMLOptionElement: true, HTMLOutputElement: true, HTMLParagraphElement: true, HTMLParamElement: true, HTMLPictureElement: true, HTMLPreElement: true, HTMLProgressElement: true, HTMLQuoteElement: true, HTMLScriptElement: true, HTMLShadowElement: true, HTMLSlotElement: true, HTMLSourceElement: true, HTMLSpanElement: true, HTMLStyleElement: true, HTMLTableCaptionElement: true, HTMLTableCellElement: true, HTMLTableDataCellElement: true, HTMLTableHeaderCellElement: true, HTMLTableColElement: true, HTMLTableElement: true, HTMLTableRowElement: true, HTMLTableSectionElement: true, HTMLTemplateElement: true, HTMLTextAreaElement: true, HTMLTimeElement: true, HTMLTitleElement: true, HTMLTrackElement: true, HTMLUListElement: true, HTMLUnknownElement: true, HTMLVideoElement: true, HTMLDirectoryElement: true, HTMLFontElement: true, HTMLFrameElement: true, HTMLFrameSetElement: true, HTMLMarqueeElement: true, HTMLElement: false, AccessibleNodeList: true, HTMLAnchorElement: true, HTMLAreaElement: true, Blob: false, CDATASection: true, CharacterData: true, Comment: true, ProcessingInstruction: true, Text: true, CSSPerspective: true, CSSCharsetRule: true, CSSConditionRule: true, CSSFontFaceRule: true, CSSGroupingRule: true, CSSImportRule: true, CSSKeyframeRule: true, MozCSSKeyframeRule: true, WebKitCSSKeyframeRule: true, CSSKeyframesRule: true, MozCSSKeyframesRule: true, WebKitCSSKeyframesRule: true, CSSMediaRule: true, CSSNamespaceRule: true, CSSPageRule: true, CSSRule: true, CSSStyleRule: true, CSSSupportsRule: true, CSSViewportRule: true, CSSStyleDeclaration: true, MSStyleCSSProperties: true, CSS2Properties: true, CSSImageValue: true, CSSKeywordValue: true, CSSNumericValue: true, CSSPositionValue: true, CSSResourceValue: true, CSSUnitValue: true, CSSURLImageValue: true, CSSStyleValue: false, CSSMatrixComponent: true, CSSRotation: true, CSSScale: true, CSSSkew: true, CSSTranslation: true, CSSTransformComponent: false, CSSTransformValue: true, CSSUnparsedValue: true, DataTransferItemList: true, DOMException: true, ClientRectList: true, DOMRectList: true, DOMRectReadOnly: false, DOMStringList: true, DOMTokenList: true, MathMLElement: true, SVGAElement: true, SVGAnimateElement: true, SVGAnimateMotionElement: true, SVGAnimateTransformElement: true, SVGAnimationElement: true, SVGCircleElement: true, SVGClipPathElement: true, SVGDefsElement: true, SVGDescElement: true, SVGDiscardElement: true, SVGEllipseElement: true, SVGFEBlendElement: true, SVGFEColorMatrixElement: true, SVGFEComponentTransferElement: true, SVGFECompositeElement: true, SVGFEConvolveMatrixElement: true, SVGFEDiffuseLightingElement: true, SVGFEDisplacementMapElement: true, SVGFEDistantLightElement: true, SVGFEFloodElement: true, SVGFEFuncAElement: true, SVGFEFuncBElement: true, SVGFEFuncGElement: true, SVGFEFuncRElement: true, SVGFEGaussianBlurElement: true, SVGFEImageElement: true, SVGFEMergeElement: true, SVGFEMergeNodeElement: true, SVGFEMorphologyElement: true, SVGFEOffsetElement: true, SVGFEPointLightElement: true, SVGFESpecularLightingElement: true, SVGFESpotLightElement: true, SVGFETileElement: true, SVGFETurbulenceElement: true, SVGFilterElement: true, SVGForeignObjectElement: true, SVGGElement: true, SVGGeometryElement: true, SVGGraphicsElement: true, SVGImageElement: true, SVGLineElement: true, SVGLinearGradientElement: true, SVGMarkerElement: true, SVGMaskElement: true, SVGMetadataElement: true, SVGPathElement: true, SVGPatternElement: true, SVGPolygonElement: true, SVGPolylineElement: true, SVGRadialGradientElement: true, SVGRectElement: true, SVGScriptElement: true, SVGSetElement: true, SVGStopElement: true, SVGStyleElement: true, SVGElement: true, SVGSVGElement: true, SVGSwitchElement: true, SVGSymbolElement: true, SVGTSpanElement: true, SVGTextContentElement: true, SVGTextElement: true, SVGTextPathElement: true, SVGTextPositioningElement: true, SVGTitleElement: true, SVGUseElement: true, SVGViewElement: true, SVGGradientElement: true, SVGComponentTransferFunctionElement: true, SVGFEDropShadowElement: true, SVGMPathElement: true, Element: false, AbsoluteOrientationSensor: true, Accelerometer: true, AccessibleNode: true, AmbientLightSensor: true, Animation: true, ApplicationCache: true, DOMApplicationCache: true, OfflineResourceList: true, BackgroundFetchRegistration: true, BatteryManager: true, BroadcastChannel: true, CanvasCaptureMediaStreamTrack: true, DedicatedWorkerGlobalScope: true, EventSource: true, FileReader: true, FontFaceSet: true, Gyroscope: true, XMLHttpRequest: true, XMLHttpRequestEventTarget: true, XMLHttpRequestUpload: true, LinearAccelerationSensor: true, Magnetometer: true, MediaDevices: true, MediaKeySession: true, MediaQueryList: true, MediaRecorder: true, MediaSource: true, MediaStream: true, MediaStreamTrack: true, MessagePort: true, MIDIAccess: true, MIDIInput: true, MIDIOutput: true, MIDIPort: true, NetworkInformation: true, Notification: true, OffscreenCanvas: true, OrientationSensor: true, PaymentRequest: true, Performance: true, PermissionStatus: true, PresentationAvailability: true, PresentationConnection: true, PresentationConnectionList: true, PresentationRequest: true, RelativeOrientationSensor: true, RemotePlayback: true, RTCDataChannel: true, DataChannel: true, RTCDTMFSender: true, RTCPeerConnection: true, webkitRTCPeerConnection: true, mozRTCPeerConnection: true, ScreenOrientation: true, Sensor: true, ServiceWorker: true, ServiceWorkerContainer: true, ServiceWorkerGlobalScope: true, ServiceWorkerRegistration: true, SharedWorker: true, SharedWorkerGlobalScope: true, SpeechRecognition: true, SpeechSynthesis: true, SpeechSynthesisUtterance: true, VR: true, VRDevice: true, VRDisplay: true, VRSession: true, VisualViewport: true, WebSocket: true, Window: true, DOMWindow: true, Worker: true, WorkerGlobalScope: true, WorkerPerformance: true, BluetoothDevice: true, BluetoothRemoteGATTCharacteristic: true, Clipboard: true, MojoInterfaceInterceptor: true, USB: true, IDBDatabase: true, IDBOpenDBRequest: true, IDBVersionChangeRequest: true, IDBRequest: true, IDBTransaction: true, AnalyserNode: true, RealtimeAnalyserNode: true, AudioBufferSourceNode: true, AudioDestinationNode: true, AudioNode: true, AudioScheduledSourceNode: true, AudioWorkletNode: true, BiquadFilterNode: true, ChannelMergerNode: true, AudioChannelMerger: true, ChannelSplitterNode: true, AudioChannelSplitter: true, ConstantSourceNode: true, ConvolverNode: true, DelayNode: true, DynamicsCompressorNode: true, GainNode: true, AudioGainNode: true, IIRFilterNode: true, MediaElementAudioSourceNode: true, MediaStreamAudioDestinationNode: true, MediaStreamAudioSourceNode: true, OscillatorNode: true, Oscillator: true, PannerNode: true, AudioPannerNode: true, webkitAudioPannerNode: true, ScriptProcessorNode: true, JavaScriptAudioNode: true, StereoPannerNode: true, WaveShaperNode: true, EventTarget: false, File: true, FileList: true, FileWriter: true, HTMLFormElement: true, Gamepad: true, History: true, HTMLCollection: true, HTMLFormControlsCollection: true, HTMLOptionsCollection: true, Location: true, MediaList: true, MIDIInputMap: true, MIDIOutputMap: true, MimeType: true, MimeTypeArray: true, Document: true, DocumentFragment: true, HTMLDocument: true, ShadowRoot: true, XMLDocument: true, Attr: true, DocumentType: true, Node: false, NodeList: true, RadioNodeList: true, Plugin: true, PluginArray: true, RTCStatsReport: true, HTMLSelectElement: true, SourceBuffer: true, SourceBufferList: true, SpeechGrammar: true, SpeechGrammarList: true, SpeechRecognitionResult: true, Storage: true, CSSStyleSheet: true, StyleSheet: true, TextTrack: true, TextTrackCue: true, VTTCue: true, TextTrackCueList: true, TextTrackList: true, TimeRanges: true, Touch: true, TouchList: true, TrackDefaultList: true, URL: true, VideoTrackList: true, CSSRuleList: true, ClientRect: true, DOMRect: true, GamepadList: true, NamedNodeMap: true, MozNamedAttrMap: true, SpeechRecognitionResultList: true, StyleSheetList: true, SVGLength: true, SVGLengthList: true, SVGNumber: true, SVGNumberList: true, SVGPointList: true, SVGStringList: true, SVGTransform: true, SVGTransformList: true, AudioBuffer: true, AudioParamMap: true, AudioTrackList: true, AudioContext: true, webkitAudioContext: true, BaseAudioContext: false, OfflineAudioContext: true});
     A.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView";
     A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
     A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
@@ -15922,16 +17017,20 @@
     A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
     A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
     A.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView";
+    A._SourceBufferList_EventTarget_ListMixin.$nativeSuperclassTag = "EventTarget";
+    A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin.$nativeSuperclassTag = "EventTarget";
+    A._TextTrackList_EventTarget_ListMixin.$nativeSuperclassTag = "EventTarget";
+    A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin.$nativeSuperclassTag = "EventTarget";
   })();
-  Function.prototype.call$0 = function() {
-    return this();
-  };
   Function.prototype.call$1 = function(a) {
     return this(a);
   };
   Function.prototype.call$2 = function(a, b) {
     return this(a, b);
   };
+  Function.prototype.call$0 = function() {
+    return this();
+  };
   Function.prototype.call$1$1 = function(a) {
     return this(a);
   };
diff --git a/pkgs/test/mono_pkg.yaml b/pkgs/test/mono_pkg.yaml
index eaf40aa..67c177d 100644
--- a/pkgs/test/mono_pkg.yaml
+++ b/pkgs/test/mono_pkg.yaml
@@ -2,7 +2,7 @@
 
 sdk:
 - dev
-- stable
+- 2.18.0-146.0.dev
 
 stages:
 - analyze_and_format:
@@ -23,24 +23,24 @@
     os:
     - windows
     sdk:
-    - stable
+    - 2.18.0-146.0.dev
   - command: dart test --preset travis --total-shards 5 --shard-index 1
     os:
     - windows
     sdk:
-    - stable
+    - 2.18.0-146.0.dev
   - command: dart test --preset travis --total-shards 5 --shard-index 2
     os:
     - windows
     sdk:
-    - stable
+    - 2.18.0-146.0.dev
   - command: dart test --preset travis --total-shards 5 --shard-index 3
     os:
     - windows
     sdk:
-    - stable
+    - 2.18.0-146.0.dev
   - command: dart test --preset travis --total-shards 5 --shard-index 4
     os:
     - windows
     sdk:
-    - stable
+    - 2.18.0-146.0.dev
diff --git a/pkgs/test/pubspec.yaml b/pkgs/test/pubspec.yaml
index 45b8cc2..c37e469 100644
--- a/pkgs/test/pubspec.yaml
+++ b/pkgs/test/pubspec.yaml
@@ -1,11 +1,11 @@
 name: test
-version: 1.21.4
+version: 1.21.5-dev
 description: >-
   A full featured library for writing and running Dart tests across platforms.
 repository: https://github.com/dart-lang/test/tree/master/pkgs/test
 
 environment:
-  sdk: '>=2.14.0 <3.0.0'
+  sdk: '>=2.18.0-146.0.dev <3.0.0'
 
 dependencies:
   analyzer: '>=2.0.0 <5.0.0'
@@ -15,7 +15,7 @@
   coverage: ^1.0.1
   http_multi_server: ^3.0.0
   io: ^1.0.0
-  js: ^0.6.3
+  js: ^0.6.4
   node_preamble: ^2.0.0
   package_config: ^2.0.0
   path: ^1.8.0
@@ -32,8 +32,8 @@
   webkit_inspection_protocol: ^1.0.0
   yaml: ^3.0.0
   # Use an exact version until the test_api and test_core package are stable.
-  test_api: 0.4.12
-  test_core: 0.4.16
+  test_api: 0.4.13
+  test_core: 0.4.17
 
 dev_dependencies:
   fake_async: ^1.0.0
diff --git a/pkgs/test/test/runner/browser/code_server.dart b/pkgs/test/test/runner/browser/code_server.dart
index 37edbce..881aa89 100644
--- a/pkgs/test/test/runner/browser/code_server.dart
+++ b/pkgs/test/test/runner/browser/code_server.dart
@@ -36,31 +36,6 @@
   CodeServer._(this._handler, this.url);
 
   /// Sets up a handler for the root of the server, "/", that serves a basic
-  /// HTML page with a script tag that will run [dart].
-  void handleDart(String dart) {
-    _handler.expect('GET', '/', (_) {
-      return shelf.Response.ok('''
-<!doctype html>
-<html>
-<head>
-  <script type="application/dart" src="index.dart"></script>
-</head>
-</html>
-''', headers: {'content-type': 'text/html'});
-    });
-
-    _handler.expect('GET', '/index.dart', (_) {
-      return shelf.Response.ok('''
-import "dart:html";
-
-main() async {
-  $dart
-}
-''', headers: {'content-type': 'application/dart'});
-    });
-  }
-
-  /// Sets up a handler for the root of the server, "/", that serves a basic
   /// HTML page with a script tag that will run [javaScript].
   void handleJavaScript(String javaScript) {
     _handler.expect('GET', '/', (_) {
diff --git a/pkgs/test/test/runner/browser/firefox_html_test.dart b/pkgs/test/test/runner/browser/firefox_html_test.dart
index e4b9941..0ba4111 100644
--- a/pkgs/test/test/runner/browser/firefox_html_test.dart
+++ b/pkgs/test/test/runner/browser/firefox_html_test.dart
@@ -3,8 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 @TestOn('firefox')
-import 'dart:html';
 
+import 'package:test/src/runner/browser/dom.dart' as dom;
 import 'package:test/test.dart';
 
 void main() {
@@ -12,6 +12,6 @@
   // iframes (https://bugzilla.mozilla.org/show_bug.cgi?id=548397), so we have
   // to do some special stuff to make sure tests that care about that work.
   test('getComputedStyle() works', () {
-    expect(document.body!.getComputedStyle(), isNotNull);
+    expect(dom.window.getComputedStyle(dom.document.body!), isNotNull);
   });
 }
diff --git a/pkgs/test/test/runner/browser/runner_test.dart b/pkgs/test/test/runner/browser/runner_test.dart
index 429c82a..c5fcb65 100644
--- a/pkgs/test/test/runner/browser/runner_test.dart
+++ b/pkgs/test/test/runner/browser/runner_test.dart
@@ -447,13 +447,12 @@
   ''').create();
 
           await d.file('test.dart', '''
-  import 'dart:html';
-
+  import 'package:test/src/runner/browser/dom.dart' as dom;
   import 'package:test/test.dart';
 
   void main() {
     test("success", () {
-      expect(document.querySelector('#foo'), isNotNull);
+      expect(dom.document.querySelector('#foo'), isNotNull);
     });
   }
   ''').create();
@@ -489,16 +488,15 @@
   ''').create();
 
           await d.file('test-with-title.dart', '''
-  import 'dart:html';
-
+  import 'package:test/src/runner/browser/dom.dart' as dom;
   import 'package:test/test.dart';
 
   void main() {
     test("success", () {
-      expect(document.querySelector('#foo'), isNotNull);
+      expect(dom.document.querySelector('#foo'), isNotNull);
     });
     test("title", () {
-      expect(document.title, 'test-with-title.dart');
+      expect(dom.document.title, 'test-with-title.dart');
     });
   }
   ''').create();
@@ -516,13 +514,12 @@
     group('with a custom HTML file', () {
       setUp(() async {
         await d.file('test.dart', '''
-import 'dart:html';
-
+import 'package:test/src/runner/browser/dom.dart' as dom;
 import 'package:test/test.dart';
 
 void main() {
   test("success", () {
-    expect(document.querySelector('#foo'), isNotNull);
+    expect(dom.document.querySelector('#foo'), isNotNull);
   });
 }
 ''').create();
@@ -636,13 +633,12 @@
     group('with a custom HTML file', () {
       setUp(() async {
         await d.file('test.dart', '''
-import 'dart:html';
-
+import 'package:test/src/runner/browser/dom.dart' as dom;
 import 'package:test/test.dart';
 
 void main() {
   test("failure", () {
-    expect(document.querySelector('#foo'), isNull);
+    expect(dom.document.querySelector('#foo'), isNull);
   });
 }
 ''').create();
diff --git a/pkgs/test/test/runner/configuration/custom_platform_test.dart b/pkgs/test/test/runner/configuration/custom_platform_test.dart
index a4e419a..af3721d 100644
--- a/pkgs/test/test/runner/configuration/custom_platform_test.dart
+++ b/pkgs/test/test/runner/configuration/custom_platform_test.dart
@@ -107,13 +107,12 @@
         ''').create();
 
         await d.file('test.dart', '''
-          import 'dart:html';
-
+          import 'package:test/src/runner/browser/dom.dart' as dom;
           import 'package:test/test.dart';
 
           void main() {
             test("is not headless", () {
-              expect(window.navigator.userAgent,
+              expect(dom.window.navigator.userAgent,
                   isNot(contains('HeadlessChrome')));
             });
           }
diff --git a/pkgs/test/test/runner/coverage_test.dart b/pkgs/test/test/runner/coverage_test.dart
index 829e281..398be5d 100644
--- a/pkgs/test/test/runner/coverage_test.dart
+++ b/pkgs/test/test/runner/coverage_test.dart
@@ -73,7 +73,7 @@
             return 'foo';
           };
         })({
-        
+
           '© ': ''
           });
       ''';
@@ -81,23 +81,31 @@
       await d.file('file_with_unicode.js.map', sourceMapFileContent).create();
 
       await d.file('js_with_unicode_test.dart', '''
-        import 'dart:html';
-        import 'dart:js';
-        
+        import 'dart:async';
+
+        import 'package:js/js.dart';
+        import 'package:js/js_util.dart';
+
+        import 'package:test/src/runner/browser/dom.dart' as dom;
         import 'package:test/test.dart';
-        
+
         Future<void> loadScript(String src) async {
-          final script = ScriptElement()..src = src;
-          final scriptLoaded = script.onLoad.first;
-          document.body!.append(script);
+          final controller = StreamController();
+          final scriptLoaded = controller.stream.first;
+          final script = dom.createHTMLScriptElement()..src = src;
+          script.addEventListener('load',
+              allowInterop((_) {
+                controller.add('loaded');
+              }));
+          dom.document.body!.appendChild(script);
           await scriptLoaded.timeout(Duration(seconds: 1));
         }
 
         void main() {
           test("test 1", () async {
             await loadScript('file_with_unicode.js');
-            expect(context['foo'], isNotNull);
-            context.callMethod('foo', []);
+            expect(getProperty(dom.window, 'foo'), isNotNull);
+            callMethod(dom.window, 'foo', []);
             expect(true, isTrue);
           });
         }
diff --git a/pkgs/test/test/runner/pub_serve_test.dart b/pkgs/test/test/runner/pub_serve_test.dart
index 2a77133..8c33699 100644
--- a/pkgs/test/test/runner/pub_serve_test.dart
+++ b/pkgs/test/test/runner/pub_serve_test.dart
@@ -167,13 +167,12 @@
     setUp(() async {
       await d.dir('test', [
         d.file('test.dart', '''
-import 'dart:html';
-
+import 'package:test/src/runner/browser/dom.dart' as dom;
 import 'package:test/test.dart';
 
 void main() {
   test("failure", () {
-    expect(document.querySelector('#foo'), isNull);
+    expect(dom.document.querySelector('#foo'), isNull);
   });
 }
 '''),
@@ -202,8 +201,7 @@
   group('with a failing test', () {
     setUp(() async {
       await d.file('test/my_test.dart', '''
-import 'dart:html';
-
+import 'package:test/src/runner/browser/dom.dart' as dom;
 import 'package:test/test.dart';
 
 void main() {
diff --git a/pkgs/test/test/runner/test_on_test.dart b/pkgs/test/test/runner/test_on_test.dart
index eaade0c..d9ca7bf 100644
--- a/pkgs/test/test/runner/test_on_test.dart
+++ b/pkgs/test/test/runner/test_on_test.dart
@@ -200,7 +200,7 @@
     bool loadable = true}) {
   var buffer = StringBuffer();
   if (suiteTestOn != null) buffer.writeln("@TestOn('$suiteTestOn')");
-  if (!loadable) buffer.writeln("import 'dart:html';");
+  if (!loadable) buffer.writeln("import 'dart:js_util';");
 
   buffer
     ..writeln("import 'package:test/test.dart';")
diff --git a/pkgs/test/tool/host.dart b/pkgs/test/tool/host.dart
index d0cfc2d..217e085 100644
--- a/pkgs/test/tool/host.dart
+++ b/pkgs/test/tool/host.dart
@@ -7,15 +7,18 @@
 
 import 'dart:async';
 import 'dart:convert';
-import 'dart:html';
 
 import 'package:js/js.dart';
 import 'package:stack_trace/stack_trace.dart';
 import 'package:stream_channel/stream_channel.dart';
+import 'package:test/src/runner/browser/dom.dart' as dom;
 
 /// A class defined in content shell, used to control its behavior.
 @JS()
-class TestRunner {
+@staticInterop
+class TestRunner {}
+
+extension TestRunnerExtension on TestRunner {
   external void waitUntilDone();
 }
 
@@ -29,17 +32,22 @@
 /// debugging.
 @JS()
 @anonymous
+@staticInterop
 class _JSApi {
+  external factory _JSApi(
+      {void Function() resume, void Function() restartCurrent});
+}
+
+extension _JSApiExtension on _JSApi {
   /// Causes the test runner to resume running, as though the user had clicked
   /// the "play" button.
+  // ignore: unused_element
   external Function get resume;
 
   /// Causes the test runner to restart the current test once it finishes
   /// running.
+  // ignore: unused_element
   external Function get restartCurrent;
-
-  external factory _JSApi(
-      {void Function() resume, void Function() restartCurrent});
 }
 
 /// Sets the top-level `dartTest` object so that it's visible to JS.
@@ -47,13 +55,14 @@
 external set _jsApi(_JSApi api);
 
 /// The iframes created for each loaded test suite, indexed by the suite id.
-final _iframes = <int, IFrameElement>{};
+final _iframes = <int, dom.HTMLIFrameElement>{};
 
 /// Subscriptions created for each loaded test suite, indexed by the suite id.
 final _subscriptions = <int, List<StreamSubscription<void>>>{};
+final _domSubscriptions = <int, List<dom.Subscription>>{};
 
 /// The URL for the current page.
-final _currentUrl = Uri.parse(window.location.href);
+final _currentUrl = Uri.parse(dom.window.location.href);
 
 /// Code that runs in the browser and loads test suites at the server's behest.
 ///
@@ -112,7 +121,7 @@
   testRunner?.waitUntilDone();
 
   if (_currentUrl.queryParameters['debug'] == 'true') {
-    document.body!.classes.add('debug');
+    dom.document.body!.classList.add('debug');
   }
 
   runZonedGuarded(() {
@@ -125,9 +134,9 @@
             _connectToIframe(message['url'] as String, message['id'] as int);
         suiteChannel.pipe(iframeChannel);
       } else if (message['command'] == 'displayPause') {
-        document.body!.classes.add('paused');
+        dom.document.body!.classList.add('paused');
       } else if (message['command'] == 'resume') {
-        document.body!.classes.remove('paused');
+        dom.document.body!.classList.remove('paused');
       } else {
         assert(message['command'] == 'closeSuite');
         _iframes.remove(message['id'])!.remove();
@@ -135,6 +144,9 @@
         for (var subscription in _subscriptions.remove(message['id'])!) {
           subscription.cancel();
         }
+        for (var subscription in _domSubscriptions.remove(message['id'])!) {
+          subscription.cancel();
+        }
       }
     });
 
@@ -143,14 +155,16 @@
     Timer.periodic(Duration(seconds: 1),
         (_) => serverChannel.sink.add({'command': 'ping'}));
 
-    var play = document.querySelector('#play');
-    play!.onClick.listen((_) {
-      if (!document.body!.classes.remove('paused')) return;
+    var play = dom.document.querySelector('#play');
+    play!.addEventListener('click', allowInterop((_) {
+      if (!dom.document.body!.classList.contains('paused')) return;
+      dom.document.body!.classList.remove('paused');
       serverChannel.sink.add({'command': 'resume'});
-    });
+    }));
 
     _jsApi = _JSApi(resume: allowInterop(() {
-      if (!document.body!.classes.remove('paused')) return;
+      if (!dom.document.body!.classList.contains('paused')) return;
+      dom.document.body!.classList.remove('paused');
       serverChannel.sink.add({'command': 'resume'});
     }), restartCurrent: allowInterop(() {
       serverChannel.sink.add({'command': 'restart'});
@@ -165,12 +179,14 @@
 MultiChannel<dynamic> _connectToServer() {
   // The `managerUrl` query parameter contains the WebSocket URL of the remote
   // [BrowserManager] with which this communicates.
-  var webSocket = WebSocket(_currentUrl.queryParameters['managerUrl']!);
+  var webSocket =
+      dom.createWebSocket(_currentUrl.queryParameters['managerUrl']!);
 
   var controller = StreamChannelController(sync: true);
-  webSocket.onMessage.listen((message) {
-    controller.local.sink.add(jsonDecode(message.data as String));
-  });
+  webSocket.addEventListener('message', allowInterop((message) {
+    controller.local.sink
+        .add(jsonDecode((message as dom.MessageEvent).data as String));
+  }));
 
   controller.local.stream
       .listen((message) => webSocket.send(jsonEncode(message)));
@@ -183,13 +199,13 @@
 ///
 /// [id] identifies the suite loaded in this iframe.
 StreamChannel<dynamic> _connectToIframe(String url, int id) {
-  var iframe = IFrameElement();
+  var iframe = dom.createHTMLIFrameElement();
   _iframes[id] = iframe;
   iframe.src = url;
-  document.body!.children.add(iframe);
+  dom.document.body!.appendChild(iframe);
 
   // Use this to communicate securely with the iframe.
-  var channel = MessageChannel();
+  var channel = dom.createMessageChannel();
   var controller = StreamChannelController(sync: true);
 
   // Use this to avoid sending a message to the iframe before it's sent a
@@ -197,14 +213,18 @@
   var readyCompleter = Completer();
 
   var subscriptions = <StreamSubscription<void>>[];
+  var domSubscriptions = <dom.Subscription>[];
   _subscriptions[id] = subscriptions;
+  _domSubscriptions[id] = domSubscriptions;
 
-  subscriptions.add(window.onMessage.listen((message) {
+  domSubscriptions.add(
+      dom.Subscription(dom.window, 'message', allowInterop((dom.Event event) {
     // A message on the Window can theoretically come from any website. It's
     // very unlikely that a malicious site would care about hacking someone's
     // unit tests, let alone be able to find the test server while it's
     // running, but it's good practice to check the origin anyway.
-    if (message.origin != window.location.origin) return;
+    dom.MessageEvent message = event as dom.MessageEvent;
+    if (message.origin != dom.window.location.origin) return;
 
     // TODO(nweiz): Stop manually checking href here once issue 22554 is
     // fixed.
@@ -215,19 +235,22 @@
     if (message.data['ready'] == true) {
       // This message indicates that the iframe is actively listening for
       // events, so the message channel's second port can now be transferred.
-      iframe.contentWindow!
-          .postMessage('port', window.location.origin, [channel.port2]);
+      channel.port2.start();
+      iframe.contentWindow
+          .postMessage('port', dom.window.location.origin, [channel.port2]);
       readyCompleter.complete();
     } else if (message.data['exception'] == true) {
       // This message from `dart.js` indicates that an exception occurred
       // loading the test.
       controller.local.sink.add(message.data['data']);
     }
-  }));
+  })));
 
-  subscriptions.add(channel.port1.onMessage.listen((message) {
-    controller.local.sink.add(message.data['data']);
-  }));
+  channel.port1.start();
+  domSubscriptions.add(dom.Subscription(channel.port1, 'message',
+      allowInterop((dom.Event event) {
+    controller.local.sink.add((event as dom.MessageEvent).data['data']);
+  })));
 
   subscriptions.add(controller.local.stream.listen((message) async {
     await readyCompleter.future;
diff --git a/pkgs/test_api/CHANGELOG.md b/pkgs/test_api/CHANGELOG.md
index 62aafe6..22df756 100644
--- a/pkgs/test_api/CHANGELOG.md
+++ b/pkgs/test_api/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.4.13-dev
+
+* Internal cleanup.
+
 ## 0.4.12
 
 * Internal cleanup.
diff --git a/pkgs/test_api/lib/src/backend/configuration/timeout.dart b/pkgs/test_api/lib/src/backend/configuration/timeout.dart
index 0789331..5532318 100644
--- a/pkgs/test_api/lib/src/backend/configuration/timeout.dart
+++ b/pkgs/test_api/lib/src/backend/configuration/timeout.dart
@@ -20,7 +20,7 @@
 
 /// A class representing a modification to the default timeout for a test.
 ///
-/// By default, a test will time out after 30 seconds. With [new Timeout], that
+/// By default, a test will time out after 30 seconds. With [Timeout], that
 /// can be overridden entirely; with [Timeout.factor], it can be scaled
 /// relative to the default.
 @Target({TargetKind.library})
diff --git a/pkgs/test_api/lib/src/backend/metadata.dart b/pkgs/test_api/lib/src/backend/metadata.dart
index 75ff45e..0404dbf 100644
--- a/pkgs/test_api/lib/src/backend/metadata.dart
+++ b/pkgs/test_api/lib/src/backend/metadata.dart
@@ -192,7 +192,7 @@
 
   /// Creates new Metadata.
   ///
-  /// Unlike [new Metadata], this assumes [forTag] is already resolved.
+  /// Unlike [Metadata], this assumes [forTag] is already resolved.
   Metadata._({
     PlatformSelector? testOn,
     Timeout? timeout,
diff --git a/pkgs/test_api/lib/src/expect/stream_matcher.dart b/pkgs/test_api/lib/src/expect/stream_matcher.dart
index ab6c217..6d7bddf 100644
--- a/pkgs/test_api/lib/src/expect/stream_matcher.dart
+++ b/pkgs/test_api/lib/src/expect/stream_matcher.dart
@@ -53,7 +53,7 @@
 /// await expectLater(stdout, emits('Waiting for connection...'));
 /// ```
 ///
-/// Users can call [new StreamMatcher] to create custom matchers.
+/// Users can call [StreamMatcher] to create custom matchers.
 abstract class StreamMatcher extends Matcher {
   /// The description of this matcher.
   ///
diff --git a/pkgs/test_api/mono_pkg.yaml b/pkgs/test_api/mono_pkg.yaml
index 253af6e..67429f1 100644
--- a/pkgs/test_api/mono_pkg.yaml
+++ b/pkgs/test_api/mono_pkg.yaml
@@ -2,7 +2,7 @@
 
 sdk:
 - dev
-- stable
+- 2.18.0-146.0.dev
 
 stages:
 - analyze_and_format:
diff --git a/pkgs/test_api/pubspec.yaml b/pkgs/test_api/pubspec.yaml
index ecc2961..d49195a 100644
--- a/pkgs/test_api/pubspec.yaml
+++ b/pkgs/test_api/pubspec.yaml
@@ -1,10 +1,10 @@
 name: test_api
-version: 0.4.12
+version: 0.4.13-dev
 description: A library for writing Dart tests.
 repository: https://github.com/dart-lang/test/tree/master/pkgs/test_api
 
 environment:
-  sdk: ">=2.12.0 <3.0.0"
+  sdk: ">=2.18.0-146.0.dev <3.0.0"
 
 dependencies:
   async: ^2.5.0
diff --git a/pkgs/test_core/CHANGELOG.md b/pkgs/test_core/CHANGELOG.md
index 9316f7c..af7187d 100644
--- a/pkgs/test_core/CHANGELOG.md
+++ b/pkgs/test_core/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.4.17-dev
+
+* Support the latest `package:test_api`.
+
 ## 0.4.16
 
 * Make the labels for test loading more readable in the compact and expanded
diff --git a/pkgs/test_core/pubspec.yaml b/pkgs/test_core/pubspec.yaml
index 28c1921..030e7de 100644
--- a/pkgs/test_core/pubspec.yaml
+++ b/pkgs/test_core/pubspec.yaml
@@ -1,5 +1,5 @@
 name: test_core
-version: 0.4.16
+version: 0.4.17-dev
 description: A basic library for writing tests and running them on the VM.
 repository: https://github.com/dart-lang/test/tree/master/pkgs/test_core
 
@@ -30,7 +30,7 @@
   # matcher is tightly constrained by test_api
   matcher: any
   # Use an exact version until the test_api package is stable.
-  test_api: 0.4.12
+  test_api: 0.4.13
 
 dev_dependencies:
   lints: '>=1.0.0 <3.0.0'